diff options
author | Chris Robinson <[email protected]> | 2016-07-12 14:22:17 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2016-07-12 14:22:17 -0700 |
commit | 4898234da8d732c91fa2d08d2ef9f36323e2a6c5 (patch) | |
tree | f3a5aebfd03d05f6437b72551e9f1fb70926ed72 /CMakeLists.txt | |
parent | 14166264d6fc59386d9cbbfcd12c78ffab5989fb (diff) |
Add a cmake option to embed the HRTF data
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6deb43a4..e5a5ecfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -239,10 +239,11 @@ IF(NOT CMAKE_DEBUG_POSTFIX) FORCE) ENDIF() +SET(EXTRA_CFLAGS "") IF(MSVC) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE) - ADD_DEFINITIONS("/wd4098") + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} /wd4098") IF(NOT DXSDK_DIR) STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "$ENV{DXSDK_DIR}") @@ -264,14 +265,14 @@ IF(MSVC) ENDFOREACH(flag_var) ENDIF() ELSE() - ADD_DEFINITIONS(-Winline -Wall) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Winline -Wall") CHECK_C_COMPILER_FLAG(-Wextra HAVE_W_EXTRA) IF(HAVE_W_EXTRA) - ADD_DEFINITIONS(-Wextra) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wextra") ENDIF() IF(ALSOFT_WERROR) - ADD_DEFINITIONS(-Werror) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Werror") ENDIF() # Force enable -fPIC for CMake versions before 2.8.9 (later versions have @@ -281,7 +282,7 @@ ELSE() IF(CMAKE_VERSION VERSION_LESS "2.8.9" AND NOT WIN32) CHECK_C_COMPILER_FLAG(-fPIC HAVE_FPIC_SWITCH) IF(HAVE_FPIC_SWITCH) - ADD_DEFINITIONS(-fPIC) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIC") ENDIF() ENDIF() @@ -317,6 +318,7 @@ int main() ENDIF() # Set visibility/export options if available +SET(HIDDEN_DECL "") IF(WIN32) SET(EXPORT_DECL "__declspec(dllexport)") IF(NOT MINGW) @@ -344,7 +346,8 @@ ELSE() IF(HAVE_GCC_PROTECTED_VISIBILITY OR HAVE_GCC_DEFAULT_VISIBILITY) CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_VISIBILITY_HIDDEN_SWITCH) IF(HAVE_VISIBILITY_HIDDEN_SWITCH) - ADD_DEFINITIONS(-fvisibility=hidden) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden") + SET(HIDDEN_DECL "__attribute__((visibility(\"hidden\")))") ENDIF() ENDIF() @@ -534,7 +537,7 @@ IF(NOT HAVE_WINDOWS_H) CHECK_C_COMPILER_FLAG(-pthread HAVE_PTHREAD) IF(HAVE_PTHREAD) - ADD_DEFINITIONS(-pthread) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -pthread") SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -pthread") SET(EXTRA_LIBS ${EXTRA_LIBS} -pthread) ENDIF() @@ -1060,6 +1063,30 @@ ENDIF() # This is always available SET(BACKENDS "${BACKENDS} Null") +option(ALSOFT_EMBED_HRTF_DATA "Embed the HRTF data files (increases library footprint)" OFF) +if(ALSOFT_EMBED_HRTF_DATA) + if(WIN32) + set(ALC_OBJS ${ALC_OBJS} Alc/hrtf_res.rc) + else() + set(FILENAMES default-44100.mhr default-48000.mhr) + foreach(FILENAME ${FILENAMES}) + set(outfile ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${FILENAME}${CMAKE_C_OUTPUT_EXTENSION}) + add_custom_command(OUTPUT ${outfile} + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/hrtf/${FILENAME}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/hrtf" + COMMAND "${CMAKE_LINKER}" -r -b binary -o "${outfile}" ${FILENAME} + COMMAND "${CMAKE_OBJCOPY}" --rename-section .data=.rodata,alloc,load,readonly,data,contents "${outfile}" "${outfile}" + COMMENT "Generating ${FILENAME}${CMAKE_C_OUTPUT_EXTENSION}" + VERBATIM + ) + set(ALC_OBJS ${ALC_OBJS} ${outfile}) + endforeach() + unset(outfile) + unset(FILENAMES) + endif() +endif() + + IF(ALSOFT_UTILS AND NOT ALSOFT_NO_CONFIG_UTIL) add_subdirectory(utils/alsoft-config) ENDIF() @@ -1101,6 +1128,7 @@ CONFIGURE_FILE( # Build a common library with reusable helpers ADD_LIBRARY(common STATIC ${COMMON_OBJS}) +SET_PROPERTY(TARGET common APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) IF(NOT LIBTYPE STREQUAL "STATIC") SET_PROPERTY(TARGET common PROPERTY POSITION_INDEPENDENT_CODE TRUE) ENDIF() @@ -1111,6 +1139,7 @@ IF(LIBTYPE STREQUAL "STATIC") ELSE() ADD_LIBRARY(${LIBNAME} SHARED ${OPENAL_OBJS} ${ALC_OBJS}) ENDIF() +SET_PROPERTY(TARGET ${LIBNAME} APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET ${LIBNAME} APPEND PROPERTY COMPILE_DEFINITIONS AL_BUILD_LIBRARY AL_ALEXT_PROTOTYPES) IF(WIN32 AND ALSOFT_NO_UID_DEFS) SET_PROPERTY(TARGET ${LIBNAME} APPEND PROPERTY COMPILE_DEFINITIONS AL_NO_UID_DEFS) @@ -1209,6 +1238,11 @@ IF(WIN32) ENDIF() ENDIF() +if(ALSOFT_EMBED_HRTF_DATA) + message(STATUS "Embedding HRTF datasets") + message(STATUS "") +endif() + # Install alsoft.conf configuration file IF(ALSOFT_CONFIG) INSTALL(FILES alsoftrc.sample @@ -1244,14 +1278,17 @@ ENDIF() IF(ALSOFT_UTILS) ADD_EXECUTABLE(openal-info utils/openal-info.c) + SET_PROPERTY(TARGET openal-info APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) TARGET_LINK_LIBRARIES(openal-info ${LIBNAME}) ADD_EXECUTABLE(makehrtf utils/makehrtf.c) + SET_PROPERTY(TARGET makehrtf APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) IF(HAVE_LIBM) TARGET_LINK_LIBRARIES(makehrtf m) ENDIF() ADD_EXECUTABLE(bsincgen utils/bsincgen.c) + SET_PROPERTY(TARGET bsincgen APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) IF(HAVE_LIBM) TARGET_LINK_LIBRARIES(bsincgen m) ENDIF() @@ -1273,9 +1310,11 @@ ENDIF() IF(ALSOFT_TESTS) ADD_LIBRARY(test-common STATIC examples/common/alhelpers.c) + SET_PROPERTY(TARGET test-common APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) ADD_EXECUTABLE(altonegen examples/altonegen.c) TARGET_LINK_LIBRARIES(altonegen test-common ${LIBNAME}) + SET_PROPERTY(TARGET altonegen APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) IF(ALSOFT_INSTALL) INSTALL(TARGETS altonegen @@ -1293,36 +1332,42 @@ IF(ALSOFT_EXAMPLES) IF(SDL2_FOUND AND SDL_SOUND_FOUND) ADD_LIBRARY(ex-common STATIC examples/common/alhelpers.c examples/common/sdl_sound.c) + SET_PROPERTY(TARGET ex-common APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET ex-common APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR}) ADD_EXECUTABLE(alstream examples/alstream.c) TARGET_LINK_LIBRARIES(alstream ex-common ${SDL_SOUND_LIBRARIES} ${SDL2_LIBRARY} common ${LIBNAME}) + SET_PROPERTY(TARGET alstream APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET alstream APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR}) ADD_EXECUTABLE(alreverb examples/alreverb.c) TARGET_LINK_LIBRARIES(alreverb ex-common ${SDL_SOUND_LIBRARIES} ${SDL2_LIBRARY} common ${LIBNAME}) + SET_PROPERTY(TARGET alreverb APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET alreverb APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR}) ADD_EXECUTABLE(allatency examples/allatency.c) TARGET_LINK_LIBRARIES(allatency ex-common ${SDL_SOUND_LIBRARIES} ${SDL2_LIBRARY} common ${LIBNAME}) + SET_PROPERTY(TARGET allatency APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET allatency APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR}) ADD_EXECUTABLE(alloopback examples/alloopback.c) TARGET_LINK_LIBRARIES(alloopback ex-common ${SDL_SOUND_LIBRARIES} ${SDL2_LIBRARY} common ${LIBNAME}) + SET_PROPERTY(TARGET alloopback APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET alloopback APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR}) ADD_EXECUTABLE(alhrtf examples/alhrtf.c) TARGET_LINK_LIBRARIES(alhrtf ex-common ${SDL_SOUND_LIBRARIES} ${SDL2_LIBRARY} common ${LIBNAME}) + SET_PROPERTY(TARGET alhrtf APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET alhrtf APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR}) @@ -1361,6 +1406,7 @@ IF(ALSOFT_EXAMPLES) IF(FFVER_OK AND NOT MSVC) ADD_EXECUTABLE(alffplay examples/alffplay.c) TARGET_LINK_LIBRARIES(alffplay common ex-common ${SDL2_LIBRARY} ${LIBNAME} ${FFMPEG_LIBRARIES}) + SET_PROPERTY(TARGET alffplay APPEND PROPERTY COMPILE_FLAGS ${EXTRA_CFLAGS}) SET_PROPERTY(TARGET alffplay APPEND PROPERTY INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS}) |