From f0dee071c15eed43bcc61011fd2e3e2ac5bfc24c Mon Sep 17 00:00:00 2001 From: PatTheMav Date: Sun, 26 Mar 2023 04:13:46 +0200 Subject: [PATCH] CI: Update macOS build scripts to use new CMake presets --- CI/build-macos.sh | 16 +- CI/check-cmake.sh | 3 +- CI/check-format.sh | 3 +- CI/include/Brewfile | 1 + CI/include/build_support_macos.sh | 41 +---- CI/macos/01_install_dependencies.sh | 131 ------------- CI/macos/02_build_obs.sh | 63 ++++--- CI/macos/03_package_obs.sh | 8 +- CMakePresets.json | 276 ++++++++++++++++++++++++++++ 9 files changed, 334 insertions(+), 208 deletions(-) create mode 100644 CMakePresets.json diff --git a/CI/build-macos.sh b/CI/build-macos.sh index 2e1c8cb5012e8b..885cc92c8d0545 100755 --- a/CI/build-macos.sh +++ b/CI/build-macos.sh @@ -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 ;; diff --git a/CI/check-cmake.sh b/CI/check-cmake.sh index 0c7501a6ef4fd5..5994e06e3c4b2d 100755 --- a/CI/check-cmake.sh +++ b/CI/check-cmake.sh @@ -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 \ diff --git a/CI/check-format.sh b/CI/check-format.sh index 0d940eb27e5959..bdca6285f0aa46 100755 --- a/CI/check-format.sh +++ b/CI/check-format.sh @@ -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 \ diff --git a/CI/include/Brewfile b/CI/include/Brewfile index ae198ab301afa9..e9f801dd838476 100644 --- a/CI/include/Brewfile +++ b/CI/include/Brewfile @@ -2,3 +2,4 @@ brew "cmake" brew "ccache" brew "ninja" brew "coreutils" +brew "xcbeautify" diff --git a/CI/include/build_support_macos.sh b/CI/include/build_support_macos.sh index 63003b148cbb7a..97f9f6b52e69cc 100644 --- a/CI/include/build_support_macos.sh +++ b/CI/include/build_support_macos.sh @@ -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() { diff --git a/CI/macos/01_install_dependencies.sh b/CI/macos/01_install_dependencies.sh index 18ad59b41a3ac4..a56dd3b98b9400 100755 --- a/CI/macos/01_install_dependencies.sh +++ b/CI/macos/01_install_dependencies.sh @@ -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() { diff --git a/CI/macos/02_build_obs.sh b/CI/macos/02_build_obs.sh index a2e7e8e98e265a..5a1e5687aa93b7 100755 --- a/CI/macos/02_build_obs.sh +++ b/CI/macos/02_build_obs.sh @@ -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 diff --git a/CI/macos/03_package_obs.sh b/CI/macos/03_package_obs.sh index 47582ec90526c6..0b29b687bed5b4 100755 --- a/CI/macos/03_package_obs.sh +++ b/CI/macos/03_package_obs.sh @@ -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}" diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000000000..da0120b3ce8080 --- /dev/null +++ b/CMakePresets.json @@ -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" + } + ] +}