mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-08-24 02:34:23 -05:00
CI: Update macOS build scripts to use new CMake presets
This commit is contained in:
+1
-15
@@ -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
@@ -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
@@ -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 \
|
||||
|
||||
@@ -2,3 +2,4 @@ brew "cmake"
|
||||
brew "ccache"
|
||||
brew "ninja"
|
||||
brew "coreutils"
|
||||
brew "xcbeautify"
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user