You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 13 години
преди 13 години
преди 13 години
преди 13 години
преди 14 години
преди 13 години
преди 13 години
преди 13 години
преди 12 години
преди 12 години
преди 12 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. dnl configure script for Lol Engine
  2. AC_INIT(lolengine, 0.0)
  3. AC_PREREQ(2.50)
  4. AC_CONFIG_AUX_DIR(.auto)
  5. AC_CANONICAL_SYSTEM
  6. AM_INIT_AUTOMAKE([subdir-objects no-define tar-ustar silent-rules])
  7. dnl AM_MAINTAINER_MODE
  8. AM_DEFAULT_VERBOSITY=0
  9. dnl Versioning of the separate software we ship
  10. LOLUNIT_VERSION=0.1
  11. AC_SUBST(LOLUNIT_VERSION)
  12. LOLREMEZ_VERSION=0.2
  13. AC_SUBST(LOLREMEZ_VERSION)
  14. AM_CONFIG_HEADER(config.h)
  15. AM_PROG_CC_C_O
  16. AC_PROG_CPP
  17. AC_PROG_CXX
  18. AC_PROG_CXXCPP
  19. AC_PROG_RANLIB
  20. AC_LIBTOOL_WIN32_DLL
  21. AM_PROG_LIBTOOL
  22. AC_LIBTOOL_CXX
  23. AC_C_CONST
  24. AC_C_INLINE
  25. dnl Ensure an error is thrown if pkg-config M4 files are not found.
  26. m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
  27. m4_pattern_forbid([^PKG_CHECK_MODULES$])
  28. m4_pattern_forbid([^PKG_PROG_PKG_CONFIG$])
  29. dnl Do not use PKG_CONFIG_LIBDIR when cross-compiling.
  30. if test "${build}" != "${host}" -a "${PKG_CONFIG_LIBDIR}" = ""; then
  31. export PKG_CONFIG_LIBDIR=/dev/null
  32. fi
  33. dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right
  34. dnl now otherwise it might be set in an obscure if statement. Same thing for
  35. dnl PKG_PROG_PKG_CONFIG which needs to be called first.
  36. AC_EGREP_CPP(yes, foo)
  37. PKG_PROG_PKG_CONFIG()
  38. AM_CONDITIONAL(USE_GLEW, test "${ac_cv_my_have_glew}" != "no")
  39. dnl conditional builds
  40. AC_ARG_ENABLE(debug,
  41. [ --enable-debug build debug versions of the game (default no)])
  42. AC_ARG_ENABLE(release,
  43. [ --enable-release build final release of the game (default no)])
  44. AC_ARG_ENABLE(experimental,
  45. [ --enable-experimental experimental build (default no)])
  46. AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h endian.h stdint.h getopt.h)
  47. AC_CHECK_HEADERS(fastmath.h pthread.h libutil.h util.h pty.h glob.h)
  48. AC_CHECK_HEADERS(sys/ioctl.h sys/ptrace.h sys/stat.h sys/syscall.h sys/user.h)
  49. AC_CHECK_HEADERS(sys/wait.h)
  50. AC_CHECK_HEADERS(linux/kdev_t.h linux/major.h)
  51. AC_CHECK_HEADERS(security/pam_appl.h security/pam_misc.h)
  52. AC_CHECK_HEADERS(pam/pam_appl.h pam/pam_misc.h)
  53. if test "${enable_debug}" = "yes"; then
  54. AC_DEFINE(LOL_DEBUG, 1, Define to 1 to activate debug)
  55. OPT="-O"
  56. else
  57. OPT="-O3 -ffast-math -fno-strength-reduce -fomit-frame-pointer"
  58. fi
  59. if test "${enable_release}" = "yes"; then
  60. AC_DEFINE(LOL_RELEASE, 1, Define to 1 to activate final release)
  61. REL=""
  62. else
  63. REL="-g"
  64. fi
  65. if test "${enable_experimental}" = "yes"; then
  66. AC_DEFINE(LOL_EXPERIMENTAL, 1, Define to 1 to activate experimental build)
  67. fi
  68. dnl No exceptions
  69. CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-rtti"
  70. dnl Optimizations
  71. CXXFLAGS="${CXXFLAGS} ${REL} ${OPT}"
  72. dnl Code qui fait des warnings == code de porc == deux baffes dans ta gueule
  73. CXXFLAGS="${CXXFLAGS} -Wall -Wextra -Wpointer-arith -Wcast-align -Wcast-qual -Wshadow -Wsign-compare"
  74. AC_CHECK_LIB(m, sin, MATH_LIBS="${MATH_LIBS} -lm")
  75. AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
  76. AC_CHECK_LIB(util, forkpty, UTIL_LIBS="${UTIL_LIBS} -lutil")
  77. dnl Are we on the PS3?
  78. ac_cv_my_have_ps3="no"
  79. AC_CHECK_LIB(sysmodule_stub, cellSysmoduleLoadModule,
  80. [ac_cv_my_have_ps3="yes"
  81. LOL_LIBS="${LOL_LIBS} -lsysmodule_stub -lsysutil_stub -lresc_stub"
  82. dnl For PSGL
  83. AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available) # FIXME: hack
  84. GL_LIBS="${GL_LIBS} -lPSGL -lgcm_cmd -lgcm_sys_stub"
  85. dnl This is the old way; we now use CELL_SDK instead of CELLSDK
  86. if test "x${CELLSDK}" != x -a "x${CELL_SDK}" = x; then
  87. CELL_SDK="${CELLSDK}"
  88. fi
  89. if test "x${enable_debug}" = xyes; then
  90. GL_LIBS="${GL_LIBS} -L${CELL_SDK}/target/ppu/lib/PSGL/RSX/debug"
  91. elif test "x${enable_release}" = xyes; then
  92. GL_LIBS="${GL_LIBS} -L${CELL_SDK}/target/ppu/lib/PSGL/RSX/ultra-opt"
  93. else
  94. GL_LIBS="${GL_LIBS} -L${CELL_SDK}/target/ppu/lib/PSGL/RSX/opt"
  95. fi
  96. dnl For the runtime Cg compiler
  97. GL_LIBS="${GL_LIBS} -lcgc -lPSGLcgc"
  98. dnl For the PNG decoder
  99. LOL_LIBS="${LOL_LIBS} -lpngdec_stub"
  100. dnl For the pad library
  101. LOL_LIBS="${LOL_LIBS} -lio_stub -lusbd_stub -lpadfilter"
  102. dnl Disable this warning, it's too verbose with vector.h
  103. CXXFLAGS="${CXXFLAGS} -Wno-sign-compare"
  104. AC_PATH_PROG(MAKE_FSELF, make_fself, no)
  105. if test "${MAKE_FSELF}" = "no"; then
  106. AC_MSG_ERROR([[Building for PS3 but make_fself not found]])
  107. fi],
  108. [MAKE_FSELF=no])
  109. AM_CONDITIONAL(USE_PS3, test "${ac_cv_my_have_ps3}" != "no")
  110. dnl Are we building using MinGW?
  111. LIBS_save="$LIBS"
  112. LIBS="$LIBS -mwindows -mwin32"
  113. AC_MSG_CHECKING(for -mwindows -mwin32)
  114. AC_TRY_LINK([], [],
  115. [AC_MSG_RESULT(yes)
  116. CXXFLAGS="${CXXFLAGS} -mwindows -mwin32"
  117. LOL_LIBS="${LOL_LIBS} -uWinMain -u_WinMain@16"],
  118. [AC_MSG_RESULT(no)])
  119. LIBS="$LIBS_save"
  120. dnl Are we on the Xbox 360?
  121. dnl Answer: NO! we don't know how to build for it anyway
  122. AM_CONDITIONAL(USE_X360, false)
  123. dnl Are we on a Direct3D 9 platform?
  124. #ac_cv_my_have_d3d9="no"
  125. #AC_CHECK_HEADERS(d3d9.h, [ac_cv_my_have_d3d9="yes"])
  126. #if test "${ac_cv_my_have_d3d9}" != "no"; then
  127. # D3D_LIBS="${D3D_LIBS} -ld3d9 -ld3dx9 -lxinput"
  128. # AC_DEFINE(USE_D3D9, 1, Define to 1 to use DirectX 9)
  129. #fi
  130. #AM_CONDITIONAL(USE_D3D9, test "${ac_cv_my_have_d3d9}" != "no")
  131. LOL_CHECK_OPENGL()
  132. dnl Use SDL? (always required on Linux or Win32)
  133. ac_cv_my_have_sdl="no"
  134. ac_cv_my_have_sdl_image="no"
  135. ac_cv_my_have_sdl_mixer="no"
  136. dnl
  137. dnl First, try the proper pkg-config check
  138. PKG_CHECK_MODULES(SDL, sdl, [ac_cv_my_have_sdl="yes"], [:])
  139. PKG_CHECK_MODULES(SDLMIXER, SDL_mixer, [ac_cv_my_have_sdl_mixer="yes"], [:])
  140. PKG_CHECK_MODULES(SDLIMAGE, SDL_image, [ac_cv_my_have_sdl_image="yes"], [:])
  141. dnl
  142. dnl Then the old sdl-config method
  143. if test "x${cross_compiling}" != xyes -a "${ac_cv_my_have_sdl}" != yes; then
  144. AC_PATH_PROG(SDL_CONFIG, sdl-config, no)
  145. if test "${SDL_CONFIG}" != "no"; then
  146. SDL_CFLAGS="${SDL_CFLAGS} `${SDL_CONFIG} --cflags`"
  147. SDL_LIBS="${SDL_LIBS} `${SDL_CONFIG} --libs`"
  148. ac_cv_my_have_sdl="yes"
  149. fi
  150. fi
  151. dnl
  152. dnl Maybe all this has failed, try direct inclusion
  153. save_CPPFLAGS="${CPPFLAGS}"
  154. save_LIBS="${LIBS}"
  155. CPPFLAGS="${CPPFLAGS} ${SDL_CFLAGS} ${SDLMIXER_CFLAGS} ${SDLIMAGE_CFLAGS}"
  156. LIBS="${LIBS} ${SDL_LIBS} ${SDLMIXER_LIBS} ${SDLIMAGE_LIBS}"
  157. AC_CHECK_HEADERS(SDL.h SDL/SDL.h, [ac_cv_my_have_sdl="yes"])
  158. AC_CHECK_HEADERS(SDL_mixer.h SDL/SDL_mixer.h, [ac_cv_my_have_sdl_mixer="yes"])
  159. AC_CHECK_HEADERS(SDL_image.h SDL/SDL_image.h, [ac_cv_my_have_sdl_image="yes"])
  160. AC_CHECK_LIB(SDL, main,
  161. [SDL_LIBS="${SDL_LIBS} -lSDL"],
  162. [ac_cv_my_have_sdl="no"])
  163. AC_CHECK_LIB(SDLmain, main,
  164. [SDL_LIBS="${SDL_LIBS} -lSDLmain -lSDL"])
  165. AC_CHECK_LIB(SDL_mixer, main,
  166. [SDLMIXER_LIBS="${SDLMIXER_LIBS} -lSDL_mixer"],
  167. [ac_cv_my_have_sdl_mixer="no"])
  168. AC_CHECK_LIB(SDL_image, main,
  169. [SDLIMAGE_LIBS="${SDLIMAGE_LIBS} -lSDL_image"],
  170. [ac_cv_my_have_sdl_image="no"])
  171. SDL_CFLAGS="${SDL_CFLAGS} ${SDLMIXER_CFLAGS} ${SDLIMAGE_CFLAGS}"
  172. SDL_LIBS="${SDL_LIBS} ${SDLMIXER_LIBS} ${SDLIMAGE_LIBS}"
  173. CPPFLAGS="${save_CPPFLAGS}"
  174. LIBS="${save_LIBS}"
  175. if test "${ac_cv_my_have_sdl}" = "no"; then
  176. AC_MSG_WARN([SDL not found])
  177. else
  178. AC_DEFINE(USE_SDL, 1, Define to 1 to use SDL)
  179. fi
  180. if test "${ac_cv_my_have_sdl_mixer}" = "no"; then
  181. AC_MSG_WARN([SDL_mixer not found])
  182. else
  183. AC_DEFINE(USE_SDL_MIXER, 1, Define to 1 to use SDL_mixer)
  184. fi
  185. if test "${ac_cv_my_have_sdl_image}" = "no"; then
  186. AC_MSG_WARN([SDL_image not found])
  187. else
  188. AC_DEFINE(USE_SDL_IMAGE, 1, Define to 1 to use SDL_image)
  189. fi
  190. AM_CONDITIONAL(USE_SDL, test "${ac_cv_my_have_sdl}" = "yes")
  191. AM_CONDITIONAL(USE_SDL_MIXER, test "${ac_cv_my_have_sdl_mixer}" = "yes")
  192. AM_CONDITIONAL(USE_SDL_IMAGE, test "${ac_cv_my_have_sdl_image}" = "yes")
  193. dnl Use Flex's FlexLexer.h or ours?
  194. ac_cv_my_have_flexlexer_h="no"
  195. AC_LANG_PUSH(C++)
  196. AC_CHECK_HEADERS(FlexLexer.h, [ac_cv_my_have_flexlexer_h="yes"])
  197. AC_LANG_POP(C++)
  198. if test "x${ac_cv_my_have_flexlexer_h}" = "xno"; then
  199. LOL_CFLAGS="$LOL_CFLAGS -I\$(top_srcdir)/contrib/flex-2.5.35/include"
  200. fi
  201. dnl Use NativeClient?
  202. ac_cv_my_have_nacl="no"
  203. AC_LANG_PUSH(C++)
  204. AC_CHECK_HEADERS(ppapi/cpp/instance.h,
  205. [ac_cv_my_have_nacl="yes"
  206. dnl Disable this warning, it's too verbose with vector.h
  207. CXXFLAGS="${CXXFLAGS} -Wno-sign-compare"])
  208. AC_LANG_POP(C++)
  209. AM_CONDITIONAL(USE_NACL, test "${ac_cv_my_have_nacl}" != "no")
  210. dnl Use Android? FIXME: super hacks!
  211. ac_cv_my_have_android="no"
  212. AC_CHECK_LIB(log, __android_log_vprint,
  213. [ac_cv_my_have_android="yes"
  214. LOL_LIBS="${LOL_LIBS} -llog -module"])
  215. AM_CONDITIONAL(USE_ANDROID, test "${ac_cv_my_have_android}" != "no")
  216. dnl Use EGL?
  217. ac_cv_my_have_egl="no"
  218. PKG_CHECK_MODULES(EGL, egl, [ac_cv_my_have_egl="yes"], [:])
  219. if test "${ac_cv_my_have_egl}" != "no"; then
  220. AC_DEFINE(USE_EGL, 1, Define to 1 to use libegl)
  221. EGL_LIBS="${EGL_LIBS} -lX11"
  222. fi
  223. AC_CHECK_LIB(EGL, main,
  224. [ac_cv_my_have_egl="yes"
  225. AC_DEFINE(USE_EGL, 1, Define to 1 to use libegl)
  226. EGL_LIBS="-lEGL"])
  227. dnl Raspberry Pi is different, check for it with extra libs; also we
  228. dnl look for a different function to bypass autoconf caching
  229. AC_CHECK_LIB(EGL, eglGetDisplay,
  230. [ac_cv_my_have_egl="yes"
  231. AC_DEFINE(USE_EGL, 1, Define to 1 to use libegl)
  232. EGL_LIBS="-lEGL -lvcos -lvchiq_arm -lbcm_host -lGLESv2"],
  233. [:],
  234. [-lvcos -lvchiq_arm -lbcm_host -lGLESv2])
  235. AM_CONDITIONAL(USE_EGL, test "${ac_cv_my_have_egl}" != "no")
  236. dnl Use libpng? (replacement for SDL_image)
  237. ac_cv_my_have_libpng="no"
  238. PKG_CHECK_MODULES(LIBPNG, libpng, [ac_cv_my_have_libpng="yes"], [:])
  239. if test "${ac_cv_my_have_libpng}" != "no"; then
  240. AC_DEFINE(USE_LIBPNG, 1, Define to 1 to use libpng)
  241. fi
  242. AM_CONDITIONAL(USE_LIBPNG, test "${ac_cv_my_have_libpng}" != "no")
  243. dnl Use Windows GDI+?
  244. ac_cv_my_have_gdiplus="no"
  245. AC_LANG_PUSH(C++)
  246. AC_CHECK_HEADERS(gdiplus.h,
  247. [ac_cv_my_have_gdiplus="yes"
  248. LOL_LIBS="${LOL_LIBS} -lgdiplus"],
  249. [ac_cv_my_have_gdiplus="no"],
  250. [#include <algorithm>
  251. using std::min;
  252. using std::max;
  253. #include <windows.h>])
  254. AC_LANG_POP(C++)
  255. if test "${ac_cv_my_have_gdiplus}" != "no"; then
  256. AC_DEFINE(USE_GDIPLUS, 1, Define to 1 to use GDI+)
  257. fi
  258. AM_CONDITIONAL(USE_GDIPLUS, test "${ac_cv_my_have_gdiplus}" = "yes")
  259. dnl Use libcaca? (required for font generation)
  260. ac_cv_my_have_caca="no"
  261. PKG_CHECK_MODULES(CACA, caca >= 0.99.beta17, [ac_cv_my_have_caca="yes"], [:])
  262. if test "${ac_cv_my_have_caca}" != "no"; then
  263. AC_DEFINE(USE_CACA, 1, Define to 1 to use libcaca)
  264. fi
  265. AM_CONDITIONAL(USE_CACA, test "${ac_cv_my_have_caca}" != "no")
  266. dnl Use libpipi? (required for video recording)
  267. ac_cv_my_have_pipi="no"
  268. PKG_CHECK_MODULES(PIPI, pipi, [ac_cv_my_have_pipi="yes"], [:])
  269. if test "${ac_cv_my_have_pipi}" != "no"; then
  270. AC_DEFINE(USE_PIPI, 1, Define to 1 to use libpipi)
  271. fi
  272. AM_CONDITIONAL(USE_PIPI, test "${ac_cv_my_have_pipi}" != "no")
  273. dnl Use GTK+? (required for the deushax editor)
  274. ac_cv_my_have_gtkgl="no"
  275. PKG_CHECK_MODULES(GTK, gtk+-2.0, [ac_cv_my_have_gtkgl="yes"], [:])
  276. PKG_CHECK_MODULES(GTKGL, gtkgl-2.0, [:], [ac_cv_my_have_gtkgl="no"])
  277. if test "${ac_cv_my_have_gtkgl}" != "no"; then
  278. AC_DEFINE(USE_GTKGL, 1, Define to 1 to use GtkGl)
  279. fi
  280. AM_CONDITIONAL(USE_GTKGL, test "${ac_cv_my_have_gtkgl}" != "no")
  281. dnl Can we build neercs?
  282. AM_CONDITIONAL(BUILD_NEERCS, test "${ac_cv_my_have_caca}" != "no" -a "${ac_cv_header_glob_h}" = "yes")
  283. dnl Extra libraries we may need
  284. AC_SUBST(MATH_LIBS)
  285. AC_SUBST(PAM_LIBS)
  286. AC_SUBST(UTIL_LIBS)
  287. dnl How to use the Lol Engine inside this tree
  288. LOL_CFLAGS="$LOL_CFLAGS -I \$(top_srcdir)/src"
  289. LOL_CFLAGS="$LOL_CFLAGS $SDL_CFLAGS $GL_CFLAGS $EGL_CFLAGS $LIBPNG_CFLAGS"
  290. LOL_LIBS="$LOL_LIBS $SDL_LIBS $GL_LIBS $EGL_LIBS $LIBPNG_LIBS $D3D_LIBS"
  291. AC_SUBST(LOL_CFLAGS)
  292. AC_SUBST(LOL_LIBS)
  293. AC_CONFIG_FILES(
  294. [Makefile
  295. src/Makefile
  296. src/data/Makefile
  297. src/data/font/Makefile
  298. tutorial/Makefile
  299. test/Makefile
  300. test/math/Makefile
  301. test/sandbox/Makefile
  302. test/xolotl/Makefile
  303. build/Makefile
  304. binaries/Makefile
  305. people/Makefile
  306. games/Makefile
  307. tools/Makefile
  308. tools/vslol/Makefile
  309. ])
  310. AC_CONFIG_FILES(
  311. [games/monsterz/Makefile
  312. ])
  313. AC_CONFIG_FILES(
  314. [games/deushax/Makefile
  315. games/deushax/art/Makefile
  316. games/deushax/art/test/Makefile
  317. games/deushax/gfx/Makefile
  318. games/deushax/maps/Makefile
  319. ])
  320. AC_CONFIG_FILES(
  321. [games/mrpigeon/Makefile
  322. ])
  323. AC_CONFIG_FILES(
  324. [games/orbital/Makefile
  325. ])
  326. AC_CONFIG_FILES(
  327. [tools/neercs/Makefile
  328. ])
  329. AC_CONFIG_FILES(
  330. [people/jnat/Makefile
  331. people/jnat/TestProject/Makefile
  332. people/peeweek/Makefile
  333. people/touky/Makefile
  334. ])
  335. AC_OUTPUT