mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 04:42:18 +02:00
mac-virtualcam: Add Camera Extension to main CMake plugin project
Camera Extensions require specific entitlements for the hosting app, which also require a provisioning profile. To avoid breaking local builds that do not require the camera extension, an additional entitlements file that will not trigger the provisioning profile requirement will be used if the virtualcam (but not the Camera Extension) is configured.
This commit is contained in:
parent
aae2f7e8ff
commit
3f85e447a8
@ -118,6 +118,8 @@ _configure_obs() {
|
|||||||
-DCMAKE_INSTALL_PREFIX=${BUILD_DIR}/install \
|
-DCMAKE_INSTALL_PREFIX=${BUILD_DIR}/install \
|
||||||
-DCMAKE_BUILD_TYPE=${BUILD_CONFIG} \
|
-DCMAKE_BUILD_TYPE=${BUILD_CONFIG} \
|
||||||
-DOBS_CODESIGN_IDENTITY="${CODESIGN_IDENT:--}" \
|
-DOBS_CODESIGN_IDENTITY="${CODESIGN_IDENT:--}" \
|
||||||
|
-DOBS_CODESIGN_TEAM="${CODESIGN_TEAM:-}" \
|
||||||
|
-DOBS_PROVISIONING_PROFILE="${PROVISIONING_PROFILE:-}" \
|
||||||
${YOUTUBE_OPTIONS} \
|
${YOUTUBE_OPTIONS} \
|
||||||
${TWITCH_OPTIONS} \
|
${TWITCH_OPTIONS} \
|
||||||
${RESTREAM_OPTIONS} \
|
${RESTREAM_OPTIONS} \
|
||||||
|
@ -71,6 +71,7 @@
|
|||||||
"ENABLE_SPARKLE": true,
|
"ENABLE_SPARKLE": true,
|
||||||
"OBS_SPARKLE_KEY": {"type": "STRING", "value": ""},
|
"OBS_SPARKLE_KEY": {"type": "STRING", "value": ""},
|
||||||
"OBS_CODESIGN_IDENTITY": "$penv{CODESIGN_IDENT}",
|
"OBS_CODESIGN_IDENTITY": "$penv{CODESIGN_IDENT}",
|
||||||
|
"OBS_CODESIGN_TEAM": "$penv{CODESIGN_TEAM}",
|
||||||
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_arm64_v2.xml"},
|
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_arm64_v2.xml"},
|
||||||
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="},
|
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="},
|
||||||
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
|
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
|
||||||
@ -88,6 +89,7 @@
|
|||||||
"ENABLE_SPARKLE": true,
|
"ENABLE_SPARKLE": true,
|
||||||
"OBS_SPARKLE_KEY": {"type": "STRING", "value": ""},
|
"OBS_SPARKLE_KEY": {"type": "STRING", "value": ""},
|
||||||
"OBS_CODESIGN_IDENTITY": "$penv{CODESIGN_IDENT}",
|
"OBS_CODESIGN_IDENTITY": "$penv{CODESIGN_IDENT}",
|
||||||
|
"OBS_CODESIGN_TEAM": "$penv{CODESIGN_TEAM}",
|
||||||
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_x86_64_v2.xml"},
|
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_x86_64_v2.xml"},
|
||||||
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="},
|
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="},
|
||||||
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
|
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
|
||||||
|
20
UI/cmake/macos/entitlements-extension.plist
Normal file
20
UI/cmake/macos/entitlements-extension.plist
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!--?xml version="1.0" encoding="UTF-8"?-->
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.device.camera</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.device.audio-input</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.disable-library-validation</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.developer.system-extension.install</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.application-groups</key>
|
||||||
|
<array>
|
||||||
|
<string>$(TeamIdentifierPrefix)com.obsproject.obs-studio</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
@ -51,7 +51,8 @@ if(NOT XCODE)
|
|||||||
add_link_options(LINKER:-dead_strip)
|
add_link_options(LINKER:-dead_strip)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_compile_options("$<$<COMPILE_LANGUAGE:C>:${_obs_c_options}>" "$<$<COMPILE_LANGUAGE:CXX>:${_obs_c_options}>")
|
add_compile_options("$<$<COMPILE_LANGUAGE:C>:${_obs_c_options}>" "$<$<COMPILE_LANGUAGE:CXX>:${_obs_c_options}>"
|
||||||
|
"$<$<AND:$<COMPILE_LANGUAGE:Swift>,$<CONFIG:DEBUG>>:-Onone>")
|
||||||
|
|
||||||
option(ENABLE_COMPILER_TRACE "Enable clang time-trace (requires Ninja)" OFF)
|
option(ENABLE_COMPILER_TRACE "Enable clang time-trace (requires Ninja)" OFF)
|
||||||
mark_as_advanced(ENABLE_COMPILER_TRACE)
|
mark_as_advanced(ENABLE_COMPILER_TRACE)
|
||||||
@ -69,4 +70,4 @@ if(NOT XCODE)
|
|||||||
set(CMAKE_COLOR_DIAGNOSTICS ON)
|
set(CMAKE_COLOR_DIAGNOSTICS ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG> $<$<CONFIG:DEBUG>:_DEBUG>)
|
add_compile_definitions("$<$<AND:$<COMPILE_LANGUAGE:C,CXX>,$<CONFIG:DEBUG>>:DEBUG;_DEBUG>")
|
||||||
|
@ -79,8 +79,27 @@ function(set_target_properties_obs target)
|
|||||||
COMMENT "Copy ${executable} to application bundle")
|
COMMENT "Copy ${executable} to application bundle")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
_check_entitlements()
|
if(VIRTUALCAM_DEVICE_UUID
|
||||||
configure_file(cmake/macos/exportOptions.plist.in ${CMAKE_BINARY_DIR}/exportOptions.plist)
|
AND VIRTUALCAM_SOURCE_UUID
|
||||||
|
AND VIRTUALCAM_SINK_UUID)
|
||||||
|
set(entitlements_file "${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos/entitlements-extension.plist")
|
||||||
|
else()
|
||||||
|
set(entitlements_file "${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos/entitlements.plist")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT EXISTS "${entitlements_file}")
|
||||||
|
message(FATAL_ERROR "Target ${target} is missing an entitlements file in its cmake directory.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${entitlements_file}")
|
||||||
|
|
||||||
|
if(NOT CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE STREQUAL "Automatic")
|
||||||
|
set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER
|
||||||
|
"${OBS_PROVISIONING_PROFILE}")
|
||||||
|
configure_file(cmake/macos/exportOptions-extension.plist.in ${CMAKE_BINARY_DIR}/exportOptions.plist)
|
||||||
|
else()
|
||||||
|
configure_file(cmake/macos/exportOptions.plist.in ${CMAKE_BINARY_DIR}/exportOptions.plist)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${target}
|
TARGET ${target}
|
||||||
@ -126,16 +145,28 @@ function(set_target_properties_obs target)
|
|||||||
COMMENT "Add OBS::python import module")
|
COMMENT "Add OBS::python import module")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(TARGET mac-camera-extension)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND
|
||||||
|
"${CMAKE_COMMAND}" -E copy_directory "$<TARGET_BUNDLE_DIR:mac-camera-extension>"
|
||||||
|
"$<TARGET_BUNDLE_CONTENT_DIR:${target}>/Library/SystemExtensions/$<TARGET_BUNDLE_DIR_NAME:mac-camera-extension>"
|
||||||
|
COMMENT "Add Camera Extension to application bundle")
|
||||||
|
endif()
|
||||||
|
|
||||||
_bundle_dependencies(${target})
|
_bundle_dependencies(${target})
|
||||||
|
|
||||||
install(TARGETS ${target} BUNDLE DESTINATION "." COMPONENT Application)
|
install(TARGETS ${target} BUNDLE DESTINATION "." COMPONENT Application)
|
||||||
|
elseif(${target} STREQUAL mac-camera-extension)
|
||||||
|
set_target_properties(${target} PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
|
||||||
|
set_property(GLOBAL APPEND PROPERTY _OBS_DEPENDENCIES ${target})
|
||||||
else()
|
else()
|
||||||
set_property(TARGET ${target} PROPERTY XCODE_ATTRIBUTE_SKIP_INSTALL NO)
|
set_property(TARGET ${target} PROPERTY XCODE_ATTRIBUTE_SKIP_INSTALL NO)
|
||||||
set_property(GLOBAL APPEND PROPERTY _OBS_EXECUTABLES ${target})
|
set_property(GLOBAL APPEND PROPERTY _OBS_EXECUTABLES ${target})
|
||||||
set_property(GLOBAL APPEND PROPERTY _OBS_DEPENDENCIES ${target})
|
set_property(GLOBAL APPEND PROPERTY _OBS_DEPENDENCIES ${target})
|
||||||
|
_add_entitlements()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
_add_entitlements()
|
|
||||||
elseif(target_type STREQUAL SHARED_LIBRARY)
|
elseif(target_type STREQUAL SHARED_LIBRARY)
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
${target}
|
${target}
|
||||||
|
@ -20,18 +20,27 @@ set(CMAKE_XCODE_ATTRIBUTE_MARKETING_VERSION ${OBS_VERSION_CANONICAL})
|
|||||||
# Set deployment target
|
# Set deployment target
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET ${CMAKE_OSX_DEPLOYMENT_TARGET})
|
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET ${CMAKE_OSX_DEPLOYMENT_TARGET})
|
||||||
|
|
||||||
|
if(NOT OBS_PROVISIONING_PROFILE)
|
||||||
|
set(OBS_PROVISIONING_PROFILE
|
||||||
|
""
|
||||||
|
CACHE STRING "OBS provisioning profile name for macOS" FORCE)
|
||||||
|
else()
|
||||||
|
set(CMAKE_XCODE_ATTRIBUTE_PROVISIONING_PROFILE_NAME "${OBS_PROVISIONING_PROFILE}")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT OBS_CODESIGN_TEAM)
|
if(NOT OBS_CODESIGN_TEAM)
|
||||||
# Switch to manual codesigning if no codesigning team is provided
|
# Switch to manual codesigning if no codesigning team is provided
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual)
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual)
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${OBS_CODESIGN_IDENTITY}")
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${OBS_CODESIGN_IDENTITY}")
|
||||||
else()
|
else()
|
||||||
if(DEFINED OBS_CODESIGN_IDENTITY AND NOT OBS_CODESIGN_IDENTITY STREQUAL "-")
|
if(OBS_CODESIGN_IDENTITY AND NOT OBS_CODESIGN_IDENTITY STREQUAL "-")
|
||||||
# Switch to manual codesigning if a non-adhoc codesigning identity is provided
|
# Switch to manual codesigning if a non-adhoc codesigning identity is provided
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual)
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE Manual)
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${OBS_CODESIGN_IDENTITY}")
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${OBS_CODESIGN_IDENTITY}")
|
||||||
else()
|
else()
|
||||||
# Switch to automatic codesigning via valid team ID
|
# Switch to automatic codesigning via valid team ID
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE Automatic)
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE Automatic)
|
||||||
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development")
|
||||||
endif()
|
endif()
|
||||||
set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${OBS_CODESIGN_TEAM}")
|
set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${OBS_CODESIGN_TEAM}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -19,3 +19,4 @@ target_include_directories(obs-mach-protocol INTERFACE "${CMAKE_CURRENT_SOURCE_D
|
|||||||
|
|
||||||
add_subdirectory(src/obs-plugin)
|
add_subdirectory(src/obs-plugin)
|
||||||
add_subdirectory(src/dal-plugin)
|
add_subdirectory(src/dal-plugin)
|
||||||
|
add_subdirectory(src/camera-extension)
|
||||||
|
Loading…
Reference in New Issue
Block a user