CMakeLists.txt 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001
  1. #
  2. # Copyright (c) 2006-2022 LOVE Development Team
  3. #
  4. # This software is provided 'as-is', without any express or implied
  5. # warranty. In no event will the authors be held liable for any damages
  6. # arising from the use of this software.
  7. #
  8. # Permission is granted to anyone to use this software for any purpose,
  9. # including commercial applications, and to alter it and redistribute it
  10. # freely, subject to the following restrictions:
  11. #
  12. # 1. The origin of this software must not be misrepresented; you must not
  13. # claim that you wrote the original software. If you use this software
  14. # in a product, an acknowledgment in the product documentation would be
  15. # appreciated but is not required.
  16. # 2. Altered source versions must be plainly marked as such, and must not be
  17. # misrepresented as being the original software.
  18. # 3. This notice may not be removed or altered from any source distribution.
  19. #
  20. if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
  21. # Protip: run cmake like this: cmake -G "<generator>" -H. -Bbuild
  22. message(FATAL_ERROR "Prevented in-tree build.")
  23. endif()
  24. cmake_minimum_required(VERSION 3.1)
  25. project(love)
  26. set(LOVE_EXE_NAME love)
  27. set(LOVE_LIB_NAME liblove)
  28. set(CMAKE_MODULE_PATH "${love_SOURCE_DIR}/extra/cmake" ${CMAKE_MODULE_PATH})
  29. # Needed for shared libs on Linux. (-fPIC).
  30. set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
  31. set (CMAKE_CXX_STANDARD 17)
  32. if(APPLE)
  33. message(WARNING "CMake is not an officially supported build system for love on Apple platforms.")
  34. message(WARNING "Use the prebuilt .app or the xcode project in platform/xcode/ instead.")
  35. endif()
  36. if(MSVC)
  37. set(LOVE_CONSOLE_EXE_NAME lovec)
  38. endif()
  39. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  40. set(LOVE_X64 TRUE)
  41. set(LOVE_TARGET_PLATFORM x64)
  42. else()
  43. set(LOVE_X86 TRUE)
  44. set(LOVE_TARGET_PLATFORM x86)
  45. endif()
  46. if(APPLE)
  47. option(LOVE_JIT "Use LuaJIT" FALSE)
  48. else()
  49. option(LOVE_JIT "Use LuaJIT" TRUE)
  50. endif()
  51. if(LOVE_JIT)
  52. if(APPLE)
  53. message(WARNING "JIT not supported yet on Mac.")
  54. endif()
  55. message(STATUS "LuaJIT: Enabled")
  56. else()
  57. message(STATUS "LuaJIT: Disabled")
  58. endif()
  59. message(STATUS "Target platform: ${LOVE_TARGET_PLATFORM}")
  60. if(POLICY CMP0072)
  61. cmake_policy(SET CMP0072 NEW)
  62. endif()
  63. if(MEGA)
  64. find_package(Vulkan REQUIRED)
  65. # LOVE_MSVC_DLLS contains runtime DLLs that should be bundled with the love
  66. # binary (in e.g. the installer). Example: msvcp140.dll.
  67. set(LOVE_MSVC_DLLS ${MEGA_MSVC_DLLS})
  68. # LOVE_INCLUDE_DIRS contains the search directories for #include. It's mostly
  69. # not needed for MEGA builds, since almost all the libraries (except LuaJIT)
  70. # are CMake targets, causing include paths to be added automatically.
  71. set(LOVE_INCLUDE_DIRS ${Vulkan_INCLUDE_DIRS})
  72. if(APPLE)
  73. # Some files do #include <SDL2/SDL.h>, but building with megasource
  74. # requires #include <SDL.h>.
  75. add_definitions(-DLOVE_MACOSX_SDL_DIRECT_INCLUDE)
  76. endif ()
  77. # SDL2 links with some DirectX libraries, and we apparently also
  78. # pull those libraries in for linkage because we link with SDL2.
  79. set(LOVE_LINK_DIRS ${SDL_LINK_DIR})
  80. set(LOVE_LINK_LIBRARIES
  81. ${MEGA_FREETYPE}
  82. ${MEGA_LIBOGG}
  83. ${MEGA_LIBVORBISFILE}
  84. ${MEGA_LIBVORBIS}
  85. ${MEGA_LIBTHEORA}
  86. ${MEGA_MODPLUG}
  87. ${MEGA_OPENAL}
  88. ${MEGA_SDL2MAIN}
  89. ${MEGA_SDL2}
  90. ${MEGA_ZLIB}
  91. ${Vulkan_LIBRARIES}
  92. )
  93. # These DLLs are moved next to the love binary in a post-build step to
  94. # love runnable from inside Visual Studio.
  95. #
  96. # LOVE_MOVE_DLLS can contain CMake targets, in which case the target's
  97. # output is assumed to be a DLL, or it can contain paths to actual files.
  98. # We detect whether or not each item is a target, and take the appropriate
  99. # action.
  100. set(LOVE_MOVE_DLLS
  101. ${MEGA_SDL2}
  102. ${MEGA_OPENAL}
  103. )
  104. if(LOVE_JIT)
  105. set(LOVE_LUA_LIBRARY ${MEGA_LUAJIT_LIB})
  106. # LOVE_EXTRA_DLLS are non-runtime DLLs which should be bundled with the
  107. # love binary in installers, etc. It's only needed for external
  108. # (non-CMake) targets, i.e. LuaJIT.
  109. set(LOVE_EXTRA_DLLS ${MEGA_LUAJIT_DLL})
  110. set(LOVE_EXTRA_DEPENDECIES luajit)
  111. set(LOVE_INCLUDE_DIRS
  112. ${LOVE_INCLUDE_DIRS}
  113. ${MEGA_LUAJIT_INCLUDE}
  114. )
  115. set(LOVE_LINK_LIBRARIES
  116. ${LOVE_LINK_LIBRARIES}
  117. ${LOVE_LUA_LIBRARY}
  118. )
  119. set(LOVE_MOVE_DLLS
  120. ${LOVE_MOVE_DLLS}
  121. ${MEGA_LUAJIT_DLL}
  122. )
  123. else()
  124. set(LOVE_LUA_LIBRARY ${MEGA_LUA51})
  125. set(LOVE_LINK_LIBRARIES
  126. ${LOVE_LINK_LIBRARIES}
  127. ${LOVE_LUA_LIBRARY}
  128. )
  129. set(LOVE_MOVE_DLLS
  130. ${LOVE_MOVE_DLLS}
  131. ${LOVE_LUA_LIBRARY}
  132. )
  133. # MEGA_LUA51 is a CMake target, so includes are handled
  134. # automatically.
  135. endif()
  136. else()
  137. if(MSVC or ANDROID)
  138. message(FATAL_ERROR "
  139. It is currently only possible to build with megasource on Windows and Android.
  140. Please see https://github.com/love2d/megasource
  141. ")
  142. endif()
  143. find_package(Freetype REQUIRED)
  144. find_package(ModPlug REQUIRED)
  145. find_package(OpenAL REQUIRED)
  146. find_package(OpenGL REQUIRED)
  147. find_package(SDL2 REQUIRED)
  148. find_package(Theora REQUIRED)
  149. find_package(Vorbis REQUIRED)
  150. find_package(ZLIB REQUIRED)
  151. find_package(Ogg REQUIRED)
  152. # required for enet
  153. add_definitions(-D HAS_SOCKLEN_T)
  154. set(LOVE_INCLUDE_DIRS
  155. ${SDL2_INCLUDE_DIR}
  156. ${FREETYPE_INCLUDE_DIRS}
  157. ${VORBIS_INCLUDE_DIR}
  158. ${OPENAL_INCLUDE_DIR}
  159. ${ZLIB_INCLUDE_DIRS}
  160. ${MODPLUG_INCLUDE_DIR}
  161. ${OGG_INCLUDE_DIR}
  162. ${THEORA_INCLUDE_DIR}
  163. )
  164. set(LOVE_LINK_LIBRARIES
  165. ${OPENGL_gl_LIBRARY}
  166. ${SDL2_LIBRARY}
  167. ${FREETYPE_LIBRARY}
  168. ${OPENAL_LIBRARY}
  169. ${MODPLUG_LIBRARY}
  170. ${THEORA_LIBRARY}
  171. ${THEORADEC_LIBRARY}
  172. ${VORBISFILE_LIBRARY}
  173. ${LOVE_LUA_LIBRARY}
  174. ${OGG_LIBRARY}
  175. ${ZLIB_LIBRARY}
  176. )
  177. if(LOVE_JIT)
  178. find_package(LuaJIT REQUIRED)
  179. set(LOVE_LUA_LIBRARY ${LUAJIT_LIBRARY})
  180. set(LOVE_LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIR})
  181. else()
  182. find_package(Lua51 REQUIRED)
  183. set(LOVE_LUA_LIBRARY ${LUA_LIBRARY})
  184. set(LOVE_LUA_INCLUDE_DIR ${LUA_INCLUDE_DIR})
  185. endif()
  186. set(LOVE_INCLUDE_DIRS
  187. ${LOVE_INCLUDE_DIRS}
  188. ${LOVE_LUA_INCLUDE_DIR}
  189. )
  190. set(LOVE_LINK_LIBRARIES
  191. ${LOVE_LINK_LIBRARIES}
  192. ${LOVE_LUA_LIBRARY}
  193. )
  194. endif()
  195. ###
  196. ### No Megasource-specific stuff beyond this point!
  197. ###
  198. if(MSVC)
  199. set(DISABLE_WARNING_FLAG -W0)
  200. else()
  201. set(DISABLE_WARNING_FLAG -w)
  202. endif()
  203. function(love_disable_warnings ARG_TARGET)
  204. get_target_property(OLD_FLAGS ${ARG_TARGET} COMPILE_FLAGS)
  205. set(NEW_FLAGS ${DISABLE_WARNING_FLAG})
  206. if(OLD_FLAGS)
  207. set(NEW_FLAGS "${OLD_FLAGS} ${NEW_FLAGS}")
  208. endif()
  209. set_target_properties(${ARG_TARGET} PROPERTIES COMPILE_FLAGS ${NEW_FLAGS})
  210. endfunction()
  211. #
  212. # common
  213. #
  214. set(LOVE_SRC_COMMON
  215. src/common/android.cpp
  216. src/common/android.h
  217. src/common/b64.cpp
  218. src/common/b64.h
  219. src/common/Color.h
  220. src/common/config.h
  221. src/common/Data.cpp
  222. src/common/Data.h
  223. src/common/delay.cpp
  224. src/common/delay.h
  225. src/common/deprecation.cpp
  226. src/common/deprecation.h
  227. src/common/EnumMap.h
  228. src/common/Exception.cpp
  229. src/common/Exception.h
  230. src/common/floattypes.cpp
  231. src/common/floattypes.h
  232. src/common/int.h
  233. src/common/math.h
  234. src/common/Matrix.cpp
  235. src/common/Matrix.h
  236. src/common/memory.cpp
  237. src/common/memory.h
  238. src/common/Module.cpp
  239. src/common/Module.h
  240. src/common/Object.cpp
  241. src/common/Object.h
  242. src/common/Optional.h
  243. src/common/pixelformat.cpp
  244. src/common/pixelformat.h
  245. src/common/Range.h
  246. src/common/Reference.cpp
  247. src/common/Reference.h
  248. src/common/runtime.cpp
  249. src/common/runtime.h
  250. src/common/Stream.cpp
  251. src/common/Stream.h
  252. src/common/StringMap.cpp
  253. src/common/StringMap.h
  254. src/common/types.cpp
  255. src/common/types.h
  256. src/common/utf8.cpp
  257. src/common/utf8.h
  258. src/common/Variant.cpp
  259. src/common/Variant.h
  260. #src/common/Vector.cpp # Vector.cpp is empty.
  261. src/common/Vector.h
  262. src/common/version.h
  263. )
  264. if (APPLE)
  265. set(LOVE_SRC_COMMON ${LOVE_SRC_COMMON}
  266. src/common/macosx.mm
  267. )
  268. set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} objc)
  269. set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} "-framework CoreFoundation")
  270. set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} "-framework AppKit")
  271. endif()
  272. source_group("common" FILES ${LOVE_SRC_COMMON})
  273. #
  274. # love.audio
  275. #
  276. set(LOVE_SRC_MODULE_AUDIO_ROOT
  277. src/modules/audio/Audio.cpp
  278. src/modules/audio/Audio.h
  279. src/modules/audio/Source.cpp
  280. src/modules/audio/Source.h
  281. src/modules/audio/RecordingDevice.cpp
  282. src/modules/audio/RecordingDevice.h
  283. src/modules/audio/Filter.cpp
  284. src/modules/audio/Filter.h
  285. src/modules/audio/Effect.cpp
  286. src/modules/audio/Effect.h
  287. src/modules/audio/wrap_Audio.cpp
  288. src/modules/audio/wrap_Audio.h
  289. src/modules/audio/wrap_Source.cpp
  290. src/modules/audio/wrap_Source.h
  291. src/modules/audio/wrap_RecordingDevice.cpp
  292. src/modules/audio/wrap_RecordingDevice.h
  293. )
  294. set(LOVE_SRC_MODULE_AUDIO_NULL
  295. src/modules/audio/null/Audio.cpp
  296. src/modules/audio/null/Audio.h
  297. src/modules/audio/null/Source.cpp
  298. src/modules/audio/null/Source.h
  299. src/modules/audio/null/RecordingDevice.cpp
  300. src/modules/audio/null/RecordingDevice.h
  301. )
  302. set(LOVE_SRC_MODULE_AUDIO_OPENAL
  303. src/modules/audio/openal/Audio.cpp
  304. src/modules/audio/openal/Audio.h
  305. src/modules/audio/openal/Pool.cpp
  306. src/modules/audio/openal/Pool.h
  307. src/modules/audio/openal/Source.cpp
  308. src/modules/audio/openal/Source.h
  309. src/modules/audio/openal/RecordingDevice.cpp
  310. src/modules/audio/openal/RecordingDevice.h
  311. src/modules/audio/openal/Filter.cpp
  312. src/modules/audio/openal/Filter.h
  313. src/modules/audio/openal/Effect.cpp
  314. src/modules/audio/openal/Effect.h
  315. )
  316. set(LOVE_SRC_MODULE_AUDIO
  317. ${LOVE_SRC_MODULE_AUDIO_ROOT}
  318. ${LOVE_SRC_MODULE_AUDIO_NULL}
  319. ${LOVE_SRC_MODULE_AUDIO_OPENAL}
  320. )
  321. source_group("modules\\audio" FILES ${LOVE_SRC_MODULE_AUDIO_ROOT})
  322. source_group("modules\\audio\\null" FILES ${LOVE_SRC_MODULE_AUDIO_NULL})
  323. source_group("modules\\audio\\openal" FILES ${LOVE_SRC_MODULE_AUDIO_OPENAL})
  324. #
  325. # love.data
  326. #
  327. set(LOVE_SRC_MODULE_DATA
  328. src/modules/data/ByteData.cpp
  329. src/modules/data/ByteData.h
  330. src/modules/data/CompressedData.cpp
  331. src/modules/data/CompressedData.h
  332. src/modules/data/Compressor.cpp
  333. src/modules/data/Compressor.h
  334. src/modules/data/DataModule.cpp
  335. src/modules/data/DataModule.h
  336. src/modules/data/DataStream.cpp
  337. src/modules/data/DataStream.h
  338. src/modules/data/DataView.cpp
  339. src/modules/data/DataView.h
  340. src/modules/data/HashFunction.cpp
  341. src/modules/data/HashFunction.h
  342. src/modules/data/wrap_ByteData.cpp
  343. src/modules/data/wrap_ByteData.h
  344. src/modules/data/wrap_CompressedData.cpp
  345. src/modules/data/wrap_CompressedData.h
  346. src/modules/data/wrap_Data.cpp
  347. src/modules/data/wrap_Data.h
  348. src/modules/data/wrap_DataModule.cpp
  349. src/modules/data/wrap_DataModule.h
  350. src/modules/data/wrap_DataView.cpp
  351. src/modules/data/wrap_DataView.h
  352. )
  353. source_group("modules\\data" FILES ${LOVE_SRC_MODULE_DATA})
  354. #
  355. # love.event
  356. #
  357. set(LOVE_SRC_MODULE_EVENT_ROOT
  358. src/modules/event/Event.cpp
  359. src/modules/event/Event.h
  360. src/modules/event/wrap_Event.cpp
  361. src/modules/event/wrap_Event.h
  362. )
  363. set(LOVE_SRC_MODULE_EVENT_SDL
  364. src/modules/event/sdl/Event.cpp
  365. src/modules/event/sdl/Event.h
  366. )
  367. set(LOVE_SRC_MODULE_EVENT
  368. ${LOVE_SRC_MODULE_EVENT_ROOT}
  369. ${LOVE_SRC_MODULE_EVENT_SDL}
  370. )
  371. source_group("modules\\event" FILES ${LOVE_SRC_MODULE_EVENT_ROOT})
  372. source_group("modules\\event\\sdl" FILES ${LOVE_SRC_MODULE_EVENT_SDL})
  373. #
  374. # love.filesystem
  375. #
  376. set(LOVE_SRC_MODULE_FILESYSTEM_ROOT
  377. src/modules/filesystem/File.cpp
  378. src/modules/filesystem/File.h
  379. src/modules/filesystem/FileData.cpp
  380. src/modules/filesystem/FileData.h
  381. src/modules/filesystem/Filesystem.cpp
  382. src/modules/filesystem/Filesystem.h
  383. src/modules/filesystem/NativeFile.cpp
  384. src/modules/filesystem/NativeFile.h
  385. src/modules/filesystem/wrap_File.cpp
  386. src/modules/filesystem/wrap_File.h
  387. src/modules/filesystem/wrap_FileData.cpp
  388. src/modules/filesystem/wrap_FileData.h
  389. src/modules/filesystem/wrap_Filesystem.cpp
  390. src/modules/filesystem/wrap_Filesystem.h
  391. src/modules/filesystem/wrap_NativeFile.cpp
  392. src/modules/filesystem/wrap_NativeFile.h
  393. )
  394. set(LOVE_SRC_MODULE_FILESYSTEM_PHYSFS
  395. src/modules/filesystem/physfs/File.cpp
  396. src/modules/filesystem/physfs/File.h
  397. src/modules/filesystem/physfs/Filesystem.cpp
  398. src/modules/filesystem/physfs/Filesystem.h
  399. )
  400. set(LOVE_SRC_MODULE_FILESYSTEM
  401. ${LOVE_SRC_MODULE_FILESYSTEM_ROOT}
  402. ${LOVE_SRC_MODULE_FILESYSTEM_PHYSFS}
  403. )
  404. source_group("modules\\filesystem" FILES ${LOVE_SRC_MODULE_FILESYSTEM_ROOT})
  405. source_group("modules\\filesystem\\physfs" FILES ${LOVE_SRC_MODULE_FILESYSTEM_PHYSFS})
  406. #
  407. # love.font
  408. #
  409. set(LOVE_SRC_MODULE_FONT_ROOT
  410. src/modules/font/BMFontRasterizer.cpp
  411. src/modules/font/BMFontRasterizer.h
  412. src/modules/font/Font.cpp
  413. src/modules/font/Font.h
  414. src/modules/font/GlyphData.cpp
  415. src/modules/font/GlyphData.h
  416. src/modules/font/ImageRasterizer.cpp
  417. src/modules/font/ImageRasterizer.h
  418. src/modules/font/Rasterizer.cpp
  419. src/modules/font/Rasterizer.h
  420. src/modules/font/TrueTypeRasterizer.cpp
  421. src/modules/font/TrueTypeRasterizer.h
  422. src/modules/font/wrap_Font.cpp
  423. src/modules/font/wrap_Font.h
  424. src/modules/font/wrap_GlyphData.cpp
  425. src/modules/font/wrap_GlyphData.h
  426. src/modules/font/wrap_Rasterizer.cpp
  427. src/modules/font/wrap_Rasterizer.h
  428. )
  429. set(LOVE_SRC_MODULE_FONT_FREETYPE
  430. src/modules/font/freetype/Font.cpp
  431. src/modules/font/freetype/Font.h
  432. src/modules/font/freetype/TrueTypeRasterizer.cpp
  433. src/modules/font/freetype/TrueTypeRasterizer.h
  434. )
  435. set(LOVE_SRC_MODULE_FONT
  436. ${LOVE_SRC_MODULE_FONT_ROOT}
  437. ${LOVE_SRC_MODULE_FONT_FREETYPE}
  438. )
  439. source_group("modules\\font" FILES ${LOVE_SRC_MODULE_FONT_ROOT})
  440. source_group("modules\\font\\freetype" FILES ${LOVE_SRC_MODULE_FONT_FREETYPE})
  441. #
  442. # love.graphics
  443. #
  444. set(LOVE_SRC_MODULE_GRAPHICS_ROOT
  445. src/modules/graphics/Buffer.cpp
  446. src/modules/graphics/Buffer.h
  447. src/modules/graphics/Deprecations.cpp
  448. src/modules/graphics/Deprecations.h
  449. src/modules/graphics/Drawable.cpp
  450. src/modules/graphics/Drawable.h
  451. src/modules/graphics/Font.cpp
  452. src/modules/graphics/Font.h
  453. src/modules/graphics/Graphics.cpp
  454. src/modules/graphics/Graphics.h
  455. src/modules/graphics/GraphicsReadback.cpp
  456. src/modules/graphics/GraphicsReadback.h
  457. src/modules/graphics/Mesh.cpp
  458. src/modules/graphics/Mesh.h
  459. src/modules/graphics/ParticleSystem.cpp
  460. src/modules/graphics/ParticleSystem.h
  461. src/modules/graphics/Polyline.cpp
  462. src/modules/graphics/Polyline.h
  463. src/modules/graphics/Quad.cpp
  464. src/modules/graphics/Quad.h
  465. src/modules/graphics/renderstate.cpp
  466. src/modules/graphics/renderstate.h
  467. src/modules/graphics/Resource.h
  468. src/modules/graphics/Shader.cpp
  469. src/modules/graphics/Shader.h
  470. src/modules/graphics/ShaderStage.cpp
  471. src/modules/graphics/ShaderStage.h
  472. src/modules/graphics/SpriteBatch.cpp
  473. src/modules/graphics/SpriteBatch.h
  474. src/modules/graphics/StreamBuffer.cpp
  475. src/modules/graphics/StreamBuffer.h
  476. src/modules/graphics/Text.cpp
  477. src/modules/graphics/Text.h
  478. src/modules/graphics/Texture.cpp
  479. src/modules/graphics/Texture.h
  480. src/modules/graphics/vertex.cpp
  481. src/modules/graphics/vertex.h
  482. src/modules/graphics/Video.cpp
  483. src/modules/graphics/Video.h
  484. src/modules/graphics/Volatile.cpp
  485. src/modules/graphics/Volatile.h
  486. src/modules/graphics/wrap_Buffer.cpp
  487. src/modules/graphics/wrap_Buffer.h
  488. src/modules/graphics/wrap_Font.cpp
  489. src/modules/graphics/wrap_Font.h
  490. src/modules/graphics/wrap_Graphics.cpp
  491. src/modules/graphics/wrap_Graphics.h
  492. src/modules/graphics/wrap_GraphicsReadback.cpp
  493. src/modules/graphics/wrap_GraphicsReadback.h
  494. src/modules/graphics/wrap_Mesh.cpp
  495. src/modules/graphics/wrap_Mesh.h
  496. src/modules/graphics/wrap_ParticleSystem.cpp
  497. src/modules/graphics/wrap_ParticleSystem.h
  498. src/modules/graphics/wrap_Quad.cpp
  499. src/modules/graphics/wrap_Quad.h
  500. src/modules/graphics/wrap_Shader.cpp
  501. src/modules/graphics/wrap_Shader.h
  502. src/modules/graphics/wrap_SpriteBatch.cpp
  503. src/modules/graphics/wrap_SpriteBatch.h
  504. src/modules/graphics/wrap_Texture.cpp
  505. src/modules/graphics/wrap_Texture.h
  506. src/modules/graphics/wrap_Text.cpp
  507. src/modules/graphics/wrap_Text.h
  508. src/modules/graphics/wrap_Video.cpp
  509. src/modules/graphics/wrap_Video.h
  510. )
  511. set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
  512. src/modules/graphics/opengl/Buffer.cpp
  513. src/modules/graphics/opengl/Buffer.h
  514. src/modules/graphics/opengl/FenceSync.cpp
  515. src/modules/graphics/opengl/FenceSync.h
  516. src/modules/graphics/opengl/Graphics.cpp
  517. src/modules/graphics/opengl/Graphics.h
  518. src/modules/graphics/opengl/GraphicsReadback.cpp
  519. src/modules/graphics/opengl/GraphicsReadback.h
  520. src/modules/graphics/opengl/OpenGL.cpp
  521. src/modules/graphics/opengl/OpenGL.h
  522. src/modules/graphics/opengl/Shader.cpp
  523. src/modules/graphics/opengl/Shader.h
  524. src/modules/graphics/opengl/ShaderStage.cpp
  525. src/modules/graphics/opengl/ShaderStage.h
  526. src/modules/graphics/opengl/StreamBuffer.cpp
  527. src/modules/graphics/opengl/StreamBuffer.h
  528. src/modules/graphics/opengl/Texture.cpp
  529. src/modules/graphics/opengl/Texture.h
  530. )
  531. set(LOVE_SRC_MODULE_GRAPHICS_VULKAN
  532. src/modules/graphics/vulkan/Graphics.h
  533. src/modules/graphics/vulkan/Graphics.cpp
  534. src/modules/graphics/vulkan/Shader.h
  535. src/modules/graphics/vulkan/Shader.cpp
  536. src/modules/graphics/vulkan/ShaderStage.h
  537. src/modules/graphics/vulkan/ShaderStage.cpp
  538. src/modules/graphics/vulkan/StreamBuffer.h
  539. src/modules/graphics/vulkan/StreamBuffer.cpp
  540. src/modules/graphics/vulkan/Buffer.h
  541. src/modules/graphics/vulkan/Buffer.cpp
  542. src/modules/graphics/vulkan/Texture.h
  543. src/modules/graphics/vulkan/Texture.cpp
  544. src/modules/graphics/vulkan/Vulkan.h
  545. src/modules/graphics/vulkan/Vulkan.cpp
  546. src/modules/graphics/vulkan/vk_mem_alloc.h
  547. src/modules/graphics/vulkan/UseVMA.cpp
  548. )
  549. set(LOVE_SRC_MODULE_GRAPHICS
  550. ${LOVE_SRC_MODULE_GRAPHICS_ROOT}
  551. ${LOVE_SRC_MODULE_GRAPHICS_OPENGL}
  552. ${LOVE_SRC_MODULE_GRAPHICS_VULKAN}
  553. )
  554. source_group("modules\\graphics" FILES ${LOVE_SRC_MODULE_GRAPHICS_ROOT})
  555. source_group("modules\\graphics\\opengl" FILES ${LOVE_SRC_MODULE_GRAPHICS_OPENGL})
  556. source_group("modules\\graphics\\vulkan" FILES ${LOVE_SRC_MODULE_GRAPHICS_VULKAN})
  557. #
  558. # love.image
  559. #
  560. set(LOVE_SRC_MODULE_IMAGE_ROOT
  561. src/modules/image/CompressedImageData.cpp
  562. src/modules/image/CompressedImageData.h
  563. src/modules/image/CompressedSlice.cpp
  564. src/modules/image/CompressedSlice.h
  565. src/modules/image/FormatHandler.cpp
  566. src/modules/image/FormatHandler.h
  567. src/modules/image/Image.cpp
  568. src/modules/image/Image.h
  569. src/modules/image/ImageData.cpp
  570. src/modules/image/ImageData.h
  571. src/modules/image/ImageDataBase.cpp
  572. src/modules/image/ImageDataBase.h
  573. src/modules/image/wrap_CompressedImageData.cpp
  574. src/modules/image/wrap_CompressedImageData.h
  575. src/modules/image/wrap_Image.cpp
  576. src/modules/image/wrap_Image.h
  577. src/modules/image/wrap_ImageData.cpp
  578. src/modules/image/wrap_ImageData.h
  579. )
  580. set(LOVE_SRC_MODULE_IMAGE_MAGPIE
  581. src/modules/image/magpie/ASTCHandler.cpp
  582. src/modules/image/magpie/ASTCHandler.h
  583. src/modules/image/magpie/ddsHandler.cpp
  584. src/modules/image/magpie/ddsHandler.h
  585. src/modules/image/magpie/EXRHandler.cpp
  586. src/modules/image/magpie/EXRHandler.h
  587. src/modules/image/magpie/KTXHandler.cpp
  588. src/modules/image/magpie/KTXHandler.h
  589. src/modules/image/magpie/PKMHandler.cpp
  590. src/modules/image/magpie/PKMHandler.h
  591. src/modules/image/magpie/PNGHandler.cpp
  592. src/modules/image/magpie/PNGHandler.h
  593. src/modules/image/magpie/PVRHandler.cpp
  594. src/modules/image/magpie/PVRHandler.h
  595. src/modules/image/magpie/STBHandler.cpp
  596. src/modules/image/magpie/STBHandler.h
  597. )
  598. set(LOVE_SRC_MODULE_IMAGE
  599. ${LOVE_SRC_MODULE_IMAGE_ROOT}
  600. ${LOVE_SRC_MODULE_IMAGE_MAGPIE}
  601. )
  602. source_group("modules\\image" FILES ${LOVE_SRC_MODULE_IMAGE_ROOT})
  603. source_group("modules\\image\\magpie" FILES ${LOVE_SRC_MODULE_IMAGE_MAGPIE})
  604. #
  605. # love.joystick
  606. #
  607. set(LOVE_SRC_MODULE_JOYSTICK_ROOT
  608. src/modules/joystick/Joystick.cpp
  609. src/modules/joystick/Joystick.h
  610. src/modules/joystick/JoystickModule.h
  611. src/modules/joystick/wrap_Joystick.cpp
  612. src/modules/joystick/wrap_Joystick.h
  613. src/modules/joystick/wrap_JoystickModule.cpp
  614. src/modules/joystick/wrap_JoystickModule.h
  615. )
  616. set(LOVE_SRC_MODULE_JOYSTICK_SDL
  617. src/modules/joystick/sdl/Joystick.cpp
  618. src/modules/joystick/sdl/Joystick.h
  619. src/modules/joystick/sdl/JoystickModule.cpp
  620. src/modules/joystick/sdl/JoystickModule.h
  621. )
  622. set(LOVE_SRC_MODULE_JOYSTICK
  623. ${LOVE_SRC_MODULE_JOYSTICK_ROOT}
  624. ${LOVE_SRC_MODULE_JOYSTICK_SDL}
  625. )
  626. source_group("modules\\joystick" FILES ${LOVE_SRC_MODULE_JOYSTICK_ROOT})
  627. source_group("modules\\joystick\\sdl" FILES ${LOVE_SRC_MODULE_JOYSTICK_SDL})
  628. #
  629. # love.keyboard
  630. #
  631. set(LOVE_SRC_MODULE_KEYBOARD_ROOT
  632. src/modules/keyboard/Keyboard.cpp
  633. src/modules/keyboard/Keyboard.h
  634. src/modules/keyboard/wrap_Keyboard.cpp
  635. src/modules/keyboard/wrap_Keyboard.h
  636. )
  637. set(LOVE_SRC_MODULE_KEYBOARD_SDL
  638. src/modules/keyboard/sdl/Keyboard.cpp
  639. src/modules/keyboard/sdl/Keyboard.h
  640. )
  641. set(LOVE_SRC_MODULE_KEYBOARD
  642. ${LOVE_SRC_MODULE_KEYBOARD_ROOT}
  643. ${LOVE_SRC_MODULE_KEYBOARD_SDL}
  644. )
  645. source_group("modules\\keyboard" FILES ${LOVE_SRC_MODULE_KEYBOARD_ROOT})
  646. source_group("modules\\keyboard\\sdl" FILES ${LOVE_SRC_MODULE_KEYBOARD_SDL})
  647. #
  648. # love.math
  649. #
  650. set(LOVE_SRC_MODULE_MATH
  651. src/modules/math/BezierCurve.cpp
  652. src/modules/math/BezierCurve.h
  653. src/modules/math/MathModule.cpp
  654. src/modules/math/MathModule.h
  655. src/modules/math/RandomGenerator.cpp
  656. src/modules/math/RandomGenerator.h
  657. src/modules/math/Transform.cpp
  658. src/modules/math/Transform.h
  659. src/modules/math/wrap_BezierCurve.cpp
  660. src/modules/math/wrap_BezierCurve.h
  661. src/modules/math/wrap_Math.cpp
  662. src/modules/math/wrap_Math.h
  663. src/modules/math/wrap_RandomGenerator.cpp
  664. src/modules/math/wrap_RandomGenerator.h
  665. src/modules/math/wrap_Transform.cpp
  666. src/modules/math/wrap_Transform.h
  667. )
  668. source_group("modules\\math" FILES ${LOVE_SRC_MODULE_MATH})
  669. #
  670. # love (module)
  671. #
  672. set(LOVE_SRC_MODULE_LOVE
  673. src/modules/love/love.cpp
  674. src/modules/love/love.h
  675. )
  676. source_group("modules\\love" FILES ${LOVE_SRC_MODULE_LOVE})
  677. #
  678. # love.mouse
  679. #
  680. set(LOVE_SRC_MODULE_MOUSE_ROOT
  681. src/modules/mouse/Cursor.cpp
  682. src/modules/mouse/Cursor.h
  683. src/modules/mouse/Mouse.h
  684. src/modules/mouse/wrap_Cursor.cpp
  685. src/modules/mouse/wrap_Cursor.h
  686. src/modules/mouse/wrap_Mouse.cpp
  687. src/modules/mouse/wrap_Mouse.h
  688. )
  689. set(LOVE_SRC_MODULE_MOUSE_SDL
  690. src/modules/mouse/sdl/Cursor.cpp
  691. src/modules/mouse/sdl/Cursor.h
  692. src/modules/mouse/sdl/Mouse.cpp
  693. src/modules/mouse/sdl/Mouse.h
  694. )
  695. set(LOVE_SRC_MODULE_MOUSE
  696. ${LOVE_SRC_MODULE_MOUSE_ROOT}
  697. ${LOVE_SRC_MODULE_MOUSE_SDL}
  698. )
  699. source_group("modules\\mouse" FILES ${LOVE_SRC_MODULE_MOUSE_ROOT})
  700. source_group("modules\\mouse\\sdl" FILES ${LOVE_SRC_MODULE_MOUSE_SDL})
  701. #
  702. # love.physics
  703. #
  704. set(LOVE_SRC_MODULE_PHYSICS_ROOT
  705. src/modules/physics/Body.cpp
  706. src/modules/physics/Body.h
  707. src/modules/physics/Joint.cpp
  708. src/modules/physics/Joint.h
  709. src/modules/physics/Shape.cpp
  710. src/modules/physics/Shape.h
  711. )
  712. set(LOVE_SRC_MODULE_PHYSICS_BOX2D
  713. src/modules/physics/box2d/Body.cpp
  714. src/modules/physics/box2d/Body.h
  715. src/modules/physics/box2d/ChainShape.cpp
  716. src/modules/physics/box2d/ChainShape.h
  717. src/modules/physics/box2d/CircleShape.cpp
  718. src/modules/physics/box2d/CircleShape.h
  719. src/modules/physics/box2d/Contact.cpp
  720. src/modules/physics/box2d/Contact.h
  721. src/modules/physics/box2d/DistanceJoint.cpp
  722. src/modules/physics/box2d/DistanceJoint.h
  723. src/modules/physics/box2d/EdgeShape.cpp
  724. src/modules/physics/box2d/EdgeShape.h
  725. src/modules/physics/box2d/Fixture.cpp
  726. src/modules/physics/box2d/Fixture.h
  727. src/modules/physics/box2d/FrictionJoint.cpp
  728. src/modules/physics/box2d/FrictionJoint.h
  729. src/modules/physics/box2d/GearJoint.cpp
  730. src/modules/physics/box2d/GearJoint.h
  731. src/modules/physics/box2d/Joint.cpp
  732. src/modules/physics/box2d/Joint.h
  733. src/modules/physics/box2d/MotorJoint.cpp
  734. src/modules/physics/box2d/MotorJoint.h
  735. src/modules/physics/box2d/MouseJoint.cpp
  736. src/modules/physics/box2d/MouseJoint.h
  737. src/modules/physics/box2d/Physics.cpp
  738. src/modules/physics/box2d/Physics.h
  739. src/modules/physics/box2d/PolygonShape.cpp
  740. src/modules/physics/box2d/PolygonShape.h
  741. src/modules/physics/box2d/PrismaticJoint.cpp
  742. src/modules/physics/box2d/PrismaticJoint.h
  743. src/modules/physics/box2d/PulleyJoint.cpp
  744. src/modules/physics/box2d/PulleyJoint.h
  745. src/modules/physics/box2d/RevoluteJoint.cpp
  746. src/modules/physics/box2d/RevoluteJoint.h
  747. src/modules/physics/box2d/RopeJoint.cpp
  748. src/modules/physics/box2d/RopeJoint.h
  749. src/modules/physics/box2d/Shape.cpp
  750. src/modules/physics/box2d/Shape.h
  751. src/modules/physics/box2d/WeldJoint.cpp
  752. src/modules/physics/box2d/WeldJoint.h
  753. src/modules/physics/box2d/WheelJoint.cpp
  754. src/modules/physics/box2d/WheelJoint.h
  755. src/modules/physics/box2d/World.cpp
  756. src/modules/physics/box2d/World.h
  757. src/modules/physics/box2d/wrap_Body.cpp
  758. src/modules/physics/box2d/wrap_Body.h
  759. src/modules/physics/box2d/wrap_ChainShape.cpp
  760. src/modules/physics/box2d/wrap_ChainShape.h
  761. src/modules/physics/box2d/wrap_CircleShape.cpp
  762. src/modules/physics/box2d/wrap_CircleShape.h
  763. src/modules/physics/box2d/wrap_Contact.cpp
  764. src/modules/physics/box2d/wrap_Contact.h
  765. src/modules/physics/box2d/wrap_DistanceJoint.cpp
  766. src/modules/physics/box2d/wrap_DistanceJoint.h
  767. src/modules/physics/box2d/wrap_EdgeShape.cpp
  768. src/modules/physics/box2d/wrap_EdgeShape.h
  769. src/modules/physics/box2d/wrap_Fixture.cpp
  770. src/modules/physics/box2d/wrap_Fixture.h
  771. src/modules/physics/box2d/wrap_FrictionJoint.cpp
  772. src/modules/physics/box2d/wrap_FrictionJoint.h
  773. src/modules/physics/box2d/wrap_GearJoint.cpp
  774. src/modules/physics/box2d/wrap_GearJoint.h
  775. src/modules/physics/box2d/wrap_Joint.cpp
  776. src/modules/physics/box2d/wrap_Joint.h
  777. src/modules/physics/box2d/wrap_MotorJoint.cpp
  778. src/modules/physics/box2d/wrap_MotorJoint.h
  779. src/modules/physics/box2d/wrap_MouseJoint.cpp
  780. src/modules/physics/box2d/wrap_MouseJoint.h
  781. src/modules/physics/box2d/wrap_Physics.cpp
  782. src/modules/physics/box2d/wrap_Physics.h
  783. src/modules/physics/box2d/wrap_PolygonShape.cpp
  784. src/modules/physics/box2d/wrap_PolygonShape.h
  785. src/modules/physics/box2d/wrap_PrismaticJoint.cpp
  786. src/modules/physics/box2d/wrap_PrismaticJoint.h
  787. src/modules/physics/box2d/wrap_PulleyJoint.cpp
  788. src/modules/physics/box2d/wrap_PulleyJoint.h
  789. src/modules/physics/box2d/wrap_RevoluteJoint.cpp
  790. src/modules/physics/box2d/wrap_RevoluteJoint.h
  791. src/modules/physics/box2d/wrap_RopeJoint.cpp
  792. src/modules/physics/box2d/wrap_RopeJoint.h
  793. src/modules/physics/box2d/wrap_Shape.cpp
  794. src/modules/physics/box2d/wrap_Shape.h
  795. src/modules/physics/box2d/wrap_WeldJoint.cpp
  796. src/modules/physics/box2d/wrap_WeldJoint.h
  797. src/modules/physics/box2d/wrap_WheelJoint.cpp
  798. src/modules/physics/box2d/wrap_WheelJoint.h
  799. src/modules/physics/box2d/wrap_World.cpp
  800. src/modules/physics/box2d/wrap_World.h
  801. )
  802. set(LOVE_SRC_MODULE_PHYSICS
  803. ${LOVE_SRC_MODULE_PHYSICS_ROOT}
  804. ${LOVE_SRC_MODULE_PHYSICS_BOX2D}
  805. )
  806. source_group("modules\\physics" FILES ${LOVE_SRC_MODULE_PHYSICS_ROOT})
  807. source_group("modules\\physics\\box2d" FILES ${LOVE_SRC_MODULE_PHYSICS_BOX2D})
  808. #
  809. # love.sound
  810. #
  811. set(LOVE_SRC_MODULE_SOUND_ROOT
  812. src/modules/sound/Decoder.cpp
  813. src/modules/sound/Decoder.h
  814. src/modules/sound/Sound.cpp
  815. src/modules/sound/Sound.h
  816. src/modules/sound/SoundData.cpp
  817. src/modules/sound/SoundData.h
  818. src/modules/sound/wrap_Decoder.cpp
  819. src/modules/sound/wrap_Decoder.h
  820. src/modules/sound/wrap_Sound.cpp
  821. src/modules/sound/wrap_Sound.h
  822. src/modules/sound/wrap_SoundData.cpp
  823. src/modules/sound/wrap_SoundData.h
  824. )
  825. set(LOVE_SRC_MODULE_SOUND_LULLABY
  826. src/modules/sound/lullaby/FLACDecoder.cpp
  827. src/modules/sound/lullaby/FLACDecoder.h
  828. src/modules/sound/lullaby/ModPlugDecoder.cpp
  829. src/modules/sound/lullaby/ModPlugDecoder.h
  830. src/modules/sound/lullaby/MP3Decoder.h
  831. src/modules/sound/lullaby/MP3Decoder.cpp
  832. src/modules/sound/lullaby/Sound.cpp
  833. src/modules/sound/lullaby/Sound.h
  834. src/modules/sound/lullaby/VorbisDecoder.cpp
  835. src/modules/sound/lullaby/VorbisDecoder.h
  836. src/modules/sound/lullaby/WaveDecoder.cpp
  837. src/modules/sound/lullaby/WaveDecoder.h
  838. )
  839. set(LOVE_SRC_MODULE_SOUND
  840. ${LOVE_SRC_MODULE_SOUND_ROOT}
  841. ${LOVE_SRC_MODULE_SOUND_LULLABY}
  842. )
  843. source_group("modules\\sound" FILES ${LOVE_SRC_MODULE_SOUND_ROOT})
  844. source_group("modules\\sound\\lullaby" FILES ${LOVE_SRC_MODULE_SOUND_LULLABY})
  845. #
  846. # love.system
  847. #
  848. set(LOVE_SRC_MODULE_SYSTEM_ROOT
  849. src/modules/system/System.cpp
  850. src/modules/system/System.h
  851. src/modules/system/wrap_System.cpp
  852. src/modules/system/wrap_System.h
  853. )
  854. set(LOVE_SRC_MODULE_SYSTEM_SDL
  855. src/modules/system/sdl/System.cpp
  856. src/modules/system/sdl/System.h
  857. )
  858. set(LOVE_SRC_MODULE_SYSTEM
  859. ${LOVE_SRC_MODULE_SYSTEM_ROOT}
  860. ${LOVE_SRC_MODULE_SYSTEM_SDL}
  861. )
  862. source_group("modules\\system" FILES ${LOVE_SRC_MODULE_SYSTEM_ROOT})
  863. source_group("modules\\system\\sdl" FILES ${LOVE_SRC_MODULE_SYSTEM_SDL})
  864. #
  865. # love.thread
  866. #
  867. set(LOVE_SRC_MODULE_THREAD_ROOT
  868. src/modules/thread/Channel.cpp
  869. src/modules/thread/Channel.h
  870. src/modules/thread/LuaThread.cpp
  871. src/modules/thread/LuaThread.h
  872. src/modules/thread/Thread.h
  873. src/modules/thread/ThreadModule.cpp
  874. src/modules/thread/ThreadModule.h
  875. src/modules/thread/threads.cpp
  876. src/modules/thread/threads.h
  877. src/modules/thread/wrap_Channel.cpp
  878. src/modules/thread/wrap_Channel.h
  879. src/modules/thread/wrap_LuaThread.cpp
  880. src/modules/thread/wrap_LuaThread.h
  881. src/modules/thread/wrap_ThreadModule.cpp
  882. src/modules/thread/wrap_ThreadModule.h
  883. )
  884. set(LOVE_SRC_MODULE_THREAD_SDL
  885. src/modules/thread/sdl/Thread.cpp
  886. src/modules/thread/sdl/Thread.h
  887. src/modules/thread/sdl/threads.cpp
  888. src/modules/thread/sdl/threads.h
  889. )
  890. set(LOVE_SRC_MODULE_THREAD
  891. ${LOVE_SRC_MODULE_THREAD_ROOT}
  892. ${LOVE_SRC_MODULE_THREAD_SDL}
  893. )
  894. source_group("modules\\thread" FILES ${LOVE_SRC_MODULE_THREAD_ROOT})
  895. source_group("modules\\thread\\sdl" FILES ${LOVE_SRC_MODULE_THREAD_SDL})
  896. #
  897. # love.timer
  898. #
  899. set(LOVE_SRC_MODULE_TIMER
  900. src/modules/timer/Timer.cpp
  901. src/modules/timer/Timer.h
  902. src/modules/timer/wrap_Timer.cpp
  903. src/modules/timer/wrap_Timer.h
  904. )
  905. source_group("modules\\timer" FILES ${LOVE_SRC_MODULE_TIMER})
  906. #
  907. # love.touch
  908. #
  909. set(LOVE_SRC_MODULE_TOUCH_ROOT
  910. src/modules/touch/Touch.h
  911. src/modules/touch/wrap_Touch.cpp
  912. src/modules/touch/wrap_Touch.h
  913. )
  914. set(LOVE_SRC_MODULE_TOUCH_SDL
  915. src/modules/touch/sdl/Touch.cpp
  916. src/modules/touch/sdl/Touch.h
  917. )
  918. set(LOVE_SRC_MODULE_TOUCH
  919. ${LOVE_SRC_MODULE_TOUCH_ROOT}
  920. ${LOVE_SRC_MODULE_TOUCH_SDL}
  921. )
  922. source_group("modules\\touch" FILES ${LOVE_SRC_MODULE_TOUCH_ROOT})
  923. source_group("modules\\touch\\sdl" FILES ${LOVE_SRC_MODULE_TOUCH_SDL})
  924. #
  925. # love.video
  926. #
  927. set(LOVE_SRC_MODULE_VIDEO_ROOT
  928. src/modules/video/Video.h
  929. src/modules/video/VideoStream.cpp
  930. src/modules/video/VideoStream.h
  931. src/modules/video/wrap_Video.cpp
  932. src/modules/video/wrap_Video.h
  933. src/modules/video/wrap_VideoStream.cpp
  934. src/modules/video/wrap_VideoStream.h
  935. )
  936. set(LOVE_SRC_MODULE_VIDEO_THEORA
  937. src/modules/video/theora/Video.cpp
  938. src/modules/video/theora/Video.h
  939. src/modules/video/theora/OggDemuxer.cpp
  940. src/modules/video/theora/OggDemuxer.h
  941. src/modules/video/theora/TheoraVideoStream.cpp
  942. src/modules/video/theora/TheoraVideoStream.h
  943. )
  944. set(LOVE_SRC_MODULE_VIDEO
  945. ${LOVE_SRC_MODULE_VIDEO_ROOT}
  946. ${LOVE_SRC_MODULE_VIDEO_THEORA}
  947. )
  948. source_group("modules\\video" FILES ${LOVE_SRC_MODULE_VIDEO_ROOT})
  949. source_group("modules\\video\\theora" FILES ${LOVE_SRC_MODULE_VIDEO_THEORA})
  950. #
  951. # love.window
  952. #
  953. set(LOVE_SRC_MODULE_WINDOW_ROOT
  954. src/modules/window/Window.cpp
  955. src/modules/window/Window.h
  956. src/modules/window/wrap_Window.cpp
  957. src/modules/window/wrap_Window.h
  958. )
  959. set(LOVE_SRC_MODULE_WINDOW_SDL
  960. src/modules/window/sdl/Window.cpp
  961. src/modules/window/sdl/Window.h
  962. )
  963. set(LOVE_SRC_MODULE_WINDOW
  964. ${LOVE_SRC_MODULE_WINDOW_ROOT}
  965. ${LOVE_SRC_MODULE_WINDOW_SDL}
  966. )
  967. source_group("modules\\window" FILES ${LOVE_SRC_MODULE_WINDOW_ROOT})
  968. source_group("modules\\window\\sdl" FILES ${LOVE_SRC_MODULE_WINDOW_SDL})
  969. ###################################
  970. # Third-party libraries
  971. ###################################
  972. #
  973. # Box2D
  974. #
  975. set(LOVE_SRC_3P_BOX2D_ROOT
  976. src/libraries/box2d/Box2D.h
  977. )
  978. set(LOVE_SRC_3P_BOX2D_COLLISION
  979. src/libraries/box2d/collision/b2_broad_phase.cpp
  980. src/libraries/box2d/collision/b2_chain_shape.cpp
  981. src/libraries/box2d/collision/b2_circle_shape.cpp
  982. src/libraries/box2d/collision/b2_collide_circle.cpp
  983. src/libraries/box2d/collision/b2_collide_edge.cpp
  984. src/libraries/box2d/collision/b2_collide_polygon.cpp
  985. src/libraries/box2d/collision/b2_collision.cpp
  986. src/libraries/box2d/collision/b2_distance.cpp
  987. src/libraries/box2d/collision/b2_dynamic_tree.cpp
  988. src/libraries/box2d/collision/b2_edge_shape.cpp
  989. src/libraries/box2d/collision/b2_polygon_shape.cpp
  990. src/libraries/box2d/collision/b2_time_of_impact.cpp
  991. )
  992. set(LOVE_SRC_3P_BOX2D_COMMON
  993. src/libraries/box2d/common/b2_block_allocator.cpp
  994. src/libraries/box2d/common/b2_draw.cpp
  995. src/libraries/box2d/common/b2_math.cpp
  996. src/libraries/box2d/common/b2_settings.cpp
  997. src/libraries/box2d/common/b2_stack_allocator.cpp
  998. src/libraries/box2d/common/b2_timer.cpp
  999. )
  1000. set(LOVE_SRC_3P_BOX2D_DYNAMICS
  1001. src/libraries/box2d/dynamics/b2_body.cpp
  1002. src/libraries/box2d/dynamics/b2_chain_circle_contact.cpp
  1003. src/libraries/box2d/dynamics/b2_chain_circle_contact.h
  1004. src/libraries/box2d/dynamics/b2_chain_polygon_contact.cpp
  1005. src/libraries/box2d/dynamics/b2_chain_polygon_contact.h
  1006. src/libraries/box2d/dynamics/b2_circle_contact.cpp
  1007. src/libraries/box2d/dynamics/b2_circle_contact.h
  1008. src/libraries/box2d/dynamics/b2_contact.cpp
  1009. src/libraries/box2d/dynamics/b2_contact_manager.cpp
  1010. src/libraries/box2d/dynamics/b2_contact_solver.cpp
  1011. src/libraries/box2d/dynamics/b2_contact_solver.h
  1012. src/libraries/box2d/dynamics/b2_distance_joint.cpp
  1013. src/libraries/box2d/dynamics/b2_edge_circle_contact.cpp
  1014. src/libraries/box2d/dynamics/b2_edge_circle_contact.h
  1015. src/libraries/box2d/dynamics/b2_edge_polygon_contact.cpp
  1016. src/libraries/box2d/dynamics/b2_edge_polygon_contact.h
  1017. src/libraries/box2d/dynamics/b2_fixture.cpp
  1018. src/libraries/box2d/dynamics/b2_friction_joint.cpp
  1019. src/libraries/box2d/dynamics/b2_gear_joint.cpp
  1020. src/libraries/box2d/dynamics/b2_island.cpp
  1021. src/libraries/box2d/dynamics/b2_island.h
  1022. src/libraries/box2d/dynamics/b2_joint.cpp
  1023. src/libraries/box2d/dynamics/b2_motor_joint.cpp
  1024. src/libraries/box2d/dynamics/b2_mouse_joint.cpp
  1025. src/libraries/box2d/dynamics/b2_polygon_circle_contact.cpp
  1026. src/libraries/box2d/dynamics/b2_polygon_circle_contact.h
  1027. src/libraries/box2d/dynamics/b2_polygon_contact.cpp
  1028. src/libraries/box2d/dynamics/b2_polygon_contact.h
  1029. src/libraries/box2d/dynamics/b2_prismatic_joint.cpp
  1030. src/libraries/box2d/dynamics/b2_pulley_joint.cpp
  1031. src/libraries/box2d/dynamics/b2_revolute_joint.cpp
  1032. src/libraries/box2d/dynamics/b2_weld_joint.cpp
  1033. src/libraries/box2d/dynamics/b2_wheel_joint.cpp
  1034. src/libraries/box2d/dynamics/b2_world.cpp
  1035. src/libraries/box2d/dynamics/b2_world_callbacks.cpp
  1036. )
  1037. set(LOVE_SRC_3P_BOX2D_ROPE
  1038. src/libraries/box2d/rope/b2_rope.cpp
  1039. )
  1040. set(LOVE_SRC_3P_BOX2D
  1041. ${LOVE_SRC_3P_BOX2D_ROOT}
  1042. ${LOVE_SRC_3P_BOX2D_COLLISION}
  1043. ${LOVE_SRC_3P_BOX2D_COMMON}
  1044. ${LOVE_SRC_3P_BOX2D_DYNAMICS}
  1045. ${LOVE_SRC_3P_BOX2D_ROPE}
  1046. )
  1047. add_library(love_3p_box2d ${LOVE_SRC_3P_BOX2D})
  1048. #
  1049. # ddsparse
  1050. #
  1051. set(LOVE_SRC_3P_DDSPARSE
  1052. src/libraries/ddsparse/ddsinfo.h
  1053. src/libraries/ddsparse/ddsparse.cpp
  1054. src/libraries/ddsparse/ddsparse.h
  1055. )
  1056. add_library(love_3p_ddsparse ${LOVE_SRC_3P_DDSPARSE})
  1057. #
  1058. # dr_flac
  1059. #
  1060. set(LOVE_SRC_3P_DRFLAC
  1061. src/libraries/dr/dr_flac.h
  1062. )
  1063. # dr_flac has no implementation files of its own.
  1064. #
  1065. # dr_mp3
  1066. #
  1067. set(LOVE_SRC_3P_DRMP3
  1068. src/libraries/dr/dr_mp3.h
  1069. )
  1070. # dr_mp3 has no implementation files of its own.
  1071. #
  1072. # enet
  1073. #
  1074. set(LOVE_SRC_3P_ENET_ROOT
  1075. src/libraries/enet/enet.cpp
  1076. src/libraries/enet/lua-enet.h
  1077. )
  1078. set(LOVE_SRC_3P_ENET_LIBENET
  1079. src/libraries/enet/libenet/callbacks.c
  1080. src/libraries/enet/libenet/compress.c
  1081. src/libraries/enet/libenet/host.c
  1082. src/libraries/enet/libenet/list.c
  1083. src/libraries/enet/libenet/packet.c
  1084. src/libraries/enet/libenet/peer.c
  1085. src/libraries/enet/libenet/protocol.c
  1086. src/libraries/enet/libenet/unix.c
  1087. src/libraries/enet/libenet/win32.c
  1088. )
  1089. set(LOVE_SRC_3P_ENET_LIBENET_INCLUDE_ENET
  1090. src/libraries/enet/libenet/include/enet/enet.h
  1091. src/libraries/enet/libenet/include/enet/list.h
  1092. src/libraries/enet/libenet/include/enet/protocol.h
  1093. src/libraries/enet/libenet/include/enet/time.h
  1094. src/libraries/enet/libenet/include/enet/types.h
  1095. src/libraries/enet/libenet/include/enet/unix.h
  1096. src/libraries/enet/libenet/include/enet/utility.h
  1097. src/libraries/enet/libenet/include/enet/win32.h
  1098. )
  1099. set(LOVE_SRC_3P_ENET
  1100. ${LOVE_SRC_3P_ENET_ROOT}
  1101. ${LOVE_SRC_3P_ENET_LIBENET}
  1102. ${LOVE_SRC_3P_ENET_LIBENET_INCLUDE_ENET}
  1103. )
  1104. add_library(love_3p_enet ${LOVE_SRC_3P_ENET})
  1105. target_link_libraries(love_3p_enet ${LOVE_LUA_LIBRARY})
  1106. target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include)
  1107. #
  1108. # GLAD
  1109. #
  1110. set(LOVE_SRC_3P_GLAD
  1111. src/libraries/glad/glad.cpp
  1112. src/libraries/glad/glad.hpp
  1113. src/libraries/glad/gladfuncs.hpp
  1114. )
  1115. add_library(love_3p_glad ${LOVE_SRC_3P_GLAD})
  1116. #
  1117. # glslang
  1118. #
  1119. set(LOVE_SRC_3P_GLSLANG_GLSLANG_GENERICCODEGEN
  1120. src/libraries/glslang/glslang/GenericCodeGen/CodeGen.cpp
  1121. src/libraries/glslang/glslang/GenericCodeGen/Link.cpp
  1122. )
  1123. set(LOVE_SRC_3P_GLSLANG_GLSLANG_INCLUDE
  1124. src/libraries/glslang/glslang/Include/arrays.h
  1125. src/libraries/glslang/glslang/Include/BaseTypes.h
  1126. src/libraries/glslang/glslang/Include/Common.h
  1127. src/libraries/glslang/glslang/Include/ConstantUnion.h
  1128. src/libraries/glslang/glslang/Include/InfoSink.h
  1129. src/libraries/glslang/glslang/Include/InitializeGlobals.h
  1130. src/libraries/glslang/glslang/Include/intermediate.h
  1131. src/libraries/glslang/glslang/Include/PoolAlloc.h
  1132. src/libraries/glslang/glslang/Include/ResourceLimits.h
  1133. src/libraries/glslang/glslang/Include/ShHandle.h
  1134. src/libraries/glslang/glslang/Include/SpirvIntrinsics.h
  1135. src/libraries/glslang/glslang/Include/Types.h
  1136. )
  1137. set(LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT_PREPROCESSOR
  1138. src/libraries/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
  1139. src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
  1140. src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp
  1141. src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpContext.h
  1142. src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
  1143. src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
  1144. src/libraries/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h
  1145. )
  1146. set(LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT
  1147. ${LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT_PREPROCESSOR}
  1148. src/libraries/glslang/glslang/MachineIndependent/attribute.cpp
  1149. src/libraries/glslang/glslang/MachineIndependent/attribute.h
  1150. src/libraries/glslang/glslang/MachineIndependent/Constant.cpp
  1151. src/libraries/glslang/glslang/MachineIndependent/gl_types.h
  1152. src/libraries/glslang/glslang/MachineIndependent/glslang_tab.cpp
  1153. src/libraries/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
  1154. src/libraries/glslang/glslang/MachineIndependent/InfoSink.cpp
  1155. src/libraries/glslang/glslang/MachineIndependent/Initialize.cpp
  1156. src/libraries/glslang/glslang/MachineIndependent/Initialize.h
  1157. src/libraries/glslang/glslang/MachineIndependent/Intermediate.cpp
  1158. src/libraries/glslang/glslang/MachineIndependent/intermOut.cpp
  1159. src/libraries/glslang/glslang/MachineIndependent/IntermTraverse.cpp
  1160. src/libraries/glslang/glslang/MachineIndependent/iomapper.cpp
  1161. src/libraries/glslang/glslang/MachineIndependent/iomapper.h
  1162. src/libraries/glslang/glslang/MachineIndependent/limits.cpp
  1163. src/libraries/glslang/glslang/MachineIndependent/linkValidate.cpp
  1164. src/libraries/glslang/glslang/MachineIndependent/LiveTraverser.h
  1165. src/libraries/glslang/glslang/MachineIndependent/localintermediate.h
  1166. src/libraries/glslang/glslang/MachineIndependent/parseConst.cpp
  1167. src/libraries/glslang/glslang/MachineIndependent/ParseContextBase.cpp
  1168. src/libraries/glslang/glslang/MachineIndependent/ParseHelper.cpp
  1169. src/libraries/glslang/glslang/MachineIndependent/ParseHelper.h
  1170. src/libraries/glslang/glslang/MachineIndependent/parseVersions.h
  1171. src/libraries/glslang/glslang/MachineIndependent/pch.h
  1172. src/libraries/glslang/glslang/MachineIndependent/PoolAlloc.cpp
  1173. src/libraries/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
  1174. src/libraries/glslang/glslang/MachineIndependent/propagateNoContraction.h
  1175. src/libraries/glslang/glslang/MachineIndependent/reflection.cpp
  1176. src/libraries/glslang/glslang/MachineIndependent/reflection.h
  1177. src/libraries/glslang/glslang/MachineIndependent/RemoveTree.cpp
  1178. src/libraries/glslang/glslang/MachineIndependent/RemoveTree.h
  1179. src/libraries/glslang/glslang/MachineIndependent/Scan.cpp
  1180. src/libraries/glslang/glslang/MachineIndependent/Scan.h
  1181. src/libraries/glslang/glslang/MachineIndependent/ScanContext.h
  1182. src/libraries/glslang/glslang/MachineIndependent/ShaderLang.cpp
  1183. src/libraries/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp
  1184. src/libraries/glslang/glslang/MachineIndependent/SymbolTable.cpp
  1185. src/libraries/glslang/glslang/MachineIndependent/SymbolTable.h
  1186. src/libraries/glslang/glslang/MachineIndependent/Versions.cpp
  1187. src/libraries/glslang/glslang/MachineIndependent/Versions.h
  1188. )
  1189. set(LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT
  1190. src/libraries/glslang/glslang/OSDependent/osinclude.h
  1191. )
  1192. if(MSVC)
  1193. set(LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT
  1194. ${LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT}
  1195. src/libraries/glslang/glslang/OSDependent/Windows/main.cpp
  1196. src/libraries/glslang/glslang/OSDependent/Windows/ossource.cpp
  1197. )
  1198. else()
  1199. set(LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT
  1200. ${LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT}
  1201. src/libraries/glslang/glslang/OSDependent/Unix/ossource.cpp
  1202. )
  1203. endif()
  1204. set(LOVE_SRC_3P_GLSLANG_GLSLANG_PUBLIC
  1205. src/libraries/glslang/glslang/Public/ShaderLang.h
  1206. )
  1207. set(LOVE_SRC_3P_GLSLANG_GLSLANG
  1208. src/libraries/glslang/glslang/build_info.h
  1209. ${LOVE_SRC_3P_GLSLANG_GLSLANG_GENERICCODEGEN}
  1210. ${LOVE_SRC_3P_GLSLANG_GLSLANG_INCLUDE}
  1211. ${LOVE_SRC_3P_GLSLANG_GLSLANG_MACHINEINDEPENDENT}
  1212. ${LOVE_SRC_3P_GLSLANG_GLSLANG_OSDEPENDENT}
  1213. ${LOVE_SRC_3P_GLSLANG_GLSLANG_PUBLIC}
  1214. )
  1215. set(LOVE_SRC_3P_GLSLANG_OGLCOMPILERSDLL
  1216. src/libraries/glslang/OGLCompilersDLL/InitializeDll.cpp
  1217. src/libraries/glslang/OGLCompilersDLL/InitializeDll.h
  1218. )
  1219. set(LOVE_SRC_3P_GLSLANG_SPIRV
  1220. src/libraries/glslang/SPIRV/bitutils.h
  1221. src/libraries/glslang/SPIRV/disassemble.cpp
  1222. src/libraries/glslang/SPIRV/disassemble.h
  1223. src/libraries/glslang/SPIRV/doc.cpp
  1224. src/libraries/glslang/SPIRV/doc.h
  1225. src/libraries/glslang/SPIRV/GLSL.ext.AMD.h
  1226. src/libraries/glslang/SPIRV/GLSL.ext.EXT.h
  1227. src/libraries/glslang/SPIRV/GLSL.ext.KHR.h
  1228. src/libraries/glslang/SPIRV/GLSL.ext.NV.h
  1229. src/libraries/glslang/SPIRV/GLSL.std.450.h
  1230. src/libraries/glslang/SPIRV/GlslangToSpv.cpp
  1231. src/libraries/glslang/SPIRV/GlslangToSpv.h
  1232. src/libraries/glslang/SPIRV/hex_float.h
  1233. src/libraries/glslang/SPIRV/InReadableOrder.cpp
  1234. src/libraries/glslang/SPIRV/Logger.cpp
  1235. src/libraries/glslang/SPIRV/Logger.h
  1236. src/libraries/glslang/SPIRV/NonSemanticDebugPrintf.h
  1237. src/libraries/glslang/SPIRV/spirv.hpp
  1238. src/libraries/glslang/SPIRV/SpvBuilder.cpp
  1239. src/libraries/glslang/SPIRV/SpvBuilder.h
  1240. src/libraries/glslang/SPIRV/spvIR.h
  1241. src/libraries/glslang/SPIRV/SpvPostProcess.cpp
  1242. src/libraries/glslang/SPIRV/SPVRemapper.cpp
  1243. src/libraries/glslang/SPIRV/SPVRemapper.h
  1244. src/libraries/glslang/SPIRV/SpvTools.cpp
  1245. src/libraries/glslang/SPIRV/SpvTools.h
  1246. )
  1247. set(LOVE_SRC_3P_GLSLANG
  1248. ${LOVE_SRC_3P_GLSLANG_GLSLANG}
  1249. ${LOVE_SRC_3P_GLSLANG_OGLCOMPILERSDLL}
  1250. ${LOVE_SRC_3P_GLSLANG_SPIRV}
  1251. )
  1252. add_library(love_3p_glslang ${LOVE_SRC_3P_GLSLANG})
  1253. #
  1254. # LodePNG
  1255. #
  1256. set(LOVE_SRC_3P_LODEPNG
  1257. src/libraries/lodepng/lodepng.cpp
  1258. src/libraries/lodepng/lodepng.h
  1259. )
  1260. add_library(love_3p_lodepng ${LOVE_SRC_3P_LODEPNG})
  1261. #
  1262. # luasocket
  1263. #
  1264. set(LOVE_SRC_3P_LUASOCKET_ROOT
  1265. src/libraries/luasocket/luasocket.cpp
  1266. src/libraries/luasocket/luasocket.h
  1267. )
  1268. set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
  1269. src/libraries/luasocket/libluasocket/auxiliar.c
  1270. src/libraries/luasocket/libluasocket/auxiliar.h
  1271. src/libraries/luasocket/libluasocket/buffer.c
  1272. src/libraries/luasocket/libluasocket/buffer.h
  1273. src/libraries/luasocket/libluasocket/compat.c
  1274. src/libraries/luasocket/libluasocket/compat.h
  1275. src/libraries/luasocket/libluasocket/except.c
  1276. src/libraries/luasocket/libluasocket/except.h
  1277. src/libraries/luasocket/libluasocket/ftp.lua.h
  1278. src/libraries/luasocket/libluasocket/headers.lua.h
  1279. src/libraries/luasocket/libluasocket/http.lua.h
  1280. src/libraries/luasocket/libluasocket/inet.c
  1281. src/libraries/luasocket/libluasocket/inet.h
  1282. src/libraries/luasocket/libluasocket/io.c
  1283. src/libraries/luasocket/libluasocket/io.h
  1284. src/libraries/luasocket/libluasocket/ltn12.lua.h
  1285. src/libraries/luasocket/libluasocket/luasocket.c
  1286. src/libraries/luasocket/libluasocket/luasocket.h
  1287. src/libraries/luasocket/libluasocket/mbox.lua.h
  1288. src/libraries/luasocket/libluasocket/mime.c
  1289. src/libraries/luasocket/libluasocket/mime.h
  1290. src/libraries/luasocket/libluasocket/mime.lua.h
  1291. src/libraries/luasocket/libluasocket/options.c
  1292. src/libraries/luasocket/libluasocket/options.h
  1293. src/libraries/luasocket/libluasocket/pierror.h
  1294. src/libraries/luasocket/libluasocket/select.c
  1295. src/libraries/luasocket/libluasocket/select.h
  1296. src/libraries/luasocket/libluasocket/smtp.lua.h
  1297. src/libraries/luasocket/libluasocket/socket.h
  1298. src/libraries/luasocket/libluasocket/socket.lua.h
  1299. src/libraries/luasocket/libluasocket/tcp.c
  1300. src/libraries/luasocket/libluasocket/tcp.h
  1301. src/libraries/luasocket/libluasocket/timeout.c
  1302. src/libraries/luasocket/libluasocket/timeout.h
  1303. src/libraries/luasocket/libluasocket/tp.lua.h
  1304. src/libraries/luasocket/libluasocket/udp.c
  1305. src/libraries/luasocket/libluasocket/udp.h
  1306. src/libraries/luasocket/libluasocket/url.lua.h
  1307. )
  1308. set(LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET)
  1309. if(MSVC)
  1310. set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
  1311. ${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
  1312. src/libraries/luasocket/libluasocket/wsocket.c
  1313. src/libraries/luasocket/libluasocket/wsocket.h
  1314. )
  1315. set(LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET
  1316. ${LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET}
  1317. ws2_32.lib
  1318. )
  1319. else()
  1320. set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
  1321. ${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
  1322. src/libraries/luasocket/libluasocket/serial.c
  1323. src/libraries/luasocket/libluasocket/unix.c
  1324. src/libraries/luasocket/libluasocket/unix.h
  1325. src/libraries/luasocket/libluasocket/unixtcp.c
  1326. src/libraries/luasocket/libluasocket/unixtcp.h
  1327. src/libraries/luasocket/libluasocket/unixudp.c
  1328. src/libraries/luasocket/libluasocket/unixudp.h
  1329. src/libraries/luasocket/libluasocket/usocket.c
  1330. src/libraries/luasocket/libluasocket/usocket.h
  1331. )
  1332. endif()
  1333. set(LOVE_SRC_3P_LUASOCKET
  1334. ${LOVE_SRC_3P_LUASOCKET_ROOT}
  1335. ${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
  1336. )
  1337. add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET})
  1338. target_link_libraries(love_3p_luasocket ${LOVE_LUA_LIBRARY} ${LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET})
  1339. #
  1340. # APIs from Lua 5.3
  1341. #
  1342. set(LOVE_SRC_3P_LUA53
  1343. src/libraries/lua53/lprefix.h
  1344. src/libraries/lua53/lstrlib.c
  1345. src/libraries/lua53/lstrlib.h
  1346. src/libraries/lua53/lutf8lib.c
  1347. src/libraries/lua53/lutf8lib.h
  1348. )
  1349. add_library(love_3p_lua53 ${LOVE_SRC_3P_LUA53})
  1350. target_link_libraries(love_3p_lua53 ${LOVE_LUA_LIBRARY})
  1351. #
  1352. # Lua HTTPS
  1353. #
  1354. set(LOVE_SRC_3P_LUAHTTPS_ANDROID
  1355. src/libraries/luahttps/src/android/AndroidClient.cpp
  1356. src/libraries/luahttps/src/android/AndroidClient.h
  1357. )
  1358. set(LOVE_SRC_3P_LUAHTTPS_APPLE
  1359. src/libraries/luahttps/src/apple/NSURLClient.mm
  1360. src/libraries/luahttps/src/apple/NSURLClient.h
  1361. )
  1362. set(LOVE_SRC_3P_LUAHTTPS_COMMON
  1363. src/libraries/luahttps/src/common/config.h
  1364. src/libraries/luahttps/src/common/Connection.h
  1365. src/libraries/luahttps/src/common/ConnectionClient.h
  1366. src/libraries/luahttps/src/common/HTTPRequest.cpp
  1367. src/libraries/luahttps/src/common/HTTPRequest.h
  1368. src/libraries/luahttps/src/common/HTTPS.cpp
  1369. src/libraries/luahttps/src/common/HTTPS.h
  1370. src/libraries/luahttps/src/common/HTTPSClient.cpp
  1371. src/libraries/luahttps/src/common/HTTPSClient.h
  1372. src/libraries/luahttps/src/common/PlaintextConnection.cpp
  1373. src/libraries/luahttps/src/common/PlaintextConnection.h
  1374. )
  1375. set(LOVE_SRC_3P_LUAHTTPS_GENERIC
  1376. src/libraries/luahttps/src/generic/CurlClient.cpp
  1377. src/libraries/luahttps/src/generic/CurlClient.h
  1378. src/libraries/luahttps/src/generic/OpenSSLConnection.cpp
  1379. src/libraries/luahttps/src/generic/OpenSSLConnection.h
  1380. )
  1381. set(LOVE_SRC_3P_LUAHTTPS_LUA
  1382. src/libraries/luahttps/src/lua/main.cpp
  1383. )
  1384. set(LOVE_SRC_3P_LUAHTTPS_WINDOWS
  1385. src/libraries/luahttps/src/windows/SChannelConnection.cpp
  1386. src/libraries/luahttps/src/windows/SChannelConnection.h
  1387. )
  1388. # These are platform-dependent but have ifdef guards to make sure they only
  1389. # compile on supported platforms.
  1390. set(LOVE_SRC_3P_LUAHTTPS
  1391. ${LOVE_SRC_3P_LUAHTTPS_ANDROID}
  1392. ${LOVE_SRC_3P_LUAHTTPS_APPLE}
  1393. ${LOVE_SRC_3P_LUAHTTPS_COMMON}
  1394. ${LOVE_SRC_3P_LUAHTTPS_GENERIC}
  1395. ${LOVE_SRC_3P_LUAHTTPS_LUA}
  1396. ${LOVE_SRC_3P_LUAHTTPS_WINDOWS}
  1397. )
  1398. set(LOVE_LINK_L3P_LUAHTTPS)
  1399. if(MSVC)
  1400. set(LOVE_LINK_L3P_LUAHTTPS
  1401. ${LOVE_LINK_L3P_LUASOCKET_LIBLUASOCKET}
  1402. ws2_32
  1403. secur32
  1404. )
  1405. endif()
  1406. add_library(love_3p_luahttps ${LOVE_SRC_3P_LUAHTTPS})
  1407. target_link_libraries(love_3p_luahttps ${LOVE_LUA_LIBRARY} ${LOVE_LINK_L3P_LUAHTTPS})
  1408. #
  1409. # lz4
  1410. #
  1411. set(LOVE_SRC_3P_LZ4
  1412. src/libraries/lz4/lz4.c
  1413. src/libraries/lz4/lz4.h
  1414. src/libraries/lz4/lz4hc.c
  1415. src/libraries/lz4/lz4hc.h
  1416. src/libraries/lz4/lz4opt.h
  1417. )
  1418. add_library(love_3p_lz4 ${LOVE_SRC_3P_LZ4})
  1419. #
  1420. # noise1234
  1421. #
  1422. set(LOVE_SRC_3P_NOISE1234
  1423. src/libraries/noise1234/noise1234.cpp
  1424. src/libraries/noise1234/noise1234.h
  1425. src/libraries/noise1234/simplexnoise1234.cpp
  1426. src/libraries/noise1234/simplexnoise1234.h
  1427. )
  1428. add_library(love_3p_noise1234 ${LOVE_SRC_3P_NOISE1234})
  1429. #
  1430. # physfs
  1431. #
  1432. set(LOVE_SRC_3P_PHYSFS
  1433. src/libraries/physfs/physfs_archiver_7z.c
  1434. src/libraries/physfs/physfs_archiver_dir.c
  1435. src/libraries/physfs/physfs_archiver_grp.c
  1436. src/libraries/physfs/physfs_archiver_hog.c
  1437. src/libraries/physfs/physfs_archiver_iso9660.c
  1438. src/libraries/physfs/physfs_archiver_mvl.c
  1439. src/libraries/physfs/physfs_archiver_qpak.c
  1440. src/libraries/physfs/physfs_archiver_slb.c
  1441. src/libraries/physfs/physfs_archiver_unpacked.c
  1442. src/libraries/physfs/physfs_archiver_vdf.c
  1443. src/libraries/physfs/physfs_archiver_wad.c
  1444. src/libraries/physfs/physfs_archiver_zip.c
  1445. src/libraries/physfs/physfs_byteorder.c
  1446. src/libraries/physfs/physfs_casefolding.h
  1447. src/libraries/physfs/physfs_internal.h
  1448. src/libraries/physfs/physfs_lzmasdk.h
  1449. src/libraries/physfs/physfs_miniz.h
  1450. src/libraries/physfs/physfs_platform_haiku.cpp
  1451. src/libraries/physfs/physfs_platform_os2.c
  1452. src/libraries/physfs/physfs_platform_posix.c
  1453. src/libraries/physfs/physfs_platform_qnx.c
  1454. src/libraries/physfs/physfs_platform_unix.c
  1455. src/libraries/physfs/physfs_platform_windows.c
  1456. src/libraries/physfs/physfs_platform_winrt.cpp
  1457. src/libraries/physfs/physfs_platforms.h
  1458. src/libraries/physfs/physfs_unicode.c
  1459. src/libraries/physfs/physfs.c
  1460. src/libraries/physfs/physfs.h
  1461. )
  1462. if(APPLE)
  1463. set(LOVE_SRC_3P_PHYSFS ${LOVE_SRC_3P_PHYSFS}
  1464. src/libraries/physfs/physfs_platform_apple.m
  1465. )
  1466. set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} "-framework IOKit")
  1467. endif()
  1468. add_library(love_3p_physfs ${LOVE_SRC_3P_PHYSFS})
  1469. #
  1470. # stb_image
  1471. #
  1472. set(LOVE_SRC_3P_STB
  1473. src/libraries/stb/stb_image.h
  1474. )
  1475. # stb_image has no implementation files of its own.
  1476. #
  1477. # tiny exr
  1478. #
  1479. set(LOVE_SRC_3P_TINYEXR
  1480. src/libraries/tinyexr/tinyexr.h
  1481. )
  1482. # tinyexr has no implementation files of its own.
  1483. #
  1484. # utf8
  1485. #
  1486. set(LOVE_SRC_3P_UTF8_ROOT src/libraries/utf8/utf8.h)
  1487. set(LOVE_SRC_3P_UTF8_UTF8
  1488. src/libraries/utf8/utf8/checked.h
  1489. src/libraries/utf8/utf8/core.h
  1490. src/libraries/utf8/utf8/unchecked.h
  1491. )
  1492. set(LOVE_SRC_3P_UTF8
  1493. ${LOVE_SRC_3P_UTF8_ROOT}
  1494. ${LOVE_SRC_3P_UTF8_UTF8}
  1495. )
  1496. # This library is all headers ... so there is no need to
  1497. # add_library() here.
  1498. #
  1499. # Wuff
  1500. #
  1501. set(LOVE_SRC_3P_WUFF
  1502. src/libraries/Wuff/wuff.c
  1503. src/libraries/Wuff/wuff.h
  1504. src/libraries/Wuff/wuff_config.h
  1505. src/libraries/Wuff/wuff_convert.c
  1506. src/libraries/Wuff/wuff_convert.h
  1507. src/libraries/Wuff/wuff_internal.c
  1508. src/libraries/Wuff/wuff_internal.h
  1509. src/libraries/Wuff/wuff_memory.c
  1510. )
  1511. add_library(love_3p_wuff ${LOVE_SRC_3P_WUFF})
  1512. #
  1513. # xxHash
  1514. #
  1515. set(LOVE_SRC_3P_XXHASH
  1516. src/libraries/xxHash/xxhash.c
  1517. src/libraries/xxHash/xxhash.h
  1518. )
  1519. add_library(love_3p_xxhash ${LOVE_SRC_3P_XXHASH})
  1520. set(LOVE_3P
  1521. love_3p_box2d
  1522. love_3p_ddsparse
  1523. love_3p_enet
  1524. love_3p_glad
  1525. love_3p_glslang
  1526. love_3p_lodepng
  1527. love_3p_luasocket
  1528. love_3p_lua53
  1529. love_3p_luahttps
  1530. love_3p_lz4
  1531. love_3p_noise1234
  1532. love_3p_physfs
  1533. love_3p_wuff
  1534. love_3p_xxhash
  1535. )
  1536. love_disable_warnings(love_3p_box2d love_3p_enet love_3p_luasocket love_3p_physfs)
  1537. #
  1538. # liblove
  1539. #
  1540. set(LOVE_LIB_SRC
  1541. ${LOVE_SRC_COMMON}
  1542. # Modules
  1543. ${LOVE_SRC_MODULE_AUDIO}
  1544. ${LOVE_SRC_MODULE_DATA}
  1545. ${LOVE_SRC_MODULE_EVENT}
  1546. ${LOVE_SRC_MODULE_FILESYSTEM}
  1547. ${LOVE_SRC_MODULE_FONT}
  1548. ${LOVE_SRC_MODULE_GRAPHICS}
  1549. ${LOVE_SRC_MODULE_IMAGE}
  1550. ${LOVE_SRC_MODULE_JOYSTICK}
  1551. ${LOVE_SRC_MODULE_KEYBOARD}
  1552. ${LOVE_SRC_MODULE_LOVE}
  1553. ${LOVE_SRC_MODULE_MATH}
  1554. ${LOVE_SRC_MODULE_MOUSE}
  1555. ${LOVE_SRC_MODULE_PHYSICS}
  1556. ${LOVE_SRC_MODULE_SOUND}
  1557. ${LOVE_SRC_MODULE_SYSTEM}
  1558. ${LOVE_SRC_MODULE_THREAD}
  1559. ${LOVE_SRC_MODULE_TIMER}
  1560. ${LOVE_SRC_MODULE_TOUCH}
  1561. ${LOVE_SRC_MODULE_VIDEO}
  1562. ${LOVE_SRC_MODULE_WINDOW}
  1563. )
  1564. include_directories(
  1565. BEFORE
  1566. src
  1567. src/libraries
  1568. src/libraries/box2D
  1569. src/modules
  1570. ${LOVE_INCLUDE_DIRS}
  1571. )
  1572. link_directories(${LOVE_LINK_DIRS})
  1573. set(LOVE_RC)
  1574. if(MSVC)
  1575. set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES}
  1576. ws2_32.lib
  1577. winmm.lib
  1578. )
  1579. set(LOVE_RC
  1580. extra/windows/love.rc
  1581. extra/windows/love.ico
  1582. )
  1583. endif()
  1584. if(ANDROID)
  1585. # In Android, the LOVE main entrypoint needs to be compiled
  1586. # as shared library, so change the library name and add love.cpp
  1587. set(LOVE_LIB_NAME ${LOVE_EXE_NAME})
  1588. set(LOVE_LIB_SRC ${LOVE_LIB_SRC} src/love.cpp)
  1589. set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} android)
  1590. endif()
  1591. add_library(${LOVE_LIB_NAME} SHARED ${LOVE_LIB_SRC} ${LOVE_RC})
  1592. target_link_libraries(${LOVE_LIB_NAME} ${LOVE_LINK_LIBRARIES} ${LOVE_3P})
  1593. if(LOVE_EXTRA_DEPENDECIES)
  1594. add_dependencies(${LOVE_LIB_NAME} ${LOVE_EXTRA_DEPENDECIES})
  1595. endif()
  1596. if(MSVC)
  1597. set_target_properties(${LOVE_LIB_NAME} PROPERTIES RELEASE_OUTPUT_NAME "love" PDB_NAME "liblove" IMPORT_PREFIX "lib")
  1598. set_target_properties(${LOVE_LIB_NAME} PROPERTIES DEBUG_OUTPUT_NAME "love" PDB_NAME "liblove" IMPORT_PREFIX "lib")
  1599. endif()
  1600. #
  1601. # love (executable)
  1602. #
  1603. if(NOT ANDROID)
  1604. add_executable(${LOVE_EXE_NAME} WIN32 src/love.cpp ${LOVE_RC})
  1605. target_link_libraries(${LOVE_EXE_NAME} ${LOVE_LIB_NAME})
  1606. if(MSVC)
  1607. add_executable(${LOVE_CONSOLE_EXE_NAME} src/love.cpp ${LOVE_RC})
  1608. target_link_libraries(${LOVE_CONSOLE_EXE_NAME} ${LOVE_LIB_NAME})
  1609. endif()
  1610. function(post_step_move_dll ARG_POST_TARGET ARG_TARGET_OR_FILE)
  1611. if(TARGET ${ARG_TARGET_OR_FILE})
  1612. add_custom_command(TARGET ${ARG_POST_TARGET} POST_BUILD
  1613. COMMAND ${CMAKE_COMMAND} -E copy
  1614. $<TARGET_FILE:${ARG_TARGET_OR_FILE}>
  1615. ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/$<TARGET_FILE_NAME:${ARG_TARGET_OR_FILE}>)
  1616. else()
  1617. get_filename_component(TEMP_FILENAME ${ARG_TARGET_OR_FILE} NAME)
  1618. add_custom_command(TARGET ${ARG_POST_TARGET} POST_BUILD
  1619. COMMAND ${CMAKE_COMMAND} -E copy
  1620. ${ARG_TARGET_OR_FILE}
  1621. ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/${TEMP_FILENAME})
  1622. endif()
  1623. endfunction()
  1624. # Add post build steps to move the DLLs next to the binary. Otherwise
  1625. # running/debugging the binary will not work from inside VS.
  1626. if(LOVE_MOVE_DLLS)
  1627. foreach(DLL ${LOVE_MOVE_DLLS})
  1628. post_step_move_dll(love ${DLL})
  1629. endforeach()
  1630. endif()
  1631. endif()
  1632. if (NOT MSVC)
  1633. return()
  1634. endif()
  1635. ###################################
  1636. # Version
  1637. ###################################
  1638. # Extract version.h contents.
  1639. file(READ ${CMAKE_CURRENT_SOURCE_DIR}/src/common/version.h LOVE_VERSION_FILE_CONTENTS)
  1640. # Extract one of LOVE_VERSION_MAJOR/MINOR/REV.
  1641. function(match_version ARG_STRING OUT_VAR)
  1642. string(REGEX MATCH "VERSION_${ARG_STRING} = ([0-9]+);" TMP_VER "${LOVE_VERSION_FILE_CONTENTS}")
  1643. string(REGEX MATCH "[0-9]+" TMP_VER "${TMP_VER}")
  1644. set(${OUT_VAR} ${TMP_VER} PARENT_SCOPE)
  1645. endfunction()
  1646. match_version("MAJOR" LOVE_VERSION_MAJOR)
  1647. match_version("MINOR" LOVE_VERSION_MINOR)
  1648. match_version("REV" LOVE_VERSION_REV)
  1649. set(LOVE_VERSION_STR "${LOVE_VERSION_MAJOR}.${LOVE_VERSION_MINOR}")
  1650. message(STATUS "Version: ${LOVE_VERSION_STR}")
  1651. ###################################
  1652. # CPack
  1653. ###################################
  1654. install(TARGETS ${LOVE_EXE_NAME} ${LOVE_CONSOLE_EXE_NAME} ${LOVE_LIB_NAME} RUNTIME DESTINATION .)
  1655. # Extra DLLs.
  1656. if(LOVE_EXTRA_DLLS)
  1657. foreach(DLL ${LOVE_EXTRA_DLLS})
  1658. get_filename_component(DLL_NAME ${DLL} NAME)
  1659. message(STATUS "Extra DLL: ${DLL_NAME}")
  1660. endforeach()
  1661. install(FILES ${LOVE_EXTRA_DLLS} DESTINATION .)
  1662. endif()
  1663. # Dynamic runtime libs.
  1664. if(LOVE_MSVC_DLLS)
  1665. foreach(DLL ${LOVE_MSVC_DLLS})
  1666. get_filename_component(DLL_NAME ${DLL} NAME)
  1667. message(STATUS "Runtime DLL: ${DLL_NAME}")
  1668. endforeach()
  1669. install(FILES ${LOVE_MSVC_DLLS} DESTINATION .)
  1670. endif()
  1671. # Copy a text file from CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_BINARY_DIR.
  1672. # On Windows, this function will convert line endings to CR,LF.
  1673. function(copy_text_file ARG_FILE_IN ARG_FILE_OUT)
  1674. file(READ ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_FILE_IN} TMP_TXT_CONTENTS)
  1675. file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ARG_FILE_OUT} ${TMP_TXT_CONTENTS})
  1676. endfunction()
  1677. # Text files.
  1678. copy_text_file(readme.md readme.txt)
  1679. copy_text_file(license.txt license.txt)
  1680. copy_text_file(changes.txt changes.txt)
  1681. install(FILES
  1682. ${CMAKE_CURRENT_BINARY_DIR}/changes.txt
  1683. ${CMAKE_CURRENT_BINARY_DIR}/license.txt
  1684. ${CMAKE_CURRENT_BINARY_DIR}/readme.txt
  1685. DESTINATION .)
  1686. # Icons
  1687. install(FILES
  1688. ${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/love.ico
  1689. ${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/game.ico
  1690. DESTINATION .)
  1691. set(CPACK_GENERATOR ZIP NSIS)
  1692. set(CPACK_PACKAGE_NAME "love")
  1693. set(CPACK_PACKAGE_VENDOR "love2d.org")
  1694. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LOVE -- It's awesome")
  1695. set(CPACK_PACKAGE_VERSION "${LOVE_VERSION_STR}")
  1696. set(CPACK_PACKAGE_VERSION_MAJOR "${LOVE_VERSION_MAJOR}")
  1697. set(CPACK_PACKAGE_VERSION_MINOR "${LOVE_VERSION_MINOR}")
  1698. set(CPACK_PACKAGE_VERSION_PATCH "${LOVE_VERSION_REV}")
  1699. set(CPACK_PACKAGE_INSTALL_DIRECTORY "LOVE")
  1700. set(CPACK_PACKAGE_EXECUTABLES "${LOVE_EXE_NAME};LOVE")
  1701. set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/readme.md")
  1702. set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
  1703. set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
  1704. set(CPACK_NSIS_PACKAGE_NAME "LOVE")
  1705. set(CPACK_NSIS_DISPLAY_NAME "LOVE ${LOVE_VERSION_STR}")
  1706. set(CPACK_NSIS_MODIFY_PATH OFF)
  1707. if(LOVE_X64)
  1708. set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
  1709. else()
  1710. set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
  1711. endif()
  1712. set(CPACK_NSIS_MENU_LINKS "http://love2d.org/wiki" "Documentation")
  1713. # Some bug somewhere in NSIS requires "\\\\" somewhere in the path,
  1714. # according to The Internet. (And sure enough, it does not work
  1715. # without it).
  1716. set(NSIS_LEFT_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\left.bmp")
  1717. set(NSIS_TOP_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\top.bmp")
  1718. set(NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
  1719. set(NSIS_MUI_UNICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
  1720. set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "
  1721. !define MUI_WELCOMEPAGE_TITLE \\\"LOVE ${LOVE_VERSION_STR} Setup\\\"
  1722. !define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${NSIS_LEFT_BMP}\\\"
  1723. !define MUI_HEADERIMAGE_BITMAP \\\"${NSIS_TOP_BMP}\\\"
  1724. !define MUI_ICON \\\"${NSIS_MUI_ICON}\\\"
  1725. !define MUI_UNICON \\\"${NSIS_MUI_UNICON}\\\"
  1726. ")
  1727. set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
  1728. WriteRegStr HKCR \\\".love\\\" \\\"\\\" \\\"LOVE\\\"
  1729. WriteRegStr HKCR \\\"LOVE\\\" \\\"\\\" \\\"LOVE Game File\\\"
  1730. WriteRegStr HKCR \\\"LOVE\\\\DefaultIcon\\\" \\\"\\\" \\\"$INSTDIR\\\\game.ico\\\"
  1731. WriteRegStr HKCR \\\"LOVE\\\\shell\\\" \\\"\\\" \\\"open\\\"
  1732. WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\" \\\"\\\" \\\"Open in LOVE\\\"
  1733. WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\\command\\\" \\\"\\\" \\\"$INSTDIR\\\\love.exe $\\\\\\\"%1$\\\\\\\"\\\"
  1734. System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
  1735. ")
  1736. set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
  1737. DeleteRegKey HKCR \\\"LOVE\\\"
  1738. DeleteRegKey HKCR \\\".love\\\"
  1739. System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
  1740. ")
  1741. include(CPack)