forked from MoonsideGames/FAudioGMS
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.3 KiB
143 lines
4.3 KiB
# 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 |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/FAudio/include> |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/SDL/include> |
|
) |
|
|
|
target_include_directories(FAudio PUBLIC |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/FAudio/include> |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/SDL/include> |
|
) |
|
|
|
# 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 "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>") |
|
target_include_directories(FAudio PUBLIC "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>") |
|
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 "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>") |
|
target_include_directories(FAudio PUBLIC "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>") |
|
target_link_libraries(FAudioGMS PUBLIC ${SDL2_LIBRARIES}) |
|
endif() |
|
endif()
|
|
|