mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 06:16:30 +03:00
Add build scripts
This commit is contained in:
parent
c7ae50c670
commit
fbe8fc219f
116
src/build.sh
Executable file
116
src/build.sh
Executable file
@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export TMPDIR="$PWD/tmp"
|
||||||
|
rm -rf "$TMPDIR"
|
||||||
|
mkdir -p "$TMPDIR"
|
||||||
|
|
||||||
|
if [ "$1" = debug ]; then
|
||||||
|
out=out/Debug
|
||||||
|
flags="
|
||||||
|
is_debug=true
|
||||||
|
is_component_build=true"
|
||||||
|
else
|
||||||
|
out=out/Release
|
||||||
|
flags="
|
||||||
|
is_official_build=true
|
||||||
|
exclude_unwind_tables=true
|
||||||
|
enable_resource_allowlist_generation=false
|
||||||
|
symbol_level=0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. ./get-sysroot.sh
|
||||||
|
|
||||||
|
# ccache
|
||||||
|
case "$host_os" in
|
||||||
|
linux|mac)
|
||||||
|
if which ccache >/dev/null 2>&1; then
|
||||||
|
export CCACHE_SLOPPINESS=time_macros
|
||||||
|
export CCACHE_BASEDIR="$PWD"
|
||||||
|
export CCACHE_CPP2=yes
|
||||||
|
CCACHE=ccache
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
win)
|
||||||
|
if [ -f "$HOME"/.cargo/bin/sccache* ]; then
|
||||||
|
export PATH="$PATH:$HOME/.cargo/bin"
|
||||||
|
CCACHE=sccache
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [ "$CCACHE" ]; then
|
||||||
|
flags="$flags
|
||||||
|
cc_wrapper=\"$CCACHE\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
flags="$flags"'
|
||||||
|
is_clang=true
|
||||||
|
use_sysroot=false
|
||||||
|
|
||||||
|
fatal_linker_warnings=false
|
||||||
|
treat_warnings_as_errors=false
|
||||||
|
|
||||||
|
is_cronet_build=true
|
||||||
|
chrome_pgo_phase=2
|
||||||
|
|
||||||
|
enable_base_tracing=false
|
||||||
|
use_udev=false
|
||||||
|
use_aura=false
|
||||||
|
use_ozone=false
|
||||||
|
use_gio=false
|
||||||
|
use_gtk=false
|
||||||
|
use_platform_icu_alternatives=true
|
||||||
|
use_glib=false
|
||||||
|
|
||||||
|
disable_file_support=true
|
||||||
|
enable_websockets=false
|
||||||
|
use_kerberos=false
|
||||||
|
disable_file_support=true
|
||||||
|
disable_zstd_filter=false
|
||||||
|
enable_mdns=false
|
||||||
|
enable_reporting=false
|
||||||
|
include_transport_security_state_preload_list=false
|
||||||
|
enable_device_bound_sessions=false
|
||||||
|
enable_bracketed_proxy_uris=true
|
||||||
|
|
||||||
|
use_nss_certs=false
|
||||||
|
|
||||||
|
enable_backup_ref_ptr_support=false
|
||||||
|
enable_dangling_raw_ptr_checks=false
|
||||||
|
'
|
||||||
|
|
||||||
|
if [ "$WITH_SYSROOT" ]; then
|
||||||
|
flags="$flags
|
||||||
|
target_sysroot=\"//$WITH_SYSROOT\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$host_os" = "mac" ]; then
|
||||||
|
flags="$flags"'
|
||||||
|
enable_dsyms=false'
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$EXTRA_FLAGS" in
|
||||||
|
*target_os=\"android\"*)
|
||||||
|
# default_min_sdk_version=24: 26 introduces unnecessary snew symbols
|
||||||
|
# is_high_end_android=true: Does not optimize for size, Uses PGO profiles
|
||||||
|
flags="$flags"'
|
||||||
|
default_min_sdk_version=24
|
||||||
|
is_high_end_android=true'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# See https://github.com/llvm/llvm-project/issues/86430
|
||||||
|
if [ "$target_os" = "linux" -a "$target_cpu" = "x64" ]; then
|
||||||
|
flags="$flags"'
|
||||||
|
use_cfi_icall=false'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
rm -rf "./$out"
|
||||||
|
mkdir -p out
|
||||||
|
|
||||||
|
export DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||||
|
|
||||||
|
./gn/out/gn gen "$out" --args="$flags $EXTRA_FLAGS"
|
||||||
|
|
||||||
|
ninja -C "$out" naive
|
117
src/get-clang.sh
Executable file
117
src/get-clang.sh
Executable file
@ -0,0 +1,117 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
. ./get-sysroot.sh
|
||||||
|
|
||||||
|
if [ "$SYSROOT_ARCH" -a ! -d ./"$WITH_SYSROOT/lib" ]; then
|
||||||
|
./build/linux/sysroot_scripts/sysroot_creator.py build "$SYSROOT_ARCH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$OPENWRT_FLAGS" ]; then
|
||||||
|
./get-openwrt.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clang
|
||||||
|
# See src/tools/clang/scripts/update.py
|
||||||
|
case "$host_os" in
|
||||||
|
linux) WITH_CLANG=Linux_x64;;
|
||||||
|
win) WITH_CLANG=Win;;
|
||||||
|
mac) WITH_CLANG=Mac;;
|
||||||
|
esac
|
||||||
|
if [ "$host_os" = mac -a "$host_cpu" = arm64 ]; then
|
||||||
|
WITH_CLANG=Mac_arm64
|
||||||
|
fi
|
||||||
|
mkdir -p third_party/llvm-build/Release+Asserts
|
||||||
|
cd tools/clang/scripts
|
||||||
|
CLANG_REVISION=$($PYTHON -c 'import update; print(update.PACKAGE_VERSION)')
|
||||||
|
cd -
|
||||||
|
echo $CLANG_REVISION >third_party/llvm-build/Release+Asserts/cr_build_revision
|
||||||
|
if [ ! -d third_party/llvm-build/Release+Asserts/bin ]; then
|
||||||
|
mkdir -p third_party/llvm-build/Release+Asserts
|
||||||
|
clang_path="clang-$CLANG_REVISION.tar.xz"
|
||||||
|
clang_url="https://commondatastorage.googleapis.com/chromium-browser-clang/$WITH_CLANG/$clang_path"
|
||||||
|
curl "$clang_url" | tar xJf - -C third_party/llvm-build/Release+Asserts
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sccache
|
||||||
|
if [ "$host_os" = win -a ! -f ~/.cargo/bin/sccache.exe ]; then
|
||||||
|
sccache_url="https://github.com/mozilla/sccache/releases/download/0.2.12/sccache-0.2.12-x86_64-pc-windows-msvc.tar.gz"
|
||||||
|
mkdir -p ~/.cargo/bin
|
||||||
|
curl -L "$sccache_url" | tar xzf - --strip=1 -C ~/.cargo/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GN
|
||||||
|
# See src/DEPS
|
||||||
|
case "$host_os" in
|
||||||
|
linux) WITH_GN=linux-amd64;;
|
||||||
|
win) WITH_GN=windows-amd64;;
|
||||||
|
mac) WITH_GN=mac-amd64;;
|
||||||
|
esac
|
||||||
|
if [ "$host_os" = mac -a "$host_cpu" = arm64 ]; then
|
||||||
|
WITH_GN=mac-arm64
|
||||||
|
fi
|
||||||
|
if [ ! -f gn/out/gn ]; then
|
||||||
|
gn_version=$(grep "'gn_version':" DEPS | cut -d"'" -f4)
|
||||||
|
mkdir -p gn/out
|
||||||
|
curl -L "https://chrome-infra-packages.appspot.com/dl/gn/gn/$WITH_GN/+/$gn_version" -o gn.zip
|
||||||
|
unzip gn.zip -d gn/out
|
||||||
|
rm gn.zip
|
||||||
|
fi
|
||||||
|
|
||||||
|
# See src/build/config/compiler/pgo/BUILD.gn
|
||||||
|
case "$target_os" in
|
||||||
|
win)
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm64) WITH_PGO=win-arm64;;
|
||||||
|
x64) WITH_PGO=win64;;
|
||||||
|
*) WITH_PGO=win32;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
mac)
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm64) WITH_PGO=mac-arm;;
|
||||||
|
*) WITH_PGO=mac;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
linux|openwrt)
|
||||||
|
WITH_PGO=linux
|
||||||
|
;;
|
||||||
|
android)
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm64) WITH_PGO=android-arm64;;
|
||||||
|
*) WITH_PGO=android-arm32;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [ "$WITH_PGO" ]; then
|
||||||
|
PGO_PATH=$(cat chrome/build/$WITH_PGO.pgo.txt)
|
||||||
|
fi
|
||||||
|
if [ "$WITH_PGO" -a ! -f chrome/build/pgo_profiles/"$PGO_PATH" ]; then
|
||||||
|
mkdir -p chrome/build/pgo_profiles
|
||||||
|
cd chrome/build/pgo_profiles
|
||||||
|
curl --limit-rate 10M -LO "https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles/$PGO_PATH"
|
||||||
|
cd ../../..
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$target_os" = android -a ! -d third_party/android_toolchain/ndk ]; then
|
||||||
|
# https://dl.google.com/android/repository/android-ndk-r25c-linux.zip
|
||||||
|
android_ndk_version=$(grep 'default_android_ndk_version = ' build/config/android/config.gni | cut -d'"' -f2)
|
||||||
|
curl -LO https://dl.google.com/android/repository/android-ndk-$android_ndk_version-linux.zip
|
||||||
|
unzip android-ndk-$android_ndk_version-linux.zip
|
||||||
|
mkdir -p third_party/android_toolchain/ndk
|
||||||
|
cd android-ndk-$android_ndk_version
|
||||||
|
cp -r --parents sources/android/cpufeatures ../third_party/android_toolchain/ndk
|
||||||
|
cp -r --parents toolchains/llvm/prebuilt ../third_party/android_toolchain/ndk
|
||||||
|
cd ..
|
||||||
|
cd third_party/android_toolchain/ndk
|
||||||
|
find toolchains -type f -regextype egrep \! -regex \
|
||||||
|
'.*(lib(atomic|gcc|gcc_real|compiler_rt-extras|android_support|unwind).a|crt.*o|lib(android|c|dl|log|m).so|usr/local.*|usr/include.*)' -delete
|
||||||
|
# Works around https://github.com/android/ndk/issues/2082
|
||||||
|
# .../android/hardware_buffer.h:322:42: error: expression is not an integral constant expression
|
||||||
|
# 322 | AHARDWAREBUFFER_USAGE_FRONT_BUFFER = 1UL << 32,
|
||||||
|
# .../android/hardware_buffer.h:322:46: note: shift count 32 >= width of type 'unsigned long' (32 bits)
|
||||||
|
# 322 | AHARDWAREBUFFER_USAGE_FRONT_BUFFER = 1UL << 32,
|
||||||
|
sed -i 's/AHARDWAREBUFFER_USAGE_FRONT_BUFFER = 1UL /AHARDWAREBUFFER_USAGE_FRONT_BUFFER = 1ULL /' toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/android/hardware_buffer.h
|
||||||
|
cd -
|
||||||
|
rm -rf android-ndk-$android_ndk_version android-ndk-$android_ndk_version-linux.zip
|
||||||
|
fi
|
55
src/get-openwrt.sh
Executable file
55
src/get-openwrt.sh
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
eval "$OPENWRT_FLAGS"
|
||||||
|
|
||||||
|
sysroot=$PWD/out/sysroot-build/openwrt/$release/$arch
|
||||||
|
if [ -d $sysroot/lib ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
mkdir -p $sysroot
|
||||||
|
|
||||||
|
case "$arch" in
|
||||||
|
arm_*) abi=musl_eabi;;
|
||||||
|
*) abi=musl;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$subtarget" ]; then
|
||||||
|
SDK_PATH=openwrt-toolchain-$release-$target-${subtarget}_gcc-${gcc_ver}_${abi}.Linux-x86_64
|
||||||
|
else
|
||||||
|
subtarget='generic'
|
||||||
|
SDK_PATH=openwrt-toolchain-$release-${target}_gcc-${gcc_ver}_${abi}.Linux-x86_64
|
||||||
|
fi
|
||||||
|
SDK_URL=https://downloads.openwrt.org/releases/$release/targets/$target/$subtarget/$SDK_PATH.tar.xz
|
||||||
|
rm -rf $SDK_PATH
|
||||||
|
curl $SDK_URL | tar xJf -
|
||||||
|
cd $SDK_PATH
|
||||||
|
full_root=toolchain-*_gcc-${gcc_ver}_${abi}
|
||||||
|
cat >include.txt <<EOF
|
||||||
|
./include
|
||||||
|
./lib/*.o
|
||||||
|
./lib/gcc/*/libgcc.a
|
||||||
|
./lib/gcc/*/libgcc_eh.a
|
||||||
|
./lib/libatomic.so*
|
||||||
|
./lib/libatomic.a
|
||||||
|
./lib/libc.so
|
||||||
|
./lib/libc.a
|
||||||
|
./lib/libdl.a
|
||||||
|
./lib/ld-*
|
||||||
|
./lib/libgcc_s.*
|
||||||
|
./lib/libm.a
|
||||||
|
./lib/libpthread.a
|
||||||
|
./lib/libresolv.a
|
||||||
|
./lib/librt.a
|
||||||
|
./usr
|
||||||
|
EOF
|
||||||
|
tar cf - -C $full_root --hard-dereference . | tar xf - -C $sysroot --wildcards --wildcards-match-slash -T include.txt
|
||||||
|
rm -rf include.txt
|
||||||
|
cd ..
|
||||||
|
rm -rf $SDK_PATH
|
||||||
|
|
||||||
|
# LLVM does not accept muslgnueabi as the target triple environment
|
||||||
|
if [ -d "$sysroot/lib/gcc/arm-openwrt-linux-muslgnueabi" ]; then
|
||||||
|
mv "$sysroot/lib/gcc/arm-openwrt-linux-muslgnueabi" "$sysroot/lib/gcc/arm-openwrt-linux-musleabi"
|
||||||
|
fi
|
70
src/get-sysroot.sh
Normal file
70
src/get-sysroot.sh
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
eval "$EXTRA_FLAGS"
|
||||||
|
|
||||||
|
case "$(uname)" in
|
||||||
|
MINGW*|MSYS*) host_os=win;;
|
||||||
|
Linux) host_os=linux;;
|
||||||
|
Darwin) host_os=mac;;
|
||||||
|
*) echo "Unsupported host OS" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$(uname -m)" in
|
||||||
|
x86_64|x64) host_cpu=x64;;
|
||||||
|
x86|i386|i686) host_cpu=x86;;
|
||||||
|
arm) host_cpu=arm;;
|
||||||
|
arm64|aarch64|armv8b|armv8l) host_cpu=arm64;;
|
||||||
|
*) echo "Unsupported host CPU" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# See src/build/config/BUILDCONFIG.gn
|
||||||
|
if [ ! "$target_os" ]; then
|
||||||
|
target_os="$host_os"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! "$target_cpu" ]; then
|
||||||
|
target_cpu="$host_cpu"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if which python3 >/dev/null 2>/dev/null; then
|
||||||
|
PYTHON=python3
|
||||||
|
else
|
||||||
|
PYTHON=python
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sysroot
|
||||||
|
case "$target_os" in
|
||||||
|
linux)
|
||||||
|
case "$target_cpu" in
|
||||||
|
x64) SYSROOT_ARCH=amd64;;
|
||||||
|
x86) SYSROOT_ARCH=i386;;
|
||||||
|
arm64) SYSROOT_ARCH=arm64;;
|
||||||
|
arm) SYSROOT_ARCH=armhf;;
|
||||||
|
mipsel) SYSROOT_ARCH=mipsel;;
|
||||||
|
mips64el) SYSROOT_ARCH=mips64el;;
|
||||||
|
riscv64) SYSROOT_ARCH=riscv64;;
|
||||||
|
esac
|
||||||
|
if [ "$SYSROOT_ARCH" ]; then
|
||||||
|
WITH_SYSROOT="out/sysroot-build/bullseye/bullseye_${SYSROOT_ARCH}_staging"
|
||||||
|
fi
|
||||||
|
# This is the case where running ./build.sh without EXTRA_FLAGS
|
||||||
|
# wants to avoid downloading sysroots.
|
||||||
|
if [ ! "$EXTRA_FLAGS" -a "$target_cpu" = "$host_cpu" ]; then
|
||||||
|
SYSROOT_ARCH=
|
||||||
|
WITH_SYSROOT=
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
openwrt)
|
||||||
|
eval "$OPENWRT_FLAGS"
|
||||||
|
WITH_SYSROOT="out/sysroot-build/openwrt/$release/$arch"
|
||||||
|
;;
|
||||||
|
android)
|
||||||
|
WITH_SYSROOT=
|
||||||
|
# https://dl.google.com/android/repository/sys-img/android/sys-img.xml
|
||||||
|
# https://dl.google.com/android/repository/sys-img/google_apis/sys-img.xml
|
||||||
|
case "$target_cpu" in
|
||||||
|
x64) WITH_ANDROID_IMG=x86_64-24_r08;;
|
||||||
|
x86) WITH_ANDROID_IMG=x86-24_r08;;
|
||||||
|
arm64) WITH_ANDROID_IMG=arm64-v8a-24_r07;;
|
||||||
|
arm) WITH_ANDROID_IMG=armeabi-v7a-24_r07;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user