|
|
|
@ -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 |
|
|
|
|