Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

257 rader
7.3 KiB

  1. dnl
  2. dnl Lol Engine
  3. dnl
  4. dnl Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
  5. dnl
  6. dnl Lol Engine is free software. It comes without any warranty, to
  7. dnl the extent permitted by applicable law. You can redistribute it
  8. dnl and/or modify it under the terms of the Do What the Fuck You Want
  9. dnl to Public License, Version 2, as published by the WTFPL Task Force.
  10. dnl See http://www.wtfpl.net/ for more details.
  11. dnl
  12. AC_INIT(lolengine, 0.0)
  13. AC_PREREQ(2.50)
  14. AC_CONFIG_AUX_DIR(.auto)
  15. AC_CANONICAL_SYSTEM
  16. AM_INIT_AUTOMAKE([subdir-objects no-define tar-ustar silent-rules])
  17. dnl AM_MAINTAINER_MODE
  18. AM_DEFAULT_VERBOSITY=0
  19. dnl Versioning of the separate software we ship
  20. LOLUNIT_VERSION=0.1
  21. AC_SUBST(LOLUNIT_VERSION)
  22. LOLREMEZ_VERSION=0.2
  23. AC_SUBST(LOLREMEZ_VERSION)
  24. AC_SUBST(lol_srcdir, '${top_srcdir}')
  25. AC_SUBST(lol_builddir, '${top_builddir}')
  26. AC_CONFIG_HEADER(config.h)
  27. AM_PROG_CC_C_O
  28. AC_PROG_CPP
  29. AC_PROG_CXX
  30. AC_PROG_CXXCPP
  31. AC_PROG_RANLIB
  32. LOL_AC_INIT()
  33. AC_LIBTOOL_WIN32_DLL
  34. AM_PROG_LIBTOOL
  35. AC_LIBTOOL_CXX
  36. dnl Ensure an error is thrown if pkg-config M4 files are not found.
  37. m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
  38. m4_pattern_forbid([^PKG_CHECK_MODULES$])
  39. m4_pattern_forbid([^PKG_PROG_PKG_CONFIG$])
  40. dnl Same for Lol Engine M4 files.
  41. m4_pattern_forbid([^LOL_AC_])
  42. dnl Do not use PKG_CONFIG_LIBDIR when cross-compiling.
  43. if test "${build}" != "${host}" -a "${PKG_CONFIG_LIBDIR}" = ""; then
  44. export PKG_CONFIG_LIBDIR=/dev/null
  45. fi
  46. dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right
  47. dnl now otherwise it might be set in an obscure if statement. Same thing for
  48. dnl PKG_PROG_PKG_CONFIG which needs to be called first.
  49. AC_EGREP_CPP(yes, foo)
  50. PKG_PROG_PKG_CONFIG()
  51. dnl Check for a working implementation of sed
  52. AC_PROG_SED
  53. AC_MSG_CHECKING(for a sed that understands \t)
  54. if test "$(echo 'x\x' | "${SED}" 's/.*@<:@^x\t@:>@//')" != x; then
  55. AC_MSG_RESULT(no)
  56. AC_MSG_ERROR([[consider installing GNU sed]])
  57. else
  58. AC_MSG_RESULT(yes)
  59. fi
  60. dnl conditional builds
  61. AC_ARG_ENABLE(debug,
  62. [ --enable-debug build debug versions of the game (default no)])
  63. AC_ARG_ENABLE(release,
  64. [ --enable-release build final release of the game (default no)])
  65. AC_ARG_ENABLE(experimental,
  66. [ --enable-experimental experimental build (default no)])
  67. AC_ARG_ENABLE(test,
  68. [ --enable-test build test suite (default yes)])
  69. AC_ARG_ENABLE(tools,
  70. [ --enable-tools build miscellaneous tools (default yes)])
  71. AC_ARG_ENABLE(tutorial,
  72. [ --enable-tutorial build tutorial applications (default yes)])
  73. AC_ARG_ENABLE(samples,
  74. [ --enable-samples build sample applications (default yes)])
  75. AC_ARG_ENABLE(doc,
  76. [ --enable-doc build documentation (needs doxygen and LaTeX)])
  77. dnl Common C headers
  78. AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h stdint.h math.h)
  79. AC_CHECK_HEADERS(fastmath.h unistd.h io.h)
  80. AC_CHECK_HEADERS(execinfo.h)
  81. AC_CHECK_HEADERS(sys/ioctl.h sys/ptrace.h sys/stat.h sys/syscall.h sys/user.h)
  82. AC_CHECK_HEADERS(sys/wait.h sys/time.h sys/types.h)
  83. dnl Common C++ headers
  84. AC_LANG_PUSH(C++)
  85. AC_CHECK_HEADERS(cxxabi.h)
  86. AC_LANG_POP(C++)
  87. dnl Common C functions
  88. AC_CHECK_FUNCS(getenv system tmpfile tmpnam getcwd _getcwd getlogin)
  89. AC_CHECK_FUNCS(backtrace_symbols)
  90. AC_CHECK_FUNCS(gettimeofday usleep)
  91. dnl Build mode
  92. ac_cv_my_build_mode="devel"
  93. if test "x${enable_release}" = "xyes"; then
  94. ac_cv_my_build_mode="release"
  95. fi
  96. if test "x${enable_devel}" = "xyes"; then
  97. ac_cv_my_build_mode="devel"
  98. fi
  99. if test "x${enable_debug}" = "xyes"; then
  100. ac_cv_my_build_mode="debug"
  101. fi
  102. if test "x${ac_cv_my_build_mode}" = "xdebug"; then
  103. AC_DEFINE(LOL_BUILD_DEBUG, 1, Define to 1 to activate debug build)
  104. LOL_TRY_CXXFLAGS(-O, [AM_CXXFLAGS="${AM_CXXFLAGS} -O"])
  105. LOL_TRY_CXXFLAGS(-g, [AM_CXXFLAGS="${AM_CXXFLAGS} -g"])
  106. elif test "x${ac_cv_my_build_mode}" = "xdevel"; then
  107. AC_DEFINE(LOL_BUILD_DEVEL, 1, Define to 1 to activate development build)
  108. LOL_TRY_CXXFLAGS(-Os, [AM_CXXFLAGS="${AM_CXXFLAGS} -Os"])
  109. LOL_TRY_CXXFLAGS(-g, [AM_CXXFLAGS="${AM_CXXFLAGS} -g"])
  110. LOL_TRY_CXXFLAGS(-ffast-math, [AM_CXXFLAGS="${AM_CXXFLAGS} -ffast-math"])
  111. else
  112. AC_DEFINE(LOL_BUILD_RELEASE, 1, Define to 1 to activate final release)
  113. LOL_TRY_CXXFLAGS(-Os, [AM_CXXFLAGS="${AM_CXXFLAGS} -Os"])
  114. LOL_TRY_CXXFLAGS(-ffast-math, [AM_CXXFLAGS="${AM_CXXFLAGS} -ffast-math"])
  115. LOL_TRY_CXXFLAGS(-fomit-frame-pointer, [AM_CXXFLAGS="${AM_CXXFLAGS} -fomit-frame-pointer"])
  116. LOL_TRY_CXXFLAGS(-fno-strength-reduce, [AM_CXXFLAGS="${AM_CXXFLAGS} -fno-strength-reduce"])
  117. fi
  118. dnl Build documentation?
  119. DOXYGEN="no"
  120. LATEX="no"
  121. if test "${enable_doc}" != "no"; then
  122. AC_PATH_PROG(DOXYGEN, doxygen, no)
  123. if test "${DOXYGEN}" != "no"; then
  124. # Build LaTeX documentation?
  125. AC_PATH_PROG(LATEX, pdflatex, no)
  126. AC_PATH_PROG(KPSEWHICH, kpsewhich, no)
  127. AC_PATH_PROG(DVIPS, dvips, no)
  128. if test "${DVIPS}" = "no" -o "${KPSEWHICH}" = "no"; then
  129. LATEX="no"
  130. fi
  131. if test "${LATEX}" != "no"; then
  132. AC_MSG_CHECKING(for a4.sty and a4wide.sty)
  133. if "${KPSEWHICH}" a4.sty >/dev/null 2>&1; then
  134. if "${KPSEWHICH}" a4wide.sty >/dev/null 2>&1; then
  135. AC_MSG_RESULT(yes)
  136. else
  137. LATEX="no"
  138. AC_MSG_RESULT(no)
  139. fi
  140. else
  141. LATEX="no"
  142. AC_MSG_RESULT(no)
  143. fi
  144. fi
  145. AC_PATH_PROG(DOT, dot, no)
  146. if test "${DOT}" != "no"; then
  147. LOL_USE_DOT="YES"
  148. else
  149. LOL_USE_DOT="NO"
  150. fi
  151. fi
  152. fi
  153. dnl XXX: disable LaTeX because we use too much memory
  154. LATEX=no
  155. AM_CONDITIONAL(BUILD_DOCUMENTATION, test "${DOXYGEN}" != "no")
  156. AM_CONDITIONAL(LOL_USE_LATEX, test "${LATEX}" != "no")
  157. AM_CONDITIONAL(LOL_USE_DOT, test "${DOT}" != "no")
  158. AC_SUBST(LOL_USE_DOT)
  159. dnl GCC-specific symbol demangling
  160. AC_LANG_PUSH(C++)
  161. AC_TRY_LINK(
  162. [#include <cxxabi.h>],
  163. [abi::__cxa_demangle(NULL, 0, 0, NULL);],
  164. [AC_DEFINE(HAVE_CXA_DEMANGLE, 1, Define to 1 if abi::__cxa_demangle is available)])
  165. AC_LANG_POP(C++)
  166. LOL_AC_CHECK()
  167. dnl Use libcaca? (required for font generation)
  168. ac_cv_my_have_caca="no"
  169. PKG_CHECK_MODULES(CACA, caca >= 0.99.beta17, [ac_cv_my_have_caca="yes"], [:])
  170. if test "${ac_cv_my_have_caca}" != "no"; then
  171. AC_DEFINE(LOL_USE_CACA, 1, Define to 1 to use libcaca)
  172. fi
  173. AM_CONDITIONAL(LOL_USE_CACA, test "${ac_cv_my_have_caca}" != "no")
  174. dnl Use GTK+? (required for the deushax editor)
  175. ac_cv_my_have_gtkgl="no"
  176. PKG_CHECK_MODULES(GTK, gtk+-2.0, [ac_cv_my_have_gtkgl="yes"], [:])
  177. PKG_CHECK_MODULES(GTKGL, gtkgl-2.0, [:], [ac_cv_my_have_gtkgl="no"])
  178. if test "${ac_cv_my_have_gtkgl}" != "no"; then
  179. AC_DEFINE(LOL_USE_GTKGL, 1, Define to 1 to use GtkGl)
  180. fi
  181. AM_CONDITIONAL(LOL_USE_GTKGL, test "${ac_cv_my_have_gtkgl}" != "no")
  182. dnl Optional features
  183. AM_CONDITIONAL(BUILD_TEST, test "${enable_test}" != "no")
  184. AM_CONDITIONAL(BUILD_TOOLS, test "${enable_tools}" != "no")
  185. AM_CONDITIONAL(BUILD_TUTORIAL, test "${enable_tutorial}" != "no")
  186. AM_CONDITIONAL(BUILD_SAMPLES, test "${enable_samples}" != "no")
  187. dnl Should we ship non-free data?
  188. AM_CONDITIONAL(HAVE_NONFREE, true)
  189. LOL_AC_SUBST()
  190. AC_CONFIG_FILES(
  191. [Makefile
  192. src/Makefile
  193. src/3rdparty/Makefile
  194. src/data/Makefile
  195. src/data/font/Makefile
  196. src/t/Makefile
  197. build/Makefile
  198. binaries/Makefile
  199. doc/Makefile
  200. doc/doxygen.cfg
  201. doc/samples/Makefile
  202. doc/samples/math/Makefile
  203. doc/samples/meshviewer/Makefile
  204. doc/samples/sandbox/Makefile
  205. doc/tutorial/Makefile
  206. tools/Makefile
  207. tools/lolremez/Makefile
  208. tools/lolunit/Makefile
  209. tools/vimlol/Makefile
  210. tools/vslol/Makefile
  211. ])
  212. AC_OUTPUT