CI: Update macOS build scripts to use new CMake presets

This commit is contained in:
PatTheMav
2023-03-26 18:20:38 -04:00
committed by Ryan Foster
parent 349372b3b3
commit f0dee071c1
9 changed files with 334 additions and 208 deletions
+1 -15
View File
@@ -24,16 +24,6 @@
# -c, --codesign : Codesign OBS and all libraries
# (default: ad-hoc only)
# -n, --notarize : Notarize OBS (default: off)
# --xcode : Create Xcode build environment instead
# of Ninja
# --build-dir : Specify alternative build directory
# (default: build)"
# Environment Variables (optional):
#
# MACOS_DEPS_VERSION : Precompiled macOS dependencies version
# MACOS_CEF_BUILD_VERSION : Chromium Embedded Framework version
# VLC_VERSION : VLC version
# SPARKLE_VERSION : Sparkle Framework version
#
##############################################################################
@@ -70,9 +60,7 @@ print_usage() {
"-b, --bundle : Create relocatable application bundle (default: off)\n" \
"-p, --package : Create distributable disk image (default: off)\n" \
"-c, --codesign : Codesign OBS and all libraries (default: ad-hoc only)\n" \
"-n, --notarize : Notarize OBS (default: off)\n" \
"--xcode : Create Xcode build environment instead of Ninja\n" \
"--build-dir : Specify alternative build directory (default: build)\n"
"-n, --notarize : Notarize OBS (default: off)\n"
}
print_deprecation() {
@@ -101,8 +89,6 @@ obs-build-main() {
-c | --codesign ) CODESIGN=TRUE; shift ;;
-n | --notarize ) NOTARIZE=TRUE; PACKAGE=TRUE CODESIGN=TRUE; shift ;;
-b | --bundle ) BUNDLE=TRUE; shift ;;
--xcode ) XCODE=TRUE; shift ;;
--build-dir ) BUILD_DIR="${2}"; shift 2 ;;
-s ) print_deprecation ${1}; exit 1 ;;
-- ) shift; break ;;
* ) break ;;
+2 -1
View File
@@ -36,7 +36,8 @@ if ! type cmake-format 2> /dev/null ; then
fi
find . -type d \( \
-path ./\*build -o \
-path ./.deps -o \
-path ./\*build\* -o \
-path ./deps/jansson -o \
-path ./plugins/decklink/\*/decklink-sdk -o \
-path ./plugins/enc-amf -o \
+2 -1
View File
@@ -42,7 +42,8 @@ else
fi
find . -type d \( \
-path ./\*build -o \
-path ./.deps -o \
-path ./\*build\* -o \
-path ./cmake -o \
-path ./plugins/decklink/\*/decklink-sdk -o \
-path ./plugins/enc-amf -o \
+1
View File
@@ -2,3 +2,4 @@ brew "cmake"
brew "ccache"
brew "ninja"
brew "coreutils"
brew "xcbeautify"
+8 -33
View File
@@ -10,22 +10,6 @@
# Setup build environment
WORKFLOW_CONTENT=$(/bin/cat "${CI_WORKFLOW}")
CI_DEPS_VERSION=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+DEPS_VERSION_MAC: '([0-9\-]+)'/\1/p")
CI_DEPS_HASH_X86_64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+DEPS_HASH_MAC_X86_64: '([0-9a-f]+)'/\1/p")
CI_DEPS_HASH_ARM64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+DEPS_HASH_MAC_ARM64: '([0-9a-f]+)'/\1/p")
CI_VLC_VERSION=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+VLC_VERSION_MAC: '([0-9\.]+)'/\1/p")
CI_VLC_HASH=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+VLC_HASH_MAC: '([0-9a-f]+)'/\1/p")
CI_SPARKLE_VERSION=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+SPARKLE_VERSION: '([0-9\.]+)'/\1/p")
CI_SPARKLE_HASH=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+SPARKLE_HASH: '([0-9a-f]+)'/\1/p")
CI_QT_VERSION=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+QT_VERSION_MAC: '([0-9\.]+)'/\1/p" | /usr/bin/head -1)
CI_QT_HASH_X86_64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+QT_HASH_MAC_X86_64: '([0-9a-f]+)'/\1/p")
CI_QT_HASH_ARM64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+QT_HASH_MAC_ARM64: '([0-9a-f]+)'/\1/p")
CI_QT_HASH_UNIVERSAL=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+QT_HASH_MAC_UNIVERSAL: '([0-9a-f]+)'/\1/p")
CI_MACOSX_DEPLOYMENT_TARGET_X86_64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+MACOSX_DEPLOYMENT_TARGET_X86_64: '([0-9\.]+)'/\1/p")
CI_MACOSX_DEPLOYMENT_TARGET_ARM64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+MACOSX_DEPLOYMENT_TARGET_ARM64: '([0-9\.]+)'/\1/p")
CI_MACOS_CEF_VERSION=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+CEF_BUILD_VERSION_MAC: '([0-9]+)'/\1/p")
CI_CEF_HASH_X86_64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+CEF_HASH_MAC_X86_64: '([0-9a-f]+)'/\1/p")
CI_CEF_HASH_ARM64=$(echo "${WORKFLOW_CONTENT}" | /usr/bin/sed -En "s/[ ]+CEF_HASH_MAC_ARM64: '([0-9a-f]+)'/\1/p")
MACOS_VERSION="$(/usr/bin/sw_vers -productVersion)"
MACOS_MAJOR="$(echo ${MACOS_VERSION} | /usr/bin/cut -d '.' -f 1)"
@@ -48,22 +32,15 @@ fi
## DEFINE UTILITIES ##
check_macos_version() {
ARCH="${ARCH:-${CURRENT_ARCH}}"
if [ "${ARCH}" = "x86_64" ]; then
CI_MACOSX_DEPLOYMENT_TARGET="${CI_MACOSX_DEPLOYMENT_TARGET_X86_64}"
CI_CEF_HASH="${CI_CEF_HASH_X86_64}"
CI_QT_HASH="${CI_QT_HASH_X86_64}"
CI_DEPS_HASH="${CI_DEPS_HASH_X86_64}"
elif [ "${ARCH}" = "arm64" ]; then
CI_MACOSX_DEPLOYMENT_TARGET="${CI_MACOSX_DEPLOYMENT_TARGET_ARM64}"
CI_CEF_HASH="${CI_CEF_HASH_ARM64}"
CI_QT_HASH="${CI_QT_HASH_ARM64}"
CI_DEPS_HASH="${CI_DEPS_HASH_ARM64}"
else
caught_error "Unsupported architecture '${ARCH}' provided"
fi
case "${ARCH}" in
x86_64) ;;
arm64) ;;
*) caught_error "Unsupported architecture '${ARCH}' provided" ;;
esac
step "Check macOS version..."
MIN_VERSION=${MACOSX_DEPLOYMENT_TARGET:-${CI_MACOSX_DEPLOYMENT_TARGET}}
MIN_VERSION="11.0"
MIN_MAJOR=$(echo ${MIN_VERSION} | /usr/bin/cut -d '.' -f 1)
MIN_MINOR=$(echo ${MIN_VERSION} | /usr/bin/cut -d '.' -f 2)
@@ -71,9 +48,7 @@ check_macos_version() {
error "ERROR: Minimum required macOS version is ${MIN_VERSION}, but running on ${MACOS_VERSION}"
fi
if [ "${MACOS_MAJOR}" -ge "11" ]; then
export CODESIGN_LINKER="ON"
fi
export CODESIGN_LINKER="ON"
}
install_homebrew_deps() {
-131
View File
@@ -11,143 +11,12 @@
# Halt on errors
set -eE
install_obs-deps() {
status "Set up precompiled macOS OBS dependencies v${1}"
ensure_dir "${DEPS_BUILD_DIR}"
step "Download..."
check_and_fetch "https://github.com/obsproject/obs-deps/releases/download/${1}/macos-deps-${1}-${ARCH:-x86_64}.tar.xz" "${2}"
mkdir -p obs-deps
step "Unpack..."
/usr/bin/tar -xf "./macos-deps-${1}-${ARCH:-x86_64}.tar.xz" -C ./obs-deps
/usr/bin/xattr -r -d com.apple.quarantine ./obs-deps
}
install_qt-deps() {
status "Set up precompiled dependency Qt v${1}"
ensure_dir "${DEPS_BUILD_DIR}"
step "Download..."
if [[ -n ${CI} ]]; then
_ARCH='universal'
_HASH=${CI_QT_HASH_UNIVERSAL}
else
_ARCH="${ARCH:-x86_64}"
_HASH="${2}"
fi
check_and_fetch "https://github.com/obsproject/obs-deps/releases/download/${1}/macos-deps-qt6-${1}-${_ARCH}.tar.xz" "${_HASH}"
mkdir -p obs-deps
step "Unpack..."
/usr/bin/tar -xf "./macos-deps-qt6-${1}-${_ARCH}.tar.xz" -C ./obs-deps
/usr/bin/xattr -r -d com.apple.quarantine ./obs-deps
}
install_vlc() {
status "Set up dependency VLC v${1}"
ensure_dir "${DEPS_BUILD_DIR}"
unset _SKIP
if [ "${CI}" -a "${RESTORED_VLC}" ]; then
_SKIP=TRUE
elif [ -d "${DEPS_BUILD_DIR}/vlc-${1}" -a -f "${DEPS_BUILD_DIR}/vlc-${1}/include/vlc/vlc.h" ]; then
_SKIP=TRUE
fi
if [ -z "${_SKIP}" ]; then
step "Download..."
check_and_fetch "https://downloads.videolan.org/vlc/${1}/vlc-${1}.tar.xz" "${2}"
step "Unpack..."
/usr/bin/tar -xf vlc-${1}.tar.xz
else
step "Found existing VLC..."
fi
}
install_sparkle() {
status "Set up dependency Sparkle v${1}"
ensure_dir "${DEPS_BUILD_DIR}"
unset _SKIP
if [ "${CI}" -a "${RESTORED_SPARKLE}" ]; then
_SKIP=TRUE
elif [ -d "${DEPS_BUILD_DIR}/obs-deps/lib/Sparkle.framework" -a -f "${DEPS_BUILD_DIR}/obs-deps/lib/Sparkle.framework/Sparkle" ]; then
_SKIP=TRUE
fi
if [ -z "${_SKIP}" ]; then
step "Download..."
check_and_fetch "https://github.com/sparkle-project/Sparkle/releases/download/${1}/Sparkle-${1}.tar.xz" "${2}"
step "Unpack..."
ensure_dir "${DEPS_BUILD_DIR}/sparkle"
/usr/bin/tar -xf ../Sparkle-${1}.tar.xz
cp -cpR "${DEPS_BUILD_DIR}"/sparkle/Sparkle.framework "${DEPS_BUILD_DIR}"/obs-deps/lib/
else
step "Found existing Sparkle Framework..."
fi
}
install_cef() {
status "Set up dependency CEF v${1}"
ensure_dir "${DEPS_BUILD_DIR}"
unset _SKIP
if [ "${CI}" -a "${RESTORED_CEF}" ]; then
_SKIP=TRUE
elif [ -d "${DEPS_BUILD_DIR}/cef_binary_${1}_macos_${ARCH:-x86_64}" -a -f "${DEPS_BUILD_DIR}/cef_binary_${1}_macos_${ARCH:-x86_64}/build/libcef_dll_wrapper/libcef_dll_wrapper.a" ]; then
_SKIP=TRUE
fi
if [ -z "${_SKIP}" ]; then
step "Download..."
check_and_fetch "https://cdn-fastly.obsproject.com/downloads/cef_binary_${1}_macos_${ARCH:-x86_64}.tar.xz" "${2}"
step "Unpack..."
/usr/bin/tar -xf cef_binary_${1}_macos_${ARCH:-x86_64}.tar.xz
cd cef_binary_${1}_macos_${ARCH:-x86_64}
step "Fix tests..."
/usr/bin/sed -i '.orig' '/add_subdirectory(tests\/ceftests)/d' ./CMakeLists.txt
/usr/bin/sed -E -i '' 's/"10.(9|10|11)"/"'${MACOSX_DEPLOYMENT_TARGET:-${CI_MACOSX_DEPLOYMENT_TARGET}}'"/' ./cmake/cef_variables.cmake
step "Run CMake..."
check_ccache
cmake ${CCACHE_OPTIONS} ${QUIET:+-Wno-deprecated -Wno-dev --log-level=ERROR} \
-S . -B build \
-G Ninja \
-DPROJECT_ARCH=${CMAKE_ARCHS:-x86_64} \
-DCEF_COMPILER_FLAGS="-Wno-deprecated-copy" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++ -Wno-deprecated-declarations -Wno-unknown-warning-option" \
-DCMAKE_EXE_LINKER_FLAGS="-std=c++11 -stdlib=libc++" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-${CI_MACOSX_DEPLOYMENT_TARGET}}
step "Build CEF v${1}..."
cmake --build build
mkdir -p build/libcef_dll
else
step "Found existing Chromium Embedded Framework and loader library..."
fi
}
install_dependencies() {
status "Install Homebrew dependencies"
trap "caught_error 'install_dependencies'" ERR
BUILD_DEPS=(
"obs-deps ${MACOS_DEPS_VERSION:-${CI_DEPS_VERSION}} ${MACOS_DEPS_HASH:-${CI_DEPS_HASH}}"
"qt-deps ${MACOS_DEPS_VERSION:-${CI_DEPS_VERSION}} ${QT_HASH:-${CI_QT_HASH}}"
"cef ${MACOS_CEF_BUILD_VERSION:-${CI_MACOS_CEF_VERSION}} ${CEF_HASH:-${CI_CEF_HASH}}"
"vlc ${VLC_VERSION:-${CI_VLC_VERSION}} ${VLC_HASH:-${CI_VLC_HASH}}"
"sparkle ${SPARKLE_VERSION:-${CI_SPARKLE_VERSION}} ${SPARKLE_HASH:-${CI_SPARKLE_HASH}}"
)
install_homebrew_deps
for DEPENDENCY in "${BUILD_DEPS[@]}"; do
set -- ${DEPENDENCY}
trap "caught_error ${DEPENDENCY}" ERR
FUNC_NAME="install_${1}"
${FUNC_NAME} ${2} ${3} ${4}
done
}
install-dependencies-standalone() {
+38 -25
View File
@@ -23,7 +23,16 @@ build_obs() {
ensure_dir "${CHECKOUT_DIR}/"
step "Build OBS targets..."
cmake --build ${BUILD_DIR}
if [ "${PRESET}" != "macos-ci-${ARCH}" ]; then
export NSUnbufferedIO=YES
set -o pipefail && cmake --build --preset macos-${ARCH} --parallel 2>&1 | xcbeautify
unset NSUnbufferedIO
else
cmake --build --preset macos-${ARCH}
fi
}
bundle_obs() {
@@ -33,7 +42,8 @@ bundle_obs() {
ensure_dir "${CHECKOUT_DIR}"
step "Install OBS application bundle..."
cmake --install ${BUILD_DIR}
find "build_${ARCH}/UI/${BUILD_CONFIG}" -type d -name "OBS.app" | xargs -I{} cp -r {} "build_${ARCH}"/
}
# Function to configure OBS build
@@ -59,34 +69,41 @@ _configure_obs() {
YOUTUBE_OPTIONS="-DYOUTUBE_CLIENTID='${YOUTUBE_CLIENTID}' -DYOUTUBE_CLIENTID_HASH='${YOUTUBE_CLIENTID_HASH}' -DYOUTUBE_SECRET='${YOUTUBE_SECRET}' -DYOUTUBE_SECRET_HASH='${YOUTUBE_SECRET_HASH}'"
fi
if [ "${XCODE}" ]; then
GENERATOR="Xcode"
else
GENERATOR="Ninja"
fi
if [ "${SPARKLE_APPCAST_URL}" -a "${SPARKLE_PUBLIC_KEY}" ]; then
SPARKLE_OPTIONS="-DSPARKLE_APPCAST_URL=\"${SPARKLE_APPCAST_URL}\" -DSPARKLE_PUBLIC_KEY=\"${SPARKLE_PUBLIC_KEY}\""
fi
cmake -S . -B ${BUILD_DIR} -G ${GENERATOR} \
-DCEF_ROOT_DIR="${DEPS_BUILD_DIR}/cef_binary_${MACOS_CEF_BUILD_VERSION:-${CI_MACOS_CEF_VERSION}}_macos_${ARCH:-x86_64}" \
-DENABLE_BROWSER=ON \
-DVLC_PATH="${DEPS_BUILD_DIR}/vlc-${VLC_VERSION:-${CI_VLC_VERSION}}" \
-DENABLE_VLC=ON \
-DCMAKE_PREFIX_PATH="${DEPS_BUILD_DIR}/obs-deps" \
-DBROWSER_LEGACY=$(test "${MACOS_CEF_BUILD_VERSION:-${CI_MACOS_CEF_VERSION}}" -le 3770 && echo "ON" || echo "OFF") \
-DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-${CI_MACOSX_DEPLOYMENT_TARGET}} \
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_ARCHS} \
-DOBS_CODESIGN_LINKER=${CODESIGN_LINKER:-OFF} \
PRESET="macos-${ARCH}"
if [ "${CI}" ]; then
case "${GITHUB_EVENT_NAME}" in
schedule) PRESET="macos-${ARCH}" ;;
push)
if [ "${GITHUB_REF_TYPE}" == 'tag' ]; then
PRESET="macos-release-${ARCH}"
else
PRESET="macos-ci-${ARCH}"
fi
;;
pull_request)
if [ "${SEEKING_TESTERS}" == '1' ]; then
PRESET="macos-${ARCH}"
else
PRESET="macos-ci-${ARCH}"
fi
;;
*) PRESET="macos-ci-${ARCH}" ;;
esac
fi
cmake -S . --preset ${PRESET} \
-DCMAKE_INSTALL_PREFIX=${BUILD_DIR}/install \
-DCMAKE_BUILD_TYPE=${BUILD_CONFIG} \
-DOBS_BUNDLE_CODESIGN_IDENTITY="${CODESIGN_IDENT:--}" \
-DOBS_CODESIGN_IDENTITY="${CODESIGN_IDENT:--}" \
${YOUTUBE_OPTIONS} \
${TWITCH_OPTIONS} \
${RESTREAM_OPTIONS} \
${SPARKLE_OPTIONS} \
${CI:+-DBUILD_FOR_DISTRIBUTION=${BUILD_FOR_DISTRIBUTION} -DOBS_BUILD_NUMBER=${GITHUB_RUN_ID}} \
${QUIET:+-Wno-deprecated -Wno-dev --log-level=ERROR}
}
@@ -139,9 +156,7 @@ print_usage() {
"-v, --verbose : Enable more verbose build process output\n" \
"-a, --architecture : Specify build architecture (default: x86_64, alternative: arm64)\n" \
"-c, --codesign : Codesign OBS and all libraries (default: ad-hoc only)\n" \
"-b, --bundle : Create relocatable OBS application bundle in build directory (default: build/install/OBS.app)\n" \
"--xcode : Create Xcode build environment instead of Ninja\n" \
"--build-dir : Specify alternative build directory (default: build)\n"
"-b, --bundle : Create relocatable OBS application bundle in build directory (default: build/install/OBS.app)\n"
}
build-obs-main() {
@@ -154,8 +169,6 @@ build-obs-main() {
-a | --architecture ) ARCH="${2}"; shift 2 ;;
-c | --codesign ) CODESIGN=TRUE; shift ;;
-b | --bundle ) BUNDLE=TRUE; shift ;;
--xcode ) XCODE=TRUE; shift ;;
--build-dir ) BUILD_DIR="${2}"; shift 2 ;;
-- ) shift; break ;;
* ) break ;;
esac
+6 -2
View File
@@ -24,9 +24,13 @@ package_obs() {
ensure_dir "${CHECKOUT_DIR}"
step "Package OBS..."
cmake --build ${BUILD_DIR} -t package
BUILD_DIR="build_${ARCH}"
DMG_NAME=$(/usr/bin/find "${BUILD_DIR}" -type f -name "OBS-*.dmg" -depth 1 | sort -rn | head -1)
pushd "${BUILD_DIR}" > /dev/null > /dev/null
cpack -C ${BUILD_CONFIG:-RelWithDebInfo}
popd > /dev/null
DMG_NAME=$(/usr/bin/find "${BUILD_DIR}" -type f -name "obs-studio-*.dmg" -depth 1 | sort -rn | head -1)
if [ "${DMG_NAME}" ]; then
mv "${DMG_NAME}" "${BUILD_DIR}/${FILE_NAME}"
+276
View File
@@ -0,0 +1,276 @@
{
"version": 5,
"cmakeMinimumRequired": {
"major": 3,
"minor": 22,
"patch": 0
},
"configurePresets": [
{
"name": "macos",
"hidden": true,
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
},
"generator": "Xcode",
"warnings": {"dev": true, "deprecated": true},
"cacheVariables": {
"QT_VERSION": "6",
"ENABLE_BROWSER": true,
"ENABLE_VLC": true,
"CMAKE_OSX_DEPLOYMENT_TARGET": "11.0",
"OBS_CODESIGN_IDENTITY": "-",
"OBS_CMAKE_VERSION": "3.0.0"
}
},
{
"name": "macos-arm64",
"inherits": "macos",
"displayName": "macOS Apple Silicon",
"description": "obs-studio for macOS 11.0+ (Apple Silicon)",
"binaryDir": "${sourceDir}/build_arm64",
"cacheVariables": {
"CMAKE_OSX_ARCHITECTURES": "arm64"
}
},
{
"name": "macos-x86_64",
"inherits": "macos",
"displayName": "macOS Apple Intel",
"description": "obs-studio for macOS 11.0+ (Intel)",
"binaryDir": "${sourceDir}/build_x86_64",
"cacheVariables": {
"CMAKE_OSX_ARCHITECTURES": "x86_64"
}
},
{
"name": "macos-ci-arm64",
"inherits": ["macos-arm64"],
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "macos-ci-x86_64",
"inherits": ["macos-x86_64"],
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "macos-release-arm64",
"displayName": "macOS Apple Silicon (Release)",
"description": "obs-studio for macOS (Apple) - Release Configuration",
"inherits": ["macos-arm64"],
"cacheVariables": {
"ENABLE_RELEASE_BUILD": true,
"ENABLE_SPARKLE": true,
"OBS_SPARKLE_KEY": {"type": "STRING", "value": ""},
"OBS_CODESIGN_IDENTITY": "$penv{CODESIGN_IDENT}",
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_arm64_v2.xml"},
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="},
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
"VIRTUALCAM_SOURCE_UUID": {"type": "STRING", "value": "A8D7B8AA-65AD-4D21-9C42-66480DBFA8E1"},
"VIRTUALCAM_SINK_UUID": {"type": "STRING", "value": "A3F16177-7044-4DD8-B900-72E2419F7A9A"}
}
},
{
"name": "macos-release-x86_64",
"displayName": "macOS Intel (Release)",
"description": "obs-studio for macOS (Intel) - Release Configuration",
"inherits": ["macos-x86_64"],
"cacheVariables": {
"ENABLE_RELEASE_BUILD": true,
"ENABLE_SPARKLE": true,
"OBS_SPARKLE_KEY": {"type": "STRING", "value": ""},
"OBS_CODESIGN_IDENTITY": "$penv{CODESIGN_IDENT}",
"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="},
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
"VIRTUALCAM_SOURCE_UUID": {"type": "STRING", "value": "A8D7B8AA-65AD-4D21-9C42-66480DBFA8E1"},
"VIRTUALCAM_SINK_UUID": {"type": "STRING", "value": "A3F16177-7044-4DD8-B900-72E2419F7A9A"}
}
},
{
"name": "linux-aarch64",
"displayName": "Linux aarch64",
"description": "obs-studio for Linux (aarch64)",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"binaryDir": "${sourceDir}/build_aarch64",
"generator": "Ninja",
"warnings": {"dev": true, "deprecated": true},
"cacheVariables": {
"ENABLE_WAYLAND": true,
"ENABLE_VLC": true,
"QT_VERSION": "6",
"CMAKE_BUILD_TYPE": "Debug",
"OBS_CMAKE_VERSION": "2.0.0",
"CMAKE_PREFIX_PATH": {
"type": "PATH",
"value": ""
}
}
},
{
"name": "linux-ci-aarch64",
"inherits": ["linux-aarch64"],
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "linux-release-aarch64",
"displayName": "Linux aarch64 (Release)",
"description": "obs-studio for Linux (aarch64) - Release Configuration",
"inherits": "linux-aarch64",
"cacheVariables": {
"ENABLE_RELEASE_BUILD": true
}
},
{
"name": "linux-x86_64",
"displayName": "Linux x86_64",
"description": "obs-studio for Linux (x86_64)",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"binaryDir": "${sourceDir}/build_x86_64",
"generator": "Ninja",
"warnings": {"dev": true, "deprecated": true},
"cacheVariables": {
"ENABLE_WAYLAND": true,
"ENABLE_VLC": true,
"QT_VERSION": "6",
"CMAKE_BUILD_TYPE": "Debug",
"OBS_CMAKE_VERSION": "2.0.0",
"CMAKE_PREFIX_PATH": {
"type": "PATH",
"value": ""
},
"CEF_ROOT_DIR": {
"type": "PATH",
"value": ""
}
}
},
{
"name": "linux-ci-x86_64",
"inherits": ["linux-x86_64"],
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "linux-release-x86_64",
"displayName": "Linux x86_64 (Release)",
"description": "obs-studio for Linux (x86_64) - Release Configuration",
"inherits": "linux-x86_64",
"cacheVariables": {
"ENABLE_RELEASE_BUILD": true,
"ENABLE_BROWSER": true
}
},
{
"name": "windows-x64",
"displayName": "Windows x64",
"description": "obs-studio for Windows (x64)",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"architecture": "x64",
"binaryDir": "${sourceDir}/build_x64",
"generator": "Visual Studio 17 2022",
"warnings": {"dev": true, "deprecated": true},
"cacheVariables": {
"QT_VERSION": "6",
"CMAKE_BUILD_TYPE": "Debug",
"OBS_WINDOWS_LEGACY_DIRS": true,
"CMAKE_SYSTEM_VERSION": "10.0.18363.657",
"OBS_CMAKE_VERSION": "2.0.0",
"CMAKE_PREFIX_PATH": {
"type": "PATH",
"value": ""
},
"CEF_ROOT_DIR": {
"type": "PATH",
"value": ""
},
"VLC_PATH": {
"type": "PATH",
"value": ""
}
}
},
{
"name": "windows-ci-x64",
"inherits": "windows-x64",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "windows-release-x64",
"displayName": "Windowx x64 (Release)",
"description": "obs-studio for Windows (x64) - Release Configuration",
"inherits": "windows-x64",
"cacheVariables": {
"ENABLE_RELEASE_BUILD": true,
"ENABLE_BROWSER": true,
"ENABLE_VLC": true,
"VIRTUALCAM_GUID": { "type": "STRING", "value": "A3FCE0F5-3493-419F-958A-ABA1250EC20B"}
}
}
],
"buildPresets": [
{
"name": "macos-arm64",
"configurePreset": "macos-arm64",
"displayName": "macOS Apple Silicon",
"description": "macOS build for Apple Silicon",
"configuration": "RelWithDebInfo"
},
{
"name": "macos-x86_64",
"configurePreset": "macos-x86_64",
"displayName": "macOS Intel",
"description": "macOS build for Intel",
"configuration": "RelWithDebInfo"
},
{
"name": "linux-aarch64",
"configurePreset": "linux-aarch64",
"displayName": "Linux aarch64",
"description": "Linux build for aarch64 (aka arm64)",
"configuration": "RelWithDebInfo"
},
{
"name": "linux-x86_64",
"configurePreset": "linux-x86_64",
"displayName": "Linux x86_64",
"description": "Linux build for x86_64 (aka amd64)",
"configuration": "RelWithDebInfo"
},
{
"name": "windows-x64",
"configurePreset": "windows-x64",
"displayName": "Windows 64-bit",
"description": "Windows build for 64-bit (aka x64)",
"configuration": "RelWithDebInfo"
}
]
}