From 66f2a8891f4c0fd49433280be06e5e007491e044 Mon Sep 17 00:00:00 2001 From: Nathan Skrzypczak Date: Wed, 31 Jul 2019 17:57:58 +0200 Subject: docs: Add macos build documentation Type: docs Change-Id: Iee03aacab2cfcb4e87190302dc641e8273b7f096 Signed-off-by: Nathan Skrzypczak --- extras/scripts/cross_compile_macos.sh | 74 ++++++++++++++++++++++ extras/scripts/patches/macos_build_externals.patch | 17 +++++ 2 files changed, 91 insertions(+) create mode 100755 extras/scripts/cross_compile_macos.sh create mode 100644 extras/scripts/patches/macos_build_externals.patch (limited to 'extras') diff --git a/extras/scripts/cross_compile_macos.sh b/extras/scripts/cross_compile_macos.sh new file mode 100755 index 00000000000..998d914cf88 --- /dev/null +++ b/extras/scripts/cross_compile_macos.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +VPP_DIR=$(dirname ${BASH_SOURCE[0]})/../.. +VPP_TOOLCHAIN_FILE=$VPP_DIR/extras/scripts/.config/macos.toolchain +BUILD_PATCH=$VPP_DIR/extras/scripts/patches/macos_build_externals.patch +VPP_EXPORT_CC="" + +function help() { +cat << __EOF__ +Usage: $0 [COMMAND] +conf create the configuration file + with the give cross-toolchain directory +build run Macos +build-release run Macos +compile_commands Generate compile_commands.json +__EOF__ +} + +function create_toolchain_file () { + if [ x$1 = x ]; then + echo "Please specify the cross toolchain directory" + exit 1 + fi + XCHAIN=$1 + if [ ! -e ]; then + mkdir -p $VPP_DIR/extras/scripts/.config + echo " +SET(CMAKE_SYSTEM_NAME Linux) +SET(CMAKE_SYSTEM_VERSION 1) + +# specify the cross compiler +SET(CMAKE_C_COMPILER $XCHAIN/x86_64-ubuntu16.04-linux-gnu/bin/x86_64-ubuntu16.04-linux-gnu-gcc) +SET(CMAKE_CXX_COMPILER $XCHAIN/x86_64-ubuntu16.04-linux-gnu/bin/x86_64-ubuntu16.04-linux-gnu-g++) + +# where is the target environment +SET(CMAKE_FIND_ROOT_PATH $XCHAIN/x86_64-ubuntu16.04-linux-gnu $XCHAIN/x86_64-ubuntu16.04-linux-gnu/x86_64-ubuntu16.04-linux-gnu/sysroot/) + +SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +SET(CMAKE_SYSTEM_PROCESSOR x86_64) +# This is needed to build vpp-papi +SET(PYTHON_EXECUTABLE /usr/local/bin/python)" | tee $VPP_TOOLCHAIN_FILE > /dev/null + echo "Configration file created" + echo "please edit $VPP_TOOLCHAIN_FILE" + else + echo "configuration file already exists" + echo "please edit $VPP_TOOLCHAIN_FILE" + fi +} + +function vpp_make () { + cd $VPP_DIR ; git apply $BUILD_PATCH + trap "cd $VPP_DIR ; git apply -R $BUILD_PATCH" EXIT + export VPP_EXTRA_CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=${VPP_TOOLCHAIN_FILE} -DCMAKE_EXPORT_COMPILE_COMMANDS=${VPP_EXPORT_CC}" ; make -C $VPP_DIR $1 +} + +case $1 in + conf) + create_toolchain_file $2 + ;; + build) + vpp_make build + ;; + build-release) + vpp_make build-release + ;; + compile_commands) + VPP_EXPORT_CC=ON vpp_make build + echo "compile_commands.json should be generated" + echo "check $VPP_DIR/build-root/build-vpp_debug-native/vpp/compile_commands.json" + ;; + *) + help + ;; +esac \ No newline at end of file diff --git a/extras/scripts/patches/macos_build_externals.patch b/extras/scripts/patches/macos_build_externals.patch new file mode 100644 index 00000000000..ec1aeb3d4ec --- /dev/null +++ b/extras/scripts/patches/macos_build_externals.patch @@ -0,0 +1,17 @@ +diff --git a/build/external/Makefile b/build/external/Makefile +index e5dff3c43..ffd0a6476 100644 +--- a/build/external/Makefile ++++ b/build/external/Makefile +@@ -45,10 +45,10 @@ clean: + @rm -rf $(B) $(I) + + .PHONY: install +-install: dpdk-install rdma-core-install quicly-install ++install: + + .PHONY: config +-config: dpdk-config rdma-core-config ++config: + + ############################################################################## + # .deb packaging -- cgit 1.2.3-korg