build: ./configure basic cross-compilation support
$ sudo dpkg --add-architecture arm64 [update APT sources.list] $ sudo apt install qemu crossbuild-essential-arm64 libssl-dev:arm64 libuuid1:arm64 libnl-3-dev:arm64 libnl-route-3-dev:arm64 $ ./configure -w -a aarch64 $ ninja $ uname -m x86_64 $ bin/vpp unix interactive _______ _ _ _____ ___ __/ __/ _ \ (_)__ | | / / _ \/ _ \ _/ _// // / / / _ \ | |/ / ___/ ___/ /_/ /____(_)_/\___/ |___/_/ /_/ vpp# show cpu Model name: armv8 Microarch model (family): unknown (implementer 0x55 part 0x32c PASS 89.1519459600) Flags: fp asimd aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve Base frequency: .06 GHz vpp# Type: make Change-Id: Ib8bf2c7e38f109db42225db2e3182ceb8871baaf Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:
50
configure
vendored
50
configure
vendored
@ -8,8 +8,11 @@ set -o pipefail -o errtrace -o nounset -o errexit
|
|||||||
build_dir=.
|
build_dir=.
|
||||||
install_dir=/usr/local
|
install_dir=/usr/local
|
||||||
build_type=release
|
build_type=release
|
||||||
prefix_path=/opt/vpp/external/$(uname -m)/
|
|
||||||
src_dir="$(dirname "$(readlink -f "$0")")"
|
src_dir="$(dirname "$(readlink -f "$0")")"
|
||||||
|
host_arch=$(uname -m)
|
||||||
|
arch=${host_arch}
|
||||||
|
wipe=no
|
||||||
|
args=()
|
||||||
|
|
||||||
help()
|
help()
|
||||||
{
|
{
|
||||||
@ -20,6 +23,7 @@ USAGE: ${0} [options]
|
|||||||
|
|
||||||
OPTIONS:
|
OPTIONS:
|
||||||
--help, -h This help
|
--help, -h This help
|
||||||
|
--arch, -a Cross-compile for specified target architecture (aarch64, riscv64, i386, ...)
|
||||||
--build-dir, -b Build directory
|
--build-dir, -b Build directory
|
||||||
--install-dir, -i Install directory
|
--install-dir, -i Install directory
|
||||||
--build-type, -t Build type (release, debug, ...)
|
--build-type, -t Build type (release, debug, ...)
|
||||||
@ -42,6 +46,15 @@ while (( "$#" )); do
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
-a|--arch)
|
||||||
|
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
|
||||||
|
arch=$2
|
||||||
|
shift 2
|
||||||
|
else
|
||||||
|
echo "Error: Argument for $1 is missing" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
-i|--install-dir)
|
-i|--install-dir)
|
||||||
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
|
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
|
||||||
install_dir=$2
|
install_dir=$2
|
||||||
@ -61,8 +74,8 @@ while (( "$#" )); do
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
-w|--wipe)
|
-w|--wipe)
|
||||||
git clean -fdx --exclude=startup.\*
|
wipe=yes
|
||||||
exit 1
|
shift 1
|
||||||
;;
|
;;
|
||||||
-*|--*=) # unsupported flags
|
-*|--*=) # unsupported flags
|
||||||
echo "Error: Unsupported flag $1" >&2
|
echo "Error: Unsupported flag $1" >&2
|
||||||
@ -75,16 +88,29 @@ while (( "$#" )); do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
cmake \
|
if [ "${arch}" != "${host_arch}" ] ; then
|
||||||
-G Ninja \
|
args+=("-DCMAKE_SYSTEM_NAME=Linux")
|
||||||
-S ${src_dir}/src \
|
args+=("-DCMAKE_SYSTEM_PROCESSOR=${arch}")
|
||||||
-B ${build_dir} \
|
args+=("-DCMAKE_C_COMPILER=clang")
|
||||||
-DCMAKE_PREFIX_PATH=${prefix_path} \
|
args+=("-DCMAKE_C_COMPILER_TARGET=${arch}-linux-gnu")
|
||||||
-DCMAKE_INSTALL_PREFIX=${install_dir} \
|
args+=("-DCMAKE_ASM_COMPILER_TARGET=${arch}-linux-gnu")
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
|
args+=("-DCMAKE_FIND_ROOT_PATH=/usr/${arch}-linux-gnu")
|
||||||
-DCMAKE_BUILD_TYPE:STRING=${build_type}
|
args+=("-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER")
|
||||||
|
args+=("-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH")
|
||||||
|
args+=("-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH")
|
||||||
|
args+=("-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY")
|
||||||
|
fi
|
||||||
|
|
||||||
cat << __EOF__
|
args+=("-DCMAKE_PREFIX_PATH=/opt/vpp/external/${arch}")
|
||||||
|
args+=("-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON")
|
||||||
|
args+=("-DCMAKE_INSTALL_PREFIX=${install_dir}")
|
||||||
|
args+=("-DCMAKE_BUILD_TYPE:STRING=${build_type}")
|
||||||
|
|
||||||
|
[ "${wipe}" == "yes" ] && git clean -fdx --exclude=startup.\*
|
||||||
|
|
||||||
|
cmake ${args[@]} -G Ninja -S ${src_dir}/src -B ${build_dir}
|
||||||
|
|
||||||
|
cat << __EOF__
|
||||||
|
|
||||||
Useful build commands:
|
Useful build commands:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user