configure.in 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. # Process this file with autoconf to produce a configure script.
  2. AC_INIT(physfs.c)
  3. dnl ---------------------------------------------------------------------
  4. dnl System/version info
  5. dnl ---------------------------------------------------------------------
  6. # Making releases:
  7. # MICRO_VERSION += 1;
  8. # INTERFACE_AGE += 1;
  9. # BINARY_AGE += 1;
  10. # if any functions have been added, set INTERFACE_AGE to 0.
  11. # if backwards compatibility has been broken,
  12. # set BINARY_AGE and INTERFACE_AGE to 0.
  13. MAJOR_VERSION=0
  14. MINOR_VERSION=1
  15. MICRO_VERSION=7
  16. INTERFACE_AGE=0
  17. BINARY_AGE=0
  18. VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION
  19. AC_SUBST(MAJOR_VERSION)
  20. AC_SUBST(MINOR_VERSION)
  21. AC_SUBST(MICRO_VERSION)
  22. AC_SUBST(INTERFACE_AGE)
  23. AC_SUBST(BINARY_AGE)
  24. AC_SUBST(VERSION)
  25. # libtool versioning
  26. LT_RELEASE=$MAJOR_VERSION.$MINOR_VERSION
  27. LT_CURRENT=`expr $MICRO_VERSION - $INTERFACE_AGE`
  28. LT_REVISION=$INTERFACE_AGE
  29. LT_AGE=`expr $BINARY_AGE - $INTERFACE_AGE`
  30. AC_SUBST(LT_RELEASE)
  31. AC_SUBST(LT_CURRENT)
  32. AC_SUBST(LT_REVISION)
  33. AC_SUBST(LT_AGE)
  34. dnl Detect the canonical host and target build environment
  35. AC_CANONICAL_BUILD
  36. AC_CANONICAL_HOST
  37. AC_CANONICAL_TARGET
  38. dnl Setup for automake
  39. AM_CONFIG_HEADER(config.h)
  40. AM_INIT_AUTOMAKE(physfs, $VERSION)
  41. dnl ---------------------------------------------------------------------
  42. dnl Compilers and other tools
  43. dnl ---------------------------------------------------------------------
  44. AC_PROG_CC
  45. AC_PROG_CXX
  46. AC_PROG_INSTALL
  47. AC_PROG_LN_S
  48. AC_LIBTOOL_WIN32_DLL
  49. LIBTOOL="libtool"
  50. AM_PROG_LIBTOOL
  51. AC_CHECK_PROG(we_have_sed, sed, yes, no)
  52. dnl ---------------------------------------------------------------------
  53. dnl Debug mode?
  54. dnl ---------------------------------------------------------------------
  55. AC_ARG_ENABLE(debug,
  56. [ --enable-debug enable debug mode [default=yes]],
  57. , enable_debug=no)
  58. if test x$enable_debug = xyes; then
  59. if test x$ac_cv_prog_cc_g = xyes; then
  60. PHYSFSCFLAGS="-g -O0"
  61. else
  62. PHYSFSCFLAGS="-O0"
  63. fi
  64. PHYSFSCFLAGS="$PHYSFSCFLAGS -Werror -Wall"
  65. AC_DEFINE([DEBUG], 1, [define if debug build is enabled])
  66. AC_DEFINE([DEBUG_CHATTER], 1, [define if debug chatter is enabled])
  67. else
  68. PHYSFSCFLAGS="-O2"
  69. AC_DEFINE([NDEBUG], 1, [define if debug build is disabled])
  70. fi
  71. dnl ---------------------------------------------------------------------
  72. dnl Profile sorts, etc?
  73. dnl ---------------------------------------------------------------------
  74. AC_ARG_ENABLE(profiling,
  75. [ --enable-profiling do algorithm profiling [default=no]],
  76. , enable_profiling=no)
  77. if test x$enable_profiling = xyes; then
  78. AC_DEFINE([PHYSFS_PROFILING], 1, [define to profile sorting, etc algorithms])
  79. fi
  80. dnl ---------------------------------------------------------------------
  81. dnl Build test program?
  82. dnl ---------------------------------------------------------------------
  83. AC_ARG_ENABLE(testprog,
  84. [ --enable-testprog build test program [default=yes]],
  85. , enable_testprog=yes)
  86. dnl ---------------------------------------------------------------------
  87. dnl Checks for libraries.
  88. dnl ---------------------------------------------------------------------
  89. require_zlib="no"
  90. dnl Check for zip archiver inclusion...
  91. AC_ARG_ENABLE(zip,
  92. [ --enable-zip enable ZIP support [default=yes]],
  93. , enable_zip=yes)
  94. if test x$enable_zip = xyes; then
  95. AC_DEFINE([PHYSFS_SUPPORTS_ZIP], 1, [define if zip support is enabled])
  96. require_zlib="yes"
  97. fi
  98. dnl Check for grp archiver inclusion...
  99. AC_ARG_ENABLE(grp,
  100. [ --enable-grp enable Build Engine GRP support [default=yes]],
  101. , enable_grp=yes)
  102. if test x$enable_grp = xyes; then
  103. AC_DEFINE([PHYSFS_SUPPORTS_GRP], 1, [define if grp support is enabled])
  104. fi
  105. dnl Check for qpak archiver inclusion...
  106. AC_ARG_ENABLE(qpak,
  107. [ --enable-qpak enable Quake PAK support [default=yes]],
  108. , enable_qpak=yes)
  109. if test x$enable_qpak = xyes; then
  110. AC_DEFINE([PHYSFS_SUPPORTS_QPAK], 1, [define if qpak support is enabled])
  111. fi
  112. dnl Check if we should statically link the included zlib...
  113. AC_ARG_ENABLE(internal-zlib,
  114. [ --enable-internal-zlib use included zlib [default=only if needed]],
  115. , enable_internal_zlib=maybe)
  116. dnl Check for zlib if needed.
  117. have_external_zlib="no"
  118. if test x$enable_internal_zlib != xyes; then
  119. if test x$require_zlib = xyes; then
  120. AC_CHECK_HEADER(zlib.h, have_zlib_hdr=yes)
  121. AC_CHECK_LIB(z, zlibVersion, have_zlib_lib=yes)
  122. if test x$have_zlib_hdr = xyes -a x$have_zlib_lib = xyes; then
  123. have_external_zlib="yes"
  124. fi
  125. fi
  126. fi
  127. AC_MSG_CHECKING([what zlib to use])
  128. dnl no zlib is needed at all if we aren't supporting ZIP files.
  129. if test x$require_zlib = xno; then
  130. enable_internal_zlib="no"
  131. enable_external_zlib="no"
  132. AC_MSG_RESULT([no zlib needed])
  133. else
  134. if test x$enable_internal_zlib = xmaybe; then
  135. if test x$have_external_zlib = xyes; then
  136. enable_internal_zlib="no"
  137. enable_external_zlib="yes"
  138. else
  139. enable_internal_zlib="yes"
  140. enable_external_zlib="no"
  141. fi
  142. else
  143. if test x$enable_internal_zlib = xno -a x$have_external_zlib = xyes; then
  144. enable_internal_zlib="no"
  145. enable_external_zlib="yes"
  146. fi
  147. fi
  148. if test x$enable_internal_zlib = xyes; then
  149. AC_MSG_RESULT([internal zlib])
  150. else
  151. if test x$enable_external_zlib = xyes; then
  152. AC_MSG_RESULT([external zlib])
  153. LIBS="$LIBS -lz"
  154. else
  155. AC_MSG_ERROR([Need zlib, but you disabled our copy and have no system lib])
  156. fi
  157. fi
  158. fi
  159. dnl determine if we should include readline support...
  160. AC_ARG_ENABLE(readline,
  161. [ --enable-readline use GNU readline in test program [default=yes]],
  162. , enable_readline=yes)
  163. if test x$enable_readline = xyes; then
  164. AC_CHECK_HEADER(readline/readline.h, have_readline_hdr=yes)
  165. AC_CHECK_LIB(readline, readline, have_readline_lib=yes, , -lcurses)
  166. AC_CHECK_HEADER(readline/history.h, have_history_hdr=yes)
  167. AC_CHECK_LIB(readline, add_history, have_history_lib=yes, , -lcurses)
  168. if test x$have_readline_hdr = xyes -a x$have_readline_lib = xyes; then
  169. if test x$have_history_hdr = xyes -a x$have_history_lib = xyes; then
  170. AC_DEFINE([PHYSFS_HAVE_READLINE], 1, [define if we have readline])
  171. LIBS="$LIBS -lreadline -lcurses"
  172. fi
  173. fi
  174. fi
  175. dnl !!! FIXME: Not sure how to detect this...
  176. dnl check for 64-bit llseek()...
  177. dnl AC_CHECK_LIB(c, llseek, have_llseek=yes)
  178. if test x$have_llseek = xyes; then
  179. AC_DEFINE([PHYSFS_HAVE_LLSEEK], 1, [define if we have llseek])
  180. fi
  181. dnl determine if we should use the stubbed pthread code.
  182. AC_ARG_ENABLE(pthreads,
  183. [ --enable-pthreads include POSIX threads support [default=yes]],
  184. , enable_pthreads=yes)
  185. if test x$enable_pthreads = xyes; then
  186. AC_CHECK_HEADER(pthread.h, have_pthread_hdr=yes)
  187. if test x$have_pthread_hdr != xyes; then
  188. enable_pthreads=no
  189. fi
  190. fi
  191. dnl determine if we should use the stubbed CD-ROM detection code.
  192. AC_ARG_ENABLE(cdrom,
  193. [ --enable-cdrom include CD-ROM support [default=yes]],
  194. , enable_cdrom=yes)
  195. if test x$enable_cdrom = xyes; then
  196. dnl reset this and let header detection reenable...
  197. enable_cdrom=no
  198. dnl BSD systems use sys/ucred.h for getting mounted volumes.
  199. dnl Linux and others use mntent.h.
  200. AC_CHECK_HEADER(sys/ucred.h, have_ucred_hdr=yes)
  201. if test x$have_ucred_hdr = xyes; then
  202. AC_DEFINE([PHYSFS_HAVE_SYS_UCRED_H], 1, [define if we have sys/ucred.h])
  203. enable_cdrom=yes
  204. fi
  205. AC_CHECK_HEADER(mntent.h, have_mntent_hdr=yes)
  206. if test x$have_mntent_hdr = xyes; then
  207. AC_DEFINE([PHYSFS_HAVE_MNTENT_H], 1, [define if we have mntent.h])
  208. enable_cdrom=yes
  209. fi
  210. fi
  211. dnl determine language.
  212. AC_ARG_ENABLE(language,
  213. [ --enable-language=lang Select natural language. [default=english]],
  214. physfslang=`echo $enable_language |tr A-Z a-z`, physfslang=english)
  215. AC_MSG_CHECKING([if language choice is supported])
  216. physfs_valid_lang=no
  217. if test x$physfslang = xenglish; then
  218. physfs_valid_lang=yes
  219. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_ENGLISH, [define desired natural language])
  220. fi
  221. if test x$physfslang = xrussian-koi8-r; then
  222. physfs_valid_lang=yes
  223. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_RUSSIAN_KOI8_R, [define desired natural language])
  224. fi
  225. if test x$physfslang = xrussian-cp1251; then
  226. physfs_valid_lang=yes
  227. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_RUSSIAN_CP866, [define desired natural language])
  228. fi
  229. if test x$physfslang = xrussian-cp866; then
  230. physfs_valid_lang=yes
  231. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_RUSSIAN_CP866, [define desired natural language])
  232. fi
  233. if test x$physfslang = xrussian-iso-8859-5; then
  234. physfs_valid_lang=yes
  235. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_RUSSIAN_ISO_8859_5, [define desired natural language])
  236. fi
  237. if test x$physfslang = xspanish; then
  238. physfs_valid_lang=yes
  239. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_SPANISH, [define desired natural language])
  240. fi
  241. if test x$physfslang = xfrench; then
  242. physfs_valid_lang=yes
  243. AC_DEFINE([PHYSFS_LANG], PHYSFS_LANG_FRENCH, [define desired natural language])
  244. fi
  245. dnl Add other language checks here...
  246. AC_MSG_RESULT([$physfs_valid_lang])
  247. if test x$physfs_valid_lang = xno; then
  248. AC_MSG_WARN([***])
  249. AC_MSG_WARN([*** You've asked for "$physfslang" language support...])
  250. AC_MSG_WARN([*** ...but we don't support that.])
  251. AC_MSG_WARN([*** You could choose another language,])
  252. AC_MSG_WARN([*** but is this what you REALLY wanted?])
  253. AC_MSG_WARN([*** Please see the LANG section of physfs_internal.h])
  254. AC_MSG_WARN([*** for info on writing a translation.])
  255. AC_MSG_WARN([***])
  256. AC_MSG_WARN([*** Currently known languages:])
  257. AC_MSG_WARN([*** --enable-language=english])
  258. AC_MSG_WARN([*** --enable-language=spanish])
  259. AC_MSG_WARN([*** --enable-language=russian-koi8-r])
  260. AC_MSG_WARN([*** --enable-language=russian-cp1251])
  261. AC_MSG_WARN([*** --enable-language=russian-cp866])
  262. AC_MSG_WARN([*** --enable-language=russian-iso-8859-5])
  263. AC_MSG_WARN([*** --enable-language=french])
  264. AC_MSG_WARN([***])
  265. AC_MSG_ERROR([*** unsupported language. stop.])
  266. fi
  267. have_non_posix_threads=no
  268. AC_MSG_CHECKING([if this is BeOS])
  269. if test x$build_os = xbeos; then
  270. this_is_beos=yes
  271. enable_pthreads=no
  272. have_non_posix_threads=yes
  273. LIBS="$LIBS -lroot -lbe"
  274. else
  275. this_is_beos=no
  276. fi
  277. AC_MSG_RESULT([$this_is_beos])
  278. AC_MSG_CHECKING([if this is Cygwin])
  279. if test x$build_os = xcygwin; then
  280. this_is_cygwin=yes
  281. PHYSFSCFLAGS="$PHYSFSCFLAGS -DWIN32"
  282. enable_pthreads=no
  283. have_non_posix_threads=yes
  284. else
  285. this_is_cygwin=no
  286. fi
  287. AC_MSG_RESULT([$this_is_cygwin])
  288. this_is_macosx=no
  289. if test x$we_have_sed = xyes; then
  290. AC_MSG_CHECKING([if this is MacOS X])
  291. x=`echo $build_os |sed "s/darwin.*/darwin/"`
  292. if test x$x = xdarwin -a x$build_vendor = xapple; then
  293. this_is_macosx=yes
  294. fi
  295. AC_MSG_RESULT([$this_is_macosx])
  296. fi
  297. this_is_freebsd=no
  298. if test x$we_have_sed = xyes; then
  299. AC_MSG_CHECKING([if this is FreeBSD])
  300. x=`echo $build_os |tr A-Z a-z |sed "s/.*freebsd.*/freebsd/"`
  301. if test x$x = xfreebsd; then
  302. this_is_freebsd=yes
  303. PHYSFSLDFLAGS="$PHYSFSLDFLAGS -pthread"
  304. fi
  305. AC_MSG_RESULT([$this_is_freebsd])
  306. fi
  307. this_is_openbsd=no
  308. if test x$we_have_sed = xyes; then
  309. AC_MSG_CHECKING([if this is OpenBSD])
  310. x=`echo $build_os |tr A-Z a-z |sed "s/.*openbsd.*/openbsd/"`
  311. if test x$x = xopenbsd; then
  312. this_is_openbsd=yes
  313. PHYSFSLDFLAGS="$PHYSFSLDFLAGS -pthread"
  314. fi
  315. AC_MSG_RESULT([$this_is_openbsd])
  316. fi
  317. this_is_atheos=no
  318. if test x$we_have_sed = xyes; then
  319. AC_MSG_CHECKING([if this is AtheOS])
  320. x=`echo $build_os |tr A-Z a-z |sed "s/.*atheos.*/atheos/"`
  321. if test x$x = xatheos; then
  322. this_is_atheos=yes
  323. enable_cdrom=no
  324. enable_pthreads=no
  325. fi
  326. AC_MSG_RESULT([$this_is_atheos])
  327. fi
  328. this_is_os2=no
  329. if test x$we_have_sed = xyes; then
  330. AC_MSG_CHECKING([if this is OS/2])
  331. x=`echo $build_os |tr A-Z a-z |sed "s/.*os2.*/os2/"`
  332. if test x$x = xos2; then
  333. this_is_os2=yes
  334. PHYSFSCFLAGS="$PHYSFSCFLAGS -DOS2"
  335. fi
  336. AC_MSG_RESULT([$this_is_os2])
  337. fi
  338. dnl Some platform might disable this, so check this down here...
  339. if test x$enable_cdrom != xyes; then
  340. AC_DEFINE([PHYSFS_NO_CDROM_SUPPORT], 1, [define if we have no CD support])
  341. AC_MSG_WARN([***])
  342. AC_MSG_WARN([*** There is no CD-ROM support in this build!])
  343. AC_MSG_WARN([*** PhysicsFS will just pretend there are no discs.])
  344. AC_MSG_WARN([*** This may be fine, depending on how PhysicsFS is used,])
  345. AC_MSG_WARN([*** but is this what you REALLY wanted?])
  346. AC_MSG_WARN([*** (Maybe fix configure.in, or write a platform driver?)])
  347. AC_MSG_WARN([***])
  348. fi
  349. if test x$enable_pthreads != xyes; then
  350. AC_DEFINE([PHYSFS_NO_PTHREADS_SUPPORT], 1, [define if we have no POSIX threads support])
  351. if test x$have_non_posix_threads != xyes; then
  352. AC_MSG_WARN([***])
  353. AC_MSG_WARN([*** There is no thread support in this build!])
  354. AC_MSG_WARN([*** PhysicsFS will NOT be reentrant!])
  355. AC_MSG_WARN([*** This may be fine, depending on how PhysicsFS is used,])
  356. AC_MSG_WARN([*** but is this what you REALLY wanted?])
  357. AC_MSG_WARN([*** (Maybe fix configure.in, or write a platform driver?)])
  358. AC_MSG_WARN([***])
  359. fi
  360. fi
  361. # Checks for header files.
  362. AC_HEADER_STDC
  363. AC_CHECK_HEADERS([stdlib.h string.h])
  364. # Checks for typedefs, structures, and compiler characteristics.
  365. dnl AC_C_CONST
  366. dnl AC_TYPE_SIZE_T
  367. # Checks for library functions.
  368. # This is only in the bleeding edge autoconf distro...
  369. #AC_FUNC_MALLOC
  370. AC_FUNC_MEMCMP
  371. AC_CHECK_FUNCS([memset strrchr])
  372. AC_CHECK_SIZEOF(int, 4)
  373. CFLAGS="$CFLAGS $PHYSFSCFLAGS -D_REENTRANT -D_THREAD_SAFE"
  374. LDFLAGS="$LDFLAGS $PHYSFSLDFLAGS -no-undefined"
  375. dnl Add Makefile conditionals
  376. AM_CONDITIONAL(BUILD_ZLIB, test x$enable_internal_zlib = xyes)
  377. AM_CONDITIONAL(BUILD_TEST_PHYSFS, test x$enable_testprog = xyes)
  378. AM_CONDITIONAL(BUILD_MACOSX, test x$this_is_macosx = xyes)
  379. AM_CONDITIONAL(BUILD_BEOS, test x$this_is_beos = xyes)
  380. AM_CONDITIONAL(BUILD_CYGWIN, test x$this_is_cygwin = xyes)
  381. AC_OUTPUT([
  382. Makefile
  383. archivers/Makefile
  384. platform/Makefile
  385. zlib114/Makefile
  386. test/Makefile
  387. extras/Makefile
  388. physfs.spec
  389. ])
  390. dnl end of configure.in ...