thunderbrew/vendor/CMakeLists.txt
VDm 957a4c7e2f
feat(glue): add realm and character handling (#7)
* fix(build): make project compilable

* feat(glue): update Character Selection screen to support switching

* fix(ui): fix CSimpleFontString::GetHeight() to use proper method

* feat(db): add static database classes from whoa-autocode

* feat(ui): use class and area IDs for Character Selection

* chore(db): update ItemRandomPropertiesRec

* feat(glue): update CCharacterSelection methods

* chore(db): uncomment DB records

* feat(glue): implement character deletion

* feat(gx): update supported text tags in GxuDetermineQuotedCode

* fix(ui): fix CSimpleFontString to use the FixedColor flag only if the string does not contain color tags

* feat(net): implement GrunLogin::LogOff

* feat(net): implement NetClient::Disconnect

* feat(login): implement trimming of realm name in LoginResponse::HandleRealmData

* feat(net): implement proper disconnection from login and realm servers

* feat(net): implement PING/PONG messages

* feat(net): add NetClient::Destroy method

* feat(net): implement ClientServices::GetRealmList (second request of Realm List)

* feat(glue): implement CGlueMgr::PollRealmList

* feat(glue): implement CGlueMgr::PollCreateCharacter

* chore(glue): add skeleton of CCharacterComponent class

* fix(build): fix build using latest features

* fix(glue): kill gotos in CGlueMgr::NetDisconnectHandler

* fix(build): include SDL3

---------

Co-authored-by: superp00t <superp00t@tutanota.com>
2025-04-16 17:32:37 -04:00

143 lines
5.7 KiB
CMake

add_subdirectory(freetype-2.0.9)
add_subdirectory(lua-5.1.3)
add_subdirectory(stormlib-9)
if (WHOA_SYSTEM_WIN AND NOT MSVC)
add_subdirectory(directxmath-3.19.0)
endif ()
if (WHOA_BUILD_GLSDL)
set(SDL_SHARED OFF)
set(SDL_STATIC ON)
add_subdirectory(sdl-3.2.10)
set(glew-cmake_BUILD_SHARED OFF)
set(glew-cmake_BUILD_STATIC ON)
add_subdirectory(glew-cmake-2.2.0)
endif ()
# FMOD
if (WHOA_BUILD_FMOD)
add_library(fmod SHARED IMPORTED GLOBAL)
# Determine which flavor of FMOD to use:
# - macOS versions from 10.9 down prefer FMOD Ex
# - macOS versions from 10.10 up prefer FMOD Core
# - Windows versions from Vista down prefer FMOD Ex
# - Windows versions from 7 up prefer FMOD Core
# - All versions of Linux prefer FMOD Core
# - Any missed detection prefers FMOD Core
if (WHOA_SYSTEM_MAC AND WHOA_SYSTEM_VERSION LESS WHOA_MAC_10_10)
set(WHOA_FMOD_EX 1)
target_compile_definitions(fmod INTERFACE -DWHOA_FMOD_EX=1)
elseif (WHOA_SYSTEM_WIN AND WHOA_SYSTEM_VERSION LESS WHOA_WIN_7)
set(WHOA_FMOD_EX 1)
target_compile_definitions(fmod INTERFACE -DWHOA_FMOD_EX=1)
else()
set(WHOA_FMOD_CORE 1)
target_compile_definitions(fmod INTERFACE -DWHOA_FMOD_CORE=1)
endif ()
if (WHOA_FMOD_EX)
set(FMOD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/fmodex-4.24.16")
else()
set(FMOD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/fmodcore-2.02.18")
endif ()
if (WHOA_SYSTEM_WIN)
if (WHOA_ARCH_32)
if (WHOA_FMOD_EX)
set_target_properties(fmod PROPERTIES
IMPORTED_IMPLIB ${FMOD_DIR}/win-x86/lib/fmodex_vc.lib
IMPORTED_LOCATION ${FMOD_DIR}/win-x86/lib/fmodex.dll
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/win-x86/inc
)
install(FILES ${FMOD_DIR}/win-x86/lib/fmodex.dll DESTINATION "bin")
else()
set_target_properties(fmod PROPERTIES
IMPORTED_IMPLIB ${FMOD_DIR}/win-x86/lib/fmod_vc.lib
IMPORTED_LOCATION ${FMOD_DIR}/win-x86/lib/fmod.dll
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/win-x86/inc
)
install(FILES ${FMOD_DIR}/win-x86/lib/fmod.dll DESTINATION "bin")
endif ()
elseif (WHOA_ARCH_64)
if (WHOA_FMOD_EX)
set_target_properties(fmod PROPERTIES
IMPORTED_IMPLIB ${FMOD_DIR}/win-x86_64/lib/fmodex64_vc.lib
IMPORTED_LOCATION ${FMOD_DIR}/win-x86_64/lib/fmodex64.dll
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/win-x86_64/inc
)
install(FILES ${FMOD_DIR}/win-x86_64/lib/fmodex64.dll DESTINATION "bin")
else()
set_target_properties(fmod PROPERTIES
IMPORTED_IMPLIB ${FMOD_DIR}/win-x86_64/lib/fmod_vc.lib
IMPORTED_LOCATION FMOD_DIR}/win-x86_64/lib/fmod.dll
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/win-x86_64/inc
)
install(FILES ${FMOD_DIR}/win-x86_64/lib/fmod.dll DESTINATION "bin")
endif ()
endif ()
elseif (WHOA_SYSTEM_LINUX)
if (WHOA_ARCH_32)
if (WHOA_FMOD_EX)
set_target_properties(fmod PROPERTIES
IMPORTED_LOCATION ${FMOD_DIR}/linux-x86/lib/libfmodex-4.24.16.so
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/linux-x86/inc
)
install(FILES ${FMOD_DIR}/linux-x86/lib/libfmodex-4.24.16.so DESTINATION "bin")
else()
# TODO Add ARM support for FMOD Core on Linux
set_target_properties(fmod PROPERTIES
IMPORTED_LOCATION ${FMOD_DIR}/linux-x86/lib/libfmod.so.13.18
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/linux-x86/inc
)
install(FILES ${FMOD_DIR}/linux-x86/lib/libfmod.so.13.18 DESTINATION "bin")
endif ()
elseif (WHOA_ARCH_64)
if (WHOA_FMOD_EX)
set_target_properties(fmod PROPERTIES
IMPORTED_LOCATION ${FMOD_DIR}/linux-x86_64/lib/libfmodex-4.24.16.so
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/linux-x86_64/inc
)
install(FILES ${FMOD_DIR}/linux-x86_64/lib/libfmodex-4.24.16.so DESTINATION "bin")
else()
# TODO Add ARM support for FMOD Core on Linux
set_target_properties(fmod PROPERTIES
IMPORTED_LOCATION ${FMOD_DIR}/linux-x86_64/lib/libfmod.so.13.18
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/linux-x86_64/inc
)
install(FILES ${FMOD_DIR}/linux-x86_64/lib/libfmod.so.13.18 DESTINATION "bin")
endif ()
endif ()
elseif (WHOA_SYSTEM_MAC)
# The Mac lib is universal
if (WHOA_FMOD_EX)
set_target_properties(fmod PROPERTIES
IMPORTED_LOCATION ${FMOD_DIR}/mac/lib/libfmodex.dylib
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/mac/inc
)
install(FILES ${FMOD_DIR}/mac/lib/libfmodex.dylib DESTINATION "bin")
else()
set_target_properties(fmod PROPERTIES
IMPORTED_LOCATION ${FMOD_DIR}/mac/lib/libfmod.dylib
INTERFACE_INCLUDE_DIRECTORIES ${FMOD_DIR}/mac/inc
)
install(FILES ${FMOD_DIR}/mac/lib/libfmod.dylib DESTINATION "bin")
endif ()
endif ()
add_definitions(-DWHOA_BUILD_FMOD)
if (WHOA_FMOD_CORE)
add_definitions(-DWHOA_FMOD_CORE)
endif ()
if (WHOA_FMOD_EX)
add_definitions(-DWHOA_FMOD_EX)
endif ()
endif ()