فهرست منبع

cmake: Add bundle support files for macOS and Windows

PatTheMav 3 سال پیش
والد
کامیت
b667fb3eff
39فایلهای تغییر یافته به همراه581 افزوده شده و 0 حذف شده
  1. BIN
      cmake/bundle/macOS/AppIcon.icns
  2. BIN
      cmake/bundle/macOS/AppIcon.iconset/icon_128x128.png
  3. BIN
      cmake/bundle/macOS/AppIcon.iconset/[email protected]
  4. BIN
      cmake/bundle/macOS/AppIcon.iconset/icon_16x16.png
  5. BIN
      cmake/bundle/macOS/AppIcon.iconset/[email protected]
  6. BIN
      cmake/bundle/macOS/AppIcon.iconset/icon_256x256.png
  7. BIN
      cmake/bundle/macOS/AppIcon.iconset/[email protected]
  8. BIN
      cmake/bundle/macOS/AppIcon.iconset/icon_32x32.png
  9. BIN
      cmake/bundle/macOS/AppIcon.iconset/[email protected]
  10. BIN
      cmake/bundle/macOS/AppIcon.iconset/icon_512x512.png
  11. BIN
      cmake/bundle/macOS/AppIcon.iconset/[email protected]
  12. 68 0
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json
  13. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_128x128.png
  14. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]
  15. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_16x16.png
  16. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]
  17. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_256x256.png
  18. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]
  19. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_32x32.png
  20. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]
  21. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_512x512.png
  22. BIN
      cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]
  23. 6 0
      cmake/bundle/macOS/Assets.xcassets/Contents.json
  24. 34 0
      cmake/bundle/macOS/Info.plist.in
  25. 36 0
      cmake/bundle/macOS/OBSPublicDSAKey.pem
  26. 28 0
      cmake/bundle/macOS/Plugin-Info.plist.in
  27. 42 0
      cmake/bundle/macOS/Virtualcam-Info.plist.in
  28. BIN
      cmake/bundle/macOS/background.tiff
  29. 175 0
      cmake/bundle/macOS/bundleutils.cmake
  30. BIN
      cmake/bundle/macOS/dylibbundler
  31. 10 0
      cmake/bundle/macOS/entitlements-helper.gpu.plist
  32. 12 0
      cmake/bundle/macOS/entitlements-helper.plist
  33. 10 0
      cmake/bundle/macOS/entitlements-helper.plugin.plist
  34. 10 0
      cmake/bundle/macOS/entitlements-helper.renderer.plist
  35. 17 0
      cmake/bundle/macOS/entitlements.plist
  36. 66 0
      cmake/bundle/macOS/package.applescript.in
  37. 43 0
      cmake/bundle/windows/ALL_BUILD.vcxproj.user.in
  38. 24 0
      cmake/bundle/windows/obs-module.rc.in
  39. BIN
      cmake/bundle/windows/obs-studio.ico

BIN
cmake/bundle/macOS/AppIcon.icns


BIN
cmake/bundle/macOS/AppIcon.iconset/icon_128x128.png


BIN
cmake/bundle/macOS/AppIcon.iconset/[email protected]


BIN
cmake/bundle/macOS/AppIcon.iconset/icon_16x16.png


BIN
cmake/bundle/macOS/AppIcon.iconset/[email protected]


BIN
cmake/bundle/macOS/AppIcon.iconset/icon_256x256.png


BIN
cmake/bundle/macOS/AppIcon.iconset/[email protected]


BIN
cmake/bundle/macOS/AppIcon.iconset/icon_32x32.png


BIN
cmake/bundle/macOS/AppIcon.iconset/[email protected]


BIN
cmake/bundle/macOS/AppIcon.iconset/icon_512x512.png


BIN
cmake/bundle/macOS/AppIcon.iconset/[email protected]


