2007-03-08 04:03:40 +08:00
|
|
|
# -*-Shell-script-*-
|
|
|
|
#
|
|
|
|
# Copyright (c) Luc Vincent
|
|
|
|
|
|
|
|
# ----------------------------------------
|
|
|
|
# Initialization
|
|
|
|
# ----------------------------------------
|
2018-04-20 00:11:43 +08:00
|
|
|
AC_PREREQ([2.63])
|
2018-03-13 02:53:00 +08:00
|
|
|
AC_INIT([tesseract],
|
2018-03-19 03:15:14 +08:00
|
|
|
[m4_esyscmd_s([test -d .git && git describe --abbrev=4 || cat VERSION])],
|
2018-03-13 02:53:00 +08:00
|
|
|
[https://github.com/tesseract-ocr/tesseract/issues],,
|
|
|
|
[https://github.com/tesseract-ocr/tesseract/])
|
2019-07-14 02:10:33 +08:00
|
|
|
|
|
|
|
# Store command like options for CXXFLAGS
|
|
|
|
OLD_CXXFLAGS=$CXXFLAGS
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_PROG_CXX([g++ clang++])
|
2019-07-14 02:10:33 +08:00
|
|
|
# reset compiler flags to initial flags
|
2015-11-05 05:39:24 +08:00
|
|
|
AC_LANG([C++])
|
|
|
|
AC_LANG_COMPILER_REQUIRE
|
2014-01-22 16:10:15 +08:00
|
|
|
CXXFLAGS=${CXXFLAGS:-""}
|
2011-08-19 06:06:01 +08:00
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_CONFIG_AUX_DIR([config])
|
2018-04-25 16:02:54 +08:00
|
|
|
AC_CONFIG_SRCDIR([src/api/tesseractmain.cpp])
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_PREFIX_DEFAULT([/usr/local])
|
2007-03-08 04:03:40 +08:00
|
|
|
|
2018-03-27 15:46:08 +08:00
|
|
|
# Automake configuration. Do not require README file (we use README.md).
|
|
|
|
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
# Define date of package, etc. Could be useful in auto-generated
|
|
|
|
# documentation.
|
2018-03-13 02:53:00 +08:00
|
|
|
PACKAGE_YEAR=2018
|
2018-10-29 16:53:12 +08:00
|
|
|
PACKAGE_DATE="10/29"
|
2007-03-08 04:03:40 +08:00
|
|
|
|
2015-05-02 18:15:13 +08:00
|
|
|
abs_top_srcdir=`AS_DIRNAME([$0])`
|
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
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])
|
2007-03-08 04:03:40 +08:00
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_SUBST([PACKAGE_NAME])
|
|
|
|
AC_SUBST([PACKAGE_VERSION])
|
|
|
|
AC_SUBST([PACKAGE_YEAR])
|
|
|
|
AC_SUBST([PACKAGE_DATE])
|
2007-03-08 04:03:40 +08:00
|
|
|
|
2010-05-26 22:20:20 +08:00
|
|
|
GENERIC_LIBRARY_NAME=tesseract
|
|
|
|
|
2018-03-27 15:46:08 +08:00
|
|
|
# Release versioning. Get versions from PACKAGE_VERSION.
|
|
|
|
AX_SPLIT_VERSION
|
2018-04-14 22:11:27 +08:00
|
|
|
GENERIC_MAJOR_VERSION=$(echo "$AX_MAJOR_VERSION" | $SED 's/^[[^0-9]]*//')
|
2018-03-27 15:46:08 +08:00
|
|
|
GENERIC_MINOR_VERSION=$AX_MINOR_VERSION
|
|
|
|
GENERIC_MICRO_VERSION=`echo "$AX_POINT_VERSION" | $SED 's/^\([[0-9]][[0-9]]*\).*/\1/'`
|
2010-05-26 22:20:20 +08:00
|
|
|
|
|
|
|
# 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
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_SUBST([GENERIC_API_VERSION])
|
|
|
|
AC_SUBST([GENERIC_MAJOR_VERSION])
|
2018-03-27 15:46:08 +08:00
|
|
|
AC_SUBST([GENERIC_MINOR_VERSION])
|
|
|
|
AC_SUBST([GENERIC_MICRO_VERSION])
|
2010-05-26 22:20:20 +08:00
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_SUBST([GENERIC_LIBRARY_VERSION])
|
2010-05-26 22:20:20 +08:00
|
|
|
PACKAGE=$GENERIC_LIBRARY_NAME
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_SUBST([GENERIC_LIBRARY_NAME])
|
2010-05-26 22:20:20 +08:00
|
|
|
|
|
|
|
GENERIC_VERSION=$GENERIC_MAJOR_VERSION.$GENERIC_MINOR_VERSION.$GENERIC_MICRO_VERSION
|
|
|
|
GENERIC_RELEASE=$GENERIC_MAJOR_VERSION.$GENERIC_MINOR_VERSION
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_SUBST([GENERIC_RELEASE])
|
|
|
|
AC_SUBST([GENERIC_VERSION])
|
2010-05-26 22:20:20 +08:00
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_CONFIG_HEADERS([config_auto.h:config/config.h.in])
|
2014-01-11 07:52:04 +08:00
|
|
|
|
2012-03-23 04:01:33 +08:00
|
|
|
# default conditional
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([T_WIN], false)
|
|
|
|
AM_CONDITIONAL([OSX], false)
|
|
|
|
AM_CONDITIONAL([GRAPHICS_DISABLED], false)
|
2016-11-12 05:03:16 +08:00
|
|
|
AC_SUBST([AM_CPPFLAGS])
|
2012-03-23 04:01:33 +08:00
|
|
|
|
2013-12-14 16:35:14 +08:00
|
|
|
OPENCL_INC="/opt/AMDAPP/include"
|
2017-05-12 15:36:04 +08:00
|
|
|
OPENCL_LIBS="-lOpenCL"
|
2013-01-31 06:57:49 +08:00
|
|
|
#############################
|
2012-03-23 04:01:33 +08:00
|
|
|
#
|
|
|
|
# Platform specific setup
|
|
|
|
#
|
|
|
|
#############################
|
|
|
|
AC_CANONICAL_HOST
|
2013-10-21 04:59:18 +08:00
|
|
|
case "${host_os}" in
|
2016-03-24 00:24:21 +08:00
|
|
|
mingw*)
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([T_WIN], true)
|
|
|
|
AM_CONDITIONAL([ADD_RT], false)
|
2012-03-23 04:01:33 +08:00
|
|
|
AC_SUBST([AM_LDFLAGS], ['-Wl,-no-undefined -Wl,--as-needed'])
|
|
|
|
;;
|
2014-03-11 22:12:39 +08:00
|
|
|
cygwin*)
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([ADD_RT], false)
|
2018-10-20 17:25:28 +08:00
|
|
|
AC_SUBST([NOUNDEFINED], ['-no-undefined'])
|
2015-05-02 18:15:13 +08:00
|
|
|
;;
|
2013-10-21 04:59:18 +08:00
|
|
|
solaris*)
|
2019-03-27 22:35:58 +08:00
|
|
|
LIBS="$LIBS -lsocket -lnsl -lrt -lxnet"
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([ADD_RT], true)
|
2014-01-27 06:39:20 +08:00
|
|
|
;;
|
|
|
|
*darwin*)
|
2015-08-26 17:03:07 +08:00
|
|
|
OPENCL_LIBS=""
|
2014-01-27 06:39:20 +08:00
|
|
|
OPENCL_INC=""
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([ADD_RT], false)
|
2014-01-18 04:53:15 +08:00
|
|
|
;;
|
2019-05-26 00:08:55 +08:00
|
|
|
*android*|openbsd*)
|
2018-11-15 20:56:28 +08:00
|
|
|
AM_CONDITIONAL([ADD_RT], false)
|
|
|
|
;;
|
2014-01-18 04:53:15 +08:00
|
|
|
powerpc-*-darwin*)
|
|
|
|
OPENCL_LIBS=""
|
2013-12-14 16:35:14 +08:00
|
|
|
;;
|
2014-01-22 16:10:15 +08:00
|
|
|
*)
|
2012-07-23 05:36:20 +08:00
|
|
|
# default
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([ADD_RT], true)
|
2012-03-23 04:01:33 +08:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2019-05-20 16:48:54 +08:00
|
|
|
WERROR=-Werror
|
2019-05-21 18:19:24 +08:00
|
|
|
# The test code used by AX_CHECK_COMPILE_FLAG uses an empty statement
|
|
|
|
# and unused macros which must not raise a compiler error, but it must
|
|
|
|
# be an error if flags like -avx are ignored on ARM and other
|
|
|
|
# architectures because they are unsupported.
|
|
|
|
AX_CHECK_COMPILE_FLAG([-Werror=unused-command-line-argument], [WERROR=-Werror=unused-command-line-argument])
|
2019-05-14 14:41:56 +08:00
|
|
|
|
2016-12-23 17:20:08 +08:00
|
|
|
## Checks for supported compiler options.
|
2017-02-03 01:20:24 +08:00
|
|
|
|
2019-05-14 14:41:56 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-mavx], [avx=true], [avx=false], [$WERROR])
|
Replace AVX_OPT, ..., AVX macros by HAVE_AVX, ... and clean related code
- Replace AVX_OPT, AVX2_OPT, FMA_OPT, SSE41_OPT
- Replace AVX, AVX2, FMA, SSE4_1
- Write new HAVE_AVX, HAVE_AVX2, HAVE_FMA, HAVE_SSE4_1 into config_auto.h
- Put related conditionals in Makefile.am in one place
This makes the code clearer and fixes a log message in
IntSimdMatrixTest.AVX2.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2019-11-29 00:28:06 +08:00
|
|
|
AM_CONDITIONAL([HAVE_AVX], ${avx})
|
|
|
|
if $avx; then
|
|
|
|
AC_DEFINE([HAVE_AVX], [1], [Enable AVX instructions])
|
|
|
|
fi
|
2017-09-08 22:06:19 +08:00
|
|
|
|
2019-05-14 14:41:56 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-mavx2], [avx2=true], [avx2=false], [$WERROR])
|
Replace AVX_OPT, ..., AVX macros by HAVE_AVX, ... and clean related code
- Replace AVX_OPT, AVX2_OPT, FMA_OPT, SSE41_OPT
- Replace AVX, AVX2, FMA, SSE4_1
- Write new HAVE_AVX, HAVE_AVX2, HAVE_FMA, HAVE_SSE4_1 into config_auto.h
- Put related conditionals in Makefile.am in one place
This makes the code clearer and fixes a log message in
IntSimdMatrixTest.AVX2.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2019-11-29 00:28:06 +08:00
|
|
|
AM_CONDITIONAL([HAVE_AVX2], $avx2)
|
|
|
|
if $avx2; then
|
|
|
|
AC_DEFINE([HAVE_AVX2], [1], [Enable AVX2 instructions])
|
|
|
|
fi
|
2016-12-23 17:20:08 +08:00
|
|
|
|
2019-07-13 02:47:12 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-mfma], [fma=true], [fma=false], [$WERROR])
|
Replace AVX_OPT, ..., AVX macros by HAVE_AVX, ... and clean related code
- Replace AVX_OPT, AVX2_OPT, FMA_OPT, SSE41_OPT
- Replace AVX, AVX2, FMA, SSE4_1
- Write new HAVE_AVX, HAVE_AVX2, HAVE_FMA, HAVE_SSE4_1 into config_auto.h
- Put related conditionals in Makefile.am in one place
This makes the code clearer and fixes a log message in
IntSimdMatrixTest.AVX2.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2019-11-29 00:28:06 +08:00
|
|
|
AM_CONDITIONAL([HAVE_FMA], $fma)
|
|
|
|
if $fma; then
|
|
|
|
AC_DEFINE([HAVE_FMA], [1], [Enable FMA instructions])
|
|
|
|
fi
|
2019-07-13 02:47:12 +08:00
|
|
|
|
2019-05-14 14:41:56 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-msse4.1], [sse41=true], [sse41=false], [$WERROR])
|
Replace AVX_OPT, ..., AVX macros by HAVE_AVX, ... and clean related code
- Replace AVX_OPT, AVX2_OPT, FMA_OPT, SSE41_OPT
- Replace AVX, AVX2, FMA, SSE4_1
- Write new HAVE_AVX, HAVE_AVX2, HAVE_FMA, HAVE_SSE4_1 into config_auto.h
- Put related conditionals in Makefile.am in one place
This makes the code clearer and fixes a log message in
IntSimdMatrixTest.AVX2.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2019-11-29 00:28:06 +08:00
|
|
|
AM_CONDITIONAL([HAVE_SSE4_1], $sse41)
|
|
|
|
if $sse41; then
|
|
|
|
AC_DEFINE([HAVE_SSE4_1], [1], [Enable SSE 4.1 instructions])
|
|
|
|
fi
|
2019-05-14 14:41:56 +08:00
|
|
|
|
|
|
|
AX_CHECK_COMPILE_FLAG([-march=native], [arch_native=true], [arch_native=false], [$WERROR])
|
|
|
|
AM_CONDITIONAL([MARCH_NATIVE_OPT], $arch_native)
|
2018-12-06 03:13:28 +08:00
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_ARG_WITH([extra-includes],
|
2016-12-23 16:32:51 +08:00
|
|
|
[AS_HELP_STRING([--with-extra-includes=DIR],
|
2016-05-27 21:30:17 +08:00
|
|
|
[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],
|
2016-12-23 16:32:51 +08:00
|
|
|
[AS_HELP_STRING([--with-extra-libraries=DIR],
|
2016-05-27 21:30:17 +08:00
|
|
|
[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])
|
2010-07-19 09:59:13 +08:00
|
|
|
AC_ARG_ENABLE([graphics],
|
2018-07-19 22:11:26 +08:00
|
|
|
AS_HELP_STRING([--disable-graphics], [disable graphics (ScrollView)]))
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_RESULT([$enable_graphics])
|
2010-05-28 20:21:22 +08:00
|
|
|
if test "$enable_graphics" = "no"; then
|
2012-03-23 04:01:33 +08:00
|
|
|
AC_DEFINE([GRAPHICS_DISABLED], [], [Disable graphics])
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([GRAPHICS_DISABLED], true)
|
2012-03-02 06:43:51 +08:00
|
|
|
fi
|
|
|
|
|
2018-07-03 23:49:42 +08:00
|
|
|
AC_MSG_CHECKING([--enable-legacy argument])
|
|
|
|
AC_ARG_ENABLE([legacy],
|
2018-07-19 22:07:35 +08:00
|
|
|
AS_HELP_STRING([--disable-legacy], [disable the legacy OCR engine]))
|
2018-07-03 23:49:42 +08:00
|
|
|
AC_MSG_RESULT([$enable_legacy])
|
|
|
|
AM_CONDITIONAL([DISABLED_LEGACY_ENGINE], test "$enable_legacy" = "no")
|
2019-11-27 23:26:14 +08:00
|
|
|
if test "$enable_legacy" = "no"; then
|
|
|
|
AC_DEFINE([DISABLED_LEGACY_ENGINE], [1], [Disable legacy OCR engine])
|
|
|
|
fi
|
2018-07-03 23:49:42 +08:00
|
|
|
|
2015-08-15 03:35:18 +08:00
|
|
|
# check whether to build OpenMP support
|
|
|
|
AC_OPENMP
|
|
|
|
|
2018-07-21 17:05:49 +08:00
|
|
|
have_tiff=false
|
|
|
|
# Note that the first usage of AC_CHECK_HEADERS must be unconditional.
|
|
|
|
AC_CHECK_HEADERS([tiffio.h], [have_tiff=true], [have_tiff=false])
|
|
|
|
|
2013-11-12 18:40:40 +08:00
|
|
|
# check whether to build opencl version
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_CHECKING([--enable-opencl argument])
|
2013-11-12 18:40:40 +08:00
|
|
|
AC_ARG_ENABLE([opencl],
|
2018-07-19 15:36:58 +08:00
|
|
|
AS_HELP_STRING([--enable-opencl], [enable opencl build [default=no]]))
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_RESULT([$enable_opencl])
|
2015-07-23 04:03:03 +08:00
|
|
|
# check for opencl header
|
|
|
|
have_opencl=false
|
2018-07-19 15:36:58 +08:00
|
|
|
if test "$enable_opencl" = "yes"; then
|
|
|
|
AC_CHECK_HEADERS([CL/cl.h], [have_opencl=true], [
|
2018-07-21 17:05:49 +08:00
|
|
|
AC_CHECK_HEADERS(OpenCL/cl.h, [have_opencl=true], [have_opencl=false])
|
2018-07-19 15:36:58 +08:00
|
|
|
])
|
|
|
|
fi
|
2015-08-26 02:57:49 +08:00
|
|
|
|
2019-05-24 23:14:28 +08:00
|
|
|
# Check whether to build with support for TensorFlow.
|
2019-05-24 20:11:31 +08:00
|
|
|
AC_ARG_WITH([tensorflow],
|
|
|
|
AS_HELP_STRING([--with-tensorflow],
|
2019-05-24 23:14:28 +08:00
|
|
|
[support TensorFlow @<:@default=check@:>@]),
|
2019-05-24 20:11:31 +08:00
|
|
|
[], [with_tensorflow=check])
|
2019-05-24 22:51:47 +08:00
|
|
|
AM_CONDITIONAL([TENSORFLOW], false)
|
|
|
|
TENSORFLOW_LIBS=
|
|
|
|
AS_IF([test "x$with_tensorflow" != xno],
|
2019-05-26 23:29:23 +08:00
|
|
|
[AC_CHECK_HEADERS(["tensorflow/core/framework/graph.pb.h"],
|
2019-05-24 22:51:47 +08:00
|
|
|
[AC_SUBST([TENSORFLOW_LIBS], ["-lprotobuf -ltensorflow_cc"])
|
|
|
|
AM_CONDITIONAL([TENSORFLOW], true)
|
|
|
|
],
|
|
|
|
[if test "x$with_tensorflow" != xcheck; then
|
|
|
|
AC_MSG_FAILURE(
|
|
|
|
[--with-tensorflow was given, but test for libtensorflow-dev failed])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
])
|
2019-05-24 20:11:31 +08:00
|
|
|
|
2015-08-26 02:57:49 +08:00
|
|
|
# https://lists.apple.com/archives/unix-porting/2009/Jan/msg00026.html
|
|
|
|
m4_define([MY_CHECK_FRAMEWORK],
|
|
|
|
[AC_CACHE_CHECK([if -framework $1 works],[my_cv_framework_$1],
|
|
|
|
[save_LIBS="$LIBS"
|
|
|
|
LIBS="$LIBS -framework $1"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
|
|
|
|
[my_cv_framework_$1=yes],
|
|
|
|
[my_cv_framework_$1=no])
|
|
|
|
LIBS="$save_LIBS"
|
|
|
|
])
|
|
|
|
if test "$my_cv_framework_$1"="yes"; then
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_DEFINE(AS_TR_CPP([HAVE_FRAMEWORK_$1]), 1,
|
2015-08-26 02:57:49 +08:00
|
|
|
[Define if you have the $1 framework])
|
2016-05-27 21:30:17 +08:00
|
|
|
AS_TR_CPP([FRAMEWORK_$1])="-framework $1"
|
|
|
|
AC_SUBST(AS_TR_CPP([FRAMEWORK_$1]))
|
2015-08-26 02:57:49 +08:00
|
|
|
fi]
|
|
|
|
)
|
|
|
|
|
|
|
|
have_opencl_lib=false
|
2015-08-26 17:03:07 +08:00
|
|
|
OPENCL_CPPFLAGS=''
|
|
|
|
OPENCL_LDFLAGS=''
|
2015-08-26 15:10:56 +08:00
|
|
|
case "${host_os}" in
|
|
|
|
*darwin* | *-macos10*)
|
|
|
|
echo "checking for OpenCL framework"
|
|
|
|
MY_CHECK_FRAMEWORK([OpenCL])
|
|
|
|
if test $my_cv_framework_OpenCL = yes; then
|
|
|
|
have_opencl_lib=true
|
|
|
|
fi
|
2015-08-26 17:17:10 +08:00
|
|
|
if test "$enable_opencl" = "yes"; then
|
|
|
|
if !($have_opencl_lib); then
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_ERROR([Required OpenCL library not found!])
|
2015-08-26 17:17:10 +08:00
|
|
|
fi
|
2016-11-12 05:03:16 +08:00
|
|
|
AM_CPPFLAGS="-DUSE_OPENCL $AM_CPPFLAGS"
|
2015-08-26 17:17:10 +08:00
|
|
|
OPENCL_CPPFLAGS=""
|
2017-05-12 15:36:04 +08:00
|
|
|
OPENCL_LDFLAGS="-framework OpenCL"
|
2015-08-26 17:17:10 +08:00
|
|
|
fi
|
2015-08-26 15:10:56 +08:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# default
|
2015-08-26 17:03:07 +08:00
|
|
|
if test "$enable_opencl" = "yes"; then
|
2018-07-19 15:36:58 +08:00
|
|
|
AC_CHECK_LIB([OpenCL], [clGetPlatformIDs],
|
|
|
|
[have_opencl_lib=true], [have_opencl_lib=false])
|
2015-08-26 17:03:07 +08:00
|
|
|
if !($have_opencl); then
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_ERROR([Required OpenCL headers not found!])
|
2015-08-26 17:03:07 +08:00
|
|
|
fi
|
|
|
|
if !($have_opencl_lib); then
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_ERROR([Required OpenCL library not found!])
|
2015-08-26 17:03:07 +08:00
|
|
|
fi
|
2016-11-12 05:03:16 +08:00
|
|
|
AM_CPPFLAGS="-DUSE_OPENCL $AM_CPPFLAGS"
|
2015-08-26 17:03:07 +08:00
|
|
|
OPENCL_CPPFLAGS="-I${OPENCL_INC}"
|
2015-09-01 23:43:38 +08:00
|
|
|
OPENCL_LDFLAGS="${OPENCL_LIBS}"
|
2015-08-26 17:03:07 +08:00
|
|
|
fi
|
2015-08-26 15:10:56 +08:00
|
|
|
;;
|
|
|
|
esac
|
2015-07-22 20:40:07 +08:00
|
|
|
AM_CONDITIONAL([USE_OPENCL], [test "$enable_opencl" = "yes"])
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_SUBST([OPENCL_CPPFLAGS])
|
|
|
|
AC_SUBST([OPENCL_LDFLAGS])
|
2013-11-12 18:40:40 +08:00
|
|
|
|
2012-03-03 07:51:33 +08:00
|
|
|
# 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
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_CHECKING([--enable-visibility argument])
|
2012-03-03 07:51:33 +08:00
|
|
|
AC_ARG_ENABLE([visibility],
|
2018-07-19 21:52:14 +08:00
|
|
|
AS_HELP_STRING([--enable-visibility],
|
|
|
|
[enable experimental build with -fvisibility [default=no]]))
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_RESULT([$enable_visibility])
|
2012-03-03 07:51:33 +08:00
|
|
|
AM_CONDITIONAL([VISIBILITY], [test "$enable_visibility" = "yes"])
|
|
|
|
|
2012-03-23 04:01:33 +08:00
|
|
|
# Check if tessdata-prefix is disabled
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_CHECKING([whether to use tessdata-prefix])
|
|
|
|
AC_ARG_ENABLE([tessdata-prefix],
|
2016-12-23 16:32:51 +08:00
|
|
|
[AS_HELP_STRING([--disable-tessdata-prefix],
|
2015-07-24 17:51:44 +08:00
|
|
|
[don't set TESSDATA-PREFIX during compile])],
|
2012-07-23 05:36:20 +08:00
|
|
|
[tessdata_prefix="no"], [tessdata_prefix="yes"])
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_RESULT([$tessdata_prefix])
|
2012-03-23 04:01:33 +08:00
|
|
|
AM_CONDITIONAL([NO_TESSDATA_PREFIX], [test "$tessdata_prefix" = "no"])
|
2011-10-17 03:39:54 +08:00
|
|
|
|
2019-07-14 02:10:33 +08:00
|
|
|
|
|
|
|
# Detect Clang compiler
|
|
|
|
AC_MSG_CHECKING([if compiling with clang])
|
|
|
|
AC_COMPILE_IFELSE(
|
|
|
|
[AC_LANG_PROGRAM([], [[
|
|
|
|
#ifndef __clang__
|
|
|
|
not clang
|
|
|
|
#endif
|
|
|
|
]])],
|
|
|
|
[CLANG=yes], [CLANG=no])
|
|
|
|
AC_MSG_RESULT([$CLANG])
|
|
|
|
|
2018-02-21 15:39:07 +08:00
|
|
|
# Check whether to enable debugging
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_CHECKING([whether to enable debugging])
|
2012-07-23 05:36:20 +08:00
|
|
|
AC_ARG_ENABLE([debug],
|
2018-07-19 22:00:10 +08:00
|
|
|
AS_HELP_STRING([--enable-debug], [turn on debugging [default=no]]))
|
|
|
|
AC_MSG_RESULT([$enable_debug])
|
|
|
|
if test x"$enable_debug" = x"yes"; then
|
2019-07-14 02:10:33 +08:00
|
|
|
CXXFLAGS=${CXXFLAGS:-"-O2"}
|
|
|
|
AM_CPPFLAGS="$AM_CPPFLAGS -g -Wall -DDEBUG -pedantic"
|
|
|
|
AM_CXXFLAGS="$AM_CXXFLAGS -g -Wall -DDEBUG -pedantic"
|
|
|
|
if test "x$CLANG" = "xyes"; then
|
|
|
|
# https://clang.llvm.org/docs/CommandGuide/clang.html
|
|
|
|
# clang treats -Og as -O1
|
|
|
|
AM_CPPFLAGS="$AM_CPPFLAGS -O0"
|
|
|
|
AM_CXXFLAGS="$AM_CXXFLAGS -O0"
|
|
|
|
else
|
|
|
|
AM_CPPFLAGS="$AM_CPPFLAGS -Og"
|
|
|
|
AM_CXXFLAGS="$AM_CXXFLAGS -Og"
|
|
|
|
fi
|
2012-07-23 05:36:20 +08:00
|
|
|
else
|
2013-11-10 23:12:01 +08:00
|
|
|
AM_CXXFLAGS="$AM_CXXFLAGS -O2 -DNDEBUG"
|
2019-07-14 02:10:33 +08:00
|
|
|
AM_CPPFLAGS="$AM_CPPFLAGS -O2 -DNDEBUG"
|
2012-07-23 05:36:20 +08:00
|
|
|
fi
|
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
# 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
|
|
|
|
|
2013-01-31 06:57:49 +08:00
|
|
|
# ----------------------------------------
|
2007-03-08 04:03:40 +08:00
|
|
|
# Additional checking of compiler characteristics
|
|
|
|
# ----------------------------------------
|
|
|
|
|
|
|
|
# Check Endianness. If Big Endian, this will define WORDS_BIGENDIAN
|
|
|
|
AC_C_BIGENDIAN
|
|
|
|
|
|
|
|
|
|
|
|
# ----------------------------------------
|
2018-04-20 08:31:08 +08:00
|
|
|
# Init libtool
|
2007-03-08 04:03:40 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
|
2010-05-26 22:20:20 +08:00
|
|
|
LT_INIT
|
2007-03-08 04:03:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
# ----------------------------------------
|
|
|
|
# C++ related options
|
|
|
|
# ----------------------------------------
|
2019-02-13 18:05:34 +08:00
|
|
|
dnl **********************
|
|
|
|
dnl Turn on C++11 or newer
|
|
|
|
dnl **********************
|
2013-11-04 01:22:27 +08:00
|
|
|
|
2019-02-13 18:05:34 +08:00
|
|
|
CPLUSPLUS=
|
2019-05-31 16:40:56 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-std=c++11], [CPLUSPLUS=11], [], [$WERROR])
|
|
|
|
AX_CHECK_COMPILE_FLAG([-std=c++14], [CPLUSPLUS=14], [], [$WERROR])
|
|
|
|
AX_CHECK_COMPILE_FLAG([-std=c++17], [CPLUSPLUS=17], [], [$WERROR])
|
|
|
|
#AX_CHECK_COMPILE_FLAG([-std=c++20], [CPLUSPLUS=20], [], [$WERROR])
|
2019-02-13 18:05:34 +08:00
|
|
|
|
|
|
|
if test -z "$CPLUSPLUS"; then
|
|
|
|
AC_MSG_ERROR([Your compiler does not have the necessary C++11 support! Cannot proceed.])
|
|
|
|
fi
|
|
|
|
|
2019-05-31 16:40:56 +08:00
|
|
|
# Set C++11, C++14 or C++17 support based on platform/compiler
|
2017-01-09 01:00:58 +08:00
|
|
|
case "${host_os}" in
|
|
|
|
cygwin*)
|
2019-02-13 18:05:34 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -std=gnu++$CPLUSPLUS"
|
2017-01-09 01:00:58 +08:00
|
|
|
;;
|
|
|
|
*-darwin* | *-macos10*)
|
2019-05-31 16:40:56 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -std=c++$CPLUSPLUS"
|
|
|
|
if test "x$CLANG" = "xyes"; then
|
|
|
|
LDFLAGS="$LDFLAGS -stdlib=libc++"
|
|
|
|
fi
|
2017-01-09 01:00:58 +08:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# default
|
2019-02-13 18:05:34 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -std=c++$CPLUSPLUS"
|
2017-01-09 01:00:58 +08:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
# Check for libraries
|
|
|
|
# ----------------------------------------
|
|
|
|
|
2019-03-27 22:35:58 +08:00
|
|
|
AC_SEARCH_LIBS([pthread_create], [pthread])
|
2013-01-31 06:57:49 +08:00
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
|
|
|
|
# ----------------------------------------
|
|
|
|
# Checks for header files.
|
|
|
|
# ----------------------------------------
|
|
|
|
|
|
|
|
AC_HEADER_STDC
|
|
|
|
AC_HEADER_TIME
|
|
|
|
AC_HEADER_SYS_WAIT
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_CHECK_HEADERS([sys/ipc.h sys/shm.h])
|
|
|
|
AC_CHECK_HEADERS([limits.h malloc.h])
|
2007-03-08 04:03:40 +08:00
|
|
|
# Enable use of system-defined bool type if available:
|
|
|
|
AC_HEADER_STDBOOL
|
|
|
|
|
2018-04-10 01:06:59 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
# Check for programs needed to build documentation.
|
|
|
|
# ----------------------------------------
|
|
|
|
|
|
|
|
AC_CHECK_PROG([have_asciidoc], asciidoc, true, false)
|
2019-02-15 22:10:00 +08:00
|
|
|
AC_CHECK_PROG([have_xsltproc], xsltproc, true, false)
|
|
|
|
if $have_asciidoc && $have_xsltproc; then
|
2018-04-10 01:06:59 +08:00
|
|
|
AM_CONDITIONAL([ASCIIDOC], true)
|
|
|
|
else
|
|
|
|
AM_CONDITIONAL([ASCIIDOC], false)
|
|
|
|
fi
|
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
|
|
# ----------------------------------------
|
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_CHECK_TYPES([wchar_t],,, [#include "wchar.h"])
|
|
|
|
AC_CHECK_TYPES([long long int])
|
|
|
|
AC_CHECK_TYPES([off_t],,, [#include "sys/types.h"])
|
|
|
|
AC_CHECK_TYPES([mbstate_t],,, [#include "wchar.h"])
|
2007-03-08 04:03:40 +08:00
|
|
|
|
|
|
|
# ----------------------------------------
|
2013-09-27 04:23:17 +08:00
|
|
|
# Test auxiliary packages
|
2007-03-08 04:03:40 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
|
2018-12-27 17:15:59 +08:00
|
|
|
PKG_CHECK_MODULES([libcurl], [libcurl], [have_libcurl=true], [have_libcurl=false])
|
2019-10-01 18:32:08 +08:00
|
|
|
AM_CONDITIONAL([HAVE_LIBCURL], $have_libcurl)
|
2019-11-28 23:34:52 +08:00
|
|
|
if $have_libcurl; then
|
|
|
|
AC_DEFINE([HAVE_LIBCURL], [1], [Enable libcurl])
|
|
|
|
fi
|
2018-12-27 17:15:59 +08:00
|
|
|
|
2016-12-24 16:05:32 +08:00
|
|
|
PKG_CHECK_MODULES([LEPTONICA], [lept >= 1.74], [have_lept=true], [have_lept=false])
|
2016-12-13 22:52:29 +08:00
|
|
|
if $have_lept; then
|
2016-12-14 21:51:49 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS $LEPTONICA_CFLAGS"
|
|
|
|
else
|
2016-12-24 16:05:32 +08:00
|
|
|
AC_MSG_ERROR([Leptonica 1.74 or higher is required. Try to install libleptonica-dev package.])
|
2009-07-11 11:05:57 +08:00
|
|
|
fi
|
|
|
|
|
2019-03-05 22:52:15 +08:00
|
|
|
PKG_CHECK_MODULES([libarchive], [libarchive], [have_libarchive=true], [have_libarchive=false])
|
|
|
|
AM_CONDITIONAL([HAVE_LIBARCHIVE], [$have_libarchive])
|
|
|
|
if $have_libarchive; then
|
2019-11-28 23:34:52 +08:00
|
|
|
AC_DEFINE([HAVE_LIBARCHIVE], [1], [Enable libarchive])
|
2019-05-07 16:54:47 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS $libarchive_CFLAGS"
|
2019-03-05 22:52:15 +08:00
|
|
|
fi
|
|
|
|
|
2016-05-27 21:30:17 +08:00
|
|
|
AM_CONDITIONAL([ENABLE_TRAINING], true)
|
2016-05-16 14:59:11 +08:00
|
|
|
|
2019-02-01 17:06:23 +08:00
|
|
|
# Check availability of ICU packages.
|
2018-04-17 17:05:50 +08:00
|
|
|
PKG_CHECK_MODULES([ICU_UC], [icu-uc >= 52.1], [have_icu_uc=true], [have_icu_uc=false])
|
|
|
|
PKG_CHECK_MODULES([ICU_I18N], [icu-i18n >= 52.1], [have_icu_i18n=true], [have_icu_i18n=false])
|
2016-12-13 20:26:40 +08:00
|
|
|
if !($have_icu_uc && $have_icu_i18n); then
|
2019-06-25 16:52:22 +08:00
|
|
|
AC_MSG_WARN([icu 52.1 or higher is required, but was not found.])
|
|
|
|
AC_MSG_WARN([Training tools WILL NOT be built.])
|
|
|
|
AC_MSG_WARN([Try to install libicu-devel package.])
|
|
|
|
AM_CONDITIONAL([ENABLE_TRAINING], false)
|
2013-09-27 04:23:17 +08:00
|
|
|
fi
|
|
|
|
|
2014-01-10 02:08:12 +08:00
|
|
|
# Check location of pango headers
|
2018-04-17 19:46:16 +08:00
|
|
|
PKG_CHECK_MODULES([pango], [pango >= 1.22.0], [have_pango=true], [have_pango=false])
|
2014-01-10 02:08:12 +08:00
|
|
|
if !($have_pango); then
|
2018-04-17 19:46:16 +08:00
|
|
|
AC_MSG_WARN([pango 1.22.0 or higher is required, but was not found.])
|
|
|
|
AC_MSG_WARN([Training tools WILL NOT be built.])
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_WARN([Try to install libpango1.0-dev package.])
|
|
|
|
AM_CONDITIONAL([ENABLE_TRAINING], false)
|
2014-01-10 02:08:12 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Check location of cairo headers
|
2016-05-27 21:30:17 +08:00
|
|
|
PKG_CHECK_MODULES([cairo], [cairo], [have_cairo=true], [have_cairo=false])
|
2014-01-10 02:08:12 +08:00
|
|
|
if !($have_cairo); then
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_MSG_WARN([Training tools WILL NOT be built because of missing cairo library.])
|
|
|
|
AC_MSG_WARN([Try to install libcairo-dev?? package.])
|
|
|
|
AM_CONDITIONAL([ENABLE_TRAINING], false)
|
2014-01-10 02:08:12 +08:00
|
|
|
fi
|
|
|
|
|
2019-12-28 16:35:40 +08:00
|
|
|
PKG_CHECK_MODULES([pangocairo], [pangocairo])
|
|
|
|
PKG_CHECK_MODULES([pangoft2], [pangoft2])
|
2014-01-27 06:39:20 +08:00
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
# Final Tasks and Output
|
|
|
|
# ----------------------------------------
|
|
|
|
|
|
|
|
# Output files
|
2019-10-29 18:40:17 +08:00
|
|
|
AC_CONFIG_FILES([include/tesseract/version.h])
|
2012-07-29 05:17:20 +08:00
|
|
|
AC_CONFIG_FILES([Makefile tesseract.pc])
|
2016-05-27 21:30:17 +08:00
|
|
|
AC_CONFIG_FILES([tessdata/Makefile])
|
|
|
|
AC_CONFIG_FILES([tessdata/configs/Makefile])
|
|
|
|
AC_CONFIG_FILES([tessdata/tessconfigs/Makefile])
|
2017-08-19 21:31:46 +08:00
|
|
|
AC_CONFIG_FILES([unittest/Makefile])
|
2016-05-27 21:30:17 +08:00
|
|
|
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/Makefile])
|
2018-04-25 16:35:26 +08:00
|
|
|
AM_COND_IF([ENABLE_TRAINING], [AC_CONFIG_FILES(src/training/Makefile)])
|
2007-03-08 04:03:40 +08:00
|
|
|
AC_OUTPUT
|
|
|
|
|
|
|
|
# Final message
|
|
|
|
echo ""
|
|
|
|
echo "Configuration is done."
|
2013-09-27 04:23:17 +08:00
|
|
|
echo "You can now build and install $PACKAGE_NAME by running:"
|
2007-03-08 04:03:40 +08:00
|
|
|
echo ""
|
2013-09-27 04:23:17 +08:00
|
|
|
echo "$ make"
|
|
|
|
echo "$ sudo make install"
|
2018-09-29 19:33:36 +08:00
|
|
|
echo "$ sudo ldconfig"
|
2018-04-10 01:06:59 +08:00
|
|
|
echo ""
|
|
|
|
|
|
|
|
AM_COND_IF([ASCIIDOC],
|
|
|
|
[
|
|
|
|
echo "This will also build the documentation."
|
|
|
|
], [
|
2019-02-15 22:10:00 +08:00
|
|
|
echo "Documentation will not be built because asciidoc or xsltproc is missing."
|
2018-04-10 01:06:59 +08:00
|
|
|
]
|
|
|
|
)
|
|
|
|
|
2014-08-14 03:18:03 +08:00
|
|
|
# echo "$ sudo make install LANGS=\"eng ara deu\""
|
|
|
|
# echo " Or:"
|
|
|
|
# echo "$ sudo make install-langs"
|
2017-08-20 03:33:05 +08:00
|
|
|
echo ""
|
2013-09-27 04:23:17 +08:00
|
|
|
|
2014-08-14 03:18:03 +08:00
|
|
|
AM_COND_IF([ENABLE_TRAINING],
|
2017-08-20 03:33:05 +08:00
|
|
|
[
|
|
|
|
echo "Training tools can be built and installed with:"
|
2016-05-27 21:30:17 +08:00
|
|
|
echo ""
|
|
|
|
echo "$ make training"
|
|
|
|
echo "$ sudo make training-install"
|
|
|
|
echo ""],
|
2017-08-20 03:33:05 +08:00
|
|
|
[
|
2016-05-27 21:30:17 +08:00
|
|
|
echo "You can not build training tools because of missing dependency."
|
|
|
|
echo "Check configure output for details."
|
|
|
|
echo ""]
|
2014-08-14 03:18:03 +08:00
|
|
|
)
|
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
# ----------------------------------------
|
|
|
|
# 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
|
|
|
|
|
2010-10-01 00:27:39 +08:00
|
|
|
/* Not used yet
|
2010-09-30 23:53:40 +08:00
|
|
|
#ifndef NO_GETTEXT
|
|
|
|
#define USING_GETTEXT
|
2010-07-20 18:31:49 +08:00
|
|
|
#endif
|
2010-10-01 00:27:39 +08:00
|
|
|
*/
|
2010-07-20 18:31:49 +08:00
|
|
|
|
2007-03-08 04:03:40 +08:00
|
|
|
/* config_auto.h: end */
|
|
|
|
#endif
|
|
|
|
])
|