diff --git a/CMakeLists.txt b/CMakeLists.txt index c7f98f34..0be57913 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,8 +50,8 @@ if(WIN32) get_filename_component(ISS_PLUGIN_FILES_DIR "${CMAKE_BINARY_DIR}\\..\\package" ABSOLUTE) file(TO_NATIVE_PATH "${ISS_PLUGIN_FILES_DIR}" ISS_PLUGIN_FILES_DIR) - get_filename_component(ISS_MSVC_REDIST_HELPER_DIR - "${CMAKE_BINARY_DIR}\\.." ABSOLUTE) + get_filename_component(ISS_MSVC_REDIST_HELPER_DIR "${CMAKE_BINARY_DIR}\\.." + ABSOLUTE) file(TO_NATIVE_PATH "${ISS_MSVC_REDIST_HELPER_DIR}" ISS_MSVC_REDIST_HELPER_DIR) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/CI/windows/setup.iss.in" @@ -62,19 +62,47 @@ endif() if(BUILD_OUT_OF_TREE) set(CMAKE_PREFIX_PATH "${QTDIR}") set(CMAKE_INCLUDE_CURRENT_DIR ON) - list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external") - include(external/FindLibObs.cmake) - find_package(LibObs REQUIRED) find_package(Qt5Core REQUIRED) find_package(Qt5Widgets REQUIRED) - find_path(LIBOBS_FRONTEND_INCLUDE_DIR HINTS ${LIBOBS_INCLUDE_DIRS}) - find_file( - LIBOBS_FRONTEND_API_LIB - NAMES libobs-frontend-api.* - HINTS ${LIBOBS_LIB}) + find_package(LibObs) + find_package(LibObs-frontend-api) + if(LibObs_FOUND) + set(LIBOBS_LIB ${LIBOBS_LIBRARIES}) + set(LIBOBS_INCLUDE_DIR ${LIBOBS_INCLUDE_DIRS}) + endif() + if(LibObs-frontend-api_FOUND) + set(LIBOBS_FRONTEND_API_LIB ${LIBOBS-FRONTEND-API_LIBRARIES}) + set(LIBOBS_FRONTEND_INCLUDE_DIR ${LIBOBS-FRONTEND-API_INCLUDE_DIR}) + endif() - include_directories("${LIBOBS_INCLUDE_DIRS}" "${LIBOBS_FRONTEND_INCLUDE_DIR}" + if(NOT LIBOBS_LIB) + message(FATAL_ERROR "obs library not found - please set LIBOBS_LIB") + endif() + if(NOT LIBOBS_FRONTEND_API_LIB) + message( + FATAL_ERROR + "libobs frontend-api library not found - please set LIBOBS_FRONTEND_API_LIB" + ) + endif() + if(NOT LIBOBS_INCLUDE_DIR) + message( + FATAL_ERROR "obs.hpp header not found - please set LIBOBS_INCLUDE_DIR") + endif() + if(NOT LIBOBS_FRONTEND_INCLUDE_DIR) + message( + FATAL_ERROR + " obs-frontend-api.h not found - please set LIBOBS_FRONTEND_INCLUDE_DIR" + ) + endif() + + include_directories("${LIBOBS_INCLUDE_DIR}" "${LIBOBS_FRONTEND_INCLUDE_DIR}" ${Qt5Core_INCLUDES} ${Qt5Widgets_INCLUDES}) + + find_package(CURL REQUIRED) + include_directories("${CURL_INCLUDE_DIRS}") +else() + find_package(Libcurl REQUIRED) + include_directories("${LIBCURL_INCLUDE_DIRS}") endif() # Platform specific settings @@ -86,9 +114,6 @@ if(APPLE) include_directories(${COCOA}) endif() -find_package(Libcurl REQUIRED) -include_directories("${LIBCURL_INCLUDE_DIRS}") - if(UNIX AND NOT APPLE) find_package(X11 REQUIRED COMPONENTS Xtst Xss) link_libraries(${X11_LIBRARIES}) diff --git a/external/FindLibObs.cmake b/external/FindLibObs.cmake deleted file mode 100644 index ab0a3dea..00000000 --- a/external/FindLibObs.cmake +++ /dev/null @@ -1,107 +0,0 @@ -# This module can be copied and used by external plugins for OBS -# -# Once done these will be defined: -# -# LIBOBS_FOUND -# LIBOBS_INCLUDE_DIRS -# LIBOBS_LIBRARIES - -find_package(PkgConfig QUIET) -if (PKG_CONFIG_FOUND) - pkg_check_modules(_OBS QUIET obs libobs) -endif() - -if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_lib_suffix 64) -else() - set(_lib_suffix 32) -endif() - -if(DEFINED CMAKE_BUILD_TYPE) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(_build_type_base "debug") - else() - set(_build_type_base "release") - endif() -endif() - -find_path(LIBOBS_INCLUDE_DIR - NAMES obs.h - HINTS - ENV obsPath${_lib_suffix} - ENV obsPath - ${obsPath} - PATHS - /usr/include /usr/local/include /opt/local/include /sw/include - PATH_SUFFIXES - libobs - ) - -function(find_obs_lib base_name repo_build_path lib_name) - string(TOUPPER "${base_name}" base_name_u) - - if(DEFINED _build_type_base) - set(_build_type_${repo_build_path} "${_build_type_base}/${repo_build_path}") - set(_build_type_${repo_build_path}${_lib_suffix} "${_build_type_base}${_lib_suffix}/${repo_build_path}") - endif() - - find_library(${base_name_u}_LIB - NAMES ${_${base_name_u}_LIBRARIES} ${lib_name} lib${lib_name} - HINTS - ENV obsPath${_lib_suffix} - ENV obsPath - ${obsPath} - ${_${base_name_u}_LIBRARY_DIRS} - PATHS - /usr/lib /usr/local/lib /opt/local/lib /sw/lib - PATH_SUFFIXES - lib${_lib_suffix} lib - libs${_lib_suffix} libs - bin${_lib_suffix} bin - ../lib${_lib_suffix} ../lib - ../libs${_lib_suffix} ../libs - ../bin${_lib_suffix} ../bin - # base repo non-msvc-specific search paths - ${_build_type_${repo_build_path}} - ${_build_type_${repo_build_path}${_lib_suffix}} - build/${repo_build_path} - build${_lib_suffix}/${repo_build_path} - # base repo msvc-specific search paths on windows - build${_lib_suffix}/${repo_build_path}/Debug - build${_lib_suffix}/${repo_build_path}/RelWithDebInfo - build/${repo_build_path}/Debug - build/${repo_build_path}/RelWithDebInfo - ) -endfunction() - -find_obs_lib(LIBOBS libobs obs) - -if(MSVC) - find_obs_lib(W32_PTHREADS deps/w32-pthreads w32-pthreads) -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Libobs DEFAULT_MSG LIBOBS_LIB LIBOBS_INCLUDE_DIR) -mark_as_advanced(LIBOBS_INCLUDE_DIR LIBOBS_LIB) - -if(LIBOBS_FOUND) - if(MSVC) - if (NOT DEFINED W32_PTHREADS_LIB) - message(FATAL_ERROR "Could not find the w32-pthreads library" ) - endif() - - set(W32_PTHREADS_INCLUDE_DIR ${LIBOBS_INCLUDE_DIR}/../deps/w32-pthreads) - endif() - - set(LIBOBS_INCLUDE_DIRS ${LIBOBS_INCLUDE_DIR} ${W32_PTHREADS_INCLUDE_DIR}) - set(LIBOBS_LIBRARIES ${LIBOBS_LIB} ${W32_PTHREADS_LIB}) - include(${LIBOBS_INCLUDE_DIR}/../cmake/external/ObsPluginHelpers.cmake) - - # allows external plugins to easily use/share common dependencies that are often included with libobs (such as FFmpeg) - if(NOT DEFINED INCLUDED_LIBOBS_CMAKE_MODULES) - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LIBOBS_INCLUDE_DIR}/../cmake/Modules/") - set(INCLUDED_LIBOBS_CMAKE_MODULES true) - endif() -else() - message(FATAL_ERROR "Could not find the libobs library" ) -endif() diff --git a/external/ObsPluginHelpers.cmake b/external/ObsPluginHelpers.cmake deleted file mode 100644 index b0651dc3..00000000 --- a/external/ObsPluginHelpers.cmake +++ /dev/null @@ -1,163 +0,0 @@ -# Functions for generating external plugins - -set(EXTERNAL_PLUGIN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir") - -# Fix XCode includes to ignore warnings on system includes -function(target_include_directories_system _target) - if(XCODE) - foreach(_arg ${ARGN}) - if("${_arg}" STREQUAL "PRIVATE" OR "${_arg}" STREQUAL "PUBLIC" OR "${_arg}" STREQUAL "INTERFACE") - set(_scope ${_arg}) - else() - target_compile_options(${_target} ${_scope} -isystem${_arg}) - endif() - endforeach() - else() - target_include_directories(${_target} SYSTEM ${_scope} ${ARGN}) - endif() -endfunction() - -function(install_external_plugin_data_internal target source_dir target_dir) - install(DIRECTORY ${source_dir}/ - DESTINATION "${target}/${target_dir}" - USE_SOURCE_PERMISSIONS) - add_custom_command(TARGET ${target} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy_directory - "${CMAKE_CURRENT_SOURCE_DIR}/${source_dir}" "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$/${target}/${target_dir}" - VERBATIM) -endfunction() - -# Installs data -# 'target' is the destination target project being installed to -# 'data_loc' specifies the directory of the data -function(install_external_plugin_data target data_loc) - install_external_plugin_data_internal(${target} ${data_loc} "data") -endfunction() - -# Installs data in an architecture-specific data directory on windows/linux (data/32bit or data/64bit). Does not apply for mac. -# 'target' is the destination target project being installed to -# 'data_loc' specifies the directory of the data being installed -function(install_external_plugin_arch_data target data_loc) - if(APPLE) - set(_bit_suffix "") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_bit_suffix "/64bit") - else() - set(_bit_suffix "/32bit") - endif() - - install_external_plugin_data_internal(${target} ${data_loc} "data${_bit_suffix}") -endfunction() - -# Installs data in the target's bin directory -# 'target' is the destination target project being installed to -# 'data_loc' specifies the directory of the data being installed -function(install_external_plugin_data_to_bin target data_loc) - if(APPLE) - set(_bit_suffix "") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_bit_suffix "/64bit") - else() - set(_bit_suffix "/32bit") - endif() - - install_external_plugin_data_internal(${target} ${data_loc} "bin${_bit_suffix}") -endfunction() - -# Installs an additional binary to a target -# 'target' is the destination target project being installed to -# 'additional_target' specifies the additional binary -function(install_external_plugin_additional target additional_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(${additional_target} PROPERTIES - PREFIX "") - - install(TARGETS ${additional_target} - LIBRARY DESTINATION "bin" - RUNTIME DESTINATION "bin") - add_custom_command(TARGET ${additional_target} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy - "$" - "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$/${target}/bin/${_bit_suffix}$" - VERBATIM) -endfunction() - -# Installs the binary of the target -# 'target' is the target project being installed -function(install_external_plugin target) - install_external_plugin_additional(${target} ${target}) -endfunction() - -# Installs the binary and data of the target -# 'target' is the destination target project being installed to -function(install_external_plugin_with_data target data_loc) - install_external_plugin(${target}) - install_external_plugin_data(${target} ${data_loc}) -endfunction() - -# Installs an additional binary to the data of a target -# 'target' is the destination target project being installed to -# 'additional_target' specifies the additional binary -function(install_external_plugin_bin_to_data target additional_target) - install(TARGETS ${additional_target} - LIBRARY DESTINATION "data" - RUNTIME DESTINATION "data") - add_custom_command(TARGET ${additional_target} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy - "$" - "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$/${target}/data/$" - VERBATIM) -endfunction() - -# Installs an additional binary in an architecture-specific data directory on windows/linux (data/32bit or data/64bit). Does not apply for mac. -# 'target' is the destination target project being installed to -# 'additional_target' specifies the additional binary -function(install_external_plugin_bin_to_arch_data target additional_target) - if(APPLE) - set(_bit_suffix "") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_bit_suffix "/64bit") - else() - set(_bit_suffix "/32bit") - endif() - - install(TARGETS ${additional_target} - LIBRARY DESTINATION "data${_bit_suffix}" - RUNTIME DESTINATION "data${_bit_suffix}") - add_custom_command(TARGET ${additional_target} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy - "$" - "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$/${target}/data${_bit_suffix}/$" - VERBATIM) -endfunction() - -# Installs an additional file in an architecture-specific data directory on windows/linux (data/32bit or data/64bit). Does not apply for mac. -# 'target' is the destination target project being installed to -# 'additional_target' specifies the additional binary -function(install_external_plugin_data_file_to_arch_data target additional_target file_target) - if(APPLE) - set(_bit_suffix "") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_bit_suffix "/64bit") - else() - set(_bit_suffix "/32bit") - endif() - - get_filename_component(file_target_name ${file_target} NAME) - - install(TARGETS ${additional_target} - LIBRARY DESTINATION "data${_bit_suffix}" - RUNTIME DESTINATION "data${_bit_suffix}") - add_custom_command(TARGET ${additional_target} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy - "${file_target}" - "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$/${target}/data${_bit_suffix}/${file_target_name}" - VERBATIM) -endfunction()