mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
123 lines
3.7 KiB
Plaintext
123 lines
3.7 KiB
Plaintext
autoload -Uz log_error log_info log_status
|
|
|
|
if (( ! ${+buildspec_file} )) {
|
|
log_error "'buildspec_file' not set. Please set before running ${0}."
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+commands[git]} )) {
|
|
log_error 'git not found. Please install git.'
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+commands[jq]} )) {
|
|
log_error 'jq not found. Please install jq.'
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+project_root} )) {
|
|
log_error "'project_root' not set. Please set before running ${0}."
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+target} )) {
|
|
log_error "'target' not set. Please set before running ${0}."
|
|
return 2
|
|
}
|
|
|
|
log_info 'Setting up OBS-Studio...'
|
|
|
|
local obs_version
|
|
local obs_repo
|
|
local obs_branch
|
|
local obs_hash
|
|
|
|
read -r obs_version obs_repo obs_branch obs_hash <<< \
|
|
"$(jq -r --arg key "obs-studio" \
|
|
'.dependencies[$key] | {version, repository, branch, hash} | join(" ")' \
|
|
${buildspec_file})"
|
|
|
|
if [[ -z ${obs_version} ]] {
|
|
log_error "No obs-studio version found in buildspec.json"
|
|
return 2
|
|
}
|
|
|
|
pushd
|
|
mkcd ${project_root:h}/obs-studio
|
|
|
|
if (( ! (${skips[(Ie)all]} + ${skips[(Ie)unpack]}) )) {
|
|
if [[ -d .git ]] {
|
|
git config advice.detachedHead false
|
|
git config remote.pluginbuild.url "${obs_repo:-https://github.com/obsproject/obs-studio.git}"
|
|
git config remote.pluginbuild.fetch "+refs/heads/${obs_branch:-master}:refs/remotes/origin/${obs_branch:-master}"
|
|
|
|
git rev-parse -q --verify "${obs_hash}^{commit}" > /dev/null || git fetch pluginbuild
|
|
git checkout ${obs_branch:-master} -B ${product_name}
|
|
git reset --hard "${obs_hash}"
|
|
log_status 'Found existing obs-studio repository.'
|
|
} else {
|
|
git clone "${obs_repo:-https://github.com/obsproject/obs-studio.git}" "${PWD}"
|
|
git config advice.detachedHead false
|
|
git checkout -f "${obs_hash}" --
|
|
git checkout ${obs_branch:-master} -b ${product_name}
|
|
log_status 'obs-studio checked out.'
|
|
}
|
|
|
|
git submodule foreach --recursive git submodule sync
|
|
git submodule update --init --recursive
|
|
}
|
|
|
|
if (( ! (${skips[(Ie)all]} + ${skips[(Ie)build]}) )) {
|
|
log_info 'Configuring obs-studio...'
|
|
|
|
local -a cmake_args=(
|
|
-DCMAKE_BUILD_TYPE=${BUILD_CONFIG:-Release}
|
|
-DQT_VERSION=${QT_VERSION}
|
|
-DENABLE_PLUGINS=OFF
|
|
-DENABLE_UI=OFF
|
|
-DENABLE_SCRIPTING=OFF
|
|
-DCMAKE_INSTALL_PREFIX="${project_root:h}/obs-build-dependencies/plugin-deps-${OBS_DEPS_VERSION}-qt${QT_VERSION}-${target##*-}"
|
|
-DCMAKE_PREFIX_PATH="${project_root:h}/obs-build-dependencies/plugin-deps-${OBS_DEPS_VERSION}-qt${QT_VERSION}-${target##*-}"
|
|
)
|
|
|
|
if (( _loglevel == 0 )) cmake_args+=(-Wno_deprecated -Wno-dev --log-level=ERROR)
|
|
if (( _loglevel > 2 )) cmake_args+=(--debug-output)
|
|
|
|
local num_procs
|
|
|
|
case ${target} {
|
|
macos-*)
|
|
autoload -Uz read_codesign
|
|
if (( ${+CODESIGN} )) {
|
|
read_codesign
|
|
}
|
|
|
|
cmake_args+=(
|
|
-DCMAKE_OSX_ARCHITECTURES=${${target##*-}//universal/x86_64;arm64}
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${DEPLOYMENT_TARGET:-10.15}
|
|
-DOBS_CODESIGN_LINKER=ON
|
|
-DOBS_BUNDLE_CODESIGN_IDENTITY="${CODESIGN_IDENT:--}"
|
|
)
|
|
num_procs=$(( $(sysctl -n hw.ncpu) + 1 ))
|
|
;;
|
|
linux-*)
|
|
cmake_args+=(
|
|
-DENABLE_PIPEWIRE=OFF
|
|
)
|
|
num_procs=$(( $(nproc) + 1 ))
|
|
;;
|
|
}
|
|
|
|
log_debug "Attempting to configure OBS with CMake arguments: ${cmake_args}"
|
|
cmake -S . -B plugin_build_${target##*-} -G ${generator} ${cmake_args}
|
|
|
|
log_info 'Building libobs and obs-frontend-api...'
|
|
local -a cmake_args=()
|
|
if (( _loglevel > 1 )) cmake_args+=(--verbose)
|
|
if [[ ${generator} == 'Unix Makefiles' ]] cmake_args+=(--parallel ${num_procs})
|
|
cmake --build plugin_build_${target##*-} --config ${BUILD_CONFIG:-Release} ${cmake_args} -t obs-frontend-api
|
|
cmake --install plugin_build_${target##*-} --config ${BUILD_CONFIG:-Release} --component obs_libraries ${cmake_args}
|
|
}
|
|
|
|
popd
|