# CMake Project for FAudioGMS cmake_minimum_required(VERSION 2.8.12) project(FAudioGMS C) #Options option(BUILD_SHARED_LIBS "Build shared library" ON) SET(LIB_MAJOR_VERSION "0") SET(LIB_MINOR_VERSION "2") SET(LIB_REVISION "0") SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_REVISION}") # Build Type if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) # By default, we use Release message(STATUS "Setting build type to 'Release' as none was specified.") set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE ) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" ) endif() # Platform Flags if(APPLE) set(CMAKE_MACOSX_RPATH ON) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9) set(LOBJC "objc") elseif(WIN32) # "FAudioGMS.dll", not "libFAudioGMS.dll" set(CMAKE_SHARED_LIBRARY_PREFIX "") endif() if(UNIX) SET(BIN_RPATH "\$ORIGIN;\$ORIGIN/assets") #thanks yoyo games set(CMAKE_SKIP_BUILD_RPATH TRUE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_INSTALL_RPATH ${BIN_RPATH}) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) endif() # Source lists add_library(FAudioGMS #Public header src/FAudioGMS.h #Source files lib/dr_wav.h src/FAudioGMS.c ) # FAudio Source lists add_library(FAudio STATIC # Public Headers lib/FAudio/include/F3DAudio.h lib/FAudio/include/FACT3D.h lib/FAudio/include/FACT.h lib/FAudio/include/FAPOBase.h lib/FAudio/include/FAPOFX.h lib/FAudio/include/FAPO.h lib/FAudio/include/FAudioFX.h lib/FAudio/include/FAudio.h # Internal Headers lib/FAudio/src/FACT_internal.h lib/FAudio/src/FAudio_internal.h lib/FAudio/src/stb.h lib/FAudio/src/stb_vorbis.h # Source Files lib/FAudio/src/F3DAudio.c lib/FAudio/src/FACT3D.c lib/FAudio/src/FACT.c lib/FAudio/src/FACT_internal.c lib/FAudio/src/FAPOBase.c lib/FAudio/src/FAPOFX.c lib/FAudio/src/FAPOFX_echo.c lib/FAudio/src/FAPOFX_eq.c lib/FAudio/src/FAPOFX_masteringlimiter.c lib/FAudio/src/FAPOFX_reverb.c lib/FAudio/src/FAudio.c lib/FAudio/src/FAudioFX_reverb.c lib/FAudio/src/FAudioFX_volumemeter.c lib/FAudio/src/FAudio_internal.c lib/FAudio/src/FAudio_internal_simd.c lib/FAudio/src/FAudio_operationset.c lib/FAudio/src/FAudio_platform_sdl2.c lib/FAudio/src/FAudio_platform_win32.c ) # Build flags if(NOT MSVC) set_property(TARGET FAudioGMS PROPERTY COMPILE_FLAGS "-std=gnu99 -Wall -Wno-strict-aliasing -pedantic") set_property(TARGET FAudio PROPERTY COMPILE_FLAGS "-fPIC") endif() # includes target_include_directories(FAudioGMS PUBLIC $ $ $ $ ) target_include_directories(FAudio PUBLIC $ $ ) # Soname set_target_properties(FAudioGMS PROPERTIES OUTPUT_NAME "FAudioGMS" VERSION ${LIB_VERSION} SOVERSION ${LIB_MAJOR_VERSION} ) # Internal Dependencies target_link_libraries(FAudioGMS PRIVATE FAudio ${LOBJC}) # SDL2 Dependency if (DEFINED SDL2_INCLUDE_DIRS AND DEFINED SDL2_LIBRARIES) message(STATUS "using pre-defined SDL2 variables SDL2_INCLUDE_DIRS and SDL2_LIBRARIES") target_include_directories(FAudioGMS PUBLIC "$") target_include_directories(FAudio PUBLIC "$") target_link_libraries(FAudioGMS PUBLIC ${SDL2_LIBRARIES}) else() # Only try to autodetect if both SDL2 variables aren't explicitly set find_package(SDL2 CONFIG) if (TARGET SDL2::SDL2) message(STATUS "using TARGET SDL2::SDL2") target_link_libraries(FAudioGMS PUBLIC SDL2::SDL2) target_link_libraries(FAudio PUBLIC SDL2::SDL2) elseif (TARGET SDL2) message(STATUS "using TARGET SDL2") target_link_libraries(FAudioGMS PUBLIC SDL2) target_link_libraries(FAudio PUBLIC SDL2) else() message(STATUS "no TARGET SDL2::SDL2, or SDL2, using variables") target_include_directories(FAudioGMS PUBLIC "$") target_include_directories(FAudio PUBLIC "$") target_link_libraries(FAudioGMS PUBLIC ${SDL2_LIBRARIES}) endif() endif()