mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-14 21:53:35 +03:00
3b159b45ff
A single place with all listed required xcode versions makes it easier to manage XCode on bots.
107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) Microsoft Corporation.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the 'License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -e
|
|
|
|
function die() { echo "$@"; exit 1; }
|
|
|
|
if [[ "$(uname)" != "Darwin" ]]; then
|
|
die "ERROR: this script is designed to be run on OSX. Can't run on $(uname)"
|
|
fi
|
|
|
|
trap "cd $(pwd -P)" EXIT
|
|
cd "$(dirname $0)"
|
|
SCRIPT_FOLDER="$(pwd -P)"
|
|
source "${SCRIPT_FOLDER}/../utils.sh"
|
|
|
|
selectXcodeVersionOrDie $(node "${SCRIPT_FOLDER}/../get_xcode_version.js" ffmpeg)
|
|
|
|
source ./CONFIG.sh
|
|
|
|
BUILDDIR="${PWD}/build"
|
|
PREFIX="${BUILDDIR}/osx_prefix"
|
|
OUTPUT_PATH="${PWD}/output/ffmpeg-mac"
|
|
|
|
function build_zlib {
|
|
cd "${BUILDDIR}"
|
|
git clone https://github.com/madler/zlib
|
|
cd zlib
|
|
git checkout "${ZLIB_VERSION}"
|
|
./configure --prefix="${PREFIX}" ${ZLIB_CONFIG}
|
|
make && make install
|
|
}
|
|
|
|
function build_libvpx {
|
|
cd "${BUILDDIR}"
|
|
git clone https://chromium.googlesource.com/webm/libvpx
|
|
cd libvpx
|
|
git checkout "${LIBVPX_VERSION}"
|
|
# Compile libvpx according to the docs:
|
|
# - https://chromium.googlesource.com/webm/libvpx/+/main/README
|
|
./configure --prefix="${PREFIX}" ${LIBVPX_CONFIG}
|
|
make && make install
|
|
}
|
|
|
|
function build_ffmpeg {
|
|
cd "${BUILDDIR}"
|
|
git clone git://source.ffmpeg.org/ffmpeg.git
|
|
cd ffmpeg
|
|
git checkout "${FFMPEG_VERSION}"
|
|
export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
|
|
# Prohibit pkg-config from using system installed libs.
|
|
export PKG_CONFIG_LIBDIR=
|
|
|
|
./configure --pkg-config=pkg-config \
|
|
--pkg-config-flags="--static" \
|
|
--extra-cflags="-I/${PREFIX}/include" \
|
|
--extra-ldflags="-L/${PREFIX}/lib" \
|
|
--prefix="${PREFIX}" \
|
|
--bindir="${PWD}/bin" \
|
|
${FFMPEG_CONFIG}
|
|
make && make install
|
|
}
|
|
|
|
REQUIERED_BUILD_TOOLS=("git" "make" "yasm" "pkg-config")
|
|
missing_build_tools=()
|
|
|
|
for dependency in ${REQUIERED_BUILD_TOOLS[@]}; do
|
|
if ! command -v "${dependency}" >/dev/null; then
|
|
missing_build_tools+=("${dependency}")
|
|
fi
|
|
done
|
|
|
|
if [[ ${#missing_build_tools[@]} != 0 ]]; then
|
|
if [[ "$1" == "--full" ]]; then
|
|
brew install ${missing_build_tools[@]}
|
|
else
|
|
die "ERROR: missing dependencies! Please run: brew install ${missing_build_tools[@]}"
|
|
fi
|
|
fi
|
|
|
|
# Cleanup
|
|
set -x
|
|
rm -rf "${BUILDDIR}"
|
|
mkdir -p "${BUILDDIR}"
|
|
|
|
build_zlib
|
|
build_libvpx
|
|
build_ffmpeg
|
|
|
|
# put resulting executable where we were asked to
|
|
mkdir -p $(dirname "${OUTPUT_PATH}")
|
|
cp "${BUILDDIR}/ffmpeg/bin/ffmpeg" "${OUTPUT_PATH}"
|
|
strip "${OUTPUT_PATH}"
|