tesseract/configure.ac
zdenop@gmail.com d39cb38ab8 Fix Issue 678
git-svn-id: https://tesseract-ocr.googlecode.com/svn/trunk@722 d0cd1f9f-072b-0410-8dd7-cf729c803f20
2012-04-17 17:32:42 +00:00

492 lines
14 KiB
Plaintext

# -*-Shell-script-*-
#
# Copyright (c) Luc Vincent
# ----------------------------------------
# Initialization
# ----------------------------------------
AC_PREREQ(2.50)
AC_INIT([tesseract], [3.02], [http://code.google.com/p/tesseract-ocr/issues/list])
AC_CONFIG_MACRO_DIR([m4])
AC_REVISION($Id: configure.ac,v 1.4 2007/02/02 22:38:17 theraysmith Exp $)
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_SRCDIR(api/tesseractmain.cpp)
AC_PREFIX_DEFAULT(/usr/local)
# Define date of package, etc. Could be useful in auto-generated
# documentation.
# TODO(luc) Generate good documentation using doxygen or equivalent
PACKAGE_YEAR=2012
PACKAGE_DATE="02/01"
AC_DEFINE_UNQUOTED(PACKAGE_NAME,["${PACKAGE_NAME}"],[Name of package])
AC_DEFINE_UNQUOTED(PACKAGE_VERSION,["${PACKAGE_VERSION}"],[Version number])
AC_DEFINE_UNQUOTED(PACKAGE_YEAR,"$PACKAGE_YEAR",[Official year for this release])
AC_DEFINE_UNQUOTED(PACKAGE_DATE,"$PACKAGE_DATE",[Official date of release])
AC_SUBST(PACKAGE_NAME)
AC_SUBST(PACKAGE_VERSION)
AC_SUBST(PACKAGE_YEAR)
AC_SUBST(PACKAGE_DATE)
GENERIC_LIBRARY_NAME=tesseract
# Release versioning
GENERIC_MAJOR_VERSION=3
GENERIC_MINOR_VERSION=2
GENERIC_MICRO_VERSION=0
# API version (often = GENERIC_MAJOR_VERSION.GENERIC_MINOR_VERSION)
GENERIC_API_VERSION=$GENERIC_MAJOR_VERSION.$GENERIC_MINOR_VERSION
GENERIC_LIBRARY_VERSION=$GENERIC_MAJOR_VERSION:$GENERIC_MINOR_VERSION
AC_SUBST(GENERIC_API_VERSION)
AC_SUBST(GENERIC_MAJOR_VERSION)
AC_SUBST(GENERIC_LIBRARY_VERSION)
PACKAGE=$GENERIC_LIBRARY_NAME
AC_SUBST(GENERIC_LIBRARY_NAME)
GENERIC_VERSION=$GENERIC_MAJOR_VERSION.$GENERIC_MINOR_VERSION.$GENERIC_MICRO_VERSION
GENERIC_RELEASE=$GENERIC_MAJOR_VERSION.$GENERIC_MINOR_VERSION
AC_SUBST(GENERIC_RELEASE)
AC_SUBST(GENERIC_VERSION)
# default conditional
AM_CONDITIONAL(MINGW, false)
AM_CONDITIONAL(GRAPHICS_DISABLED, false)
#
# Platform specific setup
#
#############################
AC_CANONICAL_HOST
case $host_os in
mingw32*)
AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
AM_CONDITIONAL(MINGW, true)
#AC_SUBST([AM_CPPFLAGS], ["-DWINDLLNAME=\"lib$GENERIC_LIBRARY_NAME\""])
#AC_SUBST([AM_CPPFLAGS], ["-D__BLOB_T_DEFINED -DWINDLLNAME=\"lib$GENERIC_LIBRARY_NAME\""])
AC_SUBST([AM_CPPFLAGS], ["-D__BLOB_T_DEFINED"])
AC_SUBST([AM_LDFLAGS], ['-Wl,-no-undefined -Wl,--as-needed'])
#AM_LDFLAGS='-Wl,-no-undefined -Wl,--as-needed'
;;
*)
# default
;;
esac
includedir="${includedir}/tesseract"
AC_ARG_WITH(extra-includes,
AC_HELP_STRING([--with-extra-includes=DIR],
[Define an additional directory for include files]),
[ if test -d "$withval" ; then
CFLAGS="$CFLAGS -I$withval"
else
AC_MSG_ERROR([Cannot stat directory $withval])
fi ] )
AC_ARG_WITH(extra-libraries,
AC_HELP_STRING([--with-extra-libraries=DIR],
[Define an additional directory for library files]),
[ if test -d "$withval" ; then
LDFLAGS="$LDFLAGS -L$withval"
else
AC_MSG_ERROR([Cannot stat directory $withval])
fi ] )
AC_MSG_CHECKING(--enable-graphics argument)
AC_ARG_ENABLE([graphics],
[AC_HELP_STRING([--enable-graphics],[enable graphics (ScrollView) (default)])
AC_HELP_STRING([--disable-graphics],[disable graphics (ScrollView)])],
[enable_graphics=$enableval],
[enable_graphics="yes"])
AC_MSG_RESULT($enable_graphics)
if test "$enable_graphics" = "no"; then
AC_DEFINE([GRAPHICS_DISABLED], [], [Disable graphics])
AM_CONDITIONAL(GRAPHICS_DISABLED, true)
fi
# check whether to build embedded version
AC_MSG_CHECKING(--enable-embedded argument)
AC_ARG_ENABLE([embedded],
[ --enable-embedded enable embedded build (default=no)],
[enable_embedded=$enableval],
[enable_embedded="no"])
AC_MSG_RESULT($enable_embedded)
AM_CONDITIONAL([EMBEDDED], [test "$enable_embedded" = "yes"])
if test "$enable_embedded" = "yes"; then
AC_SUBST([AM_CPPFLAGS], [-DEMBEDDED])
fi
# check whether to build tesseract with -fvisibility=hidden -fvisibility-inlines-hidden
# http://gcc.gnu.org/wiki/Visibility
# http://groups.google.com/group/tesseract-dev/browse_thread/thread/976645ae98189127
AC_MSG_CHECKING(--enable-visibility argument)
AC_ARG_ENABLE([visibility],
[AC_HELP_STRING([--enable-visibility],[enable experimental build with fvisibility (default=no)])],
[enable_visibility=$enableval],
[enable_visibility="no"])
AC_MSG_RESULT($enable_visibility)
AM_CONDITIONAL([VISIBILITY], [test "$enable_visibility" = "yes"])
# check whether to build multiple libraries
AC_MSG_CHECKING(--enable-multiple-libraries argument)
AC_ARG_ENABLE([multiple-libraries],
[AC_HELP_STRING([--enable-multiple-libraries],[enable multiple libraries (default=no)])],
[enable_mlibs=$enableval],
[enable_mlibs="no"])
AC_MSG_RESULT($enable_mlibs)
AM_CONDITIONAL([USING_MULTIPLELIBS], [test "$enable_mlibs" = "yes"])
# Check if tessdata-prefix is disabled
AC_MSG_CHECKING(whether to use tessdata-prefix)
AC_ARG_ENABLE(tessdata-prefix,
[AC_HELP_STRING([--disable-tessdata-prefix],
[dont set TESSDATA-PREFIX during compile])],
[tessdata_prefix="no"], [tessdata_prefix="yes"])
AC_MSG_RESULT($tessdata_prefix)
AM_CONDITIONAL([NO_TESSDATA_PREFIX], [test "$tessdata_prefix" = "no"])
#localedir='${prefix}/share/locale'
# Not used yet, so disable
#AC_ARG_ENABLE([gettext],
# [ --enable-gettext Enable gettext (default).],
# [enable_gettext=$enableval],
# [enable_gettext="yes"])
#AC_MSG_RESULT($enable_gettext)
#if test "$enable_gettext" = "yes"; then
# AM_GNU_GETTEXT_VERSION([0.17])
# AM_GNU_GETTEXT([external])
# AC_SUBST(localedir)
#else
# AC_DEFINE([NO_GETTEXT], [], [Disable Gettext])
#fi
#AM_CONDITIONAL([USING_GETTEXT], [test "$enable_gettext" = "yes"])
# Always look into a "gnu" directory.
curwd=`pwd`
if test -d $curwd/gnu/include ; then
CPPFLAGS="$CPPFLAGS -I$curwd/gnu/include"
fi
if test -d $curwd/gnu/lib ; then
LDFLAGS="$LDFLAGS -L$curwd/gnu/lib"
fi
# Special cases
case "$host" in
*-darwin* | *-macos10*)
if test -d /opt/local ; then
CPPFLAGS="$CPPFLAGS -I/opt/local/include"
LDFLAGS="$LDFLAGS -L/opt/local/lib"
elif test -d /sw ; then
CPPFLAGS="$CPPFLAGS -I/sw/include"
LDFLAGS="$LDFLAGS -L/sw/lib"
fi
;;
esac
# ----------------------------------------
# Check Compiler Characteristics and
# configure automake. The two appear to
# be intimately linked...
# ----------------------------------------
# Define order of compilers
AC_PROG_CXX(cl.exe g++)
# Not needed
# AC_PROG_CC
AC_PROG_LIBTOOL
# Automake configuration
# ----------------------------------------
# Note: may need to configure automake to use ZIP as a distribution
# format because of an apparent bug with GZIP, which results in bogus
# archives.
# TODO(luc) Resolve this issue.
#AM_INIT_AUTOMAKE(dist-zip)
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER(config_auto.h:config/config.h.in)
#AM_PROG_CC_C_O
AM_MAINTAINER_MODE
# Need to tell automake if Visual C++ is being used:
AM_CONDITIONAL(USING_CL, test "x${CC}" = 'xcl.exe' )
# Additional checking of compiler characteristics
# ----------------------------------------
# Check Endianness. If Big Endian, this will define WORDS_BIGENDIAN
# See also at end of this file, where we define INTEL_BYTE_ORDER
# or MOTOROLA_BYTE_ORDER.
AC_C_BIGENDIAN
# ----------------------------------------
# Check for programs we need
# ----------------------------------------
# Check where all the following programs are and set
# variables accordingly:
LT_INIT
# AC_PROG_LN_S
# AC_PATH_PROG(MV, mv)
# AC_PATH_PROG(CP, cp)
# AC_PATH_PROG(RM, rm)
# AC_PATH_PROG(AR, ar)
# AC_PATH_PROG(TOUCH, touch)
# AC_PATH_PROG(SED, sed)
# AC_PATH_PROG(BASH, bash, ,[$PATH:/usr/bin:/util/tools/bin])
# # To use substitution in makefiles, use something like:
# AC_SUBST(BASH)
# TODO(luc) Handle documentation. None of the following
# is really needed until then
#
# AC_PROG_DOXYGEN_VERSION(1.3.2,[DOXYGEN_OK=1])
# AC_PATH_PROG(DOT, dot)
# AC_PATH_PROG(LATEX, latex)
# AC_PATH_PROG(DVIPS, dvips)
# AC_PATH_PROG(MAKEINDEX, makeindex)
# AC_PATH_PROG(PDFLATEX, pdflatex)
# AC_PATH_PROG(GZIP, gzip)
#
# if test -z "$DOXYGEN_OK" -o -z "$DOT"; then
# AC_MSG_WARN([------------------------------------
# *** Disabling automatic documentation generation for this
# *** package. Please check that you have 'doxygen' (version
# *** $ac_doxygen_version or later) and 'graphviz' (aka, 'dot')
# *** installed on your system. In addition, to generate
# *** PostScript and PDF documentation, you will need to have
# *** LaTeX and PdfLaTeX respectively. Re-run this configuration
# *** script after you have updated your environment.
# --------------------------------------------------------])
#
# # We have appropriate version of doxygen and dot, so we
# # can generate documentation. It remains to be seen whether
# # we can generate PDF and PostScript documentation..
# else
# GENERATE_DOCUMENTATION="true"
#
# # Determine if PostScript documentation is generated:
# if test -z "$LATEX" -o -z "$DVIPS" -o -z "$MAKEINDEX"; then
# AC_MSG_WARN([Disabling generation of PostScript documentation])
# else
# GENERATE_PS_DOCUMENTATION="true"
# fi
#
# # Determine if PDF documentation is generated:
# if test -z "$PDFLATEX" -o -z "$MAKEINDEX"; then
# AC_MSG_WARN([Disabling generation of PDF documentation])
# else
# GENERATE_PDF_DOCUMENTATION="true"
# fi
# fi
#
# # These substitutions could be inside the 'else'
# # conditionals above, but it is not necessary and would
# # only cause some confusion...
# AC_SUBST(DOXYGEN)
# AC_SUBST(DOT)
# AC_SUBST(LATEX)
# AC_SUBST(DVIPS)
# AC_SUBST(MAKEINDEX)
# AC_SUBST(PDFLATEX)
# AC_SUBST(GZIP)
#
# # Adjust makefiles based on the kind of documentation that
# # is being generated,
# AM_CONDITIONAL(GENERATE_DOCUMENTATION, test -n "$GENERATE_DOCUMENTATION")
# AM_CONDITIONAL(GENERATE_PS_DOCUMENTATION, test -n "$GENERATE_PS_DOCUMENTATION")
# AM_CONDITIONAL(GENERATE_PDF_DOCUMENTATION, test -n "$GENERATE_PDF_DOCUMENTATION")
# Test for GNUWIN32 tools (only useful under windows)
# AC_PATH_GNUWIN32
# ----------------------------------------
# C++ related options
# ----------------------------------------
AC_LANG_CPLUSPLUS
# Enable --enable-debug or --disable-debug and set
# compile options accordingly. We are supposed to be either
# in debug mode or in optimize mode. Note that in debug mode,
# DEBUG_MODE will be set by this macro
# AC_CXX_OPTIMIZE
# AC_CXX_BOOL
# AC_CXX_TYPENAME
# AC_CXX_STDINCLUDES
# AC_CXX_RPO
# ----------------------------------------
# Check for libraries
# ----------------------------------------
# This option seems to always add -lm to the link line,
# which causes unnecessary warnings with Visual C++.
# Comment it out for now.
#AC_CHECK_LIB(m,sqrt)
AC_CHECK_LIB(pthread,sem_init)
# ----------------------------------------
# Checks for header files.
# ----------------------------------------
AC_HEADER_STDC
AC_HEADER_TIME
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(sys/ipc.h sys/shm.h)
AC_CHECK_HEADERS(limits.h malloc.h)
AC_CHECK_HEADERS(allheaders.h)
# Enable use of system-defined bool type if available:
AC_HEADER_STDBOOL
# Misc
AC_SYS_INTERPRETER
AC_SYS_LARGEFILE
# ----------------------------------------
# Checks for typedefs, structures, and compiler characteristics.
# ----------------------------------------
AC_CHECK_TYPES(wchar_t)
AC_CHECK_TYPES(long long int)
AC_CHECK_TYPES(mbstate_t,,,[#include "wchar.h"])
#AC_TYPE_MODE_T
#AC_TYPE_OFF_T
AC_TYPE_SIZE_T
#AC_TYPE_PID_T
# ----------------------------------------
# Checks for library functions.
# ----------------------------------------
AC_FUNC_MMAP
AC_FUNC_FORK
AC_CHECK_FUNCS(strerror vsnprintf)
AC_CHECK_FUNCS(gethostname)
AC_CHECK_FUNCS(strchr memcpy)
AC_CHECK_FUNCS(acos asin)
# ----------------------------------------
# Test auxilliary packages
# ----------------------------------------
# Check location of leptonica/liblept headers.
AC_MSG_CHECKING(for leptonica)
AC_ARG_VAR(LIBLEPT_HEADERSDIR,[Leptonica headers directory])
have_lept=no
if test "$LIBLEPT_HEADERSDIR" = "" ; then
LIBLEPT_HEADERSDIR="/usr/local/include /usr/include"
fi
for incd in $LIBLEPT_HEADERSDIR
do
for lept in . leptonica liblept
do
if test -r "$incd/$lept/allheaders.h" ; then
CPPFLAGS="$CPPFLAGS -I$incd/$lept"
have_lept=yes
fi
done
done
if test "$have_lept" = yes ; then
AC_MSG_RESULT(yes)
AC_CHECK_LIB(lept,pixCreate,[], AC_MSG_ERROR([leptonica library missing]))
else
AC_MSG_ERROR([leptonica not found])
fi
# ----------------------------------------
# Final Tasks and Output
# ----------------------------------------
# Define installation paths
# AC_DEFINE_INSTALL_PATHS
# Redundant with PACKAGE_VERSION - comment out
# AC_DEFINE_UNQUOTED(TESSERACT_VERSION,["${PACKAGE_VERSION}"],[version string])
# Output files
AC_CONFIG_FILES(Makefile)
#if test "$enable_gettext" = "yes"; then
#AC_CONFIG_FILES(po/Makefile.in)
#fi
AC_CONFIG_FILES(api/Makefile)
AC_CONFIG_FILES(ccmain/Makefile)
AC_CONFIG_FILES(ccstruct/Makefile)
AC_CONFIG_FILES(ccutil/Makefile)
AC_CONFIG_FILES(classify/Makefile)
AC_CONFIG_FILES(cube/Makefile)
AC_CONFIG_FILES(cutil/Makefile)
AC_CONFIG_FILES(dict/Makefile)
AC_CONFIG_FILES(image/Makefile)
AC_CONFIG_FILES(neural_networks/runtime/Makefile)
AC_CONFIG_FILES(textord/Makefile)
AC_CONFIG_FILES(viewer/Makefile)
AC_CONFIG_FILES(wordrec/Makefile)
AC_CONFIG_FILES(training/Makefile)
AC_CONFIG_FILES(tessdata/Makefile)
AC_CONFIG_FILES(tessdata/configs/Makefile)
AC_CONFIG_FILES(tessdata/tessconfigs/Makefile)
AC_CONFIG_FILES(testing/Makefile)
if test "$enable_graphics" = "yes"; then
AC_CONFIG_FILES(java/Makefile)
AC_CONFIG_FILES(java/com/Makefile)
AC_CONFIG_FILES(java/com/google/Makefile)
AC_CONFIG_FILES(java/com/google/scrollview/Makefile)
AC_CONFIG_FILES(java/com/google/scrollview/events/Makefile)
AC_CONFIG_FILES(java/com/google/scrollview/ui/Makefile)
fi
AC_CONFIG_FILES(doc/Makefile)
# AC_CONFIG_FILES(doc/Doxyfile)
# AC_CONFIG_FILES(doc/header.html)
# AC_CONFIG_FILES(doc/footer.html)
# AC_CONFIG_FILES(doc/header.tex)
# AC_CONFIG_FILES(doc/RTF_ExtensionFile)
# AC_CONFIG_FILES(doc/Makefile)
AC_OUTPUT
# Final message
echo ""
echo "Configuration is done."
echo "You can now build $PACKAGE_NAME by running:"
# test x$GXX = xyes && \
# echo "% make depend [optional]"
echo ""
echo "% make"
# ----------------------------------------
# CONFIG Template
# ----------------------------------------
# Fence added in configuration file
AH_TOP([
#ifndef CONFIG_AUTO_H
#define CONFIG_AUTO_H
/* config_auto.h: begin */
])
# Stuff added at bottom of file
AH_BOTTOM([
/* Miscellaneous defines */
#define AUTOCONF 1
/* Not used yet
#ifndef NO_GETTEXT
#define USING_GETTEXT
#endif
*/
/* config_auto.h: end */
#endif
])