CMakeLists.txt 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
  2. # Protop: run cmake like this: cmake -G "<generator>" -H. -Bbuild
  3. message(FATAL_ERROR "Prevented in-tree build.")
  4. endif()
  5. cmake_minimum_required(VERSION 3.1)
  6. include(ExternalProject)
  7. project(megasource)
  8. set(MEGA TRUE)
  9. set (CMAKE_CXX_STANDARD 11)
  10. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  11. if(MSVC)
  12. # Normally we should rely on CMAKE_SYSTEM_PROCESSOR
  13. # but as of CMake 3.19.1, it sets to AMD64 even when targetting
  14. # Windows ARM64. This needs to be reevaluated in the future.
  15. set(_MEGATEMP_CHECKVAR CMAKE_SYSTEM_PROCESSOR)
  16. if("${CMAKE_GENERATOR}" MATCHES "^Visual Studio")
  17. set(_MEGATEMP_CHECKVAR CMAKE_GENERATOR_PLATFORM)
  18. # Note that MSVC_CXX_ARCHITECTURE_ID is an undocumented
  19. # variable, but unfortunately we need to depends on it
  20. # as reason stated above.
  21. # https://gitlab.kitware.com/cmake/cmake/-/issues/15170
  22. elseif(DEFINED MSVC_CXX_ARCHITECTURE_ID)
  23. set(_MEGATEMP_CHECKVAR MSVC_CXX_ARCHITECTURE_ID)
  24. endif()
  25. # FIXME: Code below also duplicates MEGA_X64 architecture assignment.
  26. if(${_MEGATEMP_CHECKVAR} STREQUAL "ARM64")
  27. set(MEGA_ARM64 TRUE)
  28. set(MEGA_ARCH ARM64)
  29. else()
  30. set(MEGA_X64 TRUE)
  31. set(MEGA_ARCH x64)
  32. endif()
  33. unset(_MEGATEMP_CHECKVAR)
  34. else()
  35. set(MEGA_X64 TRUE)
  36. set(MEGA_ARCH x64)
  37. endif()
  38. else()
  39. set(MEGA_X86 TRUE)
  40. set(MEGA_ARCH x86)
  41. endif()
  42. if(MSVC)
  43. set(CMAKE_SUPPRESS_REGENERATION TRUE)
  44. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP")
  45. set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MP")
  46. message(STATUS "CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}")
  47. message(STATUS "CMAKE_C_FLAGS_RELEASE: ${CMAKE_C_FLAGS_RELEASE}")
  48. endif()
  49. function(add_move_dll ARG_POST_TARGET ARG_TARGET)
  50. add_custom_command(TARGET ${ARG_POST_TARGET} POST_BUILD
  51. COMMAND ${CMAKE_COMMAND} -E copy
  52. $<TARGET_FILE:${ARG_TARGET}>
  53. ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/$<TARGET_FILE_NAME:${ARG_TARGET}>)
  54. endfunction()
  55. function(add_move_file ARG_POST_TARGET ARG_FILE)
  56. get_filename_component(TEMP_FILENAME ${ARG_FILE} NAME)
  57. add_custom_command(TARGET ${ARG_POST_TARGET} POST_BUILD
  58. COMMAND ${CMAKE_COMMAND} -E copy
  59. ${ARG_FILE}
  60. ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/${TEMP_FILENAME})
  61. endfunction()
  62. function(disable_warnings ARG_TARGET)
  63. get_target_property(OLD_FLAGS ${ARG_TARGET} COMPILE_FLAGS)
  64. if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  65. set(NEW_FLAGS -w)
  66. else ()
  67. set(NEW_FLAGS -W0)
  68. endif ()
  69. if(OLD_FLAGS)
  70. set(NEW_FLAGS "${OLD_FLAGS} ${NEW_FLAGS}")
  71. endif()
  72. set_target_properties(${ARG_TARGET} PROPERTIES COMPILE_FLAGS ${NEW_FLAGS})
  73. endfunction()
  74. # Find vcvarsall.bat and look for dynamic runtime DLLs.
  75. if(MSVC)
  76. option(LOVE_INSTALL_UCRT "Provide the Windows 10 Universal CRT DLLs with LOVE" OFF)
  77. if(NOT(MSVC_TOOLSET_VERSION STREQUAL ""))
  78. set(VSVERSION "${MSVC_TOOLSET_VERSION}")
  79. elseif((MSVC_VERSION GREATER 1909) AND (MSVC_VERSION LESS 1920))
  80. set(VSVERSION "141")
  81. elseif(MSVC_VERSION EQUAL 1900)
  82. set(VSVERSION "140")
  83. elseif(MSVC_VERSION EQUAL 1800)
  84. set(VSVERSION "120")
  85. elseif(MSVC_VERSION LESS 1800)
  86. message(WARNING "Visual Studio 2013 (VS12) or newer is required!")
  87. else()
  88. message(WARNING "Cannot determine Visual Studio version!")
  89. endif()
  90. set(PROGRAMFILES_X86_STR "ProgramFiles(x86)")
  91. set(PROGRAMFILES_X86 "$ENV{${PROGRAMFILES_X86_STR}}")
  92. set(VSCOMNTOOLSSTRING "VS${VSVERSION}COMNTOOLS")
  93. set(VSCOMNTOOLS "$ENV{${VSCOMNTOOLSSTRING}}")
  94. if(VSCOMNTOOLS STREQUAL "")
  95. set(VSWHERE_PATH "${PROGRAMFILES_X86}\\Microsoft Visual Studio\\Installer\\vswhere.exe")
  96. execute_process(COMMAND ${VSWHERE_PATH} "-property" "installationPath" OUTPUT_VARIABLE VS_INSTALL_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
  97. if(NOT(VS_INSTALL_DIR STREQUAL ""))
  98. set(VSCOMNTOOLS "${VS_INSTALL_DIR}\\Common7\\Tools")
  99. endif()
  100. endif()
  101. if(VSCOMNTOOLS STREQUAL "")
  102. message(WARNING "Environment variable VSCOMNTOOLS not defined and vswhere.exe could not be found. Is Visual Studio properly installed?")
  103. else()
  104. # Find vcvarsall.bat.
  105. get_filename_component(VS_VCVARSALL_BAT ${VSCOMNTOOLS}/../../VC/Auxiliary/Build/vcvarsall.bat ABSOLUTE)
  106. if(NOT(EXISTS ${VS_VCVARSALL_BAT}))
  107. # older VS versions have it here
  108. get_filename_component(VS_VCVARSALL_BAT ${VSCOMNTOOLS}/../../VC/vcvarsall.bat ABSOLUTE)
  109. endif()
  110. if(EXISTS ${VS_VCVARSALL_BAT})
  111. message(STATUS "Found vcvarsall.bat")
  112. set(MEGA_MSVC_VCVARSALL_BAT ${VS_VCVARSALL_BAT})
  113. if(MEGA_X86)
  114. set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86")
  115. elseif(MEGA_ARM64)
  116. set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86_arm64")
  117. else()
  118. set(MEGA_MSVC_VCVARSALL_BAT_ARG "x86_amd64")
  119. endif()
  120. else()
  121. message(WARNING "Could not find vsvarsall.bat")
  122. endif()
  123. endif()
  124. if(LOVE_INSTALL_UCRT)
  125. # We currently ship on platforms which might not have the Universal C Runtime installed.
  126. set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
  127. endif()
  128. set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
  129. # TODO: The code for InstallRequiredSystemLibraries needs the UCRTVersion and WindowsSDKVersion
  130. # environment variables set by vcvarsall in order to detect the correct version of the UCRT, in
  131. # newer Windows SDK versions. We don't gurantee that vcvarsall has been loaded before running...
  132. include(InstallRequiredSystemLibraries)
  133. foreach(RUNTIME_LIB ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
  134. if(RUNTIME_LIB MATCHES "concrt")
  135. set(MSVC_RUNTIME_CONCRT_PATH ${RUNTIME_LIB})
  136. elseif(RUNTIME_LIB MATCHES "msvcp")
  137. set(MSVC_RUNTIME_MSVCP_PATH ${RUNTIME_LIB})
  138. endif()
  139. endforeach()
  140. # InstallRequiredSystemLibraries adds the concrt dll to its list, but we don't need it.
  141. if (EXISTS ${MSVC_RUNTIME_CONCRT_PATH})
  142. list(REMOVE_ITEM CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS "${MSVC_RUNTIME_CONCRT_PATH}")
  143. endif()
  144. # CMake 3.20 InstallRequiredSystemLibraries recognize ARM64, but their older version aren't.
  145. # Put this safeguard in place, otherwise it will copy AMD64 DLLS which is NOT what user wants!
  146. if(MEGA_ARM64 AND ${CMAKE_VERSION} VERSION_LESS "3.20.0")
  147. message(WARNING "InstallRequiredSystemLibraries of CMake ${CMAKE_VERSION} doesn't support Windows ARM64. Please update your CMake!")
  148. set(MSVC_RUNTIME_MSVCP_PATH "")
  149. endif()
  150. # InstallRequiredSystemLibraries (as of CMake 3.14.5) doesn't include msvcp140_1.dll or msvcp140_2.dll in its list.
  151. if(EXISTS ${MSVC_RUNTIME_MSVCP_PATH})
  152. get_filename_component(MSVC_RUNTIME_MSVCP_DIR ${MSVC_RUNTIME_MSVCP_PATH} DIRECTORY)
  153. message(STATUS "Found MSVC Redist directory: ${MSVC_RUNTIME_MSVCP_DIR}")
  154. file(GLOB MSVC_RUNTIME_MSVCP_FILES "${MSVC_RUNTIME_MSVCP_DIR}/msvcp*.dll")
  155. set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${MSVC_RUNTIME_MSVCP_FILES})
  156. list(REMOVE_DUPLICATES CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
  157. else()
  158. message(WARNING "InstallRequiredSystemLibraries did not find any msvcp runtime dll")
  159. endif()
  160. list(LENGTH CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS MSVC_RUNTIME_COUNT)
  161. message(STATUS "Found ${MSVC_RUNTIME_COUNT} Visual C/C++ Runtime files")
  162. set(MEGA_MSVC_DLLS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
  163. endif()
  164. set(MEGA_ZLIB_VER "1.2.12")
  165. set(MEGA_LUA51_VER "5.1.5")
  166. set(MEGA_LUAJIT_VER "2.1.0-e826d0c")
  167. set(MEGA_LIBOGG_VER "1.3.2")
  168. set(MEGA_LIBVORBIS_VER "1.3.5")
  169. set(MEGA_LIBTHEORA_VER "1.1.1")
  170. set(MEGA_FREETYPE_VER "2.12.0")
  171. set(MEGA_SDL2_VER "2.28.5")
  172. set(MEGA_OPENAL_VER "1.22.0")
  173. set(MEGA_MODPLUG_VER "0.8.8.4")
  174. set(SKIP_INSTALL_ALL TRUE)
  175. set(ZLIB_FOUND TRUE)
  176. set(ZLIB_LIBRARY zlibstatic)
  177. set(ZLIB_INCLUDE_DIR .)
  178. set(OGG_LIBRARY ogg-static)
  179. message(STATUS "-----------------------------------------------------")
  180. message(STATUS "Configuring: zlib ${MEGA_ZLIB_VER}")
  181. message(STATUS "-----------------------------------------------------")
  182. add_subdirectory("libs/zlib-${MEGA_ZLIB_VER}" ${CMAKE_BINARY_DIR}/zlib)
  183. set(MEGA_ZLIB zlibstatic)
  184. message(STATUS "-----------------------------------------------------")
  185. message(STATUS "Configuring: lua ${MEGA_LUA51_VER}")
  186. message(STATUS "-----------------------------------------------------")
  187. add_subdirectory("libs/lua-${MEGA_LUA51_VER}" ${CMAKE_BINARY_DIR}/lua51)
  188. set(MEGA_LUA51 lua51)
  189. message(STATUS "-----------------------------------------------------")
  190. message(STATUS "Configuring: libogg ${MEGA_LIBOGG_VER}")
  191. message(STATUS "-----------------------------------------------------")
  192. add_subdirectory("libs/libogg-${MEGA_LIBOGG_VER}" ${CMAKE_BINARY_DIR}/libogg)
  193. set(MEGA_LIBOGG ogg-static)
  194. message(STATUS "-----------------------------------------------------")
  195. message(STATUS "Configuring: libvorbis ${MEGA_LIBVORBIS_VER}")
  196. message(STATUS "-----------------------------------------------------")
  197. add_subdirectory("libs/libvorbis-${MEGA_LIBVORBIS_VER}" ${CMAKE_BINARY_DIR}/libvorbis)
  198. set(MEGA_LIBVORBIS vorbis-static)
  199. set(MEGA_LIBVORBISFILE vorbisfile-static)
  200. message(STATUS "-----------------------------------------------------")
  201. message(STATUS "Configuring: libtheora ${MEGA_LIBTHEORA_VER}")
  202. message(STATUS "-----------------------------------------------------")
  203. add_subdirectory("libs/libtheora-${MEGA_LIBTHEORA_VER}" ${CMAKE_BINARY_DIR}/libtheora)
  204. set(MEGA_LIBTHEORA theora-static)
  205. message(STATUS "-----------------------------------------------------")
  206. message(STATUS "Configuring: freetype ${MEGA_FREETYPE_VER}")
  207. message(STATUS "-----------------------------------------------------")
  208. set(FT_DISABLE_ZLIB ON CACHE BOOL "(FreeType) Use zlib from megasource" FORCE)
  209. add_subdirectory("libs/freetype" ${CMAKE_BINARY_DIR}/freetype)
  210. set(MEGA_FREETYPE freetype)
  211. message(STATUS "-----------------------------------------------------")
  212. message(STATUS "Configuring: harfbuzz")
  213. message(STATUS "-----------------------------------------------------")
  214. add_subdirectory("libs/harfbuzz" ${CMAKE_BINARY_DIR}/harfbuzz)
  215. set(MEGA_HARFBUZZ harfbuzz)
  216. message(STATUS "-----------------------------------------------------")
  217. message(STATUS "Configuring: SDL2 ${MEGA_SDL2_VER}")
  218. message(STATUS "-----------------------------------------------------")
  219. if(WIN32 AND MEGA_ARM64)
  220. # In Windows, SDL always tries to open OpenGL32.dll, which is not available in Windows ARM64.
  221. # This will cause error later on which makes love.window.setMode unhappy even when
  222. # LOVE_GRAPHICS_USE_OPENGLES is set, so disable OpenGL backend.
  223. set(SDL_OPENGL OFF CACHE BOOL "(SDL) Enable OpenGL Backend" FORCE)
  224. endif()
  225. add_subdirectory("libs/SDL2" ${CMAKE_BINARY_DIR}/SDL2)
  226. set(MEGA_SDL2 SDL2)
  227. set(MEGA_SDL2MAIN SDL2main)
  228. message(STATUS "-----------------------------------------------------")
  229. message(STATUS "Configuring: openal-soft ${MEGA_OPENAL_VER}")
  230. message(STATUS "-----------------------------------------------------")
  231. set(ALSOFT_UTILS OFF CACHE BOOL "Build utility programs" FORCE)
  232. set(ALSOFT_NO_CONFIG_UTIL ON CACHE BOOL "Disable building the alsoft-config utility" FORCE)
  233. set(ALSOFT_EXAMPLES OFF CACHE BOOL "Build example programs" FORCE)
  234. set(ALSOFT_INSTALL OFF CACHE BOOL "Install main library" FORCE)
  235. set(ALSOFT_INSTALL_CONFIG OFF CACHE BOOL "Install alsoft.conf sample configuration file" FORCE)
  236. set(ALSOFT_INSTALL_HRTF_DATA OFF CACHE BOOL "Install HRTF data files" FORCE)
  237. set(ALSOFT_INSTALL_AMBDEC_PRESETS OFF CACHE BOOL "Install AmbDec preset files" FORCE)
  238. set(ALSOFT_INSTALL_EXAMPLES OFF CACHE BOOL "Install example programs (alplay, alstream, ...)" FORCE)
  239. set(ALSOFT_INSTALL_UTILS OFF CACHE BOOL "Install utility programs (openal-info, alsoft-config, ...)" FORCE)
  240. if(ANDROID)
  241. set(ALSOFT_REQUIRE_OBOE ON CACHE BOOL "Require Oboe backend" FORCE)
  242. set(ALSOFT_REQUIRE_OPENSL ON CACHE BOOL "Require OpenSL backend" FORCE)
  243. endif()
  244. add_subdirectory("libs/openal-soft" ${CMAKE_BINARY_DIR}/openal-soft)
  245. set(MEGA_OPENAL ${OPENAL_LIB_NAME})
  246. message(STATUS "-----------------------------------------------------")
  247. message(STATUS "Configuring: libmodplug ${MEGA_MODPLUG_VER}")
  248. message(STATUS "-----------------------------------------------------")
  249. add_subdirectory("libs/libmodplug-${MEGA_MODPLUG_VER}" ${CMAKE_BINARY_DIR}/libmodplug)
  250. set(MEGA_MODPLUG modplug-static)
  251. # LuaJIT
  252. if(MSVC AND NOT MEGA_ARM64)
  253. message(STATUS "-----------------------------------------------------")
  254. message(STATUS "Configuring: LuaJIT ${MEGA_LUAJIT_VER}")
  255. message(STATUS "-----------------------------------------------------")
  256. set(MEGA_LUAJIT_DIR "LuaJIT")
  257. # Copy LuaJIT source to binary dir. LuaJIT builds in-source,
  258. # and we don't want to modify the original source tree, so
  259. # we copy it.
  260. file(COPY libs/${MEGA_LUAJIT_DIR} DESTINATION libs)
  261. set(MEGA_LUAJIT_SOURCE_DIR ${CMAKE_BINARY_DIR}/libs/${MEGA_LUAJIT_DIR})
  262. set(MEGA_LUAJIT_BUILD_BAT "
  263. if not defined DevEnvDir (
  264. call \"${MEGA_MSVC_VCVARSALL_BAT}\" ${MEGA_MSVC_VCVARSALL_BAT_ARG}
  265. )
  266. cd \"${MEGA_LUAJIT_SOURCE_DIR}/src\"
  267. msvcbuild.bat debug amalg
  268. ")
  269. file(WRITE ${MEGA_LUAJIT_SOURCE_DIR}/megabuild.bat ${MEGA_LUAJIT_BUILD_BAT})
  270. ExternalProject_Add(luajit
  271. SOURCE_DIR ${MEGA_LUAJIT_SOURCE_DIR}
  272. BUILD_IN_SOURCE 1
  273. CONFIGURE_COMMAND ""
  274. BUILD_COMMAND "${MEGA_LUAJIT_SOURCE_DIR}/megabuild.bat"
  275. INSTALL_COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/bin
  276. COMMAND cmake -E copy ${MEGA_LUAJIT_SOURCE_DIR}/src/lua51.dll ${CMAKE_BINARY_DIR}/bin
  277. COMMAND cmake -E copy ${MEGA_LUAJIT_SOURCE_DIR}/src/lua51.lib ${CMAKE_BINARY_DIR}/bin)
  278. set(MEGA_LUAJIT_LIB ${CMAKE_BINARY_DIR}/bin/lua51.lib)
  279. set(MEGA_LUAJIT_DLL ${CMAKE_BINARY_DIR}/bin/lua51.dll)
  280. set(MEGA_LUAJIT_INCLUDE ${MEGA_LUAJIT_SOURCE_DIR}/src)
  281. elseif(ANDROID)
  282. # LuaJIT is prebuilt in Android
  283. message(STATUS "-----------------------------------------------------")
  284. message(STATUS "Configuring: LuaJIT ${MEGA_LUAJIT_VER}")
  285. message(STATUS "-----------------------------------------------------")
  286. set(MEGA_LUAJIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/LuaJIT")
  287. add_library(luajit IMPORTED SHARED GLOBAL)
  288. set_target_properties(luajit PROPERTIES
  289. IMPORTED_LOCATION ${MEGA_LUAJIT_DIR}/android/${ANDROID_ABI}/libluajit.so
  290. )
  291. target_include_directories(luajit INTERFACE ${MEGA_LUAJIT_DIR}/src ${MEGA_LUAJIT_DIR}/android/${ANDROID_ABI})
  292. set(MEGA_LUAJIT_LIB ${MEGA_LUAJIT_DIR}/android/${ANDROID_ABI}/libluajit.so)
  293. set(MEGA_LUAJIT_DLL)
  294. set(MEGA_LUAJIT_INCLUDE ${MEGA_LUAJIT_DIR}/src ${MEGA_LUAJIT_DIR}/android/${ANDROID_ABI})
  295. set(LUA_FOUND ON)
  296. set(LUA_INCLUDE_DIR ${MEGA_LUAJIT_INCLUDE})
  297. set(LUA_LIBRARY luajit)
  298. set(LUA_VERSION_MAJOR 5)
  299. set(LUA_VERSION_MINOR 1)
  300. set(LUA_VERSION_PATCH 5)
  301. set(LUA_VERSION_STRING "LuaJIT ${MEGA_LUAJIT_VER}")
  302. endif()
  303. set(MEGA_3P
  304. ${MEGA_ZLIB}
  305. ${MEGA_LUA51}
  306. ${MEGA_LIBOGG}
  307. ${MEGA_LIBVORBIS}
  308. ${MEGA_LIBVORBISFILE}
  309. ${MEGA_LIBTHEORA}
  310. ${MEGA_FREETYPE}
  311. ${MEGA_SDL2}
  312. ${MEGA_SDL2MAIN}
  313. ${MEGA_OPENAL}
  314. ${MEGA_MODPLUG}
  315. )
  316. # Set to directory of love source. Defaults to ./libs/love.
  317. if(NOT MEGA_LOVE)
  318. set(MEGA_LOVE ${CMAKE_CURRENT_SOURCE_DIR}/libs/love)
  319. endif()
  320. if(EXISTS ${MEGA_LOVE}/CMakeLists.txt)
  321. message(STATUS "-----------------------------------------------------")
  322. message(STATUS "Configuring: love")
  323. message(STATUS "-----------------------------------------------------")
  324. if(MEGA_ARM64)
  325. # LuaJIT currently doesn't support targetting Windows with ARM64
  326. # architecture yet.
  327. # TODO: Re-evaluate this once LuaJIT supports it.
  328. # https://github.com/LuaJIT/LuaJIT/issues/593
  329. set(LOVE_JIT OFF CACHE BOOL "Enable LOVE JIT" FORCE)
  330. endif()
  331. add_subdirectory(${MEGA_LOVE} ${CMAKE_BINARY_DIR}/love)
  332. # Turn off third-party warnings when building with LOVE.
  333. foreach(MEGA_LIB ${MEGA_3P})
  334. disable_warnings(${MEGA_LIB})
  335. endforeach()
  336. if(MSVC)
  337. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT love)
  338. endif()
  339. else()
  340. message(STATUS "LOVE was not found")
  341. endif()
  342. link_directories(${SDL_LINK_DIR})
  343. add_executable(megatest src/test.cpp)
  344. target_link_libraries(megatest ${MEGA_3P})
  345. add_move_dll(megatest ${MEGA_SDL2})
  346. add_move_dll(megatest ${MEGA_OPENAL})
  347. add_move_dll(megatest ${MEGA_LUA51})