##################################################### # Install dependencies ##################################################### option(CAUDIO_INSTALL_DEPENDENCIES "Install dependency libs needed for samples" FALSE) option(CAUDIO_COPY_DEPENDENCIES "Copy dependency libs to the build directory" FALSE) ##################################################### # Macros ##################################################### macro(copy_debug INPUT) if (EXISTS ${CAUDIO_DEPENDENCIES_DIR}/lib/debug/${INPUT}) configure_file(${CAUDIO_DEPENDENCIES_DIR}/lib/debug/${INPUT} ${CAUDIO_BINARY_DIR}/lib/${INPUT} COPYONLY) elseif (IS_DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/debug/${INPUT}) install(DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/debug/${INPUT} DESTINATION lib/debug) endif () endmacro() # ----- ----- ----- macro(copy_release INPUT) if (EXISTS ${CAUDIO_DEPENDENCIES_DIR}/lib/release/${INPUT}) configure_file(${CAUDIO_DEPENDENCIES_DIR}/lib/release/${INPUT} ${CAUDIO_BINARY_DIR}/lib/${INPUT} COPYONLY) elseif (IS_DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/release/${INPUT}) install(DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/release/${INPUT} DESTINATION lib/release) endif () endmacro() ##################################################### # Functions ##################################################### function(install_dll_file DEBUG_FILEPATH RELEASE_FILEPATH FILENAME) if (EXISTS ${DEBUG_FILEPATH}${FILENAME}_d.dll) install(FILES ${DEBUG_FILEPATH}${FILENAME}_d.dll DESTINATION bin/debug CONFIGURATIONS Debug ) install(FILES ${RELEASE_FILEPATH}${FILENAME}.dll DESTINATION bin/release CONFIGURATIONS Release None "" ) install(FILES ${RELEASE_FILEPATH}${FILENAME}.dll DESTINATION bin/relwithdebinfo CONFIGURATIONS RelWithDebInfo ) install(FILES ${RELEASE_FILEPATH}${FILENAME}.dll DESTINATION bin/minsizerel CONFIGURATIONS MinSizeRel ) configure_file(${DEBUG_FILEPATH}${FILENAME}_d.dll ${CMAKE_BINARY_DIR}/bin/debug/${FILENAME}_d.dll COPYONLY) configure_file(${RELEASE_FILEPATH}${FILENAME}.dll ${CMAKE_BINARY_DIR}/bin/release/${FILENAME}.dll COPYONLY) configure_file(${RELEASE_FILEPATH}${FILENAME}.dll ${CMAKE_BINARY_DIR}/bin/relwithdebinfo/${FILENAME}.dll COPYONLY) configure_file(${RELEASE_FILEPATH}${FILENAME}.dll ${CMAKE_BINARY_DIR}/bin/minsizerel/${FILENAME}.dll COPYONLY) endif () endfunction(install_dll_file) # ----- ----- ----- function(install_all_targets TARGETNAME) if (WIN32) install(TARGETS ${TARGETNAME} BUNDLE DESTINATION "${CMAKE_BINARY_DIR}/bin${CAUDIO_RELEASE_PATH}" CONFIGURATIONS Release None "" RUNTIME DESTINATION "${CMAKE_BINARY_DIR}/bin${CAUDIO_RELEASE_PATH}" CONFIGURATIONS Release None "" LIBRARY DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/${CAUDIO_RELEASE_PATH}" CONFIGURATIONS Release None "" ARCHIVE DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/${CAUDIO_RELEASE_PATH}" CONFIGURATIONS Release None "" FRAMEWORK DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/${CAUDIO_RELEASE_PATH}" CONFIGURATIONS Release None "" ) install(TARGETS ${TARGETNAME} BUNDLE DESTINATION "${CMAKE_BINARY_DIR}/bin${CAUDIO_DEBUG_PATH}" CONFIGURATIONS Debug RUNTIME DESTINATION "${CMAKE_BINARY_DIR}/bin${CAUDIO_DEBUG_PATH}" CONFIGURATIONS Debug LIBRARY DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/${CAUDIO_DEBUG_PATH}" CONFIGURATIONS Debug ARCHIVE DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/${CAUDIO_DEBUG_PATH}" CONFIGURATIONS Debug FRAMEWORK DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/${CAUDIO_DEBUG_PATH}" CONFIGURATIONS Debug ) install(TARGETS ${TARGETNAME} BUNDLE DESTINATION "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo RUNTIME DESTINATION "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo LIBRARY DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo ARCHIVE DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo FRAMEWORK DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo ) install(TARGETS ${TARGETNAME} BUNDLE DESTINATION "${CMAKE_BINARY_DIR}/bin/MinSizeRel" CONFIGURATIONS MinSizeRel RUNTIME DESTINATION "${CMAKE_BINARY_DIR}/bin/MinSizeRel" CONFIGURATIONS MinSizeRel LIBRARY DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/MinSizeRel" CONFIGURATIONS MinSizeRel ARCHIVE DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/MinSizeRel" CONFIGURATIONS MinSizeRel FRAMEWORK DESTINATION "${CMAKE_BINARY_DIR}/${CAUDIO_LIB_DIRECTORY}/MinSizeRel" CONFIGURATIONS MinSizeRel ) # Scol edit: we want that behavior on Apple too. elseif (UNIX) install(TARGETS ${TARGETNAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) endif () endfunction(install_all_targets) ##################################################### # Install dependencies ##################################################### if (CAUDIO_INSTALL_DEPENDENCIES) if (CAUDIO_STATIC) # for static builds, projects must link against all CAUDIO dependencies themselves, so copy full include and lib dir if (EXISTS ${CAUDIO_DEPENDENCIES_DIR}/include/) install(DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/include/ DESTINATION include) endif () if (EXISTS ${CAUDIO_DEPENDENCIES_DIR}/lib/) if (WIN32) install(DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/ DESTINATION lib/Debug) install(DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/ DESTINATION lib/Release) else () install(DIRECTORY ${CAUDIO_DEPENDENCIES_DIR}/lib/ DESTINATION lib) endif () endif () endif () endif () # CAUDIO_INSTALL_DEPENDENCIES if (CAUDIO_COPY_DEPENDENCIES) if (WIN32) copy_debug(OpenAL32.dll) copy_release(OpenAL32.dll) copy_debug(wrap_oal.dll) copy_release(wrap_oal.dll) endif () endif ()