+ 68 - 0
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "filename" : "icon_16x16.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "16x16"
+    },
+    {
+      "filename" : "[email protected]",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "16x16"
+    },
+    {
+      "filename" : "icon_32x32.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "32x32"
+    },
+    {
+      "filename" : "[email protected]",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "32x32"
+    },
+    {
+      "filename" : "icon_128x128.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "128x128"
+    },
+    {
+      "filename" : "[email protected]",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "128x128"
+    },
+    {
+      "filename" : "icon_256x256.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "256x256"
+    },
+    {
+      "filename" : "[email protected]",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "256x256"
+    },
+    {
+      "filename" : "icon_512x512.png",
+      "idiom" : "mac",
+      "scale" : "1x",
+      "size" : "512x512"
+    },
+    {
+      "filename" : "[email protected]",
+      "idiom" : "mac",
+      "scale" : "2x",
+      "size" : "512x512"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_128x128.png


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_16x16.png


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_256x256.png


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_32x32.png


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/icon_512x512.png


BIN
cmake/bundle/macOS/Assets.xcassets/AppIcon.appiconset/[email protected]


+ 6 - 0
cmake/bundle/macOS/Assets.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 34 - 0
cmake/bundle/macOS/Info.plist.in

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string>${MACOSX_BUNDLE_ICON_FILE}</string>
+	<key>CFBundleIdentifier</key>
+	<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
+	<key>CFBundleVersion</key>
+	<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
+	<key>NSHighResolutionCapable</key>
+	<true/>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.13</string>
+	<key>LSAppNapIsDisabled</key>
+	<true/>
+	<key>NSCameraUsageDescription</key>
+ 	<string>OBS needs to access the camera to enable camera sources to work.</string>
+ 	<key>NSMicrophoneUsageDescription</key>
+ 	<string>OBS needs to access the microphone to enable audio input.</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>(c) 2012-${CURRENT_YEAR} Hugh Bailey</string>
+</dict>
+</plist>

+ 36 - 0
cmake/bundle/macOS/OBSPublicDSAKey.pem

@@ -0,0 +1,36 @@
+-----BEGIN PUBLIC KEY-----
+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
+MGjmuSOlPA1umQsToIcO4g==
+-----END PUBLIC KEY-----

+ 28 - 0
cmake/bundle/macOS/Plugin-Info.plist.in

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleName</key>
+	<string>${MACOSX_PLUGIN_BUNDLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>${MACOSX_PLUGIN_GUI_IDENTIFIER}</string>
+	<key>CFBundleVersion</key>
+	<string>${MACOSX_PLUGIN_BUNDLE_VERSION}</string>
+	<key>CFBundleShortVersionString</key>
+	<string>${MACOSX_PLUGIN_SHORT_VERSION_STRING}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleExecutable</key>
+	<string>${MACOSX_PLUGIN_EXECUTABLE_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>${MACOSX_PLUGIN_BUNDLE_TYPE}</string>
+	<key>CFBundleSupportedPlatforms</key>
+	<array>
+		<string>MacOSX</string>
+	</array>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.13</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>(c) 2012-${CURRENT_YEAR} Hugh Bailey</string>
+</dict>
+</plist>

+ 42 - 0
cmake/bundle/macOS/Virtualcam-Info.plist.in

@@ -0,0 +1,42 @@
+<?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>CFBundleName</key>
+	<string>${MACOSX_PLUGIN_BUNDLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>${MACOSX_PLUGIN_GUI_IDENTIFIER}</string>
+	<key>CFBundleVersion</key>
+	<string>${MACOSX_PLUGIN_BUNDLE_VERSION}</string>
+	<key>CFBundleShortVersionString</key>
+	<string>${MACOSX_PLUGIN_SHORT_VERSION_STRING}</string>
+	<key>CFBundleExecutable</key>
+	<string>obs-mac-virtualcam</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>${MACOSX_PLUGIN_BUNDLE_TYPE}</string>
+	<key>CFBundleSupportedPlatforms</key>
+	<array>
+		<string>MacOSX</string>
+	</array>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.13</string>
+	<key>CFPlugInFactories</key>
+	<dict>
+		<key>7E950B8C-5E49-4B9E-B7D0-B3608A08E8F6</key>
+		<string>PlugInMain</string>
+	</dict>
+	<key>CFPlugInTypes</key>
+	<dict>
+		<key>30010C1C-93BF-11D8-8B5B-000A95AF9C6A</key>
+		<array>
+			<string>7E950B8C-5E49-4B9E-B7D0-B3608A08E8F6</string>
+		</array>
+	</dict>
+	<key>CMIOHardwareAssistantServiceNames</key>
+	<array>
+		<string>com.obsproject.obs-mac-virtualcam.server</string>
+	</array>
+</dict>
+</plist>

BIN
cmake/bundle/macOS/background.tiff


+ 175 - 0
cmake/bundle/macOS/bundleutils.cmake

@@ -0,0 +1,175 @@
+if(POLICY CMP0007)
+  cmake_policy(SET CMP0007 NEW)
+endif()
+if(POLICY CMP0009)
+  cmake_policy(SET CMP0009 NEW)
+endif()
+if(POLICY CMP0011)
+  cmake_policy(SET CMP0011 NEW)
+endif()
+
+# Add additional search paths for dylibbundler
+list(APPEND _FIXUP_BUNDLES "-s \"${CMAKE_INSTALL_PREFIX}/lib\"")
+list(APPEND _FIXUP_BUNDLES "-s \"${CMAKE_INSTALL_PREFIX}/Frameworks\"")
+
+# Unlinked modules need to be supplied manually to dylibbundler
+
+# Find all modules (plugin and standalone)
+file(GLOB _OBS_PLUGINS
+     "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/*.plugin")
+file(GLOB _OBS_SCRIPTING_PLUGINS
+     "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/*.so")
+
+# Add modules to fixups
+foreach(_OBS_PLUGIN IN LISTS _OBS_PLUGINS)
+  get_filename_component(PLUGIN_NAME "${_OBS_PLUGIN}" NAME_WLE)
+  list(APPEND _FIXUP_BUNDLES
+       "-x \"${_OBS_PLUGIN}/Contents/MacOS/${PLUGIN_NAME}\"")
+endforeach()
+
+if(EXISTS
+   "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/MacOS/obs-ffmpeg-mux")
+  list(
+    APPEND
+    _FIXUP_BUNDLES
+    "-x \"${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/MacOS/obs-ffmpeg-mux\""
+  )
+endif()
+
+# Add scripting modules to fixups
+foreach(_OBS_PLUGIN IN LISTS _OBS_SCRIPTING_PLUGINS)
+  list(APPEND _FIXUP_BUNDLES "-x \"${_OBS_PLUGIN}\"")
+endforeach()
+
+# Run dylibbbundler
+if(DEFINED ENV{VERBOSE})
+  set(_VERBOSE_FLAG "--verbose")
+endif()
+
+if(DEFINED ENV{QUIET})
+  set(_QUIET_FLAG "OUTPUT_QUIET")
+endif()
+
+list(REMOVE_DUPLICATES _FIXUP_BUNDLES)
+string(REPLACE ";" " " _FIXUP_BUNDLES "${_FIXUP_BUNDLES}")
+message(STATUS "OBS: Bundle linked libraries and dependencies")
+execute_process(
+  COMMAND
+    /bin/sh -c
+    "${_BUNDLER_COMMAND} -a \"${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}\" -cd -of -q -f ${_FIXUP_BUNDLES} ${_VERBOSE_FLAG}"
+    ${_QUIET_FLAG})
+
+# Find all dylibs, frameworks and other code elements inside bundle
+file(GLOB _DYLIBS
+     "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/*.dylib")
+file(GLOB _FRAMEWORKS
+     "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/*.framework")
+file(GLOB_RECURSE _QT_PLUGINS
+     "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/*.dylib")
+
+if(EXISTS
+   "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/MacOS/obs-ffmpeg-mux")
+  list(APPEND _OTHER_BINARIES
+       "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/MacOS/obs-ffmpeg-mux")
+endif()
+
+if(EXISTS
+   "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/obspython.py")
+  list(APPEND _OTHER_BINARIES
+       "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/obspython.py")
+endif()
+
+if(EXISTS
+   "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Resources/obs-mac-virtualcam.plugin"
+)
+  list(
+    APPEND
+    _OTHER_BINARIES
+    "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Resources/obs-mac-virtualcam.plugin"
+  )
+endif()
+
+# Create libobs symlink for legacy plugin support
+execute_process(
+  COMMAND
+    /bin/sh -c
+    "cd \"${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks\" && ln -fs libobs.framework/Versions/Current/libobs libobs.0.dylib && ln -fsv libobs.framework/Versions/Current/libobs libobs.dylib"
+    ${_QUIET_FLAG})
+
+# Python potentially leaves __pycache__ directories inside the bundle which will
+# break codesigning
+if(EXISTS "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/__pycache__")
+  file(REMOVE_RECURSE
+       "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/PlugIns/__pycache__")
+endif()
+
+# Codesign all binaries inside-out
+message(STATUS "OBS: Codesign dependencies")
+if(EXISTS
+   "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/Sparkle.framework"
+)
+  execute_process(
+    COMMAND
+      /usr/bin/codesign --remove-signature
+      "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app"
+      ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+  execute_process(
+    COMMAND
+      /usr/bin/codesign --force --sign "${_CODESIGN_IDENTITY}" --deep --options
+      runtime
+      "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app"
+      ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+endif()
+if(EXISTS
+   "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/Chromium Embedded Framework.framework"
+)
+  set(CEF_HELPER_OUTPUT_NAME "OBS Helper")
+  set(CEF_HELPER_APP_SUFFIXES ":" " (GPU):.gpu" " (Plugin):.plugin"
+                              " (Renderer):.renderer")
+
+  foreach(_SUFFIXES ${CEF_HELPER_APP_SUFFIXES})
+    string(REPLACE ":" ";" _SUFFIXES ${_SUFFIXES})
+    list(GET _SUFFIXES 0 _NAME_SUFFIX)
+    list(GET _SUFFIXES 1 _PLIST_SUFFIX)
+
+    set(_HELPER_OUTPUT_NAME "${CEF_HELPER_OUTPUT_NAME}${_NAME_SUFFIX}")
+    set(_HELPER_ENTITLEMENT_PLIST "entitlements-helper${_PLIST_SUFFIX}.plist")
+
+    execute_process(
+      COMMAND
+        /usr/bin/codesign --remove-signature
+        "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/OBS Helper${_NAME_SUFFIX}.app"
+        ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+    execute_process(
+      COMMAND
+        /usr/bin/codesign --force --sign "${_CODESIGN_IDENTITY}" --deep
+        --options runtime --entitlements
+        "${_CODESIGN_ENTITLEMENTS}/entitlements-helper${_PLIST_SUFFIX}.plist"
+        "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}/Contents/Frameworks/OBS Helper${_NAME_SUFFIX}.app"
+        ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+  endforeach()
+endif()
+foreach(_DEPENDENCY IN LISTS _OTHER_BINARIES _DYLIBS _FRAMEWORKS _OBS_PLUGINS
+                             _OBS_SCRIPTING_PLUGINS _QT_PLUGINS)
+  if(NOT IS_SYMLINK "${_DEPENDENCY}")
+    execute_process(COMMAND /usr/bin/codesign --remove-signature
+                            "${_DEPENDENCY}" ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+    execute_process(
+      COMMAND
+        /usr/bin/codesign --force --sign "${_CODESIGN_IDENTITY}" --options
+        runtime --entitlements "${_CODESIGN_ENTITLEMENTS}/entitlements.plist"
+        "${_DEPENDENCY}" ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+  endif()
+endforeach()
+
+# Codesign main app
+message(STATUS "OBS: Codesign main app")
+execute_process(
+  COMMAND
+    /usr/bin/codesign --remove-signature
+    "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}" ${_VERBOSE_FLAG} ${_QUIET_FLAG})
+execute_process(
+  COMMAND
+    /usr/bin/codesign --force --sign "${_CODESIGN_IDENTITY}" --options runtime
+    --entitlements "${_CODESIGN_ENTITLEMENTS}/entitlements.plist"
+    "${CMAKE_INSTALL_PREFIX}/${_BUNDLENAME}" ${_VERBOSE_FLAG} ${_QUIET_FLAG})

BIN
cmake/bundle/macOS/dylibbundler


+ 10 - 0
cmake/bundle/macOS/entitlements-helper.gpu.plist

@@ -0,0 +1,10 @@
+<?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.disable-library-validation</key>
+    <true/>
+    <key>com.apple.security.cs.allow-jit</key>
+    <true/>
+</dict>
+</plist>

+ 12 - 0
cmake/bundle/macOS/entitlements-helper.plist

@@ -0,0 +1,12 @@
+<?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.cs.disable-library-validation</key>
+   <true/>
+   <key>com.apple.security.cs.allow-jit</key>
+   <true/>
+</dict>
+</plist>

+ 10 - 0
cmake/bundle/macOS/entitlements-helper.plugin.plist

@@ -0,0 +1,10 @@
+<?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.cs.disable-library-validation</key>
+    <true/>
+</dict>
+</plist>

+ 10 - 0
cmake/bundle/macOS/entitlements-helper.renderer.plist

@@ -0,0 +1,10 @@
+<?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-jit</key>
+    <true/>
+    <key>com.apple.security.cs.disable-library-validation</key>
+    <true/>
+</dict>
+</plist>

+ 17 - 0
cmake/bundle/macOS/entitlements.plist

@@ -0,0 +1,17 @@
+<!--?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/>
+        <!-- Allows @executable_path to load libaries from within the .app bundle. -->
+        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
+        <true/>
+    </dict>
+</plist>

+ 66 - 0
cmake/bundle/macOS/package.applescript.in

@@ -0,0 +1,66 @@
+on run (volumeName)
+    tell application "Finder"
+        tell disk (volumeName as string)
+            open
+
+            set theXOrigin to @_DMG_WINDOW_X@
+            set theYOrigin to @_DMG_WINDOW_Y@
+            set theWidth to @_DMG_WINDOW_WIDTH@
+            set theHeight to @_DMG_WINDOW_HEIGHT@
+
+            set theBottomRightX to (theXOrigin + theWidth)
+            set theBottomRightY to (theYOrigin + theHeight)
+            set dsStore to "\"" & "/Volumes/" & volumeName & "/" & ".DS_STORE\""
+
+            tell container window
+                set current view to icon view
+                set toolbar visible to false
+                set statusbar visible to false
+                set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY}
+                set statusbar visible to false
+                set position of every item to {theBottomRightX + 100, 100}
+            end tell
+
+            set opts to the icon view options of container window
+            tell opts
+                set icon size to @_DMG_ICON_SIZE@
+                set text size to @_DMG_TEXT_SIZE@
+                set arrangement to not arranged
+            end tell
+            set background picture of opts to file ".background:@CPACK_DMG_BACKGROUND_FILENAME@"
+            set position of item "@[email protected]" to {@_DMG_OBS_X@, @_DMG_OBS_Y@}
+            set position of item "Applications" to {@_DMG_APP_LINK_X@, @_DMG_APP_LINK_Y@}
+            close
+            open
+            -- Force saving of the size
+            delay 1
+
+            tell container window
+                set statusbar visible to false
+                set the bounds to {theXOrigin, theYOrigin, theBottomRightX - 10, theBottomRightY - 10}
+            end tell
+        end tell
+
+        delay 1
+
+        tell disk (volumeName as string)
+            tell container window
+                set statusbar visible to false
+                set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY}
+            end tell
+        end tell
+
+        --give the finder some time to write the .DS_Store file
+        delay 3
+
+        set waitTime to 0
+        set ejectMe to false
+        repeat while ejectMe is false
+            delay 1
+            set waitTime to waitTime + 1
+
+            if (do shell script "[ -f " & dsStore & " ]; echo $?") = "0" then set ejectMe to true
+        end repeat
+        log "waited " & waitTime & " seconds for .DS_STORE to be created."
+    end tell
+end run

+ 43 - 0
cmake/bundle/windows/ALL_BUILD.vcxproj.user.in

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\64bit\obs64.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\64bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\64bit\obs64.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\64bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\64bit\obs64.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\64bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\64bit\obs64.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\64bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|Win32'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\32bit\obs32.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\32bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\32bit\obs32.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\32bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\32bit\obs32.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\32bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|Win32'">
+    <LocalDebuggerCommand>$(SolutionDir)rundir\$(Configuration)\bin\32bit\obs32.exe</LocalDebuggerCommand>
+    <LocalDebuggerWorkingDirectory>$(SolutionDir)rundir\$(Configuration)\bin\32bit</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+</Project>

+ 24 - 0
cmake/bundle/windows/obs-module.rc.in

@@ -0,0 +1,24 @@
+1 VERSIONINFO
+FILEVERSION ${UI_VERSION_MAJOR},${UI_VERSION_MINOR},${UI_VERSION_PATCH},0
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904B0"
+    BEGIN
+      VALUE "CompanyName", "${OBS_COMPANY_NAME}"
+      VALUE "FileDescription", "${MODULE_DESCRIPTION}"
+      VALUE "FileVersion", "${UI_VERSION}"
+      VALUE "ProductName", "${OBS_PRODUCT_NAME}"
+      VALUE "ProductVersion", "${UI_VERSION}"
+      VALUE "Comments", "${OBS_COMMENTS}"
+      VALUE "LegalCopyright", "${OBS_LEGAL_COPYRIGHT}"
+      VALUE "InternalName", "${PROJECT_NAME}"
+      VALUE "OriginalFilename", "${PROJECT_NAME}"
+    END
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN
+    VALUE "Translation", 0x0409, 0x04B0
+  END
+END

BIN
cmake/bundle/windows/obs-studio.ico