mirror of
https://github.com/oxen-io/lokinet
synced 2023-12-14 06:53:00 +01:00
dry cross compile
This commit is contained in:
parent
12044af04e
commit
56492c88ac
|
@ -73,6 +73,9 @@ option(WITH_BOOTSTRAP "build lokinet-bootstrap tool" ${DEFAULT_WITH_BOOTSTRAP})
|
||||||
|
|
||||||
include(cmake/enable_lto.cmake)
|
include(cmake/enable_lto.cmake)
|
||||||
|
|
||||||
|
option(CROSS_PLATFORM "cross compiler platform" "Linux")
|
||||||
|
option(CROSS_PREFIX "toolchain cross compiler prefix" "")
|
||||||
|
|
||||||
option(BUILD_STATIC_DEPS "Download, build, and statically link against core dependencies" OFF)
|
option(BUILD_STATIC_DEPS "Download, build, and statically link against core dependencies" OFF)
|
||||||
option(STATIC_LINK "link statically against dependencies" ${BUILD_STATIC_DEPS})
|
option(STATIC_LINK "link statically against dependencies" ${BUILD_STATIC_DEPS})
|
||||||
if(BUILD_STATIC_DEPS AND NOT STATIC_LINK)
|
if(BUILD_STATIC_DEPS AND NOT STATIC_LINK)
|
||||||
|
|
|
@ -8,10 +8,11 @@ die() {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
platform=${PLATFORM:-Linux}
|
||||||
root="$(readlink -e $(dirname $0)/../)"
|
root="$(readlink -e $(dirname $0)/../)"
|
||||||
cd $root
|
cd $root
|
||||||
set -e
|
set -e
|
||||||
set -x
|
set +x
|
||||||
test $# = 0 && die no targets provided
|
test $# = 0 && die no targets provided
|
||||||
mkdir -p build-cross
|
mkdir -p build-cross
|
||||||
echo "all: $@" > build-cross/Makefile
|
echo "all: $@" > build-cross/Makefile
|
||||||
|
@ -20,9 +21,11 @@ for targ in $@ ; do
|
||||||
cd $root/build-cross/build-$targ
|
cd $root/build-cross/build-$targ
|
||||||
cmake \
|
cmake \
|
||||||
-G 'Unix Makefiles' \
|
-G 'Unix Makefiles' \
|
||||||
|
-DCROSS_PLATFORM=$platform \
|
||||||
|
-DCROSS_PREFIX=$targ \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS=-fstack-protector \
|
-DCMAKE_EXE_LINKER_FLAGS=-fstack-protector \
|
||||||
-DCMAKE_CXX_FLAGS=-fdiagnostics-color=always\
|
-DCMAKE_CXX_FLAGS=-fdiagnostics-color=always\
|
||||||
-DCMAKE_TOOLCHAIN_FILE=$root/contrib/cross/$targ.toolchain.cmake\
|
-DCMAKE_TOOLCHAIN_FILE=$root/contrib/cross/cross.toolchain.cmake\
|
||||||
-DBUILD_STATIC_DEPS=ON \
|
-DBUILD_STATIC_DEPS=ON \
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
-DBUILD_SHARED_LIBS=OFF \
|
||||||
-DBUILD_TESTING=OFF \
|
-DBUILD_TESTING=OFF \
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(TOOLCHAIN_PREFIX aarch64-linux-gnu)
|
|
||||||
set(TOOLCHAIN_SUFFIX)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_SUFFIX})
|
|
||||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++${TOOLCHAIN_SUFFIX})
|
|
||||||
set(ARCH_TRIPLET ${TOOLCHAIN_PREFIX})
|
|
|
@ -1,13 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(TOOLCHAIN_PREFIX arm-linux-gnueabihf)
|
|
||||||
set(TOOLCHAIN_SUFFIX)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_SUFFIX})
|
|
||||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++${TOOLCHAIN_SUFFIX})
|
|
||||||
set(ARCH_TRIPLET ${TOOLCHAIN_PREFIX})
|
|
|
@ -1,7 +1,5 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
set(CMAKE_SYSTEM_NAME ${CROSS_PLATFORM})
|
||||||
set(TOOLCHAIN_PREFIX mips-linux-gnu)
|
set(TOOLCHAIN_PREFIX ${CROSS_PREFIX})
|
||||||
set(TOOLCHAIN_SUFFIX)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
@ -1,13 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(TOOLCHAIN_PREFIX mips64-linux-gnuabi64)
|
|
||||||
set(TOOLCHAIN_SUFFIX)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_SUFFIX})
|
|
||||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++${TOOLCHAIN_SUFFIX})
|
|
||||||
set(ARCH_TRIPLET ${TOOLCHAIN_PREFIX})
|
|
|
@ -1,13 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(TOOLCHAIN_PREFIX mipsel-linux-gnu)
|
|
||||||
set(TOOLCHAIN_SUFFIX)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_SUFFIX})
|
|
||||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++${TOOLCHAIN_SUFFIX})
|
|
||||||
set(ARCH_TRIPLET ${TOOLCHAIN_PREFIX})
|
|
|
@ -1,13 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(TOOLCHAIN_PREFIX powerpc64le-linux-gnu)
|
|
||||||
set(TOOLCHAIN_SUFFIX)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_SUFFIX})
|
|
||||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++${TOOLCHAIN_SUFFIX})
|
|
||||||
set(ARCH_TRIPLET ${TOOLCHAIN_PREFIX})
|
|
14
readme.md
14
readme.md
|
@ -68,9 +68,21 @@ If you want to build from source:
|
||||||
$ make -j$(nproc)
|
$ make -j$(nproc)
|
||||||
$ sudo make install
|
$ sudo make install
|
||||||
|
|
||||||
|
|
||||||
#### Cross Compile For Linux <span id="linux-cross" />
|
#### Cross Compile For Linux <span id="linux-cross" />
|
||||||
|
|
||||||
install the toolchain for `$arch` this example is `aarch64`
|
current cross targets:
|
||||||
|
|
||||||
|
* aarch64-linux-gnu
|
||||||
|
* arm-linux-gnueabihf
|
||||||
|
* mips-linux-gnu
|
||||||
|
* mips64-linux-gnuabi64
|
||||||
|
* mipsel-linux-gnu
|
||||||
|
* powerpc64le-linux-gnu
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
install the toolchain (this one is for `aarch64-linux-gnu`)
|
||||||
|
|
||||||
$ sudo apt install g{cc,++}-aarch64-linux-gnu
|
$ sudo apt install g{cc,++}-aarch64-linux-gnu
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue