configure.ac 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. #
  2. # LittleCMS 2 configure script
  3. #
  4. AC_PREREQ(2.60)
  5. #
  6. # Set the package name and version
  7. #
  8. AC_INIT(lcms2,2.13)
  9. # Specify directory where m4 macros may be found.
  10. AC_CONFIG_MACRO_DIR([m4])
  11. #
  12. # Libtool library revision control info
  13. #
  14. LIBRARY_CURRENT=2
  15. LIBRARY_REVISION=13
  16. LIBRARY_AGE=0
  17. AC_SUBST(LIBRARY_CURRENT)dnl
  18. AC_SUBST(LIBRARY_REVISION)dnl
  19. AC_SUBST(LIBRARY_AGE)dnl
  20. # Obtain system type by running config.guess
  21. AC_CANONICAL_HOST
  22. AM_INIT_AUTOMAKE([foreign 1.9 tar-ustar no-define dist-zip subdir-objects])
  23. # Check for programs
  24. AC_PROG_CC_STDC
  25. AC_PROG_CPP
  26. AC_PROG_CXX
  27. LT_INIT
  28. #AM_PROG_LD
  29. #AC_SUBST(LD)
  30. #AC_PROG_INSTALL
  31. #AC_PROG_MAKE_SET
  32. #AC_PROG_LN_S
  33. #
  34. # Tests for Windows
  35. #
  36. AC_EXEEXT
  37. AC_OBJEXT
  38. # Configure libtool
  39. AC_ENABLE_SHARED
  40. AC_ENABLE_STATIC
  41. AC_LIBTOOL_WIN32_DLL
  42. AC_LIBTOOL_SETUP
  43. AC_PROG_LIBTOOL
  44. AC_SUBST(LIBTOOL_DEPS)
  45. LIB_PLUGINS=''
  46. # Add configure option --enable-maintainer-mode which enables dependency
  47. # checking and generation useful to package maintainers. This is made an
  48. # option to avoid confusing end users.
  49. AM_MAINTAINER_MODE
  50. # If the C compiler supports the keyword inline, do nothing. Otherwise
  51. # define inline to __inline__ or __inline if it accepts one of those,
  52. # otherwise define inline to be empty.
  53. AC_C_INLINE
  54. AC_SUBST(inline)
  55. # Check if the C compiler supports the "visibility" function attribute
  56. # If supported, defines HAVE_FUNC_ATTRIBUTE_VISIBILITY
  57. AX_GCC_FUNC_ATTRIBUTE(visibility)
  58. # Check if the compiler supports "-fvisibility=hidden" and if yes, add it to CFLAGS
  59. # This means that symbols that are not marked explicitly for export (CMSAPI)
  60. # will not be reachable in the shared library.
  61. AX_APPEND_COMPILE_FLAGS(["-fvisibility=hidden"])
  62. # If words are stored with the most significant byte first (like
  63. # Motorola and SPARC CPUs), define `WORDS_BIGENDIAN'.
  64. AC_C_BIGENDIAN
  65. # Check for threadsafe variants of gmtime
  66. # Note: check for gmtime_s is a bit more complex as it is implemented as a macro
  67. AC_CHECK_FUNCS(gmtime_r, [], [
  68. AC_MSG_CHECKING([for gmtime_s])
  69. AC_LINK_IFELSE([
  70. AC_LANG_PROGRAM([[#include <time.h>]], [[
  71. time_t t;
  72. struct tm m;
  73. gmtime_s(&m, &t);
  74. return 0;
  75. ]])],
  76. [AC_MSG_RESULT([yes])
  77. AC_DEFINE([HAVE_GMTIME_S], [1], [gmtime_s can be used])],
  78. [AC_MSG_RESULT([no])]
  79. )])
  80. # Point to JPEG installed in DIR or disable JPEG with --without-jpeg.
  81. AC_ARG_WITH(jpeg,
  82. AS_HELP_STRING([--with-jpeg=DIR],[use jpeg installed in DIR]),
  83. [
  84. if [ test "x$withval" = "xno" ]; then
  85. [with_jpeg='no']
  86. else
  87. if [ test "x$withval" != "xyes" ]; then
  88. with_jpeg=$withval
  89. JPEG_DIR=$withval
  90. CPPFLAGS="$CPPFLAGS -I$JPEG_DIR/include"
  91. LDFLAGS="$LDFLAGS -L$JPEG_DIR/lib"
  92. fi
  93. [with_jpeg='yes']
  94. fi
  95. ],
  96. [with_jpeg='yes'])
  97. # Point to TIFF installed in DIR or disable TIFF with --without-tiff.
  98. AC_ARG_WITH(tiff,
  99. AS_HELP_STRING([--with-tiff=DIR], [use tiff installed in DIR]),
  100. [
  101. if [ test "x$withval" = "xno" ]; then
  102. [with_tiff='no']
  103. else
  104. if [ test "x$withval" != "xyes" ]; then
  105. with_tiff=$withval
  106. TIFF_DIR=$withval
  107. CPPFLAGS="$CPPFLAGS -I$TIFF_DIR/include"
  108. LDFLAGS="$LDFLAGS -L$TIFF_DIR/lib"
  109. fi
  110. [with_tiff='yes']
  111. fi
  112. ],
  113. [with_tiff='yes'])
  114. # Disable ZLIB
  115. AC_ARG_WITH(zlib,
  116. [ --without-zlib disable ZLIB support],
  117. [with_zlib=$withval],
  118. [with_zlib='yes'])
  119. #fast_float plugin:
  120. AC_ARG_WITH(fastfloat,
  121. AS_HELP_STRING([--with-fastfloat],
  122. [build and install fast_float plugin, use only if GPL 3.0 is acceptable]),
  123. [
  124. with_fastfloat=$withval
  125. ],
  126. [
  127. with_fastfloat='no'
  128. ])
  129. if test "x$with_fastfloat" = "xyes"
  130. then
  131. LIB_PLUGINS="$LIB_PLUGINS -llcms2_fast_float"
  132. fi
  133. #multi threaded plugin:
  134. AC_ARG_WITH(threaded,
  135. AS_HELP_STRING([--with-threaded],
  136. [build and install multi threaded plugin, use only if GPL 3.0 is acceptable]),
  137. [
  138. with_threaded=$withval
  139. ],
  140. [
  141. with_threaded='no'
  142. ])
  143. if test "x$with_threaded" = "xyes"
  144. then
  145. LIB_PLUGINS="$LIB_PLUGINS -llcms2_threaded"
  146. fi
  147. #
  148. # Determine POSIX threads settings
  149. #
  150. # Enable support for POSIX thread APIs
  151. AC_ARG_WITH(threads,
  152. AS_HELP_STRING([--without-pthreads],
  153. [disable POSIX pthreads API support]),
  154. [with_threads=$withval],
  155. [with_threads='yes'])
  156. have_threads=no
  157. if test "$with_threads" != 'no'
  158. then
  159. ACX_PTHREAD()
  160. if test "$acx_pthread_ok" = yes
  161. then
  162. have_threads=yes
  163. DEF_THREAD="$PTHREAD_CFLAGS"
  164. CFLAGS="$CFLAGS $DEF_THREAD"
  165. CXXFLAGS="$CXXFLAGS $DEF_THREAD"
  166. if test "$CC" != "$PTHREAD_CC"
  167. then
  168. AC_MSG_WARN([Replacing compiler $CC with compiler $PTHREAD_CC to support pthreads.])
  169. CC="$PTHREAD_CC"
  170. fi
  171. if test "$CXX" != "$PTHREAD_CXX"
  172. then
  173. AC_MSG_WARN([Replacing compiler $CXX with compiler $PTHREAD_CXX to support pthreads.])
  174. CXX="$PTHREAD_CXX"
  175. fi
  176. fi
  177. fi
  178. # check if compiler supports SSE2 intrinsics
  179. AC_LANG_PUSH([C])
  180. AC_MSG_CHECKING([whether compiler supports SSE2])
  181. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
  182. #include <emmintrin.h>
  183. main() { __m128i n = _mm_set1_epi8(42); }]])],
  184. [ac_compiler_supports_sse2=yes], [ac_compiler_supports_sse2=no])
  185. AC_MSG_RESULT([$ac_compiler_supports_sse2])
  186. AS_IF([test "x$ac_compiler_supports_sse2" != "xyes"],
  187. [AC_DEFINE([CMS_DONT_USE_SSE2], [1], [Define if compiler does not support SSE2 intrinsics])])
  188. AC_LANG_POP([C])
  189. #
  190. # Find math library
  191. #
  192. LIB_MATH=''
  193. AC_CHECK_LIB(m,sqrt,LIB_MATH="-lm",,)
  194. LIBS="$LIB_MATH $LIBS"
  195. AC_SUBST(LIB_MATH)
  196. #
  197. # Find Posix threads library
  198. #
  199. LIB_THREAD=''
  200. if test "$with_threads" != 'no' && test "$have_threads" = 'yes'
  201. then
  202. for lib in pthread pthreads
  203. do
  204. if test "x$PTHREAD_LIBS" = "x" ; then
  205. AC_CHECK_LIB([$lib],pthread_mutex_lock,[PTHREAD_LIBS=-l$lib],,)
  206. fi
  207. done
  208. LIB_THREAD="$PTHREAD_LIBS"
  209. LIBS="$LIBS $LIB_THREAD"
  210. AC_DEFINE(HasTHREADS,1,[Define if you have pthreads library])
  211. else
  212. AC_DEFINE(HasTHREADS,0,[Define if you don't have pthreads library])
  213. fi
  214. AC_SUBST(LIB_THREAD)
  215. #
  216. # Check for JPEG
  217. #
  218. have_jpeg='no'
  219. LIB_JPEG=''
  220. if test ! "$with_jpeg" = 'no'
  221. then
  222. AC_MSG_CHECKING([for JPEG support])
  223. AC_MSG_RESULT()
  224. failed=0;
  225. passed=0;
  226. AC_CHECK_HEADER(jconfig.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  227. AC_CHECK_HEADER(jerror.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  228. AC_CHECK_HEADER(jmorecfg.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,[#include <jconfig.h>])
  229. AC_CHECK_HEADER(jpeglib.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  230. AC_CHECK_LIB(jpeg,jpeg_read_header,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  231. # Test for compatible JPEG library
  232. if test ! "$ac_cv_jpeg_version_ok" = 'yes' ; then
  233. AC_CACHE_CHECK(for JPEG library is version 6b or later, ac_cv_jpeg_version_ok,
  234. [AC_TRY_COMPILE(
  235. #include <stdio.h>
  236. #include <stdlib.h>
  237. #include <jpeglib.h>
  238. ,
  239. changequote(<<, >>)dnl
  240. <<
  241. #if JPEG_LIB_VERSION < 62
  242. #error IJG JPEG library must be version 6b or newer!
  243. #endif
  244. return 0;
  245. >>,
  246. changequote([, ])dnl
  247. ac_cv_jpeg_version_ok='yes',
  248. ac_cv_jpeg_version_ok='no')])
  249. if test "$ac_cv_jpeg_version_ok" = 'yes' ; then
  250. AC_MSG_RESULT(yes)
  251. passed=`expr $passed + 1`
  252. else
  253. AC_MSG_RESULT(no)
  254. failed=`expr $failed + 1`
  255. fi
  256. fi
  257. AC_MSG_CHECKING(if JPEG package is complete)
  258. if test $passed -gt 0
  259. then
  260. if test $failed -gt 0
  261. then
  262. AC_MSG_RESULT(no -- some components failed test)
  263. have_jpeg='no (failed tests)'
  264. else
  265. LIB_JPEG='-ljpeg'
  266. LIBS="$LIB_JPEG $LIBS"
  267. AC_DEFINE(HasJPEG,1,Define if you have JPEG library)
  268. AC_MSG_RESULT(yes)
  269. have_jpeg='yes'
  270. fi
  271. else
  272. AC_MSG_RESULT(no)
  273. fi
  274. fi
  275. AM_CONDITIONAL(HasJPEG, test "$have_jpeg" = 'yes')
  276. AC_SUBST(LIB_JPEG)
  277. #
  278. # Check for ZLIB
  279. #
  280. have_zlib='no'
  281. dnl TIFF may require zlib so enable zlib check if TIFF is requested
  282. if test ! "$with_zlib" = 'no' || test ! "$with_tiff" = 'no'
  283. then
  284. LIB_ZLIB=''
  285. AC_MSG_CHECKING(for ZLIB support )
  286. AC_MSG_RESULT()
  287. failed=0;
  288. passed=0;
  289. AC_CHECK_HEADER(zconf.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  290. AC_CHECK_HEADER(zlib.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  291. AC_CHECK_LIB(z,compress,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  292. AC_CHECK_LIB(z,uncompress,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  293. AC_CHECK_LIB(z,deflate,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  294. AC_CHECK_LIB(z,inflate,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  295. AC_CHECK_LIB(z,gzseek,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  296. AC_CHECK_LIB(z,gztell,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  297. AC_MSG_CHECKING(if ZLIB package is complete)
  298. if test $passed -gt 0
  299. then
  300. if test $failed -gt 0
  301. then
  302. AC_MSG_RESULT(no -- some components failed test)
  303. have_zlib='no (failed tests)'
  304. else
  305. LIB_ZLIB='-lz'
  306. LIBS="$LIB_ZLIB $LIBS"
  307. AC_DEFINE(HasZLIB,1,Define if you have zlib compression library)
  308. AC_MSG_RESULT(yes)
  309. have_zlib='yes'
  310. fi
  311. else
  312. AC_MSG_RESULT(no)
  313. fi
  314. fi
  315. AM_CONDITIONAL(HasZLIB, test "$have_zlib" = 'yes')
  316. AC_SUBST(LIB_ZLIB)
  317. #
  318. # Check for TIFF
  319. #
  320. have_tiff='no'
  321. LIB_TIFF=''
  322. if test ! "$with_tiff" = 'no'
  323. then
  324. AC_MSG_CHECKING([for TIFF support])
  325. AC_MSG_RESULT()
  326. failed=0;
  327. passed=0;
  328. AC_CHECK_HEADER(tiff.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  329. AC_CHECK_HEADER(tiffio.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`)
  330. AC_CHECK_LIB(tiff,TIFFOpen,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  331. AC_CHECK_LIB(tiff,TIFFClientOpen,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  332. AC_CHECK_LIB(tiff,TIFFIsByteSwapped,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
  333. AC_MSG_CHECKING(if TIFF package is complete)
  334. if test $passed -gt 0
  335. then
  336. if test $failed -gt 0
  337. then
  338. AC_MSG_RESULT(no -- some components failed test)
  339. have_tiff='no (failed tests)'
  340. else
  341. LIB_TIFF='-ltiff'
  342. LIBS="$LIB_TIFF $LIBS"
  343. AC_DEFINE(HasTIFF,1,Define if you have TIFF library)
  344. AC_MSG_RESULT(yes)
  345. have_tiff='yes'
  346. AC_CHECK_HEADERS(tiffconf.h)
  347. fi
  348. else
  349. AC_MSG_RESULT(no)
  350. fi
  351. fi
  352. AM_CONDITIONAL(HasTIFF, test "$have_tiff" = 'yes')
  353. AC_SUBST(LIB_TIFF)
  354. # Libraries that the LCMS library depends on
  355. LCMS_LIB_DEPLIBS="$LIB_MATH $LIB_THREAD"
  356. LCMS_LIB_DEPLIBS=`echo $LCMS_LIB_DEPLIBS | sed -e 's/ */ /g'`
  357. AC_SUBST(LCMS_LIB_DEPLIBS)
  358. AC_SUBST(LIB_PLUGINS)
  359. # Libraries that the jpegicc program depends on
  360. JPEGICC_DEPLIBS="$LIB_JPEG $LIB_MATH $LIB_THREAD"
  361. JPEGICC_DEPLIBS=`echo $JPEGICC_DEPLIBS | sed -e 's/ */ /g'`
  362. AC_SUBST(JPEGICC_DEPLIBS)
  363. # Libraries that the tifficc program depends on
  364. TIFFICC_DEPLIBS="$LIB_TIFF $LIB_JPEG $LIB_ZLIB $LIB_MATH $LIB_THREAD"
  365. TIFFICC_DEPLIBS=`echo $TIFFICC_DEPLIBS | sed -e 's/ */ /g'`
  366. AC_SUBST(TIFFICC_DEPLIBS)
  367. LIBS=''
  368. #
  369. # Perform substitutions
  370. #
  371. AC_CONFIG_FILES([Makefile])
  372. AC_CONFIG_FILES([lcms2.pc])
  373. AC_CONFIG_FILES([include/Makefile])
  374. AC_CONFIG_FILES([src/Makefile])
  375. AC_CONFIG_FILES([utils/tificc/Makefile])
  376. AC_CONFIG_FILES([utils/transicc/Makefile])
  377. AC_CONFIG_FILES([utils/linkicc/Makefile])
  378. AC_CONFIG_FILES([utils/jpgicc/Makefile])
  379. AC_CONFIG_FILES([utils/psicc/Makefile])
  380. AC_CONFIG_FILES([testbed/Makefile])
  381. AM_CONDITIONAL([COND_FASTFLOAT], [test "x$with_fastfloat" = "xyes" ])
  382. AM_CONDITIONAL([COND_THREADED], [test "x$with_threaded" = "xyes" ])
  383. AC_CONFIG_FILES([plugins/Makefile])
  384. AC_CONFIG_FILES([plugins/fast_float/Makefile])
  385. AC_CONFIG_FILES([plugins/fast_float/src/Makefile])
  386. AC_CONFIG_FILES([plugins/fast_float/include/Makefile])
  387. AC_CONFIG_FILES([plugins/fast_float/testbed/Makefile])
  388. AC_CONFIG_FILES([plugins/threaded/Makefile])
  389. AC_CONFIG_FILES([plugins/threaded/src/Makefile])
  390. AC_CONFIG_FILES([plugins/threaded/include/Makefile])
  391. AC_CONFIG_FILES([plugins/threaded/testbed/Makefile])
  392. AC_OUTPUT