diff options
-rw-r--r-- | README.md | 20 | ||||
-rw-r--r-- | cmake/toolchain/Aarch64LinuxGnu.cmake | 24 | ||||
-rw-r--r-- | cmake/toolchain/PowerpcLinuxGnu.cmake | 24 |
3 files changed, 68 insertions, 0 deletions
@@ -110,6 +110,26 @@ A value from the range of appropriate values can be assigend to each configurati cmake -D<VARIABLE>=<VALUE> [-D ...] ../. ``` +With the help of CMake, it is also possible to cross-compile the dnbd3 components for a Linux target architecture other than the compiling Linux host architecture. This repository is shipped with two CMake toolchain files to cross-compile all components for the following two Linux target architectures if necessary. + +> **Note that all used header files (eg. Linux kernel headers) and libraries (eg. jansson, fuse) for the target architecture are installed and set up properly, so that the cross-compiler can find and use them.** + + +#### Cross-Compiling for _powerpc_ Target +If you want to cross-compile all dnbd3 components for the _powerpc_ Linux target architecture (eg. for a Mac G5), make sure that the `powerpc-linux-gnu-gcc` cross-compiler is installed on your host system. Then, call CMake with the shipped toolchain file for this specific cross-compiler as follows. + +```shell +cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/PowerpcLinuxGnu.cmake [-D ...] ../. +``` + + +#### Cross-Compiling for _aarch64_ Target +If you want to cross-compile all dnbd3 components for the _aarch64_ Linux target architecture (eg. for a Raspberry Pi 4), make sure that the `aarch64-linux-gnu-gcc` cross-compiler is installed on your host system. Then, call CMake with the shipped toolchain file for this specific cross-compiler as follows. + +```shell +cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/Aarch64LinuxGnu.cmake [-D ...] ../. +``` + ### Debug In the `Debug` build configuration, all dnbd3 components can be built by calling `make`: diff --git a/cmake/toolchain/Aarch64LinuxGnu.cmake b/cmake/toolchain/Aarch64LinuxGnu.cmake new file mode 100644 index 0000000..59c5f00 --- /dev/null +++ b/cmake/toolchain/Aarch64LinuxGnu.cmake @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# CMAKE toolchain file for cross compilation with aarch64-linux-gnu-gcc +# +# Copyright (C) 2020 Manuel Bentele <development@manuel-bentele.de> +# + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) +set(CMAKE_LINKER aarch64-linux-gnu-ld) +set(CMAKE_ASM_COMPILER aarch64-linux-gnu-as) +set(CMAKE_OBJCOPY aarch64-linux-gnu-objcopy) +set(CMAKE_STRIP aarch64-linux-gnu-strip) +set(CMAKE_CPP aarch64-linux-gnu-cpp) + +# path of headers and libraries for aarch64-linux-gnu target +set(CMAKE_FIND_ROOT_PATH "/usr/aarch64-linux-gnu") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/toolchain/PowerpcLinuxGnu.cmake b/cmake/toolchain/PowerpcLinuxGnu.cmake new file mode 100644 index 0000000..d3c1ca5 --- /dev/null +++ b/cmake/toolchain/PowerpcLinuxGnu.cmake @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# CMAKE toolchain file for cross compilation with powerpc-linux-gnu-gcc +# +# Copyright (C) 2020 Manuel Bentele <development@manuel-bentele.de> +# + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR ppc) + +set(CMAKE_C_COMPILER powerpc-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER powerpc-linux-gnu-g++) +set(CMAKE_LINKER powerpc-linux-gnu-ld) +set(CMAKE_ASM_COMPILER powerpc-linux-gnu-as) +set(CMAKE_OBJCOPY powerpc-linux-gnu-objcopy) +set(CMAKE_STRIP powerpc-linux-gnu-strip) +set(CMAKE_CPP powerpc-linux-gnu-cpp) + +# path of headers and libraries for powerpc-linux-gnu target +set(CMAKE_FIND_ROOT_PATH "/usr/powerpc-linux-gnu") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |