Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

208 řádky
6.6 KiB

  1. # LOL_AC_SUBST()
  2. # ---------------------
  3. AC_DEFUN([LOL_AC_SUBST], [
  4. dnl How to use the Lol Engine outside this tree
  5. LOL_CFLAGS="$LOL_CFLAGS $SDL_CFLAGS $GL_CFLAGS $EGL_CFLAGS $LIBPNG_CFLAGS"
  6. LOL_LIBS="$LOL_LIBS $SDL_LIBS $GL_LIBS $EGL_LIBS $LIBPNG_LIBS $D3D_LIBS"
  7. LOL_DEPS="${LOL_DEPS} \$(lol_builddir)/src/liblol-core.a"
  8. LOL_DEPS="${LOL_DEPS} \$(lol_builddir)/src/bullet/liblol-bullet.a"
  9. LOL_DEPS="${LOL_DEPS} \$(lol_builddir)/src/lua/liblol-lua.a"
  10. dnl How to use the Lol Engine inside this tree
  11. AM_CPPFLAGS="${AM_CPPFLAGS} -I\$(lol_srcdir)/src"
  12. AM_CPPFLAGS="${AM_CPPFLAGS} -DLOL_CONFIG_SOURCESUBDIR=\\\"\$(subdir)\\\""
  13. AM_CPPFLAGS="${AM_CPPFLAGS} ${LOL_CFLAGS}"
  14. AM_LDFLAGS="${AM_LDFLAGS} ${LOL_DEPS}"
  15. AM_LDFLAGS="${AM_LDFLAGS} ${LOL_LIBS}"
  16. dnl Extra flags
  17. AC_SUBST(LOL_CFLAGS)
  18. AC_SUBST(LOL_LIBS)
  19. AC_SUBST(LOL_DEPS)
  20. AC_SUBST(AM_CFLAGS)
  21. AC_SUBST(AM_CPPFLAGS)
  22. AC_SUBST(AM_CXXFLAGS)
  23. AC_SUBST(AM_LDFLAGS)
  24. ]) # LOL_AC_SUBST
  25. # LOL_AC_CHECK()
  26. # ---------------------
  27. AC_DEFUN([LOL_AC_CHECK], [
  28. dnl Check that the C++ compiler really works
  29. AC_LANG_PUSH(C++)
  30. AC_MSG_CHECKING(for a fully working C++ compiler)
  31. AC_TRY_LINK([], [],
  32. [AC_MSG_RESULT(yes)],
  33. [AC_MSG_RESULT(no)
  34. AC_MSG_ERROR([[C++ compiler cannot link executables]])])
  35. AC_LANG_POP(C++)
  36. dnl Use mingw threads if necessary
  37. if true; then
  38. LOL_CFLAGS="$LOL_CFLAGS -I\$(lol_srcdir)/external/mingw-std-threads-0.0.ac5c9e3b/include/"
  39. fi
  40. dnl Use pegtl? Yes, always
  41. if true; then
  42. LOL_CFLAGS="$LOL_CFLAGS -I\$(lol_srcdir)/external/pegtl-1.3.1-e7752e81/include"
  43. fi
  44. dnl Use Imgui? Yes, always
  45. if true; then
  46. LOL_CFLAGS="$LOL_CFLAGS -I\$(lol_srcdir)/external/imgui"
  47. fi
  48. dnl Use NativeClient?
  49. ac_cv_my_have_nacl="no"
  50. AC_LANG_PUSH(C++)
  51. AC_CHECK_HEADERS(ppapi/cpp/instance.h,
  52. [ac_cv_my_have_nacl="yes"
  53. LOL_LIBS="${LOL_LIBS} -lnosys"
  54. if test "${ac_cv_my_build_mode}" = "xrelease"; then
  55. LOL_TRY_CXXFLAGS(-s, [AM_CXXFLAGS="${AM_CXXFLAGS} -s"])
  56. fi])
  57. AC_LANG_POP(C++)
  58. AM_CONDITIONAL(LOL_USE_NACL, test "${ac_cv_my_have_nacl}" != "no")
  59. dnl Use Android? FIXME: super hacks!
  60. ac_cv_my_have_android="no"
  61. AC_CHECK_LIB(log, __android_log_vprint,
  62. [ac_cv_my_have_android="yes"
  63. LOL_LIBS="${LOL_LIBS} -llog -landroid -module -lEGL -lGLESv2"])
  64. AM_CONDITIONAL(LOL_USE_ANDROID, test "${ac_cv_my_have_android}" != "no")
  65. dnl Use EGL?
  66. ac_cv_my_have_egl="no"
  67. PKG_CHECK_MODULES(EGL, egl, [ac_cv_my_have_egl="yes"], [:])
  68. if test "${ac_cv_my_have_egl}" != "no"; then
  69. AC_DEFINE(LOL_USE_EGL, 1, Define to 1 to use libegl)
  70. EGL_LIBS="${EGL_LIBS} -lX11"
  71. fi
  72. AC_CHECK_LIB(EGL, main,
  73. [ac_cv_my_have_egl="yes"
  74. AC_DEFINE(LOL_USE_EGL, 1, Define to 1 to use libegl)
  75. EGL_LIBS="-lEGL"])
  76. dnl Raspberry Pi is different, check for it with extra libs; also we
  77. dnl look for a different function to bypass autoconf caching
  78. AC_CHECK_LIB(EGL, eglGetDisplay,
  79. [ac_cv_my_have_egl="yes"
  80. AC_DEFINE(LOL_USE_EGL, 1, Define to 1 to use libegl)
  81. EGL_LIBS="-lEGL -lvcos -lvchiq_arm -lbcm_host -lGLESv2"],
  82. [:],
  83. [-lvcos -lvchiq_arm -lbcm_host -lGLESv2])
  84. AM_CONDITIONAL(LOL_USE_EGL, test "${ac_cv_my_have_egl}" != "no")
  85. dnl Use libpng? (replacement for SDL_image)
  86. ac_cv_my_have_libpng="no"
  87. PKG_CHECK_MODULES(LIBPNG, libpng, [ac_cv_my_have_libpng="yes"], [:])
  88. if test "${ac_cv_my_have_libpng}" != "no"; then
  89. AC_DEFINE(LOL_USE_LIBPNG, 1, Define to 1 to use libpng)
  90. fi
  91. AM_CONDITIONAL(LOL_USE_LIBPNG, test "${ac_cv_my_have_libpng}" != "no")
  92. dnl Use Imlib2?
  93. ac_cv_my_have_imlib2="no"
  94. PKG_CHECK_MODULES(IMLIB2, imlib2, [ac_cv_my_have_imlib2="yes"], [:])
  95. if test "${ac_cv_my_have_imlib2}" != "no"; then
  96. AC_DEFINE(LOL_USE_IMLIB2, 1, Define to 1 to use Imlib2)
  97. LOL_CFLAGS="${LOL_CFLAGS} ${IMLIB2_CFLAGS}"
  98. LOL_LIBS="${LOL_LIBS} ${IMLIB2_LIBS}"
  99. fi
  100. AM_CONDITIONAL(LOL_USE_IMLIB2, test "${ac_cv_my_have_imlib2}" = "yes")
  101. dnl Use Windows GDI+?
  102. ac_cv_my_have_gdiplus="no"
  103. AC_LANG_PUSH(C++)
  104. AC_CHECK_HEADERS(gdiplus.h,
  105. [ac_cv_my_have_gdiplus="yes"
  106. LOL_LIBS="${LOL_LIBS} -lgdiplus"],
  107. [ac_cv_my_have_gdiplus="no"],
  108. [#include <algorithm>
  109. using std::min;
  110. using std::max;
  111. #include <windows.h>])
  112. AC_LANG_POP(C++)
  113. if test "${ac_cv_my_have_gdiplus}" != "no"; then
  114. AC_DEFINE(LOL_USE_GDIPLUS, 1, Define to 1 to use GDI+)
  115. fi
  116. AM_CONDITIONAL(LOL_USE_GDIPLUS, test "${ac_cv_my_have_gdiplus}" = "yes")
  117. dnl Use libavcodec? (required for movie encoding)
  118. ac_cv_my_have_ffmpeg="yes"
  119. PKG_CHECK_MODULES([LIBAVCODEC], [libavcodec], [:], [ac_cv_my_have_ffmpeg=no])
  120. PKG_CHECK_MODULES([LIBAVFORMAT], [libavformat], [:], [ac_cv_my_have_ffmpeg=no])
  121. PKG_CHECK_MODULES([LIBSWSCALE], [libswscale], [:], [ac_cv_my_have_ffmpeg=no])
  122. if test "${ac_cv_my_have_ffmpeg}" = "no"; then
  123. ac_cv_my_have_ffmpeg="yes"
  124. AC_CHECK_HEADERS(libavcodec/avcodec.h, [:], [ac_cv_my_have_ffmpeg=no])
  125. AC_CHECK_HEADERS(libavformat/avformat.h, [:], [ac_cv_my_have_ffmpeg=no])
  126. AC_CHECK_HEADERS(libswscale/swscale.h, [:], [ac_cv_my_have_ffmpeg=no])
  127. if test "${ac_cv_my_have_ffmpeg}" = "yes"; then
  128. LIBAVFORMAT_LIBS="-lavformat"
  129. LIBAVCODEC_LIBS="-lavcodec -lavutil"
  130. LIBSWSCALE_LIBS="-lswscale -lswresample"
  131. AC_CHECK_LIB(ws2_32, main, LOL_LIBS="${LOL_LIBS} -lws2_32")
  132. fi
  133. fi
  134. if test "${ac_cv_my_have_ffmpeg}" != "no"; then
  135. AC_DEFINE(LOL_USE_FFMPEG, 1, Define to 1 to use FFmpeg)
  136. LOL_CFLAGS="${LOL_CFLAGS} ${LIBAVFORMAT_CFLAGS} ${LIBAVCODEC_CFLAGS} ${SWSCALE_CFLAGS}"
  137. LOL_LIBS="${LOL_LIBS} ${LIBAVFORMAT_LIBS} ${LIBAVCODEC_LIBS} ${LIBSWSCALE_LIBS}"
  138. fi
  139. AM_CONDITIONAL(LOL_USE_FFMPEG, test "${ac_cv_my_have_ffmpeg}" != "no")
  140. dnl Are we building using MinGW?
  141. LOL_TRY_CXXFLAGS(-mwindows -mwin32,
  142. [AM_CXXFLAGS="${AM_CXXFLAGS} -mwindows -mwin32"
  143. LOL_LIBS="${LOL_LIBS} -uWinMain -u_WinMain@16"])
  144. dnl Are we building using Emscripten?
  145. ac_cv_my_have_emscripten="no"
  146. AC_CHECK_HEADERS(emscripten.h,
  147. [ac_cv_my_have_emscripten="yes"
  148. dnl XXX: activate this if memory heap is too small
  149. #AM_CXXFLAGS="${AM_CXXFLAGS} -s ALLOW_MEMORY_GROWTH=1"
  150. dnl HACK: until emcc properly adds these to EMSDK_OPTS
  151. CPPFLAGS="${CPPFLAGS} -U__i386__ -U__x86_64__ -U__i386 -U__x86_64 -Ui386 -Ux86_64"
  152. CPPFLAGS="${CPPFLAGS} -U__SSE__ -U__SSE2__ -U__MMX__ -UX87_DOUBLE_ROUNDING"
  153. CPPFLAGS="${CPPFLAGS} -UHAVE_GCC_ASM_FOR_X87 -DEMSCRIPTEN -U__STRICT_ANSI__"
  154. CPPFLAGS="${CPPFLAGS} -U__CYGWIN__"])
  155. AM_CONDITIONAL(LOL_USE_EMSCRIPTEN, test "${ac_cv_my_have_emscripten}" != "no")
  156. dnl Are we on an OS X or iOS platform?
  157. LOL_TRY_LDFLAGS(-framework Foundation,
  158. [LOL_LIBS="${LOL_LIBS} -framework Foundation"])
  159. LOL_TRY_LDFLAGS(-framework CoreGraphics,
  160. [LOL_LIBS="${LOL_LIBS} -framework CoreGraphics"])
  161. LOL_TRY_LDFLAGS(-framework CoreData,
  162. [LOL_LIBS="${LOL_LIBS} -framework CoreData"])
  163. LOL_TRY_LDFLAGS(-framework UIKit,
  164. [LOL_LIBS="${LOL_LIBS} -framework UIKit"])
  165. dnl Other complex checks
  166. LOL_AC_CHECK_OPENGL()
  167. LOL_AC_CHECK_SDL()
  168. ]) # LOL_AC_CHECK