Supports Arm64 (aarch64) protoc artifacts
This commit is contained in:
parent
0971efb16e
commit
b879abc811
@ -6,6 +6,12 @@
|
||||
# Usage: build-protoc.sh <OS> <ARCH> <TARGET>
|
||||
# <OS> and <ARCH> are ${os.detected.name} and ${os.detected.arch} from os-maven-plugin
|
||||
# <TARGET> can be "protoc" or "protoc-gen-javalite"
|
||||
#
|
||||
# The script now supports cross-compiling windows and linux-arm64 in linux-x86
|
||||
# environment. Required packages:
|
||||
# - Windows: i686-w64-mingw32-gcc (32bit) and x86_64-w64-mingw32-gcc (64bit)
|
||||
# - Arm64: g++-aarch64-linux-gnu
|
||||
|
||||
OS=$1
|
||||
ARCH=$2
|
||||
MAKE_TARGET=$3
|
||||
@ -73,6 +79,8 @@ checkArch ()
|
||||
assertEq $format "elf32-i386" $LINENO
|
||||
elif [[ "$ARCH" == x86_64 ]]; then
|
||||
assertEq $format "elf64-x86-64" $LINENO
|
||||
elif [[ "$ARCH" == aarch_64 ]]; then
|
||||
assertEq $format "elf64-little" $LINENO
|
||||
else
|
||||
fail "Unsupported arch: $ARCH"
|
||||
fi
|
||||
@ -116,6 +124,9 @@ checkDependencies ()
|
||||
white_list="linux-gate\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld-linux\.so\.2"
|
||||
elif [[ "$ARCH" == x86_64 ]]; then
|
||||
white_list="linux-vdso\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld-linux-x86-64\.so\.2"
|
||||
elif [[ "$ARCH" == aarch_64 ]]; then
|
||||
dump_cmd='objdump -p '"$1"' | grep NEEDED'
|
||||
white_list="libpthread\.so\.0\|libc\.so\.6\|ld-linux-aarch64\.so\.1"
|
||||
fi
|
||||
elif [[ "$OS" == osx ]]; then
|
||||
dump_cmd='otool -L '"$1"' | fgrep dylib'
|
||||
@ -180,6 +191,8 @@ elif [[ "$(uname)" == Linux* ]]; then
|
||||
CXXFLAGS="$CXXFLAGS -m64"
|
||||
elif [[ "$ARCH" == x86_32 ]]; then
|
||||
CXXFLAGS="$CXXFLAGS -m32"
|
||||
elif [[ "$ARCH" == aarch_64 ]]; then
|
||||
CONFIGURE_ARGS="$CONFIGURE_ARGS --host=aarch64-linux-gnu"
|
||||
else
|
||||
fail "Unsupported arch: $ARCH"
|
||||
fi
|
||||
|
@ -13,12 +13,13 @@ Example:
|
||||
This script will download pre-built protoc or protoc plugin binaries from maven
|
||||
repository and create .zip packages suitable to be included in the github
|
||||
release page. If the target is protoc, well-known type .proto files will also be
|
||||
included. Each invocation will create 5 zip packages:
|
||||
included. Each invocation will create 6 zip packages:
|
||||
dist/<TARGET>-<VERSION_NUMBER>-win32.zip
|
||||
dist/<TARGET>-<VERSION_NUMBER>-osx-x86_32.zip
|
||||
dist/<TARGET>-<VERSION_NUMBER>-osx-x86_64.zip
|
||||
dist/<TARGET>-<VERSION_NUMBER>-linux-x86_32.zip
|
||||
dist/<TARGET>-<VERSION_NUMBER>-linux-x86_64.zip
|
||||
dist/<TARGET>-<VERSION_NUMBER>-linux-aarch64.zip
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
@ -33,6 +34,7 @@ declare -a FILE_NAMES=( \
|
||||
osx-x86_64.zip osx-x86_64.exe \
|
||||
linux-x86_32.zip linux-x86_32.exe \
|
||||
linux-x86_64.zip linux-x86_64.exe \
|
||||
linux-aarch64.zip linux-aarch64.exe \
|
||||
)
|
||||
|
||||
# List of all well-known types to be included.
|
||||
|
Loading…
Reference in New Issue
Block a user