| # -*-Shell-script-*- |
| # |
| # Copyright (c) Luc Vincent |
| |
| # ---------------------------------------- |
| # Initialization |
| # ---------------------------------------- |
| |
| AC_PREREQ(2.50) |
| AC_INIT(tesseract, 3.00, theraysmith@gmail.com) |
| 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) |
| AC_CANONICAL_HOST |
| |
| # Define date of package, etc. Could be useful in auto-generated |
| # documentation. |
| # TODO(luc) Generate good documentation using doxygen or equivalent |
| PACKAGE_YEAR=2009 |
| PACKAGE_DATE="05/29" |
| |
| 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) |
| |
| 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 ] ) |
| |
| # 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 |
| |
| # 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: |
| AC_PROG_RANLIB |
| # 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(z,deflate) |
| AC_CHECK_LIB(png,png_read_png) |
| AC_CHECK_LIB(jpeg,jpeg_read_scanlines) |
| 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 |
| # ---------------------------------------- |
| |
| # Search JPEG library - not needed at the moment |
| # AC_PATH_JPEG(, |
| # [ no_jpeg=yes |
| # AC_MSG_WARN([JPEG support is disabled]) ]) |
| |
| # Search LIBTIFF library |
| AC_PATH_LIBTIFF(, |
| [ no_libtiff=yes |
| AC_MSG_WARN([TIFF support is disabled]) ]) |
| |
| # Check location of leptonica/liblept headers. |
| have_lept=no |
| for incd in /usr/local/include /usr/include |
| 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_CHECK_LIB(lept,pixCreate) |
| 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) |
| 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(cutil/Makefile) |
| AC_CONFIG_FILES(dict/Makefile) |
| AC_CONFIG_FILES(image/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) |
| 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) |
| # 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 |
| |
| /* config_auto.h: end */ |
| #endif |
| ]) |
| |