Files
UnrealEngine/Engine/Source/ThirdParty/CEF3/Build/macOS/cef_build.sh
2025-05-18 13:04:45 +08:00

93 lines
3.5 KiB
Bash

#!/bin/bash
set -e
export GN_DEFINES="is_component_build=false enable_precompiled_headers=false is_official_build=true use_allocator=none symbol_level=1 use_thin_lto=false enable_remoting=false use_allocator_shim=false"
if [ -z "$CEF_BRANCH" ]; then
CEF_BRANCH=4430
fi
if [ -z "$GN_DEFINES" ]; then
echo "Missing GN_DEFINES variable, make sure it was set above"
exit 1
fi
if ! command -v cmake &> /dev/null; then
echo "Missing valid cmake install."
echo "Install it via https://cmake.org/install/ including the command line install (sudo \"/Applications/CMake.app/Contents/bin/cmake-gui\" --install)."
exit 1
fi
if [ -z "$CEF_BUILD_DIR" ]; then
CEF_BUILD_DIR=`pwd`/build/cef_$CEF_BRANCH
fi
mkdir -p $CEF_BUILD_DIR
CURRENT_DIR=`pwd`
# CEF 4430+ needs the 11.0 SDK as a min to build on macOS but the Chrome sync only expresses a need for 10.15
export FORCE_MAC_SDK_MIN="11.1"
# make the automate subfolder
if [ "$1" != "skipsync" ] && [ "$1" != "skipbuild" ]; then
mkdir -p $CEF_BUILD_DIR/automate/
#wget https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py -O $CEF_BUILD_DIR/automate/automate-git.py
curl https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py --output $CEF_BUILD_DIR/automate/automate-git.py
export CEF_USE_GN=1
echo "## Building CEF branch $CEF_BRANCH"
python $CEF_BUILD_DIR/automate/automate-git.py --branch=$CEF_BRANCH --download-dir=$CEF_BUILD_DIR --no-distrib --no-build --force-update --x64-build
rm $CEF_BUILD_DIR/chromium/src/cef/epic.patched || true
else
if [ ! -d $CEF_BUILD_DIR/chromium/src/cef ]; then
echo "Can't find CEF sync yet skipsync specified"
exit 1
fi
fi
PATH=$PATH:$CEF_BUILD_DIR/depot_tools
cd $CEF_BUILD_DIR/chromium/src/cef
if [ "$1" != "skipbuild" ]; then
if [ ! -f $CEF_BUILD_DIR/chromium/src/cef/epic.patched ]; then
echo "### Applying local patches to build"
git apply $CURRENT_DIR/patches/*.diff && touch $CEF_BUILD_DIR/chromium/src/cef/epic.patched
fi
echo "### Running cef_create_projects"
bash cef_create_projects.sh
cd $CEF_BUILD_DIR/chromium/src
echo "### Starting debug build"
ninja -C out/Debug_GN_x64 cef
echo "### Starting release build"
ninja -C out/Release_GN_x64 cef
echo "### Packaging release"
cd $CEF_BUILD_DIR/chromium/src/cef/tools
./make_distrib.sh --ninja-build --x64-build
fi
echo "### Building CEF wrapper library"
cd $CEF_BUILD_DIR/chromium/src/cef/
BINARY_DIST_DIR="`find $CEF_BUILD_DIR/chromium/src/cef/binary_distrib -iname README.txt -exec dirname {} \;`"
mkdir -p wrapper_build/release
pushd wrapper_build/release
cmake -G "Xcode" -DPROJECT_ARCH="x86_64" -DCMAKE_BUILD_TYPE=Release -DUSE_SANDBOX=OFF $BINARY_DIST_DIR
xcodebuild -scheme libcef_dll_wrapper -configuration Release
popd
mkdir -p wrapper_build/debug
pushd wrapper_build/debug
cmake -G "Xcode" -DPROJECT_ARCH="x86_64" -DCMAKE_BUILD_TYPE=Debug -DUSE_SANDBOX=OFF $BINARY_DIST_DIR
xcodebuild -scheme libcef_dll_wrapper -configuration Debug
popd
mkdir -p $BINARY_DIST_DIR/build_release/libcef_dll
cp wrapper_build/release/libcef_dll_wrapper/Release/libcef_dll_wrapper.a $BINARY_DIST_DIR/Release
mkdir -p $BINARY_DIST_DIR/build_debug/libcef_dll
cp wrapper_build/debug/libcef_dll_wrapper/Debug/libcef_dll_wrapper.a $BINARY_DIST_DIR/Debug
echo "###"
echo "### Build complete."
echo "### Copy binaries from \"$BINARY_DIST_DIR\" to your Engine/Source/ThirdParty/CEF3 folder."
echo "###"
echo "###"