configure.ac 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. AC_PREREQ([2.69])
  2. AC_INIT([leptonica], [1.85.0])
  3. AC_CONFIG_AUX_DIR([config])
  4. AC_CONFIG_HEADERS([config_auto.h:config/config.h.in])
  5. AC_CONFIG_SRCDIR([src/adaptmap.c])
  6. AC_CONFIG_MACRO_DIR([m4])
  7. LT_INIT
  8. AM_INIT_AUTOMAKE
  9. AC_LANG(C)
  10. AC_CANONICAL_HOST
  11. # Checks for programs.
  12. AC_PROG_AWK
  13. AC_PROG_CC
  14. AC_PROG_CPP
  15. AC_PROG_INSTALL
  16. AC_PROG_LN_S
  17. AC_PROG_MAKE_SET
  18. # Checks for arguments.
  19. AC_ARG_WITH([zlib], AS_HELP_STRING([--without-zlib], [do not include zlib support]))
  20. AC_ARG_WITH([libpng], AS_HELP_STRING([--without-libpng], [do not include libpng support]))
  21. AC_ARG_WITH([jpeg], AS_HELP_STRING([--without-jpeg], [do not include jpeg support]))
  22. AC_ARG_WITH([giflib], AS_HELP_STRING([--without-giflib], [do not include giflib support]))
  23. AC_ARG_WITH([libtiff], AS_HELP_STRING([--without-libtiff], [do not include libtiff support]))
  24. AC_ARG_WITH([libwebp], AS_HELP_STRING([--without-libwebp], [do not include libwebp support]))
  25. AC_ARG_WITH([libwebpmux], AS_HELP_STRING([--without-libwebpmux], [do not include libwebpmux support]))
  26. AC_ARG_WITH([libopenjpeg], AS_HELP_STRING([--without-libopenjpeg], [do not include libopenjpeg support]))
  27. AC_ARG_ENABLE([programs], AS_HELP_STRING([--disable-programs], [do not build additional programs]))
  28. AM_CONDITIONAL([ENABLE_PROGRAMS], [test "x$enable_programs" != xno])
  29. # Checks for libraries.
  30. LT_LIB_M
  31. AS_IF([test "x$with_zlib" = xno], [
  32. zlib_missing=untried
  33. ], [
  34. zlib_missing=
  35. PKG_CHECK_MODULES([ZLIB], [zlib], [
  36. AC_DEFINE([HAVE_LIBZ], 1, [Define to 1 if you have zlib.])
  37. ], [
  38. AC_CHECK_LIB([z], [deflate], [:], [zlib_missing=library])
  39. AC_CHECK_HEADER([zlib.h], [:], [zlib_missing=header])
  40. AS_IF([test "x$zlib_missing" = x], [
  41. AC_DEFINE([HAVE_LIBZ], 1, [Define to 1 if you have zlib.]) AC_SUBST([ZLIB_LIBS], [-lz])
  42. ], [
  43. AS_IF([test "x$with_zlib" = xyes], AC_MSG_ERROR([zlib support requested but $zlib_missing not found]))
  44. ])
  45. ])
  46. ])
  47. AS_IF([test "x$with_libpng" = xno], [
  48. libpng_missing=untried
  49. ], [
  50. libpng_missing=
  51. PKG_CHECK_MODULES([LIBPNG], [libpng], [
  52. AC_DEFINE([HAVE_LIBPNG], 1, [Define to 1 if you have libpng.])
  53. ], [
  54. AC_CHECK_LIB([png], [png_read_png], [:], [libpng_missing=library], [$LIBM $ZLIB_LIBS])
  55. AC_CHECK_HEADER([png.h], [:], [libpng_missing=headers])
  56. AS_IF([test "x$libpng_missing" = x], [
  57. AC_DEFINE([HAVE_LIBPNG], 1, [Define to 1 if you have libpng.]) AC_SUBST([LIBPNG_LIBS], [-lpng])
  58. ], [
  59. AS_IF([test "x$with_libpng" = xyes], AC_MSG_ERROR([libpng support requested but $libpng_missing not found]))
  60. ])
  61. ])
  62. ])
  63. AS_IF([test "x$with_jpeg" = xno], [
  64. jpeg_missing=untried
  65. ], [
  66. jpeg_missing=
  67. PKG_CHECK_MODULES([JPEG], [libjpeg], [
  68. AC_DEFINE([HAVE_LIBJPEG], 1, [Define to 1 if you have jpeg.])
  69. ], [
  70. AC_CHECK_LIB([jpeg], [jpeg_read_scanlines], [:], [jpeg_missing=library])
  71. AC_CHECK_HEADER([jpeglib.h], [:], [jpeg_missing=headers])
  72. AS_IF([test "x$jpeg_missing" = x], [
  73. AC_DEFINE([HAVE_LIBJPEG], 1, [Define to 1 if you have jpeg.]) AC_SUBST([JPEG_LIBS], [-ljpeg])
  74. ], [
  75. AS_IF([test "x$with_jpeg" = xyes], AC_MSG_ERROR([jpeg support requested but $jpeg_missing not found]))
  76. ])
  77. ])
  78. ])
  79. AS_IF([test "x$with_giflib" = xno], [
  80. giflib_missing=untried
  81. ], [
  82. giflib_missing=
  83. AC_CHECK_LIB([gif], [DGifOpenFileHandle], [:], [giflib_missing=library])
  84. AC_CHECK_HEADER([gif_lib.h], [:], [giflib_missing=header])
  85. AS_IF([test "x$giflib_missing" = x], [
  86. AC_MSG_CHECKING([giflib is at least version 5.1 (but not 5.1.2)])
  87. AC_PREPROC_IFELSE([
  88. AC_LANG_SOURCE([[
  89. #include <gif_lib.h>
  90. #if !defined GIFLIB_MAJOR || GIFLIB_MAJOR < 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR == 0)
  91. #error giflib version too old
  92. #elif GIFLIB_MAJOR == 5 && GIFLIB_MINOR == 1 && GIFLIB_RELEASE == 2
  93. #error giflib 5.1.2 is broken
  94. #endif
  95. ]])
  96. ], [
  97. AC_MSG_RESULT([yes])
  98. AC_DEFINE([HAVE_LIBGIF], 1, [Define to 1 if you have giflib.]) AC_SUBST([GIFLIB_LIBS], [-lgif])
  99. ], [
  100. AC_MSG_RESULT([no])
  101. AS_IF([test "x$with_giflib" = xyes], AC_MSG_ERROR([giflib version too old or broken]))
  102. giflib_missing=old
  103. ])
  104. ], [
  105. AS_IF([test "x$with_giflib" = xyes], AC_MSG_ERROR([giflib support requested but $giflib_missing not found]))
  106. ])
  107. ])
  108. AM_CONDITIONAL([HAVE_LIBGIF], [test "x$giflib_missing" = x])
  109. AS_IF([test "x$with_libtiff" = xno], [
  110. libtiff_missing=untried
  111. ], [
  112. libtiff_missing=
  113. PKG_CHECK_MODULES([LIBTIFF], [libtiff-4], [
  114. AC_DEFINE([HAVE_LIBTIFF], 1, [Define to 1 if you have libtiff.])
  115. ], [
  116. AC_CHECK_LIB([tiff], [TIFFOpen], [:], [libtiff_missing=library], [$LIBM $ZLIB_LIBS $JPEG_LIBS])
  117. AC_CHECK_HEADER([tiff.h], [:], [libtiff_missing=headers])
  118. AS_IF([test "x$libtiff_missing" = x], [
  119. AC_DEFINE([HAVE_LIBTIFF], 1, [Define to 1 if you have libtiff.]) AC_SUBST([LIBTIFF_LIBS], [-ltiff])
  120. ], [
  121. AS_IF([test "x$with_libtiff" = xyes], AC_MSG_ERROR([libtiff support requested but $libtiff_missing not found]))
  122. ])
  123. ])
  124. ])
  125. AS_IF([test "x$with_libwebp" = xno], [
  126. libwebp_missing=untried
  127. ], [
  128. libwebp_missing=
  129. PKG_CHECK_MODULES([LIBWEBP], [libwebp], [
  130. AC_DEFINE([HAVE_LIBWEBP], 1, [Define to 1 if you have libwebp.])
  131. ], [
  132. AC_CHECK_LIB([webp], [WebPGetInfo], [:], [libwebp_missing=library], [$LIBM])
  133. AC_CHECK_HEADER([webp/encode.h], [:], [libwebp_missing=headers])
  134. AS_IF([test "x$libwebp_missing" = x], [
  135. AC_DEFINE([HAVE_LIBWEBP], 1, [Define to 1 if you have libwebp.]) AC_SUBST([LIBWEBP_LIBS], [-lwebp])
  136. ], [
  137. AS_IF([test "x$with_libwebp" = xyes], AC_MSG_ERROR([libwebp support requested but $libwebp_missing not found]))
  138. ])
  139. ])
  140. ])
  141. AM_CONDITIONAL([HAVE_LIBWEBP], [test "x$libwebp_missing" = x])
  142. AS_IF([test "x$with_libwebpmux" = xno], [
  143. libwebpmux_missing=untried
  144. ], [
  145. libwebpmux_missing=
  146. PKG_CHECK_MODULES([LIBWEBPMUX], [libwebpmux >= 0.5.0], [
  147. AC_DEFINE([HAVE_LIBWEBP_ANIM], 1, [Define to 1 if you have libwebpmux.])
  148. ], [
  149. AC_CHECK_LIB([webpmux], [WebPAnimEncoderOptionsInit], [:], [libwebpmux_missing=library], [$LIBM])
  150. AS_IF([test "x$libwebpmux_missing" = x], [
  151. AC_DEFINE([HAVE_LIBWEBP_ANIM], 1, [Define to 1 if you have libwebpmux.]) AC_SUBST([LIBWEBPMUX_LIBS], [-lwebpmux])
  152. ], [
  153. AS_IF([test "x$with_libwebpmux" = xyes], AC_MSG_ERROR([libwebpmux support requested but $libwebpmux_missing not found]))
  154. ])
  155. ])
  156. ])
  157. AM_CONDITIONAL([HAVE_LIBWEBP_ANIM], [test "x$libwebpmux_missing" = x])
  158. AS_IF([test "x$with_libopenjpeg" = xno], [
  159. libopenjpeg_missing=untried
  160. ], [
  161. libopenjpeg_missing=
  162. PKG_CHECK_MODULES([LIBJP2K], [libopenjp2 >= 2.0.0], [
  163. AC_DEFINE([HAVE_LIBJP2K], 1, [Define to 1 if you have libopenjp2.])
  164. ], [
  165. AC_CHECK_LIB([openjp2], [opj_create_decompress], [:], [libopenjpeg_missing=library])
  166. AC_CHECK_HEADERS([openjpeg-2.3/openjpeg.h openjpeg-2.2/openjpeg.h openjpeg-2.1/openjpeg.h openjpeg-2.0/openjpeg.h],
  167. [AC_DEFINE_UNQUOTED([LIBJP2K_HEADER], [<$ac_header>], [Path to <openjpeg.h> header file.]) break],
  168. [libopenjpeg_missing=headers]
  169. )
  170. AS_IF([test "x$libopenjpeg_missing" = x], [
  171. AC_DEFINE([HAVE_LIBJP2K], 1, [Define to 1 if you have libopenjp2.]) AC_SUBST([LIBJP2K_LIBS], [-lopenjp2])
  172. ], [
  173. AS_IF([test "x$with_libopenjpeg" = xyes], AC_MSG_ERROR([libopenjp2 support requested but $libopenjpeg_missing not found]))
  174. ])
  175. ])
  176. ])
  177. AM_CONDITIONAL([HAVE_LIBJP2K], [test "x$libopenjpeg_missing" = x])
  178. # Check whether to enable debugging
  179. AC_MSG_CHECKING([whether to enable debugging])
  180. AC_ARG_ENABLE([debug],
  181. AS_HELP_STRING([--enable-debug], [turn on debugging [default=no]]))
  182. AC_MSG_RESULT([$enable_debug])
  183. if test x"$enable_debug" = x"yes"; then
  184. CFLAGS="-g -Wall -DDEBUG -pedantic -Og -g3"
  185. fi
  186. case "$host_os" in
  187. mingw32*)
  188. AC_SUBST([GDI_LIBS], [-lgdi32])
  189. CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO" ;;
  190. esac
  191. # Enable less verbose output when building.
  192. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
  193. # Checks for typedefs, structures, and compiler characteristics.
  194. AC_TYPE_SIZE_T
  195. AC_C_BIGENDIAN
  196. AC_SUBST([APPLE_UNIVERSAL_BUILD], [0])
  197. AC_SUBST([ENDIANNESS], [L_LITTLE_ENDIAN])
  198. case "$ac_cv_c_bigendian" in
  199. yes) AC_SUBST([ENDIANNESS], [L_BIG_ENDIAN]) ;;
  200. universal) AC_SUBST([APPLE_UNIVERSAL_BUILD], [1]) ;;
  201. esac
  202. # Add the -Wl and --as-needed flags to gcc compiler
  203. AC_MSG_CHECKING([whether compiler supports -Wl,--as-needed])
  204. OLD_LDFLAGS="${LDFLAGS}"
  205. LDFLAGS="-Wl,--as-needed ${LDFLAGS}"
  206. AC_LINK_IFELSE([AC_LANG_PROGRAM()],
  207. AC_MSG_RESULT([yes]),
  208. LDFLAGS="${OLD_LDFLAGS}"; AC_MSG_RESULT([no])
  209. )
  210. # Checks for library functions.
  211. AC_CHECK_FUNCS([fmemopen])
  212. AC_CHECK_FUNC([fstatat])
  213. AC_CHECK_FUNC([dirfd])
  214. # Configuration files
  215. AC_CONFIG_FILES([Makefile src/endianness.h src/Makefile prog/Makefile lept.pc])
  216. # cmake configuration. Get versions from PACKAGE_VERSION.
  217. AX_SPLIT_VERSION
  218. AC_SUBST([VERSION_PLAIN], ["${PACKAGE_VERSION}"])
  219. AC_SUBST([VERSION_MAJOR], [$(echo "$AX_MAJOR_VERSION" | $SED 's/^[[^0-9]]*//')])
  220. AC_SUBST([VERSION_MINOR], [$AX_MINOR_VERSION])
  221. AC_SUBST([VERSION_PATCH], [$(echo "$AX_POINT_VERSION" | $SED 's/^\([[0-9]][[0-9]]*\).*/\1/')])
  222. INCLUDE_PATH=`eval echo $includedir`
  223. AC_SUBST([INCLUDE_DIR], ["${INCLUDE_PATH}/leptonica"])
  224. AC_SUBST([leptonica_OUTPUT_NAME], ["leptonica"])
  225. AC_CONFIG_FILES(cmake/templates/LeptonicaConfig.cmake)
  226. AC_CONFIG_FILES(cmake/templates/LeptonicaConfig-version.cmake)
  227. # Create symlink
  228. AC_PROG_LN_S
  229. AC_OUTPUT