mirror of
https://github.com/bol-van/zapret2.git
synced 2026-03-14 06:13:09 +00:00
171 lines
3.2 KiB
PHP
171 lines
3.2 KiB
PHP
EXEDIR="$(dirname "$0")"
|
|
EXEDIR="$(cd "$EXEDIR"; pwd)"
|
|
|
|
TOOLCHAINS="$EXEDIR/toolchain"
|
|
DEPS="$EXEDIR/deps"
|
|
STAGE="$EXEDIR/staging"
|
|
MINSIZE="-Oz -flto=auto -ffunction-sections -fdata-sections"
|
|
LDMINSIZE="-Wl,--gc-sections -flto=auto"
|
|
CFLAGS=""
|
|
LDFLAGS="-lgcc_eh"
|
|
HOSTCC=cc
|
|
LUA_VER="5.5"
|
|
LUA_RELEASE="5.5.0"
|
|
LUAJIT_VER="2.1"
|
|
LUAJIT_RELEASE="2.1-20250826"
|
|
LUAJIT_LUAVER="5.1"
|
|
nproc=$(nproc)
|
|
|
|
TARGETS="\
|
|
aarch64-unknown-linux-musl \
|
|
arm-unknown-linux-musleabi \
|
|
i586-unknown-linux-musl \
|
|
x86_64-unknown-linux-musl \
|
|
mips-unknown-linux-muslsf \
|
|
mips64-unknown-linux-musl \
|
|
mips64el-unknown-linux-musl \
|
|
mipsel-unknown-linux-muslsf \
|
|
powerpc-unknown-linux-musl \
|
|
riscv64-unknown-linux-musl \
|
|
"
|
|
|
|
target_has_luajit()
|
|
{
|
|
case "$1" in
|
|
aarch64-unknown-linux-musl| \
|
|
arm-unknown-linux-musleabi| \
|
|
x86_64-unknown-linux-musl| \
|
|
mips-unknown-linux-muslsf| \
|
|
mips64-unknown-linux-musl| \
|
|
mips64el-unknown-linux-musl| \
|
|
mipsel-unknown-linux-muslsf| \
|
|
powerpc-unknown-linux-musl) \
|
|
return 0
|
|
;;
|
|
esac
|
|
return 1
|
|
}
|
|
|
|
bsd_files()
|
|
{
|
|
install -Dm644 -t $STAGING_DIR/include/sys /usr/include/x86_64-linux-gnu/sys/queue.h /usr/include/sys/capability.h
|
|
}
|
|
|
|
buildenv()
|
|
{
|
|
# $1 = arch
|
|
|
|
export TARGET=$1
|
|
export CC=$TARGET-gcc
|
|
export LD=$TARGET-ld
|
|
export AR=$TARGET-ar
|
|
export NM=$TARGET-nm
|
|
export STRIP=$TARGET-strip
|
|
export STAGING_DIR="$EXEDIR/staging/$TARGET"
|
|
[ -d "$STAGING_DIR" ] || {
|
|
mkdir -p "$STAGING_DIR"
|
|
mkdir -p "$STAGING_DIR/lib/pkgconfig"
|
|
mkdir -p "$STAGING_DIR/bin"
|
|
mkdir -p "$STAGING_DIR/include"
|
|
}
|
|
export PKG_CONFIG_PATH=$STAGING_DIR/lib/pkgconfig
|
|
OLDPATH="$PATH"
|
|
export PATH="$PATH:$TOOLCHAINS/$TARGET/bin"
|
|
}
|
|
buildenv_clear()
|
|
{
|
|
export PATH="$OLDPATH" TARGET= CC= LD= AR= NM= STRIP= STAGING_DIR= PKG_CONFIG_PATH=
|
|
OLDPATH=
|
|
}
|
|
|
|
|
|
dir_is_not_empty()
|
|
{
|
|
# $1 - directory
|
|
local n
|
|
[ -d "$1" ] || return 1
|
|
n=$(ls -A "$1" | wc -c | xargs)
|
|
[ "$n" != 0 ]
|
|
}
|
|
|
|
find_str_in_list()
|
|
{
|
|
# $1 - string
|
|
# $2 - space separated values
|
|
local v
|
|
[ -n "$1" ] && {
|
|
for v in $2; do
|
|
[ "$v" = "$1" ] && return 0
|
|
done
|
|
}
|
|
return 1
|
|
}
|
|
|
|
ask_list()
|
|
{
|
|
# $1 - mode var
|
|
# $2 - space separated value list
|
|
# $3 - (optional) default value
|
|
local M_DEFAULT
|
|
eval M_DEFAULT="\$$1"
|
|
local M_DEFAULT_VAR="$M_DEFAULT"
|
|
local M="" m
|
|
|
|
[ -n "$3" ] && { find_str_in_list "$M_DEFAULT" "$2" || M_DEFAULT="$3" ;}
|
|
|
|
n=1
|
|
for m in $2; do
|
|
echo $n : $m
|
|
n=$(($n+1))
|
|
done
|
|
printf "your choice (default : $M_DEFAULT) : "
|
|
read m
|
|
[ -n "$m" ] && M=$(echo $2 | cut -d ' ' -f$m 2>/dev/null)
|
|
[ -z "$M" ] && M="$M_DEFAULT"
|
|
echo selected : $M
|
|
eval $1="\"$M\""
|
|
|
|
[ "$M" != "$M_DEFAULT_VAR" ]
|
|
}
|
|
|
|
ask_target()
|
|
{
|
|
# $1 = 1 = ask all, otherwise ask only present toolchains
|
|
|
|
# already set ?
|
|
[ -n "$TGT" ] && return
|
|
|
|
local d ALL_TARGETS
|
|
[ "$1" = 1 ] || {
|
|
if dir_is_not_empty "$TOOLCHAINS"; then
|
|
for d in "$TOOLCHAINS"/*; do
|
|
[ -d "$d" ] && {
|
|
d="$(basename "$d")"
|
|
ALL_TARGETS="$ALL_TARGETS $d"
|
|
}
|
|
done
|
|
fi
|
|
}
|
|
[ -n "$ALL_TARGETS" ] || ALL_TARGETS="$TARGETS"
|
|
|
|
echo "select target :"
|
|
ask_list TARGET "ALL $ALL_TARGETS" "ALL"
|
|
echo
|
|
echo selected TARGET : $TARGET
|
|
echo
|
|
|
|
if [ $TARGET = ALL ]; then
|
|
TGT="$ALL_TARGETS"
|
|
else
|
|
TGT="$TARGET"
|
|
fi
|
|
}
|
|
|
|
check_toolchains()
|
|
{
|
|
dir_is_not_empty "$TOOLCHAINS" || {
|
|
echo DOWNLOAD TOOLCHAINS FIRST
|
|
exit 1
|
|
}
|
|
}
|