|
@@ -1,587 +1,445 @@
|
|
-set(OBS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")
|
|
|
|
-
|
|
|
|
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
- set(_lib_suffix 64)
|
|
|
|
-else()
|
|
|
|
- set(_lib_suffix 32)
|
|
|
|
-endif()
|
|
|
|
-
|
|
|
|
-if(WIN32 OR APPLE)
|
|
|
|
- set(_struct_def FALSE)
|
|
|
|
-else()
|
|
|
|
- set(_struct_def TRUE)
|
|
|
|
-endif()
|
|
|
|
-
|
|
|
|
-option(INSTALLER_RUN "Build a multiarch installer, needs to run indenepdently after both archs have compiled" FALSE)
|
|
|
|
-option(UNIX_STRUCTURE "Build with standard unix filesystem structure" ${_struct_def})
|
|
|
|
-if(APPLE)
|
|
|
|
- option(BUILD_REDISTRIBUTABLE "Fix rpath of external libraries" FALSE)
|
|
|
|
-endif()
|
|
|
|
-
|
|
|
|
-if(INSTALLER_RUN AND NOT DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- message(FATAL_ERROR "Environment variable obsInstallerTempDir is needed for multiarch installer generation")
|
|
|
|
|
|
+# Set OS-specific constants in non-deprecated way
|
|
|
|
+include(GNUInstallDirs)
|
|
|
|
+if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
|
|
+ include(ObsDefaults_macOS)
|
|
|
|
+ set(OS_MACOS ON)
|
|
|
|
+ set(OS_POSIX ON)
|
|
|
|
+elseif(CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD|OpenBSD")
|
|
|
|
+ include(ObsDefaults_Linux)
|
|
|
|
+ set(OS_POSIX ON)
|
|
|
|
+ string(TOUPPER "${CMAKE_SYSTEM_NAME}" _SYSTEM_NAME_U)
|
|
|
|
+ set(OS_${_SYSTEM_NAME_U} ON)
|
|
|
|
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
|
|
+ include(ObsDefaults_Windows)
|
|
|
|
+ set(OS_WINDOWS ON)
|
|
|
|
+ set(OS_POSIX OFF)
|
|
endif()
|
|
endif()
|
|
|
|
|
|
-if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- file(TO_CMAKE_PATH "$ENV{obsInstallerTempDir}" ENV{obsInstallerTempDir})
|
|
|
|
-endif()
|
|
|
|
-
|
|
|
|
-if(DEFINED ENV{obsAdditionalInstallFiles})
|
|
|
|
- file(TO_CMAKE_PATH "$ENV{obsAdditionalInstallFiles}" ENV{obsAdditionalInstallFiles})
|
|
|
|
-else()
|
|
|
|
- set(ENV{obsAdditionalInstallFiles} "${CMAKE_SOURCE_DIR}/additional_install_files")
|
|
|
|
-endif()
|
|
|
|
|
|
+# Create global property to hold list of activated modules
|
|
|
|
+set_property(GLOBAL PROPERTY OBS_MODULE_LIST "")
|
|
|
|
+
|
|
|
|
+# ##############################################################################
|
|
|
|
+# GLOBAL HELPER FUNCTIONS #
|
|
|
|
+# ##############################################################################
|
|
|
|
+
|
|
|
|
+# Helper function to set up runtime or library targets
|
|
|
|
+function(setup_binary_target target)
|
|
|
|
+ # Set up installation paths for program install
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime
|
|
|
|
+ LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime
|
|
|
|
+ NAMELINK_COMPONENT ${target}_Development
|
|
|
|
+ ARCHIVE DESTINATION ${OBS_LIBRARY_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Development
|
|
|
|
+ PUBLIC_HEADER DESTINATION ${OBS_INCLUDE_DESTINATION})
|
|
|
|
+
|
|
|
|
+ # Set up installation paths for development rundir
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION} COMPONENT obs_rundir
|
|
|
|
+ LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT obs_rundir
|
|
|
|
+ PUBLIC_HEADER DESTINATION ${OBS_INCLUDE_DESTINATION} EXCLUDE_FROM_ALL)
|
|
|
|
|
|
-list(APPEND CMAKE_INCLUDE_PATH
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/include${_lib_suffix}"
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/include")
|
|
|
|
-
|
|
|
|
-list(APPEND CMAKE_LIBRARY_PATH
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/lib${_lib_suffix}"
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/lib"
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/libs${_lib_suffix}"
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/libs"
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/bin${_lib_suffix}"
|
|
|
|
- "$ENV{obsAdditionalInstallFiles}/bin")
|
|
|
|
-
|
|
|
|
-if(NOT UNIX_STRUCTURE)
|
|
|
|
- set(OBS_DATA_DESTINATION "data")
|
|
|
|
- if(APPLE)
|
|
|
|
- set(OBS_EXECUTABLE_DESTINATION "bin")
|
|
|
|
- set(OBS_EXECUTABLE32_DESTINATION "bin")
|
|
|
|
- set(OBS_EXECUTABLE64_DESTINATION "bin")
|
|
|
|
- set(OBS_LIBRARY_DESTINATION "bin")
|
|
|
|
- set(OBS_LIBRARY32_DESTINATION "bin")
|
|
|
|
- set(OBS_LIBRARY64_DESTINATION "bin")
|
|
|
|
- set(OBS_PLUGIN_DESTINATION "obs-plugins")
|
|
|
|
- set(OBS_PLUGIN32_DESTINATION "obs-plugins")
|
|
|
|
- set(OBS_PLUGIN64_DESTINATION "obs-plugins")
|
|
|
|
-
|
|
|
|
- set(OBS_DATA_PATH "../${OBS_DATA_DESTINATION}")
|
|
|
|
- set(OBS_INSTALL_PREFIX "")
|
|
|
|
- set(OBS_RELATIVE_PREFIX "../")
|
|
|
|
-
|
|
|
|
- set(OBS_SCRIPT_PLUGIN_DESTINATION "${OBS_DATA_DESTINATION}/obs-scripting")
|
|
|
|
- else()
|
|
|
|
- set(OBS_EXECUTABLE_DESTINATION "bin/${_lib_suffix}bit")
|
|
|
|
- set(OBS_EXECUTABLE32_DESTINATION "bin/32bit")
|
|
|
|
- set(OBS_EXECUTABLE64_DESTINATION "bin/64bit")
|
|
|
|
- set(OBS_LIBRARY_DESTINATION "bin/${_lib_suffix}bit")
|
|
|
|
- set(OBS_LIBRARY32_DESTINATION "bin/32bit")
|
|
|
|
- set(OBS_LIBRARY64_DESTINATION "bin/64bit")
|
|
|
|
- set(OBS_PLUGIN_DESTINATION "obs-plugins/${_lib_suffix}bit")
|
|
|
|
- set(OBS_PLUGIN32_DESTINATION "obs-plugins/32bit")
|
|
|
|
- set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
|
|
|
|
-
|
|
|
|
- set(OBS_DATA_PATH "../../${OBS_DATA_DESTINATION}")
|
|
|
|
- set(OBS_INSTALL_PREFIX "")
|
|
|
|
- set(OBS_RELATIVE_PREFIX "../../")
|
|
|
|
-
|
|
|
|
- set(OBS_SCRIPT_PLUGIN_DESTINATION "${OBS_DATA_DESTINATION}/obs-scripting/${_lib_suffix}bit")
|
|
|
|
- endif()
|
|
|
|
- set(OBS_CMAKE_DESTINATION "cmake")
|
|
|
|
- set(OBS_INCLUDE_DESTINATION "include")
|
|
|
|
- set(OBS_UNIX_STRUCTURE "0")
|
|
|
|
-
|
|
|
|
- set(OBS_SCRIPT_PLUGIN_PATH "${OBS_RELATIVE_PREFIX}${OBS_SCRIPT_PLUGIN_DESTINATION}")
|
|
|
|
-else()
|
|
|
|
- if(NOT OBS_MULTIARCH_SUFFIX AND DEFINED ENV{OBS_MULTIARCH_SUFFIX})
|
|
|
|
- set(OBS_MULTIARCH_SUFFIX "$ENV{OBS_MULTIARCH_SUFFIX}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- set(OBS_EXECUTABLE_DESTINATION "bin")
|
|
|
|
- set(OBS_EXECUTABLE32_DESTINATION "bin32")
|
|
|
|
- set(OBS_EXECUTABLE64_DESTINATION "bin64")
|
|
|
|
- set(OBS_LIBRARY_DESTINATION "lib${OBS_MULTIARCH_SUFFIX}")
|
|
|
|
- set(OBS_LIBRARY32_DESTINATION "lib32")
|
|
|
|
- set(OBS_LIBRARY64_DESTINATION "lib64")
|
|
|
|
- set(OBS_PLUGIN_DESTINATION "${OBS_LIBRARY_DESTINATION}/obs-plugins")
|
|
|
|
- set(OBS_PLUGIN32_DESTINATION "${OBS_LIBRARY32_DESTINATION}/obs-plugins")
|
|
|
|
- set(OBS_PLUGIN64_DESTINATION "${OBS_LIBRARY64_DESTINATION}/obs-plugins")
|
|
|
|
- set(OBS_DATA_DESTINATION "share/obs")
|
|
|
|
- set(OBS_CMAKE_DESTINATION "${OBS_LIBRARY_DESTINATION}/cmake")
|
|
|
|
- set(OBS_INCLUDE_DESTINATION "include/obs")
|
|
|
|
-
|
|
|
|
- set(OBS_DATA_PATH "${OBS_DATA_DESTINATION}")
|
|
|
|
- set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/")
|
|
|
|
- set(OBS_RELATIVE_PREFIX "../")
|
|
|
|
- set(OBS_UNIX_STRUCTURE "1")
|
|
|
|
-
|
|
|
|
- set(OBS_SCRIPT_PLUGIN_DESTINATION "${OBS_LIBRARY_DESTINATION}/obs-scripting")
|
|
|
|
- set(OBS_SCRIPT_PLUGIN_PATH "${OBS_INSTALL_PREFIX}${OBS_SCRIPT_PLUGIN_DESTINATION}")
|
|
|
|
-endif()
|
|
|
|
-
|
|
|
|
-function(obs_generate_multiarch_installer)
|
|
|
|
- install(DIRECTORY "$ENV{obsInstallerTempDir}/"
|
|
|
|
- DESTINATION "."
|
|
|
|
- USE_SOURCE_PERMISSIONS)
|
|
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(obs_helper_copy_dir target target_configs source dest)
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}"
|
|
|
|
- "-DCONFIG=$<CONFIGURATION>"
|
|
|
|
- "-DTARGET_CONFIGS=${target_configs}"
|
|
|
|
- "-DINPUT=${source}"
|
|
|
|
- "-DOUTPUT=${dest}"
|
|
|
|
- -P "${CMAKE_SOURCE_DIR}/cmake/copy_helper.cmake"
|
|
|
|
- VERBATIM)
|
|
|
|
|
|
+# Helper function to set up OBS plugin targets
|
|
|
|
+function(setup_plugin_target target)
|
|
|
|
+ set_target_properties(${target} PROPERTIES PREFIX "")
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ RUNTIME DESTINATION ${OBS_PLUGIN_DESTINATION} COMPONENT ${target}_Runtime
|
|
|
|
+ LIBRARY DESTINATION ${OBS_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime
|
|
|
|
+ NAMELINK_COMPONENT ${target}_Development)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ RUNTIME DESTINATION ${OBS_PLUGIN_DESTINATION} COMPONENT obs_rundir
|
|
|
|
+ LIBRARY DESTINATION ${OBS_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ setup_target_resources("${target}" "obs-plugins/${target}")
|
|
|
|
+ set_property(GLOBAL APPEND PROPERTY OBS_MODULE_LIST "${target}")
|
|
|
|
+ message(STATUS "OBS: ENABLED ${target}")
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(obs_install_additional maintarget)
|
|
|
|
- set(addfdir "${CMAKE_SOURCE_DIR}/additional_install_files")
|
|
|
|
- if(DEFINED ENV{obsAdditionalInstallFiles})
|
|
|
|
- set(addfdir "$ENV{obsAdditionalInstallFiles}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
- set(_lib_suffix 64)
|
|
|
|
- else()
|
|
|
|
- set(_lib_suffix 32)
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${addfdir}/misc/"
|
|
|
|
- DESTINATION "."
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/data/"
|
|
|
|
- DESTINATION "${OBS_DATA_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
-
|
|
|
|
- if(INSTALLER_RUN)
|
|
|
|
- install(DIRECTORY "${addfdir}/libs32/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY32_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec32/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/libs64/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY64_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec64/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${addfdir}/libs32d/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY32_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Debug
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec32d/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Debug
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/libs64d/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY64_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Debug
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec64d/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Debug
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${addfdir}/libs32r/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY32_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Release RelWithDebInfo MinSizeRel
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec32r/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Release RelWithDebInfo MinSizeRel
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/libs64r/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY64_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Release RelWithDebInfo MinSizeRel
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec64r/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Release RelWithDebInfo MinSizeRel
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- else()
|
|
|
|
- install(DIRECTORY "${addfdir}/libs${_lib_suffix}/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec${_lib_suffix}/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${addfdir}/libs${_lib_suffix}d/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Debug
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec${_lib_suffix}d/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Debug
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${addfdir}/libs${_lib_suffix}r/"
|
|
|
|
- DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Release RelWithDebInfo MinSizeRel
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- install(DIRECTORY "${addfdir}/exec${_lib_suffix}r/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
|
|
|
|
- USE_SOURCE_PERMISSIONS
|
|
|
|
- CONFIGURATIONS Release RelWithDebInfo MinSizeRel
|
|
|
|
- PATTERN ".gitignore" EXCLUDE)
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- obs_helper_copy_dir(${maintarget} ALL
|
|
|
|
- "${addfdir}/misc/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/")
|
|
|
|
- obs_helper_copy_dir(${maintarget} ALL
|
|
|
|
- "${addfdir}/data/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_DATA_DESTINATION}/")
|
|
|
|
- obs_helper_copy_dir(${maintarget} ALL
|
|
|
|
- "${addfdir}/libs${_lib_suffix}/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_LIBRARY_DESTINATION}/")
|
|
|
|
- obs_helper_copy_dir(${maintarget} ALL
|
|
|
|
- "${addfdir}/exec${_lib_suffix}/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
|
|
|
|
-
|
|
|
|
- obs_helper_copy_dir(${maintarget} "Release;MinSizeRel;RelWithDebInfo"
|
|
|
|
- "${addfdir}/exec${_lib_suffix}r/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
|
|
|
|
- obs_helper_copy_dir(${maintarget} "Debug"
|
|
|
|
- "${addfdir}/exec${_lib_suffix}d/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
|
|
|
|
- obs_helper_copy_dir(${maintarget} "Release;MinSizeRel;RelWithDebInfo"
|
|
|
|
- "${addfdir}/libs${_lib_suffix}r/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_LIBRARY_DESTINATION}/")
|
|
|
|
- obs_helper_copy_dir(${maintarget} "Debug"
|
|
|
|
- "${addfdir}/libs${_lib_suffix}d/"
|
|
|
|
- "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_LIBRARY_DESTINATION}/")
|
|
|
|
|
|
+# Helper function to set up OBS scripting plugin targets
|
|
|
|
+function(setup_script_plugin_target target)
|
|
|
|
+ set_target_properties(${target} PROPERTIES PREFIX "")
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ LIBRARY DESTINATION ${OBS_SCRIPT_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime
|
|
|
|
+ NAMELINK_COMPONENT ${target}_Development)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ LIBRARY DESTINATION ${OBS_SCRIPT_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ if(${target} STREQUAL "obspython")
|
|
|
|
+ install(
|
|
|
|
+ FILES "$<TARGET_FILE_DIR:${target}>/$<TARGET_FILE_BASE_NAME:${target}>.py"
|
|
|
|
+ DESTINATION ${OBS_SCRIPT_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ FILES "$<TARGET_FILE_DIR:${target}>/$<TARGET_FILE_BASE_NAME:${target}>.py"
|
|
|
|
+ DESTINATION ${OBS_SCRIPT_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+ endif()
|
|
|
|
+ set_property(GLOBAL APPEND PROPERTY OBS_SCRIPTING_MODULE_LIST "${target}")
|
|
|
|
+ message(STATUS "OBS: ENABLED ${target}")
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(export_obs_core target exportname)
|
|
|
|
- install(TARGETS ${target}
|
|
|
|
- EXPORT "${exportname}Target"
|
|
|
|
- LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
|
|
|
- ARCHIVE DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
|
|
|
- RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
|
|
|
|
-
|
|
|
|
- export(TARGETS ${target} FILE "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Target.cmake")
|
|
|
|
- export(PACKAGE "${exportname}")
|
|
|
|
-
|
|
|
|
- set(CONF_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
- set(CONF_PLUGIN_DEST "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/${_lib_suffix}bit")
|
|
|
|
- set(CONF_PLUGIN_DEST32 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/32bit")
|
|
|
|
- set(CONF_PLUGIN_DEST64 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/64bit")
|
|
|
|
- set(CONF_PLUGIN_DATA_DEST "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/data/obs-plugins")
|
|
|
|
- configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Config.cmake" @ONLY)
|
|
|
|
-
|
|
|
|
- file(RELATIVE_PATH _pdir "${CMAKE_INSTALL_PREFIX}/${OBS_CMAKE_DESTINATION}/${exportname}" "${CMAKE_INSTALL_PREFIX}")
|
|
|
|
- set(CONF_INCLUDE_DIRS "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_INCLUDE_DESTINATION}")
|
|
|
|
- set(CONF_PLUGIN_DEST "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN_DESTINATION}")
|
|
|
|
- set(CONF_PLUGIN_DEST32 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN32_DESTINATION}")
|
|
|
|
- set(CONF_PLUGIN_DEST64 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN64_DESTINATION}")
|
|
|
|
- set(CONF_PLUGIN_DATA_DEST "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_DATA_DESTINATION}/obs-plugins")
|
|
|
|
- configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake" @ONLY)
|
|
|
|
-
|
|
|
|
- set(_pdir)
|
|
|
|
-
|
|
|
|
- configure_file("${exportname}ConfigVersion.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake" @ONLY)
|
|
|
|
-
|
|
|
|
- install(FILES
|
|
|
|
- "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake"
|
|
|
|
- "${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake"
|
|
|
|
- DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
|
|
|
|
-
|
|
|
|
- install(EXPORT "${exportname}Target"
|
|
|
|
- DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
|
|
|
|
|
|
+# Helper function to set up target resources (e.g. L10N files)
|
|
|
|
+function(setup_target_resources target destination)
|
|
|
|
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/data")
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/
|
|
|
|
+ DESTINATION ${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ USE_SOURCE_PERMISSIONS
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/
|
|
|
|
+ DESTINATION ${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ USE_SOURCE_PERMISSIONS
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+ endif()
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_headers)
|
|
|
|
- foreach(hdr ${ARGN})
|
|
|
|
- if(IS_ABSOLUTE "${hdr}")
|
|
|
|
- set(subdir)
|
|
|
|
- else()
|
|
|
|
- get_filename_component(subdir "${hdr}" DIRECTORY)
|
|
|
|
- if(subdir)
|
|
|
|
- set(subdir "/${subdir}")
|
|
|
|
- endif()
|
|
|
|
- endif()
|
|
|
|
- install(FILES "${hdr}" DESTINATION "${OBS_INCLUDE_DESTINATION}${subdir}")
|
|
|
|
- endforeach()
|
|
|
|
|
|
+# Helper function to set up specific resource files for targets
|
|
|
|
+function(add_target_resource target resource destination)
|
|
|
|
+ install(
|
|
|
|
+ FILES ${resource}
|
|
|
|
+ DESTINATION ${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ FILES ${resource}
|
|
|
|
+ DESTINATION
|
|
|
|
+ ${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(obs_debug_copy_helper target dest)
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}"
|
|
|
|
- "-DCONFIG=$<CONFIGURATION>"
|
|
|
|
- "-DFNAME=$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- "-DINPUT=$<TARGET_FILE_DIR:${target}>"
|
|
|
|
- "-DOUTPUT=${dest}"
|
|
|
|
- -P "${CMAKE_SOURCE_DIR}/cmake/copy_on_debug_helper.cmake"
|
|
|
|
- VERBATIM)
|
|
|
|
|
|
+# Helper function to set up OBS app target
|
|
|
|
+function(setup_obs_app target)
|
|
|
|
+ setup_binary_target(${target})
|
|
|
|
+
|
|
|
|
+ get_property(OBS_MODULE_LIST GLOBAL PROPERTY OBS_MODULE_LIST)
|
|
|
|
+ list(LENGTH OBS_MODULE_LIST _LEN)
|
|
|
|
+ if(_LEN GREATER 0)
|
|
|
|
+ add_dependencies(${target} ${OBS_MODULE_LIST})
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ get_property(OBS_SCRIPTING_MODULE_LIST GLOBAL
|
|
|
|
+ PROPERTY OBS_SCRIPTING_MODULE_LIST)
|
|
|
|
+ list(LENGTH OBS_SCRIPTING_MODULE_LIST _LEN)
|
|
|
|
+ if(_LEN GREATER 0)
|
|
|
|
+ add_dependencies(${target} ${OBS_SCRIPTING_MODULE_LIST})
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ # detect outdated obs-browser submodule
|
|
|
|
+ if(NOT TARGET OBS::browser AND TARGET obs-browser)
|
|
|
|
+ target_compile_features(obs-browser-page PRIVATE cxx_std_17)
|
|
|
|
+
|
|
|
|
+ add_library(OBS::browser ALIAS obs-browser)
|
|
|
|
+
|
|
|
|
+ if(NOT TARGET OBS::browser-panels AND BROWSER_PANEL_SUPPORT_ENABLED)
|
|
|
|
+ add_library(OBS::browser-panels ALIAS obs-browser)
|
|
|
|
+ endif()
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ if(TARGET OBS::browser)
|
|
|
|
+ setup_target_browser(${target})
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ if(TARGET OBS::ffmpeg-mux)
|
|
|
|
+ add_dependencies(${target} OBS::ffmpeg-mux)
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ add_custom_command(
|
|
|
|
+ TARGET ${target}
|
|
|
|
+ POST_BUILD
|
|
|
|
+ COMMAND "${CMAKE_COMMAND}" --install .. --config $<CONFIG> --prefix
|
|
|
|
+ ${OBS_OUTPUT_DIR}/$<CONFIG> --component obs_rundir
|
|
|
|
+ COMMENT "Installing OBS rundir"
|
|
|
|
+ VERBATIM)
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_pdb ttype target)
|
|
|
|
- if(NOT MSVC)
|
|
|
|
- return()
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
- set(_bit_suffix "64bit")
|
|
|
|
- else()
|
|
|
|
- set(_bit_suffix "32bit")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- obs_debug_copy_helper(${target} "${CMAKE_CURRENT_BINARY_DIR}/pdbs")
|
|
|
|
-
|
|
|
|
- if("${ttype}" STREQUAL "PLUGIN")
|
|
|
|
- obs_debug_copy_helper(${target} "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/obs-plugins/${_bit_suffix}")
|
|
|
|
-
|
|
|
|
- if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- obs_debug_copy_helper(${target} "$ENV{obsInstallerTempDir}/${OBS_PLUGIN_DESTINATION}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pdbs/"
|
|
|
|
- DESTINATION "${OBS_PLUGIN_DESTINATION}"
|
|
|
|
- CONFIGURATIONS Debug RelWithDebInfo)
|
|
|
|
- else()
|
|
|
|
- obs_debug_copy_helper(${target} "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}")
|
|
|
|
-
|
|
|
|
- if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- obs_debug_copy_helper(${target} "$ENV{obsInstallerTempDir}/${OBS_EXECUTABLE_DESTINATION}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pdbs/"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
|
|
|
|
- CONFIGURATIONS Debug RelWithDebInfo)
|
|
|
|
- endif()
|
|
|
|
-endfunction()
|
|
|
|
-
|
|
|
|
-function(install_obs_core target)
|
|
|
|
- if(APPLE)
|
|
|
|
- set(_bit_suffix "")
|
|
|
|
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
- set(_bit_suffix "64bit/")
|
|
|
|
- else()
|
|
|
|
- set(_bit_suffix "32bit/")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- if("${ARGV1}" STREQUAL "EXPORT")
|
|
|
|
- export_obs_core("${target}" "${ARGV2}")
|
|
|
|
- else()
|
|
|
|
- install(TARGETS ${target}
|
|
|
|
- LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
|
|
|
- RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${target}>"
|
|
|
|
- "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- VERBATIM)
|
|
|
|
-
|
|
|
|
- if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- get_property(target_type TARGET ${target} PROPERTY TYPE)
|
|
|
|
- if("${target_type}" STREQUAL "EXECUTABLE")
|
|
|
|
- set(tmp_target_dir "${OBS_EXECUTABLE_DESTINATION}")
|
|
|
|
- else()
|
|
|
|
- set(tmp_target_dir "${OBS_LIBRARY_DESTINATION}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${target}>"
|
|
|
|
- "$ENV{obsInstallerTempDir}/${tmp_target_dir}/$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- install_obs_pdb(CORE ${target})
|
|
|
|
|
|
+# Helper function to do additional setup for browser source plugin
|
|
|
|
+function(setup_target_browser target)
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CEF_ROOT_DIR}/Resources/
|
|
|
|
+ DESTINATION ${OBS_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CEF_ROOT_DIR}/Release/
|
|
|
|
+ DESTINATION ${OBS_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CEF_ROOT_DIR}/Resources/
|
|
|
|
+ DESTINATION ${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CEF_ROOT_DIR}/Release/
|
|
|
|
+ DESTINATION ${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_PLUGIN_DESTINATION}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_bin target mode)
|
|
|
|
- foreach(bin ${ARGN})
|
|
|
|
- if(APPLE)
|
|
|
|
- set(_bit_suffix "")
|
|
|
|
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
- set(_bit_suffix "64bit/")
|
|
|
|
- else()
|
|
|
|
- set(_bit_suffix "32bit/")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- if(NOT IS_ABSOLUTE "${bin}")
|
|
|
|
- set(bin "${CMAKE_CURRENT_SOURCE_DIR}/${bin}")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- get_filename_component(fname "${bin}" NAME)
|
|
|
|
-
|
|
|
|
- if(NOT "${mode}" MATCHES "INSTALL_ONLY")
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "${bin}"
|
|
|
|
- "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}${fname}"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- install(FILES "${bin}"
|
|
|
|
- DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
|
|
|
|
-
|
|
|
|
- if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "${bin}"
|
|
|
|
- "$ENV{obsInstallerTempDir}/${OBS_EXECUTABLE_DESTINATION}/${fname}"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
- endforeach()
|
|
|
|
|
|
+# Helper function to export target to build and install tree. Allows usage of
|
|
|
|
+# `find_package(libobs)` by other build trees
|
|
|
|
+function(export_target target)
|
|
|
|
+ set(CMAKE_EXPORT_PACKAGE_REGISTRY OFF)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ EXPORT ${target}Targets
|
|
|
|
+ RUNTIME DESTINATION ${OBS_EXECUTABLE_DESTINATION} COMPONENT obs_libraries
|
|
|
|
+ LIBRARY DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT obs_libraries
|
|
|
|
+ ARCHIVE DESTINATION ${OBS_LIBRARY_DESTINATION} COMPONENT obs_libraries
|
|
|
|
+ INCLUDES
|
|
|
|
+ DESTINATION ${OBS_INCLUDE_DESTINATION}
|
|
|
|
+ PUBLIC_HEADER
|
|
|
|
+ DESTINATION ${OBS_INCLUDE_DESTINATION}
|
|
|
|
+ COMPONENT obs_libraries
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ include(GenerateExportHeader)
|
|
|
|
+ generate_export_header(${target} EXPORT_FILE_NAME
|
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/${target}_EXPORT.h)
|
|
|
|
+
|
|
|
|
+ target_sources(${target}
|
|
|
|
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${target}_EXPORT.h)
|
|
|
|
+
|
|
|
|
+ set(TARGETS_EXPORT_NAME "${target}Targets")
|
|
|
|
+ include(CMakePackageConfigHelpers)
|
|
|
|
+ configure_package_config_file(
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${target}Config.cmake.in
|
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/${target}Config.cmake
|
|
|
|
+ INSTALL_DESTINATION ${OBS_CMAKE_DESTINATION}/${target}
|
|
|
|
+ PATH_VARS OBS_PLUGIN_DESTINATION OBS_DATA_DESTINATION)
|
|
|
|
+
|
|
|
|
+ write_basic_package_version_file(
|
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/${target}ConfigVersion.cmake
|
|
|
|
+ VERSION ${OBS_VERSION_CANONICAL}
|
|
|
|
+ COMPATIBILITY SameMajorVersion)
|
|
|
|
+
|
|
|
|
+ export(
|
|
|
|
+ EXPORT ${target}Targets
|
|
|
|
+ FILE ${CMAKE_CURRENT_BINARY_DIR}/${TARGETS_EXPORT_NAME}.cmake
|
|
|
|
+ NAMESPACE OBS::)
|
|
|
|
+
|
|
|
|
+ export(PACKAGE "${target}")
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ EXPORT ${TARGETS_EXPORT_NAME}
|
|
|
|
+ FILE ${TARGETS_EXPORT_NAME}.cmake
|
|
|
|
+ NAMESPACE OBS::
|
|
|
|
+ DESTINATION ${OBS_CMAKE_DESTINATION}/${target}
|
|
|
|
+ COMPONENT obs_libraries
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/${target}Config.cmake
|
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/${target}ConfigVersion.cmake
|
|
|
|
+ DESTINATION ${OBS_CMAKE_DESTINATION}/${target}
|
|
|
|
+ COMPONENT obs_libraries
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_plugin target)
|
|
|
|
- if(APPLE)
|
|
|
|
- set(_bit_suffix "")
|
|
|
|
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
- set(_bit_suffix "64bit/")
|
|
|
|
- else()
|
|
|
|
- set(_bit_suffix "32bit/")
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- set_target_properties(${target} PROPERTIES
|
|
|
|
- PREFIX "")
|
|
|
|
-
|
|
|
|
- install(TARGETS ${target}
|
|
|
|
- LIBRARY DESTINATION "${OBS_PLUGIN_DESTINATION}"
|
|
|
|
- RUNTIME DESTINATION "${OBS_PLUGIN_DESTINATION}")
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${target}>"
|
|
|
|
- "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/obs-plugins/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- VERBATIM)
|
|
|
|
-
|
|
|
|
- if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${target}>" "$ENV{obsInstallerTempDir}/${OBS_PLUGIN_DESTINATION}/$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- install_obs_pdb(PLUGIN ${target})
|
|
|
|
|
|
+# Helper function to install header files
|
|
|
|
+function(install_headers target)
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
|
|
|
|
+ DESTINATION ${OBS_INCLUDE_DESTINATION}
|
|
|
|
+ COMPONENT obs_libraries
|
|
|
|
+ EXCLUDE_FROM_ALL FILES_MATCHING
|
|
|
|
+ PATTERN "*.h"
|
|
|
|
+ PATTERN "*.hpp"
|
|
|
|
+ PATTERN "cmake" EXCLUDE
|
|
|
|
+ PATTERN "pkgconfig" EXCLUDE
|
|
|
|
+ PATTERN "data" EXCLUDE)
|
|
|
|
+
|
|
|
|
+ if(NOT EXISTS "${OBS_INCLUDE_DESTINATION}/obsconfig.h")
|
|
|
|
+ install(
|
|
|
|
+ FILES "${CMAKE_BINARY_DIR}/config/obsconfig.h"
|
|
|
|
+ DESTINATION "${OBS_INCLUDE_DESTINATION}"
|
|
|
|
+ COMPONENT obs_libraries
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+ endif()
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_data target datadir datadest)
|
|
|
|
- install(DIRECTORY ${datadir}/
|
|
|
|
- DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- USE_SOURCE_PERMISSIONS)
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
- "${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
-
|
|
|
|
- if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
- "${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
-endfunction()
|
|
|
|
-
|
|
|
|
-function(install_obs_data_from_abs_path target datadir datadest)
|
|
|
|
- install(DIRECTORY ${datadir}/
|
|
|
|
- DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- USE_SOURCE_PERMISSIONS)
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
- "${datadir}" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
-
|
|
|
|
- if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
- "${datadir}" "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
|
|
+# Helper function to define available graphics modules for targets
|
|
|
|
+function(define_graphic_modules target)
|
|
|
|
+ foreach(_GRAPHICS_API metal d3d11 opengl d3d9)
|
|
|
|
+ string(TOUPPER ${_GRAPHICS_API} _GRAPHICS_API_u)
|
|
|
|
+ if(TARGET OBS::libobs-${_GRAPHICS_API})
|
|
|
|
+ if(OS_POSIX AND NOT LINUX_PORTABLE)
|
|
|
|
+ target_compile_definitions(
|
|
|
|
+ ${target}
|
|
|
|
+ PRIVATE
|
|
|
|
+ DL_${_GRAPHICS_API_u}="$<TARGET_SONAME_FILE_NAME:libobs-${_GRAPHICS_API}>"
|
|
|
|
+ )
|
|
|
|
+ else()
|
|
|
|
+ target_compile_definitions(
|
|
|
|
+ ${target}
|
|
|
|
+ PRIVATE
|
|
|
|
+ DL_${_GRAPHICS_API_u}="$<TARGET_FILE_NAME:libobs-${_GRAPHICS_API}>")
|
|
|
|
+ endif()
|
|
|
|
+ add_dependencies(${target} OBS::libobs-${_GRAPHICS_API})
|
|
|
|
+ else()
|
|
|
|
+ target_compile_definitions(${target} PRIVATE DL_${_GRAPHICS_API_u}="")
|
|
|
|
+ endif()
|
|
|
|
+ endforeach()
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_data_file target datafile datadest)
|
|
|
|
- install(FILES ${datafile}
|
|
|
|
- DESTINATION "${OBS_DATA_DESTINATION}/${datadest}")
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E make_directory
|
|
|
|
- "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "${CMAKE_CURRENT_SOURCE_DIR}/${datafile}" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
-
|
|
|
|
- if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E make_directory
|
|
|
|
- "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "${CMAKE_CURRENT_SOURCE_DIR}/${datafile}" "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
-endfunction()
|
|
|
|
|
|
+macro(find_qt)
|
|
|
|
+ set(oneValueArgs VERSION)
|
|
|
|
+ set(multiValueArgs COMPONENTS COMPONENTS_WIN COMPONENTS_MAC COMPONENTS_LINUX)
|
|
|
|
+ cmake_parse_arguments(FIND_QT "" "${oneValueArgs}" "${multiValueArgs}"
|
|
|
|
+ ${ARGN})
|
|
|
|
+
|
|
|
|
+ if(OS_WINDOWS)
|
|
|
|
+ find_package(
|
|
|
|
+ Qt${FIND_QT_VERSION}
|
|
|
|
+ COMPONENTS ${FIND_QT_COMPONENTS} ${FIND_QT_COMPONENTS_WIN}
|
|
|
|
+ REQUIRED)
|
|
|
|
+ elseif(OS_MACOS)
|
|
|
|
+ find_package(
|
|
|
|
+ Qt${FIND_QT_VERSION}
|
|
|
|
+ COMPONENTS ${FIND_QT_COMPONENTS} ${FIND_QT_COMPONENTS_MAC}
|
|
|
|
+ REQUIRED)
|
|
|
|
+ else()
|
|
|
|
+ find_package(
|
|
|
|
+ Qt${FIND_QT_VERSION}
|
|
|
|
+ COMPONENTS ${FIND_QT_COMPONENTS} ${FIND_QT_COMPONENTS_LINUX}
|
|
|
|
+ REQUIRED)
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ foreach(_COMPONENT IN LISTS FIND_QT_COMPONENTS FIND_QT_COMPONENTS_WIN
|
|
|
|
+ FIND_QT_COMPONENTS_MAC FIND_QT_COMPONENTS_LINUX)
|
|
|
|
+ if(NOT TARGET Qt::${_COMPONENT} AND TARGET
|
|
|
|
+ Qt${FIND_QT_VERSION}::${_COMPONENT})
|
|
|
|
+
|
|
|
|
+ add_library(Qt::${_COMPONENT} INTERFACE IMPORTED)
|
|
|
|
+ set_target_properties(
|
|
|
|
+ Qt::${_COMPONENT} PROPERTIES INTERFACE_LINK_LIBRARIES
|
|
|
|
+ "Qt${FIND_QT_VERSION}::${_COMPONENT}")
|
|
|
|
+ endif()
|
|
|
|
+ endforeach()
|
|
|
|
+endmacro()
|
|
|
|
+
|
|
|
|
+# Idea adapted from: https://github.com/edsiper/cmake-options
|
|
|
|
+macro(set_option option value)
|
|
|
|
+ set(${option}
|
|
|
|
+ ${value}
|
|
|
|
+ CACHE INTERNAL "")
|
|
|
|
+endmacro()
|
|
|
|
+
|
|
|
|
+if(OS_WINDOWS)
|
|
|
|
+ include(ObsHelpers_Windows)
|
|
|
|
+elseif(OS_MACOS)
|
|
|
|
+ include(ObsHelpers_macOS)
|
|
|
|
+elseif(OS_POSIX)
|
|
|
|
+ include(ObsHelpers_Linux)
|
|
|
|
+endif()
|
|
|
|
|
|
-function(install_obs_datatarget target datadest)
|
|
|
|
- install(TARGETS ${target}
|
|
|
|
- LIBRARY DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
|
|
|
|
- RUNTIME DESTINATION "${OBS_DATA_DESTINATION}/${datadest}")
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${target}>"
|
|
|
|
- "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}/$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- VERBATIM)
|
|
|
|
-
|
|
|
|
- if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
- add_custom_command(TARGET ${target} POST_BUILD
|
|
|
|
- COMMAND "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${target}>"
|
|
|
|
- "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}/$<TARGET_FILE_NAME:${target}>"
|
|
|
|
- VERBATIM)
|
|
|
|
- endif()
|
|
|
|
-
|
|
|
|
- if(MSVC)
|
|
|
|
- obs_debug_copy_helper(${target} "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}")
|
|
|
|
- endif()
|
|
|
|
|
|
+# ##############################################################################
|
|
|
|
+# LEGACY FALLBACKS #
|
|
|
|
+# ##############################################################################
|
|
|
|
+
|
|
|
|
+# Helper function to install OBS plugin with associated resource directory
|
|
|
|
+function(_install_obs_plugin_with_data target source)
|
|
|
|
+ setup_plugin_target(${target})
|
|
|
|
+
|
|
|
|
+ if(NOT ${source} STREQUAL "data"
|
|
|
|
+ AND IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${source}"
|
|
|
|
+ AND NOT OS_MACOS)
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${source}/
|
|
|
|
+ DESTINATION ${OBS_DATA_DESTINATION}/obs-plugins/${target}
|
|
|
|
+ USE_SOURCE_PERMISSIONS
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${source}/
|
|
|
|
+ DESTINATION
|
|
|
|
+ ${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_DATA_DESTINATION}/obs-plugins/${target}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ if(OS_WINDOWS AND DEFINED ENV{obsInstallerTempDir})
|
|
|
|
+ install(
|
|
|
|
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${source}/
|
|
|
|
+ DESTINATION
|
|
|
|
+ $ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/obs-plugins/${target}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+ endif()
|
|
|
|
+ endif()
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(install_obs_plugin_with_data target datadir)
|
|
|
|
- install_obs_plugin(${target})
|
|
|
|
- install_obs_data(${target} "${datadir}" "obs-plugins/${target}")
|
|
|
|
|
|
+# Helper function to install OBS plugin
|
|
|
|
+function(_install_obs_plugin target)
|
|
|
|
+ setup_plugin_target(${target})
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
-function(define_graphic_modules target)
|
|
|
|
- foreach(dl_lib opengl d3d9 d3d11)
|
|
|
|
- string(TOUPPER ${dl_lib} dl_lib_upper)
|
|
|
|
- if(TARGET libobs-${dl_lib})
|
|
|
|
- if(UNIX AND UNIX_STRUCTURE)
|
|
|
|
- target_compile_definitions(${target}
|
|
|
|
- PRIVATE
|
|
|
|
- DL_${dl_lib_upper}="$<TARGET_SONAME_FILE_NAME:libobs-${dl_lib}>"
|
|
|
|
- )
|
|
|
|
- else()
|
|
|
|
- target_compile_definitions(${target}
|
|
|
|
- PRIVATE
|
|
|
|
- DL_${dl_lib_upper}="$<TARGET_FILE_NAME:libobs-${dl_lib}>"
|
|
|
|
- )
|
|
|
|
- endif()
|
|
|
|
- else()
|
|
|
|
- target_compile_definitions(${target}
|
|
|
|
- PRIVATE
|
|
|
|
- DL_${dl_lib_upper}=""
|
|
|
|
- )
|
|
|
|
- endif()
|
|
|
|
- endforeach()
|
|
|
|
|
|
+# Helper function to install data for a target only
|
|
|
|
+function(_install_obs_datatarget target destination)
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ LIBRARY DESTINATION ${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ COMPONENT ${target}_Runtime
|
|
|
|
+ NAMELINK_COMPONENT ${target}_Development
|
|
|
|
+ RUNTIME DESTINATION ${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ COMPONENT ${target}_Runtime)
|
|
|
|
+
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ LIBRARY
|
|
|
|
+ DESTINATION
|
|
|
|
+ ${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ RUNTIME
|
|
|
|
+ DESTINATION
|
|
|
|
+ ${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_DATA_DESTINATION}/${destination}
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+
|
|
|
|
+ if(OS_WINDOWS)
|
|
|
|
+ if(MSVC)
|
|
|
|
+ add_target_resource(${target} "$<TARGET_PDB_FILE:${target}>"
|
|
|
|
+ "${destination}")
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+ if(DEFINED ENV{obsInstallerTempDir})
|
|
|
|
+ install(
|
|
|
|
+ TARGETS ${target}
|
|
|
|
+ RUNTIME
|
|
|
|
+ DESTINATION
|
|
|
|
+ $ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${destination}/$<TARGET_FILE_NAME:${target}>
|
|
|
|
+ LIBRARY
|
|
|
|
+ DESTINATION
|
|
|
|
+ $ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${destination}/$<TARGET_FILE_NAME:${target}>
|
|
|
|
+ COMPONENT obs_rundir
|
|
|
|
+ EXCLUDE_FROM_ALL)
|
|
|
|
+ endif()
|
|
|
|
+ endif()
|
|
endfunction()
|
|
endfunction()
|