| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 
							- #!/bin/bash
 
- ##############################################################################
 
- # macOS build script
 
- ##############################################################################
 
- #
 
- # This script contains all steps necessary to:
 
- #
 
- #   * Build OBS with all default plugins and dependencies
 
- #   * Create a macOS application bundle
 
- #   * Codesign the macOS application bundle
 
- #   * Package a macOS installation image
 
- #   * Notarize macOS application bundle and/or installation image
 
- #
 
- # Parameters:
 
- #   -h, --help                     : Print usage help
 
- #   -q, --quiet                    : Suppress most build process output
 
- #   -v, --verbose                  : Enable more verbose build process output
 
- #   -d, --skip-dependency-checks   : Skip dependency checks (default: off)
 
- #   -b, --bundle                   : Create relocatable application bundle
 
- #                                    (default: off)
 
- #   -p, --package                  : Create distributable disk image
 
- #                                    (default: off)
 
- #   -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
 
- #
 
- ##############################################################################
 
- # Halt on errors
 
- set -eE
 
- ## SET UP ENVIRONMENT ##
 
- _RUN_OBS_BUILD_SCRIPT=TRUE
 
- PRODUCT_NAME="OBS-Studio"
 
- CHECKOUT_DIR="$(/usr/bin/git rev-parse --show-toplevel)"
 
- DEPS_BUILD_DIR="${CHECKOUT_DIR}/../obs-build-dependencies"
 
- source "${CHECKOUT_DIR}/CI/include/build_support.sh"
 
- source "${CHECKOUT_DIR}/CI/include/build_support_macos.sh"
 
- ## INSTALL DEPENDENCIES ##
 
- source "${CHECKOUT_DIR}/CI/macos/01_install_dependencies.sh"
 
- ## BUILD OBS ##
 
- source "${CHECKOUT_DIR}/CI/macos/02_build_obs.sh"
 
- ## PACKAGE OBS AND NOTARIZE ##
 
- source "${CHECKOUT_DIR}/CI/macos/03_package_obs.sh"
 
- ## MAIN SCRIPT FUNCTIONS ##
 
- print_usage() {
 
-     echo "build-macos.sh - Build script for OBS-Studio"
 
-     echo -e "Usage: ${0}\n" \
 
-             "-h, --help                     : Print this help\n" \
 
-             "-q, --quiet                    : Suppress most build process output\n" \
 
-             "-v, --verbose                  : Enable more verbose build process output\n" \
 
-             "-a, --architecture             : Specify build architecture (default: x86_64, alternative: arm64)\n" \
 
-             "-d, --skip-dependency-checks   : Skip dependency checks (default: off)\n" \
 
-             "-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"
 
- }
 
- print_deprecation() {
 
-     echo -e "DEPRECATION ERROR:\n" \
 
-             "The '${1}' switch has been deprecated!\n"
 
-     if [ "${1}" = "-s" ]; then
 
-         echo -e "The macOS build script system has changed:\n" \
 
-                 " - To configure and build OBS, run the script 'CI/macos/02_build_obs.sh'\n" \
 
-                 " - To bundle OBS into a relocatable application bundle, run the script 'CI/macos/02_build_obs.sh --bundle\n" \
 
-                 " - To package OBS, run the script 'CI/macos/03_package_obs.sh'\n" \
 
-                 " - To notarize OBS, run the script 'CI/macos/03_package_obs.sh --notarize'\n"
 
-     fi
 
- }
 
- obs-build-main() {
 
-     while true; do
 
-         case "${1}" in
 
-             -h | --help ) print_usage; exit 0 ;;
 
-             -q | --quiet ) export QUIET=TRUE; shift ;;
 
-             -v | --verbose ) export VERBOSE=TRUE; shift ;;
 
-             -a | --architecture ) ARCH="${2}"; shift 2 ;;
 
-             -d | --skip-dependency-checks ) SKIP_DEP_CHECKS=TRUE; shift ;;
 
-             -p | --package ) PACKAGE=TRUE; shift ;;
 
-             -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 ;;
 
-         esac
 
-     done
 
-     ensure_dir "${CHECKOUT_DIR}"
 
-     check_archs
 
-     check_macos_version
 
-     step "Fetching OBS tags..."
 
-     /usr/bin/git fetch origin --tags
 
-     GIT_BRANCH=$(/usr/bin/git rev-parse --abbrev-ref HEAD)
 
-     GIT_HASH=$(/usr/bin/git rev-parse --short HEAD)
 
-     GIT_TAG=$(/usr/bin/git describe --tags --abbrev=0)
 
-     if [ "${BUILD_FOR_DISTRIBUTION}" ]; then
 
-         VERSION_STRING="${GIT_TAG}"
 
-     else
 
-         VERSION_STRING="${GIT_TAG}-${GIT_HASH}"
 
-     fi
 
-     if [ "${ARCH}" = "arm64" ]; then
 
-         FILE_NAME="obs-studio-${VERSION_STRING}-macOS-Apple.dmg"
 
-     elif [ "${ARCH}" = "universal" ]; then
 
-         FILE_NAME="obs-studio-${VERSION_STRING}-macOS.dmg"
 
-     else
 
-         FILE_NAME="obs-studio-${VERSION_STRING}-macOS-Intel.dmg"
 
-     fi
 
-     if [ -z "${SKIP_DEP_CHECKS}" ]; then
 
-         install_dependencies
 
-     fi
 
-     build_obs
 
-     if [ "${BUNDLE}" ]; then
 
-         bundle_obs
 
-     fi
 
-     if [ "${PACKAGE}" ]; then
 
-         package_obs
 
-     fi
 
-     if [ "${NOTARIZE}" ]; then
 
-         notarize_obs
 
-     fi
 
-     cleanup
 
- }
 
- obs-build-main $*
 
 
  |