Build each module as its own static library

Which means everything still mostly behaves the same, except we now have
cmake targets which we can manipulate, rather than a bunch of global
variables.

For ease of use I've matched the existing variables, so love.event is
split into love_event_root and love_event_sdl, and there is a separate
(pseudo) target love_event which combines them both.

I have also simplified the windows-specific additions to liblove.
Instead of altering the variables, they now just add to the liblove
target.

Unfortunately, it does mean we lose the global include directory list,
so we need to add dependencies on a per-module basis. The upside is that
this more accurately models the dependencies. If you remove a module,
its dependencies should now automatically go unused.
This commit is contained in:
Bart van Strien
2024-02-17 11:42:14 +01:00
parent 032e30b8ef
commit 89cffddb15
+295 -228
View File
@@ -247,7 +247,7 @@ endfunction()
# common
#
set(LOVE_SRC_COMMON
add_library(love_common STATIC
src/common/android.cpp
src/common/android.h
src/common/b64.cpp
@@ -297,23 +297,27 @@ set(LOVE_SRC_COMMON
src/common/Vector.h
src/common/version.h
)
target_link_libraries(love_common PUBLIC
lovedep::Lua
lovedep::SDL2
)
if (APPLE)
set(LOVE_SRC_COMMON ${LOVE_SRC_COMMON}
target_sources(love_common PRIVATE
src/common/macos.mm
)
set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} objc)
set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} "-framework CoreFoundation")
set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES} "-framework AppKit")
target_link_libraries(love_common PUBLIC
objc
"-framework CoreFoundation"
"-framework AppKit"
)
endif()
source_group("common" FILES ${LOVE_SRC_COMMON})
#
# love.audio
#
set(LOVE_SRC_MODULE_AUDIO_ROOT
add_library(love_audio_root STATIC
src/modules/audio/Audio.cpp
src/modules/audio/Audio.h
src/modules/audio/Source.cpp
@@ -331,8 +335,12 @@ set(LOVE_SRC_MODULE_AUDIO_ROOT
src/modules/audio/wrap_RecordingDevice.cpp
src/modules/audio/wrap_RecordingDevice.h
)
target_link_libraries(love_audio_root PUBLIC
lovedep::Lua
lovedep::OpenAL
)
set(LOVE_SRC_MODULE_AUDIO_NULL
add_library(love_audio_null STATIC
src/modules/audio/null/Audio.cpp
src/modules/audio/null/Audio.h
src/modules/audio/null/Source.cpp
@@ -341,7 +349,7 @@ set(LOVE_SRC_MODULE_AUDIO_NULL
src/modules/audio/null/RecordingDevice.h
)
set(LOVE_SRC_MODULE_AUDIO_OPENAL
add_library(love_audio_openal STATIC
src/modules/audio/openal/Audio.cpp
src/modules/audio/openal/Audio.h
src/modules/audio/openal/Pool.cpp
@@ -355,22 +363,22 @@ set(LOVE_SRC_MODULE_AUDIO_OPENAL
src/modules/audio/openal/Effect.cpp
src/modules/audio/openal/Effect.h
)
set(LOVE_SRC_MODULE_AUDIO
${LOVE_SRC_MODULE_AUDIO_ROOT}
${LOVE_SRC_MODULE_AUDIO_NULL}
${LOVE_SRC_MODULE_AUDIO_OPENAL}
target_link_libraries(love_audio_openal PUBLIC
lovedep::OpenAL
)
source_group("modules\\audio" FILES ${LOVE_SRC_MODULE_AUDIO_ROOT})
source_group("modules\\audio\\null" FILES ${LOVE_SRC_MODULE_AUDIO_NULL})
source_group("modules\\audio\\openal" FILES ${LOVE_SRC_MODULE_AUDIO_OPENAL})
add_library(love_audio INTERFACE)
target_link_libraries(love_audio INTERFACE
love_audio_root
love_audio_null
love_audio_openal
)
#
# love.data
#
set(LOVE_SRC_MODULE_DATA
add_library(love_data STATIC
src/modules/data/ByteData.cpp
src/modules/data/ByteData.h
src/modules/data/CompressedData.cpp
@@ -396,38 +404,45 @@ set(LOVE_SRC_MODULE_DATA
src/modules/data/wrap_DataView.cpp
src/modules/data/wrap_DataView.h
)
source_group("modules\\data" FILES ${LOVE_SRC_MODULE_DATA})
target_link_libraries(love_data PUBLIC
lovedep::Lua
lovedep::Zlib
)
#
# love.event
#
set(LOVE_SRC_MODULE_EVENT_ROOT
add_library(love_event_root STATIC
src/modules/event/Event.cpp
src/modules/event/Event.h
src/modules/event/wrap_Event.cpp
src/modules/event/wrap_Event.h
)
target_link_libraries(love_event_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_EVENT_SDL
add_library(love_event_sdl STATIC
src/modules/event/sdl/Event.cpp
src/modules/event/sdl/Event.h
)
set(LOVE_SRC_MODULE_EVENT
${LOVE_SRC_MODULE_EVENT_ROOT}
${LOVE_SRC_MODULE_EVENT_SDL}
target_link_libraries(love_event_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\event" FILES ${LOVE_SRC_MODULE_EVENT_ROOT})
source_group("modules\\event\\sdl" FILES ${LOVE_SRC_MODULE_EVENT_SDL})
add_library(love_event INTERFACE)
target_link_libraries(love_event INTERFACE
love_event_root
love_event_sdl
)
#
# love.filesystem
#
set(LOVE_SRC_MODULE_FILESYSTEM_ROOT
add_library(love_filesystem_root STATIC
src/modules/filesystem/File.cpp
src/modules/filesystem/File.h
src/modules/filesystem/FileData.cpp
@@ -445,8 +460,12 @@ set(LOVE_SRC_MODULE_FILESYSTEM_ROOT
src/modules/filesystem/wrap_NativeFile.cpp
src/modules/filesystem/wrap_NativeFile.h
)
target_link_libraries(love_filesystem_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_FILESYSTEM_PHYSFS
add_library(love_filesystem_physfs STATIC
src/modules/filesystem/physfs/File.cpp
src/modules/filesystem/physfs/File.h
src/modules/filesystem/physfs/Filesystem.cpp
@@ -454,20 +473,23 @@ set(LOVE_SRC_MODULE_FILESYSTEM_PHYSFS
src/modules/filesystem/physfs/PhysfsIo.h
src/modules/filesystem/physfs/PhysfsIo.cpp
)
if(ANDROID)
target_link_libraries(love_filesystem_physfs PUBLIC
lovedep::SDL2
)
endif()
set(LOVE_SRC_MODULE_FILESYSTEM
${LOVE_SRC_MODULE_FILESYSTEM_ROOT}
${LOVE_SRC_MODULE_FILESYSTEM_PHYSFS}
add_library(love_filesystem INTERFACE)
target_link_libraries(love_filesystem INTERFACE
love_filesystem_root
love_filesystem_physfs
)
source_group("modules\\filesystem" FILES ${LOVE_SRC_MODULE_FILESYSTEM_ROOT})
source_group("modules\\filesystem\\physfs" FILES ${LOVE_SRC_MODULE_FILESYSTEM_PHYSFS})
#
# love.font
#
set(LOVE_SRC_MODULE_FONT_ROOT
add_library(love_font_root STATIC
src/modules/font/BMFontRasterizer.cpp
src/modules/font/BMFontRasterizer.h
src/modules/font/Font.cpp
@@ -491,8 +513,12 @@ set(LOVE_SRC_MODULE_FONT_ROOT
src/modules/font/wrap_Rasterizer.cpp
src/modules/font/wrap_Rasterizer.h
)
target_link_libraries(love_font_root PUBLIC
lovedep::Lua
lovedep::Freetype
)
set(LOVE_SRC_MODULE_FONT_FREETYPE
add_library(love_font_freetype STATIC
src/modules/font/freetype/Font.cpp
src/modules/font/freetype/Font.h
src/modules/font/freetype/HarfbuzzShaper.cpp
@@ -500,20 +526,22 @@ set(LOVE_SRC_MODULE_FONT_FREETYPE
src/modules/font/freetype/TrueTypeRasterizer.cpp
src/modules/font/freetype/TrueTypeRasterizer.h
)
set(LOVE_SRC_MODULE_FONT
${LOVE_SRC_MODULE_FONT_ROOT}
${LOVE_SRC_MODULE_FONT_FREETYPE}
target_link_libraries(love_font_freetype PUBLIC
lovedep::Freetype
lovedep::Harfbuzz
)
source_group("modules\\font" FILES ${LOVE_SRC_MODULE_FONT_ROOT})
source_group("modules\\font\\freetype" FILES ${LOVE_SRC_MODULE_FONT_FREETYPE})
add_library(love_font INTERFACE)
target_link_libraries(love_font INTERFACE
love_font_root
love_font_freetype
)
#
# love.graphics
#
set(LOVE_SRC_MODULE_GRAPHICS_ROOT
add_library(love_graphics_root STATIC
src/modules/graphics/Buffer.cpp
src/modules/graphics/Buffer.h
src/modules/graphics/Deprecations.cpp
@@ -580,8 +608,11 @@ set(LOVE_SRC_MODULE_GRAPHICS_ROOT
src/modules/graphics/wrap_Video.cpp
src/modules/graphics/wrap_Video.h
)
target_link_libraries(love_graphics_root PUBLIC
lovedep::Lua
)
set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
add_library(love_graphics_opengl STATIC
src/modules/graphics/opengl/Buffer.cpp
src/modules/graphics/opengl/Buffer.h
src/modules/graphics/opengl/FenceSync.cpp
@@ -601,8 +632,11 @@ set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
src/modules/graphics/opengl/Texture.cpp
src/modules/graphics/opengl/Texture.h
)
target_link_libraries(love_graphics_opengl PUBLIC
lovedep::SDL2
)
set(LOVE_SRC_MODULE_GRAPHICS_VULKAN
add_library(love_graphics_vulkan STATIC
src/modules/graphics/vulkan/Graphics.h
src/modules/graphics/vulkan/Graphics.cpp
src/modules/graphics/vulkan/GraphicsReadback.h
@@ -619,23 +653,24 @@ set(LOVE_SRC_MODULE_GRAPHICS_VULKAN
src/modules/graphics/vulkan/Texture.cpp
src/modules/graphics/vulkan/Vulkan.h
src/modules/graphics/vulkan/Vulkan.cpp
src/modules/graphics/vulkan/VulkanWrapper.h)
set(LOVE_SRC_MODULE_GRAPHICS
${LOVE_SRC_MODULE_GRAPHICS_ROOT}
${LOVE_SRC_MODULE_GRAPHICS_OPENGL}
${LOVE_SRC_MODULE_GRAPHICS_VULKAN}
src/modules/graphics/vulkan/VulkanWrapper.h
)
target_link_libraries(love_graphics_vulkan PUBLIC
lovedep::SDL2
)
source_group("modules\\graphics" FILES ${LOVE_SRC_MODULE_GRAPHICS_ROOT})
source_group("modules\\graphics\\opengl" FILES ${LOVE_SRC_MODULE_GRAPHICS_OPENGL})
source_group("modules\\graphics\\vulkan" FILES ${LOVE_SRC_MODULE_GRAPHICS_VULKAN})
add_library(love_graphics INTERFACE)
target_link_libraries(love_graphics INTERFACE
love_graphics_root
love_graphics_opengl
love_graphics_vulkan
)
#
# love.image
#
set(LOVE_SRC_MODULE_IMAGE_ROOT
add_library(love_image_root STATIC
src/modules/image/CompressedImageData.cpp
src/modules/image/CompressedImageData.h
src/modules/image/CompressedSlice.cpp
@@ -655,8 +690,11 @@ set(LOVE_SRC_MODULE_IMAGE_ROOT
src/modules/image/wrap_ImageData.cpp
src/modules/image/wrap_ImageData.h
)
target_link_libraries(love_image_root PUBLIC
lovedep::Lua
)
set(LOVE_SRC_MODULE_IMAGE_MAGPIE
add_library(love_image_magpie STATIC
src/modules/image/magpie/ASTCHandler.cpp
src/modules/image/magpie/ASTCHandler.h
src/modules/image/magpie/ddsHandler.cpp
@@ -674,20 +712,21 @@ set(LOVE_SRC_MODULE_IMAGE_MAGPIE
src/modules/image/magpie/STBHandler.cpp
src/modules/image/magpie/STBHandler.h
)
set(LOVE_SRC_MODULE_IMAGE
${LOVE_SRC_MODULE_IMAGE_ROOT}
${LOVE_SRC_MODULE_IMAGE_MAGPIE}
target_link_libraries(love_image_magpie PUBLIC
lovedep::Zlib
)
source_group("modules\\image" FILES ${LOVE_SRC_MODULE_IMAGE_ROOT})
source_group("modules\\image\\magpie" FILES ${LOVE_SRC_MODULE_IMAGE_MAGPIE})
add_library(love_image INTERFACE)
target_link_libraries(love_image INTERFACE
love_image_root
love_image_magpie
)
#
# love.joystick
#
set(LOVE_SRC_MODULE_JOYSTICK_ROOT
add_library(love_joystick_root STATIC
src/modules/joystick/Joystick.cpp
src/modules/joystick/Joystick.h
src/modules/joystick/JoystickModule.h
@@ -696,51 +735,60 @@ set(LOVE_SRC_MODULE_JOYSTICK_ROOT
src/modules/joystick/wrap_JoystickModule.cpp
src/modules/joystick/wrap_JoystickModule.h
)
target_link_libraries(love_joystick_root PUBLIC
lovedep::Lua
)
set(LOVE_SRC_MODULE_JOYSTICK_SDL
add_library(love_joystick_sdl STATIC
src/modules/joystick/sdl/Joystick.cpp
src/modules/joystick/sdl/Joystick.h
src/modules/joystick/sdl/JoystickModule.cpp
src/modules/joystick/sdl/JoystickModule.h
)
set(LOVE_SRC_MODULE_JOYSTICK
${LOVE_SRC_MODULE_JOYSTICK_ROOT}
${LOVE_SRC_MODULE_JOYSTICK_SDL}
target_link_libraries(love_joystick_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\joystick" FILES ${LOVE_SRC_MODULE_JOYSTICK_ROOT})
source_group("modules\\joystick\\sdl" FILES ${LOVE_SRC_MODULE_JOYSTICK_SDL})
add_library(love_joystick INTERFACE)
target_link_libraries(love_joystick INTERFACE
love_joystick_root
love_joystick_sdl
)
#
# love.keyboard
#
set(LOVE_SRC_MODULE_KEYBOARD_ROOT
add_library(love_keyboard_root STATIC
src/modules/keyboard/Keyboard.cpp
src/modules/keyboard/Keyboard.h
src/modules/keyboard/wrap_Keyboard.cpp
src/modules/keyboard/wrap_Keyboard.h
)
target_link_libraries(love_keyboard_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_KEYBOARD_SDL
add_library(love_keyboard_sdl STATIC
src/modules/keyboard/sdl/Keyboard.cpp
src/modules/keyboard/sdl/Keyboard.h
)
set(LOVE_SRC_MODULE_KEYBOARD
${LOVE_SRC_MODULE_KEYBOARD_ROOT}
${LOVE_SRC_MODULE_KEYBOARD_SDL}
target_link_libraries(love_keyboard_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\keyboard" FILES ${LOVE_SRC_MODULE_KEYBOARD_ROOT})
source_group("modules\\keyboard\\sdl" FILES ${LOVE_SRC_MODULE_KEYBOARD_SDL})
add_library(love_keyboard INTERFACE)
target_link_libraries(love_keyboard INTERFACE
love_keyboard_root
love_keyboard_sdl
)
#
# love.math
#
set(LOVE_SRC_MODULE_MATH
add_library(love_math STATIC
src/modules/math/BezierCurve.cpp
src/modules/math/BezierCurve.h
src/modules/math/MathModule.cpp
@@ -758,24 +806,15 @@ set(LOVE_SRC_MODULE_MATH
src/modules/math/wrap_Transform.cpp
src/modules/math/wrap_Transform.h
)
source_group("modules\\math" FILES ${LOVE_SRC_MODULE_MATH})
#
# love (module)
#
set(LOVE_SRC_MODULE_LOVE
src/modules/love/love.cpp
src/modules/love/love.h
target_link_libraries(love_math PUBLIC
lovedep::Lua
)
source_group("modules\\love" FILES ${LOVE_SRC_MODULE_LOVE})
#
# love.mouse
#
set(LOVE_SRC_MODULE_MOUSE_ROOT
add_library(love_mouse_root STATIC
src/modules/mouse/Cursor.cpp
src/modules/mouse/Cursor.h
src/modules/mouse/Mouse.h
@@ -784,27 +823,32 @@ set(LOVE_SRC_MODULE_MOUSE_ROOT
src/modules/mouse/wrap_Mouse.cpp
src/modules/mouse/wrap_Mouse.h
)
target_link_libraries(love_mouse_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_MOUSE_SDL
add_library(love_mouse_sdl STATIC
src/modules/mouse/sdl/Cursor.cpp
src/modules/mouse/sdl/Cursor.h
src/modules/mouse/sdl/Mouse.cpp
src/modules/mouse/sdl/Mouse.h
)
set(LOVE_SRC_MODULE_MOUSE
${LOVE_SRC_MODULE_MOUSE_ROOT}
${LOVE_SRC_MODULE_MOUSE_SDL}
target_link_libraries(love_mouse_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\mouse" FILES ${LOVE_SRC_MODULE_MOUSE_ROOT})
source_group("modules\\mouse\\sdl" FILES ${LOVE_SRC_MODULE_MOUSE_SDL})
add_library(love_mouse INTERFACE)
target_link_libraries(love_mouse INTERFACE
love_mouse_root
love_mouse_sdl
)
#
# love.physics
#
set(LOVE_SRC_MODULE_PHYSICS_ROOT
add_library(love_physics_root STATIC
src/modules/physics/Body.cpp
src/modules/physics/Body.h
src/modules/physics/Joint.cpp
@@ -813,7 +857,7 @@ set(LOVE_SRC_MODULE_PHYSICS_ROOT
src/modules/physics/Shape.h
)
set(LOVE_SRC_MODULE_PHYSICS_BOX2D
add_library(love_physics_box2d STATIC
src/modules/physics/box2d/Body.cpp
src/modules/physics/box2d/Body.h
src/modules/physics/box2d/ChainShape.cpp
@@ -899,44 +943,50 @@ set(LOVE_SRC_MODULE_PHYSICS_BOX2D
src/modules/physics/box2d/wrap_World.cpp
src/modules/physics/box2d/wrap_World.h
)
set(LOVE_SRC_MODULE_PHYSICS
${LOVE_SRC_MODULE_PHYSICS_ROOT}
${LOVE_SRC_MODULE_PHYSICS_BOX2D}
target_link_libraries(love_physics_box2d PUBLIC
lovedep::Lua
)
source_group("modules\\physics" FILES ${LOVE_SRC_MODULE_PHYSICS_ROOT})
source_group("modules\\physics\\box2d" FILES ${LOVE_SRC_MODULE_PHYSICS_BOX2D})
add_library(love_physics INTERFACE)
target_link_libraries(love_physics INTERFACE
love_physics_root
love_physics_box2d
)
#
# love.sensor
#
set(LOVE_SRC_MODULE_SENSOR_ROOT
add_library(love_sensor_root STATIC
src/modules/sensor/Sensor.cpp
src/modules/sensor/Sensor.h
src/modules/sensor/wrap_Sensor.cpp
src/modules/sensor/wrap_Sensor.h
)
target_link_libraries(love_sensor_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_SENSOR_SDL
add_library(love_sensor_sdl STATIC
src/modules/sensor/sdl/Sensor.cpp
src/modules/sensor/sdl/Sensor.h
)
set(LOVE_SRC_MODULE_SENSOR
${LOVE_SRC_MODULE_SENSOR_ROOT}
${LOVE_SRC_MODULE_SENSOR_SDL}
target_link_libraries(love_sensor_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\sensor" FILES ${LOVE_SRC_MODULE_SENSOR_ROOT})
source_group("modules\\sensor\\sdl" FILES ${LOVE_SRC_MODULE_SENSOR_SDL})
add_library(love_sensor INTERFACE)
target_link_libraries(love_sensor INTERFACE
love_sensor_root
love_sensor_sdl
)
#
# love.sound
#
set(LOVE_SRC_MODULE_SOUND_ROOT
add_library(love_sound_root STATIC
src/modules/sound/Decoder.cpp
src/modules/sound/Decoder.h
src/modules/sound/Sound.cpp
@@ -950,8 +1000,11 @@ set(LOVE_SRC_MODULE_SOUND_ROOT
src/modules/sound/wrap_SoundData.cpp
src/modules/sound/wrap_SoundData.h
)
target_link_libraries(love_sound_root PUBLIC
lovedep::Lua
)
set(LOVE_SRC_MODULE_SOUND_LULLABY
add_library(love_sound_lullaby STATIC
src/modules/sound/lullaby/FLACDecoder.cpp
src/modules/sound/lullaby/FLACDecoder.h
src/modules/sound/lullaby/ModPlugDecoder.cpp
@@ -965,44 +1018,52 @@ set(LOVE_SRC_MODULE_SOUND_LULLABY
src/modules/sound/lullaby/WaveDecoder.cpp
src/modules/sound/lullaby/WaveDecoder.h
)
set(LOVE_SRC_MODULE_SOUND
${LOVE_SRC_MODULE_SOUND_ROOT}
${LOVE_SRC_MODULE_SOUND_LULLABY}
target_link_libraries(love_sound_lullaby PUBLIC
lovedep::Modplug
lovedep::Vorbis
lovedep::Ogg
)
source_group("modules\\sound" FILES ${LOVE_SRC_MODULE_SOUND_ROOT})
source_group("modules\\sound\\lullaby" FILES ${LOVE_SRC_MODULE_SOUND_LULLABY})
add_library(love_sound INTERFACE)
target_link_libraries(love_sound INTERFACE
love_sound_root
love_sound_lullaby
)
#
# love.system
#
set(LOVE_SRC_MODULE_SYSTEM_ROOT
add_library(love_system_root STATIC
src/modules/system/System.cpp
src/modules/system/System.h
src/modules/system/wrap_System.cpp
src/modules/system/wrap_System.h
)
target_link_libraries(love_system_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_SYSTEM_SDL
add_library(love_system_sdl STATIC
src/modules/system/sdl/System.cpp
src/modules/system/sdl/System.h
)
set(LOVE_SRC_MODULE_SYSTEM
${LOVE_SRC_MODULE_SYSTEM_ROOT}
${LOVE_SRC_MODULE_SYSTEM_SDL}
target_link_libraries(love_system_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\system" FILES ${LOVE_SRC_MODULE_SYSTEM_ROOT})
source_group("modules\\system\\sdl" FILES ${LOVE_SRC_MODULE_SYSTEM_SDL})
add_library(love_system INTERFACE)
target_link_libraries(love_system INTERFACE
love_system_root
love_system_sdl
)
#
# love.thread
#
set(LOVE_SRC_MODULE_THREAD_ROOT
add_library(love_thread_root STATIC
src/modules/thread/Channel.cpp
src/modules/thread/Channel.h
src/modules/thread/LuaThread.cpp
@@ -1019,63 +1080,72 @@ set(LOVE_SRC_MODULE_THREAD_ROOT
src/modules/thread/wrap_ThreadModule.cpp
src/modules/thread/wrap_ThreadModule.h
)
target_link_libraries(love_thread_root PUBLIC
lovedep::Lua
)
set(LOVE_SRC_MODULE_THREAD_SDL
add_library(love_thread_sdl STATIC
src/modules/thread/sdl/Thread.cpp
src/modules/thread/sdl/Thread.h
src/modules/thread/sdl/threads.cpp
src/modules/thread/sdl/threads.h
)
set(LOVE_SRC_MODULE_THREAD
${LOVE_SRC_MODULE_THREAD_ROOT}
${LOVE_SRC_MODULE_THREAD_SDL}
target_link_libraries(love_thread_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\thread" FILES ${LOVE_SRC_MODULE_THREAD_ROOT})
source_group("modules\\thread\\sdl" FILES ${LOVE_SRC_MODULE_THREAD_SDL})
add_library(love_thread INTERFACE)
target_link_libraries(love_thread INTERFACE
love_thread_root
love_thread_sdl
)
#
# love.timer
#
set(LOVE_SRC_MODULE_TIMER
add_library(love_timer STATIC
src/modules/timer/Timer.cpp
src/modules/timer/Timer.h
src/modules/timer/wrap_Timer.cpp
src/modules/timer/wrap_Timer.h
)
source_group("modules\\timer" FILES ${LOVE_SRC_MODULE_TIMER})
target_link_libraries(love_timer PUBLIC
lovedep::Lua
)
#
# love.touch
#
set(LOVE_SRC_MODULE_TOUCH_ROOT
add_library(love_touch_root STATIC
src/modules/touch/Touch.h
src/modules/touch/wrap_Touch.cpp
src/modules/touch/wrap_Touch.h
)
target_link_libraries(love_touch_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_TOUCH_SDL
add_library(love_touch_sdl STATIC
src/modules/touch/sdl/Touch.cpp
src/modules/touch/sdl/Touch.h
)
set(LOVE_SRC_MODULE_TOUCH
${LOVE_SRC_MODULE_TOUCH_ROOT}
${LOVE_SRC_MODULE_TOUCH_SDL}
target_link_libraries(love_touch_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\touch" FILES ${LOVE_SRC_MODULE_TOUCH_ROOT})
source_group("modules\\touch\\sdl" FILES ${LOVE_SRC_MODULE_TOUCH_SDL})
add_library(love_touch INTERFACE)
target_link_libraries(love_touch INTERFACE
love_touch_root
love_touch_sdl
)
#
# love.video
#
set(LOVE_SRC_MODULE_VIDEO_ROOT
add_library(love_video_root STATIC
src/modules/video/Video.h
src/modules/video/VideoStream.cpp
src/modules/video/VideoStream.h
@@ -1084,8 +1154,13 @@ set(LOVE_SRC_MODULE_VIDEO_ROOT
src/modules/video/wrap_VideoStream.cpp
src/modules/video/wrap_VideoStream.h
)
target_link_libraries(love_video_root PUBLIC
lovedep::Lua
lovedep::Theora
lovedep::Ogg
)
set(LOVE_SRC_MODULE_VIDEO_THEORA
add_library(love_video_theora STATIC
src/modules/video/theora/Video.cpp
src/modules/video/theora/Video.h
src/modules/video/theora/OggDemuxer.cpp
@@ -1093,38 +1168,45 @@ set(LOVE_SRC_MODULE_VIDEO_THEORA
src/modules/video/theora/TheoraVideoStream.cpp
src/modules/video/theora/TheoraVideoStream.h
)
set(LOVE_SRC_MODULE_VIDEO
${LOVE_SRC_MODULE_VIDEO_ROOT}
${LOVE_SRC_MODULE_VIDEO_THEORA}
target_link_libraries(love_video_theora PUBLIC
lovedep::Theora
lovedep::Ogg
)
source_group("modules\\video" FILES ${LOVE_SRC_MODULE_VIDEO_ROOT})
source_group("modules\\video\\theora" FILES ${LOVE_SRC_MODULE_VIDEO_THEORA})
add_library(love_video INTERFACE)
target_link_libraries(love_video INTERFACE
love_video_root
love_video_theora
)
#
# love.window
#
set(LOVE_SRC_MODULE_WINDOW_ROOT
add_library(love_window_root STATIC
src/modules/window/Window.cpp
src/modules/window/Window.h
src/modules/window/wrap_Window.cpp
src/modules/window/wrap_Window.h
)
target_link_libraries(love_window_root PUBLIC
lovedep::Lua
lovedep::SDL2
)
set(LOVE_SRC_MODULE_WINDOW_SDL
add_library(love_window_sdl STATIC
src/modules/window/sdl/Window.cpp
src/modules/window/sdl/Window.h
)
set(LOVE_SRC_MODULE_WINDOW
${LOVE_SRC_MODULE_WINDOW_ROOT}
${LOVE_SRC_MODULE_WINDOW_SDL}
target_link_libraries(love_window_sdl PUBLIC
lovedep::SDL2
)
source_group("modules\\window" FILES ${LOVE_SRC_MODULE_WINDOW_ROOT})
source_group("modules\\window\\sdl" FILES ${LOVE_SRC_MODULE_WINDOW_SDL})
add_library(love_window INTERFACE)
target_link_libraries(love_window INTERFACE
love_window_root
love_window_sdl
)
###################################
# Third-party libraries
@@ -1745,32 +1827,6 @@ add_library(love_3p_xxhash
#
# liblove
#
set(LOVE_LIB_SRC
${LOVE_SRC_COMMON}
# Modules
${LOVE_SRC_MODULE_AUDIO}
${LOVE_SRC_MODULE_DATA}
${LOVE_SRC_MODULE_EVENT}
${LOVE_SRC_MODULE_FILESYSTEM}
${LOVE_SRC_MODULE_FONT}
${LOVE_SRC_MODULE_GRAPHICS}
${LOVE_SRC_MODULE_IMAGE}
${LOVE_SRC_MODULE_JOYSTICK}
${LOVE_SRC_MODULE_KEYBOARD}
${LOVE_SRC_MODULE_LOVE}
${LOVE_SRC_MODULE_MATH}
${LOVE_SRC_MODULE_MOUSE}
${LOVE_SRC_MODULE_PHYSICS}
${LOVE_SRC_MODULE_SENSOR}
${LOVE_SRC_MODULE_SOUND}
${LOVE_SRC_MODULE_SYSTEM}
${LOVE_SRC_MODULE_THREAD}
${LOVE_SRC_MODULE_TIMER}
${LOVE_SRC_MODULE_TOUCH}
${LOVE_SRC_MODULE_VIDEO}
${LOVE_SRC_MODULE_WINDOW}
)
include_directories(
BEFORE
src
@@ -1781,45 +1837,43 @@ include_directories(
link_directories(${LOVE_LINK_DIRS})
set(LOVE_RC)
if(MSVC OR MINGW)
set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES}
ws2_32${WIN32_LIB_EXT}
winmm${WIN32_LIB_EXT}
dwmapi${WIN32_LIB_EXT}
)
set(LOVE_RC
extra/windows/love.rc
extra/windows/love.ico
)
if(MINGW)
# UTF-16 flags passed to windres. windres invokes gcc as preprocessor
# -> gcc outputs utf8, so windres must read-in codepage 65001 (utf8)
set(CMAKE_RC_FLAGS ${CMAKE_RC_FLAGS} "-c 65001 --preprocessor-arg=-finput-charset=UTF-16LE")
endif()
if(MINGW)
# UTF-16 flags passed to windres. windres invokes gcc as preprocessor
# -> gcc outputs utf8, so windres must read-in codepage 65001 (utf8)
set(CMAKE_RC_FLAGS ${CMAKE_RC_FLAGS} "-c 65001 --preprocessor-arg=-finput-charset=UTF-16LE")
endif()
add_library(liblove SHARED ${LOVE_LIB_SRC} ${LOVE_RC})
add_library(liblove SHARED
src/modules/love/love.cpp
src/modules/love/love.h
)
set_target_properties(liblove PROPERTIES
C_VISIBILITY_PRESET hidden
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON
LIBRARY_OUTPUT_NAME "${LOVE_LIB_NAME}")
target_link_libraries(liblove
lovedep::SDL2
lovedep::Freetype
lovedep::Harfbuzz
lovedep::OpenAL
lovedep::Modplug
lovedep::Theora
lovedep::Vorbis
lovedep::Lua
lovedep::Ogg
lovedep::Zlib
lovedep::Lua
love_common
love_audio
love_data
love_event
love_filesystem
love_font
love_graphics
love_image
love_joystick
love_keyboard
love_math
love_mouse
love_physics
love_sensor
love_sound
love_system
love_thread
love_timer
love_touch
love_video
love_window
love_3p_box2d
love_3p_ddsparse
love_3p_enet
@@ -1846,6 +1900,19 @@ if(MSVC)
set_target_properties(liblove PROPERTIES DEBUG_OUTPUT_NAME "love" PDB_NAME "liblove" IMPORT_PREFIX "lib")
endif()
if(MSVC OR MINGW)
target_link_libraries(liblove
ws2_32${WIN32_LIB_EXT}
winmm${WIN32_LIB_EXT}
dwmapi${WIN32_LIB_EXT}
)
target_sources(liblove PUBLIC
extra/windows/love.rc
extra/windows/love.ico
)
endif()
#
# love (executable)
#
@@ -1856,7 +1923,7 @@ else()
add_executable(love WIN32)
endif()
target_sources(love PRIVATE src/love.cpp ${LOVE_RC})
target_sources(love PRIVATE src/love.cpp)
target_link_libraries(love liblove)
set_target_properties(love PROPERTIES
C_VISIBILITY_PRESET hidden
@@ -1865,7 +1932,7 @@ set_target_properties(love PROPERTIES
OUTPUT_NAME ${LOVE_EXE_NAME})
if(MSVC OR MINGW)
add_executable(lovec src/love.cpp ${LOVE_RC})
add_executable(lovec src/love.cpp)
target_link_libraries(lovec liblove)
set_target_properties(lovec PROPERTIES
OUTPUT_NAME ${LOVE_CONSOLE_EXE_NAME})