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
9 changed files with 23 additions and 72 deletions
|
@ -73,6 +73,9 @@ option(WITH_BOOTSTRAP "build lokinet-bootstrap tool" ${DEFAULT_WITH_BOOTSTRAP})
|
|||
|
||||
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(STATIC_LINK "link statically against dependencies" ${BUILD_STATIC_DEPS})
|
||||
if(BUILD_STATIC_DEPS AND NOT STATIC_LINK)
|
||||
|
|
|
@ -8,10 +8,11 @@ die() {
|
|||
exit 1
|
||||
}
|
||||
|
||||
platform=${PLATFORM:-Linux}
|
||||
root="$(readlink -e $(dirname $0)/../)"
|
||||
cd $root
|
||||
set -e
|
||||
set -x
|
||||
set +x
|
||||
test $# = 0 && die no targets provided
|
||||
mkdir -p build-cross
|
||||
echo "all: $@" > build-cross/Makefile
|
||||
|
@ -20,9 +21,11 @@ for targ in $@ ; do
|
|||
cd $root/build-cross/build-$targ
|
||||
cmake \
|
||||
-G 'Unix Makefiles' \
|
||||
-DCROSS_PLATFORM=$platform \
|
||||
-DCROSS_PREFIX=$targ \
|
||||
-DCMAKE_EXE_LINKER_FLAGS=-fstack-protector \
|
||||
-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_SHARED_LIBS=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(TOOLCHAIN_PREFIX mips-linux-gnu)
|
||||
set(TOOLCHAIN_SUFFIX)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME ${CROSS_PLATFORM})
|
||||
set(TOOLCHAIN_PREFIX ${CROSS_PREFIX})
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
|
||||
|
||||
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)
|
||||
$ sudo make install
|
||||
|
||||
|
||||
#### 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
|
||||
|
||||
|
|
Loading…
Reference in a new issue