diff --git a/contrib/cross.sh b/contrib/cross.sh index 40b79024a..0b7d66328 100755 --- a/contrib/cross.sh +++ b/contrib/cross.sh @@ -3,6 +3,8 @@ # helper script for me for when i cross compile # t. jeff # +set -e + die() { echo $@ exit 1 @@ -11,36 +13,52 @@ die() { platform=${PLATFORM:-Linux} root="$(readlink -e $(dirname $0)/../)" cd $root -set -e -test $# = 0 && die no targets provided mkdir -p build-cross -echo "all: $@" > build-cross/Makefile -for targ in $@ ; do - mkdir -p $root/build-cross/build-$targ - cd $root/build-cross/build-$targ + +cmake_opts="-DBUILD_STATIC_DEPS=ON \ + -DSTATIC_LINK=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DBUILD_LIBLOKINET=OFF \ + -DWITH_TESTS=OFF \ + -DNATIVE_BUILD=OFF \ + -DSTATIC_LINK=ON \ + -DWITH_SYSTEMD=OFF \ + -DFORCE_OXENMQ_SUBMODULE=ON \ + -DSUBMODULE_CHECK=OFF \ + -DWITH_LTO=OFF \ + -DWITH_BOOTSTRAP=OFF \ + -DCMAKE_BUILD_TYPE=RelWithDeb" + +targets=() + +while [ "$#" -gt 0 ]; do + if [ "$1" = "--" ]; then + shift + cmake_opts=$@ + break + fi + targets+=("$1") + shift +done +test ${#targets[@]} = 0 && die no targets provided + +archs="${targets[@]}" +echo "all: $archs" > build-cross/Makefile +for arch in $archs ; do + mkdir -p $root/build-cross/build-$arch + cd $root/build-cross/build-$arch cmake \ -G 'Unix Makefiles' \ -DCROSS_PLATFORM=$platform \ - -DCROSS_PREFIX=$targ \ + -DCROSS_PREFIX=$arch \ -DCMAKE_EXE_LINKER_FLAGS=-fstack-protector \ - -DCMAKE_CXX_FLAGS=-fdiagnostics-color=always\ - -DCMAKE_TOOLCHAIN_FILE=$root/contrib/cross/cross.toolchain.cmake\ - -DBUILD_STATIC_DEPS=ON \ - -DBUILD_SHARED_LIBS=OFF \ - -DBUILD_TESTING=OFF \ - -DBUILD_LIBLOKINET=OFF \ - -DWITH_TESTS=OFF \ - -DNATIVE_BUILD=OFF \ - -DSTATIC_LINK=ON \ - -DWITH_SYSTEMD=OFF \ - -DFORCE_OXENMQ_SUBMODULE=ON \ - -DSUBMODULE_CHECK=OFF \ - -DWITH_LTO=OFF \ - -DWITH_BOOTSTRAP=OFF \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS=-fdiagnostics-color=always \ + -DCMAKE_TOOLCHAIN_FILE=$root/contrib/cross/cross.toolchain.cmake \ + $cmake_opts \ $root cd $root/build-cross - echo -ne "$targ:\n\t\$(MAKE) -C build-$targ\n" >> $root/build-cross/Makefile + echo -ne "$arch:\n\t\$(MAKE) -C build-$arch\n" >> $root/build-cross/Makefile done cd $root diff --git a/readme.md b/readme.md index be57d75f3..2f35d1dcb 100644 --- a/readme.md +++ b/readme.md @@ -80,9 +80,7 @@ current cross targets: * mipsel-linux-gnu * powerpc64le-linux-gnu - - -install the toolchain (this one is for `aarch64-linux-gnu`) +install the toolchain (this one is for `aarch64-linux-gnu`, you can provide your own toolchain if you want) $ sudo apt install g{cc,++}-aarch64-linux-gnu