123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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
- }
- if [[ ! -r ${buildspec_file} ]] {
- log_error \
- 'No buildspec.json found. Please create a build specification for your project.' \
- 'A buildspec.json.template file is provided in the repository to get you started.'
- return 2
- }
- log_info 'Setting up OBS-Studio...'
- 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 [[ -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
- log_info 'Configuring obs-studio...'
- local -a cmake_args=(
- -DCMAKE_BUILD_TYPE=${BUILD_CONFIG:-Release}
- -DENABLE_PLUGINS=OFF
- -DENABLE_UI=OFF
- -DENABLE_SCRIPTING=OFF
- -DCMAKE_INSTALL_PREFIX="${project_root:h}/obs-build-dependencies/obs-plugin-deps"
- -DCMAKE_PREFIX_PATH="${project_root:h}/obs-build-dependencies/obs-plugin-deps"
- )
- if (( _loglevel == 0 )) cmake_args+=(-Wno_deprecated -Wno-dev --log-level=ERROR)
- case ${target} {
- macos-*)
- cmake_args+=(
- -DCMAKE_OSX_ARCHITECTURES=${${target##*-}//universal/x86_64;arm64}
- -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-10.15}
- )
- ;;
- linux-*)
- cmake_args+=(
- -DENABLE_PIPEWIRE=OFF
- )
- ;;
- }
- cmake -S . -B plugin_build_${target##*-} -G Ninja ${cmake_args}
- log_info 'Building libobs and obs-frontend-api...'
- local -a cmake_args=()
- if (( _loglevel > 1 )) cmake_args+=(--verbose)
- 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
|