From 2a46ce4d6dc93e4721ceb48bf44001814cad9fd9 Mon Sep 17 00:00:00 2001 From: superp00t Date: Sun, 21 Jul 2024 18:39:52 -0400 Subject: [PATCH] feat(build): to compile with FMOD support, WHOA_BUILD_FMOD must be passed into CMake --- src/gx/CMakeLists.txt | 2 +- src/sound/CMakeLists.txt | 7 +- vendor/CMakeLists.txt | 225 ++++++++++++++++++++------------------- 3 files changed, 124 insertions(+), 110 deletions(-) diff --git a/src/gx/CMakeLists.txt b/src/gx/CMakeLists.txt index dc0d56c..93c88e0 100644 --- a/src/gx/CMakeLists.txt +++ b/src/gx/CMakeLists.txt @@ -57,7 +57,7 @@ endif() if (WHOA_SYSTEM_WIN OR WHOA_SYSTEM_LINUX) target_link_libraries(gx PRIVATE - SDL3::SDL3-static + SDL2::SDL2-static libglew_static ) endif() diff --git a/src/sound/CMakeLists.txt b/src/sound/CMakeLists.txt index 44b9ad7..ada95dd 100644 --- a/src/sound/CMakeLists.txt +++ b/src/sound/CMakeLists.txt @@ -13,6 +13,9 @@ target_link_libraries(sound PRIVATE ui util - PUBLIC - fmod ) + +if(WHOA_BUILD_FMOD) + target_link_libraries(sound PUBLIC fmod) +endif() + diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index ac5d725..393c9f2 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -2,7 +2,7 @@ add_subdirectory(freetype-2.0.9) add_subdirectory(lua-5.1.3) add_subdirectory(stormlib-9) -if (WHOA_SYSTEM_WIN OR WHOA_SYSTEM_LINUX) +if(WHOA_SYSTEM_WIN OR WHOA_SYSTEM_LINUX) set(SDL_SHARED OFF) set(SDL_STATIC ON) add_subdirectory(sdl-2.30.5) @@ -14,114 +14,125 @@ endif() # 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() +if(defined 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() -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") + set(FMOD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/fmodex-4.24.16") 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") + set(FMOD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/fmodcore-2.02.18") endif() -endif() \ No newline at end of file + + 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()