mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
Use custom targets for dependencies
Not the most beautiful system, but provides us with a simple way to unify megasource and non-megasource builds. Also replaces LOVE_LUA_LIBRARY, since we now have a target to name.
This commit is contained in:
+81
-93
@@ -98,16 +98,22 @@ endif()
|
|||||||
|
|
||||||
message(STATUS "Target platform: ${LOVE_TARGET_PLATFORM}")
|
message(STATUS "Target platform: ${LOVE_TARGET_PLATFORM}")
|
||||||
|
|
||||||
|
add_library(lovedep::SDL2 INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Freetype INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Harfbuzz INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::OpenAL INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Modplug INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Theora INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Vorbis INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Ogg INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Zlib INTERFACE IMPORTED)
|
||||||
|
add_library(lovedep::Lua INTERFACE IMPORTED)
|
||||||
|
|
||||||
if(MEGA)
|
if(MEGA)
|
||||||
# LOVE_MSVC_DLLS contains runtime DLLs that should be bundled with the love
|
# LOVE_MSVC_DLLS contains runtime DLLs that should be bundled with the love
|
||||||
# binary (in e.g. the installer). Example: msvcp140.dll.
|
# binary (in e.g. the installer). Example: msvcp140.dll.
|
||||||
set(LOVE_MSVC_DLLS ${MEGA_MSVC_DLLS})
|
set(LOVE_MSVC_DLLS ${MEGA_MSVC_DLLS})
|
||||||
|
|
||||||
# LOVE_INCLUDE_DIRS contains the search directories for #include. It's mostly
|
|
||||||
# not needed for MEGA builds, since almost all the libraries (except LuaJIT)
|
|
||||||
# are CMake targets, causing include paths to be added automatically.
|
|
||||||
set(LOVE_INCLUDE_DIRS)
|
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
# Some files do #include <SDL2/SDL.h>, but building with megasource
|
# Some files do #include <SDL2/SDL.h>, but building with megasource
|
||||||
# requires #include <SDL.h>.
|
# requires #include <SDL.h>.
|
||||||
@@ -118,20 +124,6 @@ if(MEGA)
|
|||||||
# pull those libraries in for linkage because we link with SDL2.
|
# pull those libraries in for linkage because we link with SDL2.
|
||||||
set(LOVE_LINK_DIRS ${SDL_LINK_DIR})
|
set(LOVE_LINK_DIRS ${SDL_LINK_DIR})
|
||||||
|
|
||||||
set(LOVE_LINK_LIBRARIES
|
|
||||||
${MEGA_FREETYPE}
|
|
||||||
${MEGA_HARFBUZZ}
|
|
||||||
${MEGA_LIBOGG}
|
|
||||||
${MEGA_LIBVORBISFILE}
|
|
||||||
${MEGA_LIBVORBIS}
|
|
||||||
${MEGA_LIBTHEORA}
|
|
||||||
${MEGA_MODPLUG}
|
|
||||||
${MEGA_OPENAL}
|
|
||||||
${MEGA_SDL2MAIN}
|
|
||||||
${MEGA_SDL2}
|
|
||||||
${MEGA_ZLIB}
|
|
||||||
)
|
|
||||||
|
|
||||||
# These DLLs are moved next to the love binary in a post-build step to
|
# These DLLs are moved next to the love binary in a post-build step to
|
||||||
# love runnable from inside Visual Studio.
|
# love runnable from inside Visual Studio.
|
||||||
#
|
#
|
||||||
@@ -151,36 +143,33 @@ if(MEGA)
|
|||||||
set(LOVE_EXTRA_DLLS)
|
set(LOVE_EXTRA_DLLS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(lovedep::SDL2 INTERFACE ${MEGA_SDL2} ${MEGA_SDL2MAIN})
|
||||||
|
target_link_libraries(lovedep::Freetype INTERFACE ${MEGA_FREETYPE})
|
||||||
|
target_link_libraries(lovedep::Harfbuzz INTERFACE ${MEGA_HARFBUZZ})
|
||||||
|
target_link_libraries(lovedep::OpenAL INTERFACE ${MEGA_OPENAL})
|
||||||
|
target_link_libraries(lovedep::Modplug INTERFACE ${MEGA_MODPLUG})
|
||||||
|
target_link_libraries(lovedep::Theora INTERFACE ${MEGA_LIBTHEORA})
|
||||||
|
target_link_libraries(lovedep::Vorbis INTERFACE ${MEGA_LIBVORBIS} ${MEGA_LIBVORBISFILE})
|
||||||
|
target_link_libraries(lovedep::Ogg INTERFACE ${MEGA_LIBOGG})
|
||||||
|
target_link_libraries(lovedep::Zlib INTERFACE ${MEGA_ZLIB})
|
||||||
|
|
||||||
if(LOVE_JIT)
|
if(LOVE_JIT)
|
||||||
set(LOVE_LUA_LIBRARY ${MEGA_LUAJIT_LIB})
|
target_include_directories(lovedep::Lua INTERFACE ${MEGA_LUAJIT_INCLUDE})
|
||||||
|
target_link_libraries(lovedep::Lua INTERFACE ${MEGA_LUAJIT_LIB})
|
||||||
set(LOVE_EXTRA_DLLS ${LOVE_EXTRA_DLLS} ${MEGA_LUAJIT_DLL})
|
set(LOVE_EXTRA_DLLS ${LOVE_EXTRA_DLLS} ${MEGA_LUAJIT_DLL})
|
||||||
set(LOVE_EXTRA_DEPENDECIES luajit)
|
set(LOVE_EXTRA_DEPENDECIES luajit)
|
||||||
|
|
||||||
set(LOVE_INCLUDE_DIRS
|
|
||||||
${LOVE_INCLUDE_DIRS}
|
|
||||||
${MEGA_LUAJIT_INCLUDE}
|
|
||||||
)
|
|
||||||
set(LOVE_LINK_LIBRARIES
|
|
||||||
${LOVE_LINK_LIBRARIES}
|
|
||||||
${LOVE_LUA_LIBRARY}
|
|
||||||
)
|
|
||||||
set(LOVE_MOVE_DLLS
|
set(LOVE_MOVE_DLLS
|
||||||
${LOVE_MOVE_DLLS}
|
${LOVE_MOVE_DLLS}
|
||||||
${MEGA_LUAJIT_DLL}
|
${MEGA_LUAJIT_DLL}
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(LOVE_LUA_LIBRARY ${MEGA_LUA51})
|
|
||||||
|
|
||||||
set(LOVE_LINK_LIBRARIES
|
|
||||||
${LOVE_LINK_LIBRARIES}
|
|
||||||
${LOVE_LUA_LIBRARY}
|
|
||||||
)
|
|
||||||
set(LOVE_MOVE_DLLS
|
|
||||||
${LOVE_MOVE_DLLS}
|
|
||||||
${LOVE_LUA_LIBRARY}
|
|
||||||
)
|
|
||||||
# MEGA_LUA51 is a CMake target, so includes are handled
|
# MEGA_LUA51 is a CMake target, so includes are handled
|
||||||
# automatically.
|
# automatically.
|
||||||
|
target_link_libraries(lovedep::Lua INTERFACE ${MEGA_LUA51})
|
||||||
|
set(LOVE_MOVE_DLLS
|
||||||
|
${LOVE_MOVE_DLLS}
|
||||||
|
${MEGA_LUA51}
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
if(MSVC OR ANDROID)
|
if(MSVC OR ANDROID)
|
||||||
@@ -190,64 +179,54 @@ Please see https://github.com/love2d/megasource
|
|||||||
")
|
")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Freetype REQUIRED)
|
|
||||||
find_package(Harfbuzz REQUIRED)
|
|
||||||
find_package(ModPlug REQUIRED)
|
|
||||||
find_package(OpenAL REQUIRED)
|
|
||||||
find_package(SDL2 2.0.9 REQUIRED CONFIG COMPONENTS SDL2main)
|
|
||||||
find_package(Theora REQUIRED)
|
|
||||||
find_package(Vorbis REQUIRED)
|
|
||||||
find_package(ZLIB REQUIRED)
|
|
||||||
find_package(Ogg REQUIRED)
|
|
||||||
|
|
||||||
# required for enet
|
# required for enet
|
||||||
add_definitions(-D HAS_SOCKLEN_T)
|
add_definitions(-D HAS_SOCKLEN_T)
|
||||||
|
|
||||||
set(LOVE_INCLUDE_DIRS
|
find_package(SDL2 2.0.9 REQUIRED CONFIG COMPONENTS SDL2main)
|
||||||
${SDL2_INCLUDE_DIRS}
|
target_include_directories(lovedep::SDL2 INTERFACE ${SDL2_INCLUDE_DIRS})
|
||||||
${FREETYPE_INCLUDE_DIRS}
|
target_link_libraries(lovedep::SDL2 INTERFACE ${SDL2_LIBRARIES})
|
||||||
${HARFBUZZ_INCLUDE_DIR}
|
|
||||||
${VORBIS_INCLUDE_DIR}
|
|
||||||
${OPENAL_INCLUDE_DIR}
|
|
||||||
${ZLIB_INCLUDE_DIRS}
|
|
||||||
${MODPLUG_INCLUDE_DIR}
|
|
||||||
${OGG_INCLUDE_DIR}
|
|
||||||
${THEORA_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(LOVE_LINK_LIBRARIES
|
find_package(Freetype REQUIRED)
|
||||||
${SDL2_LIBRARIES}
|
target_include_directories(lovedep::Freetype INTERFACE ${FREETYPE_INCLUDE_DIRS})
|
||||||
${FREETYPE_LIBRARY}
|
target_link_libraries(lovedep::Freetype INTERFACE ${FREETYPE_LIBRARY})
|
||||||
${HARFBUZZ_LIBRARY}
|
|
||||||
${OPENAL_LIBRARY}
|
find_package(Harfbuzz REQUIRED)
|
||||||
${MODPLUG_LIBRARY}
|
target_include_directories(lovedep::Harfbuzz INTERFACE ${HARFBUZZ_INCLUDE_DIR})
|
||||||
${THEORA_LIBRARY}
|
target_link_libraries(lovedep::Harfbuzz INTERFACE ${HARFBUZZ_LIBRARY})
|
||||||
${THEORADEC_LIBRARY}
|
|
||||||
${VORBISFILE_LIBRARY}
|
find_package(OpenAL REQUIRED)
|
||||||
${LOVE_LUA_LIBRARY}
|
target_include_directories(lovedep::OpenAL INTERFACE ${OPENAL_INCLUDE_DIR})
|
||||||
${OGG_LIBRARY}
|
target_link_libraries(lovedep::OpenAL INTERFACE ${OPENAL_LIBRARY})
|
||||||
${ZLIB_LIBRARY}
|
|
||||||
)
|
find_package(ModPlug REQUIRED)
|
||||||
|
target_include_directories(lovedep::Modplug INTERFACE ${MODPLUG_INCLUDE_DIR})
|
||||||
|
target_link_libraries(lovedep::Modplug INTERFACE ${MODPLUG_LIBRARY})
|
||||||
|
|
||||||
|
find_package(Theora REQUIRED)
|
||||||
|
target_include_directories(lovedep::Theora INTERFACE ${THEORA_INCLUDE_DIR})
|
||||||
|
target_link_libraries(lovedep::Theora INTERFACE ${THEORA_LIBRARY} ${THEORADEC_LIBRARY})
|
||||||
|
|
||||||
|
find_package(Vorbis REQUIRED)
|
||||||
|
target_include_directories(lovedep::Vorbis INTERFACE ${VORBIS_INCLUDE_DIR})
|
||||||
|
target_link_libraries(lovedep::Vorbis INTERFACE ${VORBISFILE_LIBRARY})
|
||||||
|
|
||||||
|
find_package(Ogg REQUIRED)
|
||||||
|
target_include_directories(lovedep::Ogg INTERFACE ${OGG_INCLUDE_DIR})
|
||||||
|
target_link_libraries(lovedep::Ogg INTERFACE ${OGG_LIBRARY})
|
||||||
|
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
target_include_directories(lovedep::Zlib INTERFACE ${ZLIB_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(lovedep::Zlib INTERFACE ${ZLIB_LIBRARY})
|
||||||
|
|
||||||
if(LOVE_JIT)
|
if(LOVE_JIT)
|
||||||
find_package(LuaJIT REQUIRED)
|
find_package(LuaJIT REQUIRED)
|
||||||
set(LOVE_LUA_LIBRARY ${LUAJIT_LIBRARY})
|
target_include_directories(lovedep::Lua INTERFACE ${LUAJIT_INCLUDE_DIR})
|
||||||
set(LOVE_LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIR})
|
target_link_libraries(lovedep::Lua INTERFACE ${LUAJIT_LIBRARY})
|
||||||
else()
|
else()
|
||||||
find_package(Lua51 REQUIRED)
|
find_package(Lua51 REQUIRED)
|
||||||
set(LOVE_LUA_LIBRARY ${LUA_LIBRARY})
|
target_include_directories(lovedep::Lua INTERFACE ${LUA_INCLUDE_DIR})
|
||||||
set(LOVE_LUA_INCLUDE_DIR ${LUA_INCLUDE_DIR})
|
target_link_libraries(lovedep::Lua INTERFACE ${LUA_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LOVE_INCLUDE_DIRS
|
|
||||||
${LOVE_INCLUDE_DIRS}
|
|
||||||
${LOVE_LUA_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
set(LOVE_LINK_LIBRARIES
|
|
||||||
${LOVE_LINK_LIBRARIES}
|
|
||||||
${LOVE_LUA_LIBRARY}
|
|
||||||
)
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
###
|
###
|
||||||
@@ -1268,7 +1247,7 @@ add_library(love_3p_enet
|
|||||||
src/libraries/enet/libenet/include/enet/win32.h
|
src/libraries/enet/libenet/include/enet/win32.h
|
||||||
)
|
)
|
||||||
love_disable_warnings(love_3p_enet)
|
love_disable_warnings(love_3p_enet)
|
||||||
target_link_libraries(love_3p_enet ${LOVE_LUA_LIBRARY})
|
target_link_libraries(love_3p_enet lovedep::Lua)
|
||||||
target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include)
|
target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include)
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
target_link_libraries(love_3p_enet winmm.a)
|
target_link_libraries(love_3p_enet winmm.a)
|
||||||
@@ -1464,7 +1443,7 @@ add_library(love_3p_luasocket
|
|||||||
src/libraries/luasocket/libluasocket/unixstream.c
|
src/libraries/luasocket/libluasocket/unixstream.c
|
||||||
src/libraries/luasocket/libluasocket/unixstream.h
|
src/libraries/luasocket/libluasocket/unixstream.h
|
||||||
)
|
)
|
||||||
target_link_libraries(love_3p_luasocket ${LOVE_LUA_LIBRARY})
|
target_link_libraries(love_3p_luasocket lovedep::Lua)
|
||||||
love_disable_warnings(love_3p_luasocket)
|
love_disable_warnings(love_3p_luasocket)
|
||||||
|
|
||||||
if(MSVC OR MINGW)
|
if(MSVC OR MINGW)
|
||||||
@@ -1495,7 +1474,7 @@ add_library(love_3p_lua53
|
|||||||
src/libraries/lua53/lutf8lib.c
|
src/libraries/lua53/lutf8lib.c
|
||||||
src/libraries/lua53/lutf8lib.h
|
src/libraries/lua53/lutf8lib.h
|
||||||
)
|
)
|
||||||
target_link_libraries(love_3p_lua53 ${LOVE_LUA_LIBRARY})
|
target_link_libraries(love_3p_lua53 lovedep::Lua)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Lua HTTPS
|
# Lua HTTPS
|
||||||
@@ -1527,7 +1506,7 @@ add_library(love_3p_luahttps
|
|||||||
src/libraries/luahttps/src/windows/WinINetClient.cpp
|
src/libraries/luahttps/src/windows/WinINetClient.cpp
|
||||||
src/libraries/luahttps/src/windows/WinINetClient.h
|
src/libraries/luahttps/src/windows/WinINetClient.h
|
||||||
)
|
)
|
||||||
target_link_libraries(love_3p_luahttps ${LOVE_LUA_LIBRARY})
|
target_link_libraries(love_3p_luahttps lovedep::Lua)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
target_sources(love_3p_luahttps PRIVATE
|
target_sources(love_3p_luahttps PRIVATE
|
||||||
@@ -1798,7 +1777,6 @@ include_directories(
|
|||||||
src/libraries
|
src/libraries
|
||||||
src/libraries/box2D
|
src/libraries/box2D
|
||||||
src/modules
|
src/modules
|
||||||
${LOVE_INCLUDE_DIRS}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
link_directories(${LOVE_LINK_DIRS})
|
link_directories(${LOVE_LINK_DIRS})
|
||||||
@@ -1831,7 +1809,17 @@ set_target_properties(liblove PROPERTIES
|
|||||||
VISIBILITY_INLINES_HIDDEN ON
|
VISIBILITY_INLINES_HIDDEN ON
|
||||||
LIBRARY_OUTPUT_NAME "${LOVE_LIB_NAME}")
|
LIBRARY_OUTPUT_NAME "${LOVE_LIB_NAME}")
|
||||||
target_link_libraries(liblove
|
target_link_libraries(liblove
|
||||||
${LOVE_LINK_LIBRARIES}
|
lovedep::SDL2
|
||||||
|
lovedep::Freetype
|
||||||
|
lovedep::Harfbuzz
|
||||||
|
lovedep::OpenAL
|
||||||
|
lovedep::Modplug
|
||||||
|
lovedep::Theora
|
||||||
|
lovedep::Vorbis
|
||||||
|
lovedep::Lua
|
||||||
|
lovedep::Ogg
|
||||||
|
lovedep::Zlib
|
||||||
|
lovedep::Lua
|
||||||
love_3p_box2d
|
love_3p_box2d
|
||||||
love_3p_ddsparse
|
love_3p_ddsparse
|
||||||
love_3p_enet
|
love_3p_enet
|
||||||
|
|||||||
Reference in New Issue
Block a user