Merge pull request #3864 from shrit/board_name
Change BOARD_NAME to ARCH_NAME
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
# This file will compile OpenBLAS if it is downloaded and it is not
|
||||
# available on your system in order to find the BLAS library. If OpenBLAS will
|
||||
# be compiled, the OPENBLAS_TARGET variable must be set. This can be done
|
||||
# by, e.g., setting BOARD_NAME (which will set OPENBLAS_TARGET in
|
||||
# by, e.g., setting ARCH_NAME (which will set OPENBLAS_TARGET in
|
||||
# `flags-config.cmake`).
|
||||
|
||||
if (CMAKE_CROSSCOMPILING)
|
||||
|
||||
@@ -22,71 +22,79 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
|
||||
## Keep the following flag in comment, they might be relevant in the case of MCU's
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-nmagic,-Bsymbolic -nostartfiles")
|
||||
|
||||
# BOARD_NAME is deprecated and will be removed in mlpack 5.
|
||||
# please use ARCH_NAME instead.
|
||||
set(BOARD_NAME "" CACHE STRING "Specify Board name to optimize for.")
|
||||
string(TOUPPER ${BOARD_NAME} BOARD)
|
||||
set(ARCH_NAME "" CACHE STRING "Name of embedded architecture to optimize for.")
|
||||
|
||||
if (BOARD_NAME)
|
||||
set(ARCH_NAME "${BOARD_NAME}")
|
||||
endif()
|
||||
|
||||
string(TOUPPER ${ARCH_NAME} ARCH)
|
||||
|
||||
# Set specific platforms CMAKE CXX flags.
|
||||
if(BOARD MATCHES "RPI0" OR BOARD MATCHES "RPI1" OR BOARD MATCHES "ARM11")
|
||||
if(ARCH MATCHES "RPI0" OR ARCH MATCHES "RPI1" OR ARCH MATCHES "ARM11")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=arm1176jzf-s")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp")
|
||||
set(OPENBLAS_TARGET "ARMV6")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "RPI2" OR BOARD MATCHES "CORTEXA7")
|
||||
elseif(ARCH MATCHES "RPI2" OR ARCH MATCHES "CORTEXA7")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a7")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon-vfpv4")
|
||||
set(OPENBLAS_TARGET "ARMV7")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "CORTEXA8")
|
||||
elseif(ARCH MATCHES "CORTEXA8")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a8")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon")
|
||||
set(OPENBLAS_TARGET "ARMV7")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "CORTEXA9")
|
||||
elseif(ARCH MATCHES "CORTEXA9")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a9")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon")
|
||||
set(OPENBLAS_TARGET "CORTEXA9")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "CORTEXA15")
|
||||
elseif(ARCH MATCHES "CORTEXA15")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a15")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon")
|
||||
set(OPENBLAS_TARGET "CORTEXA15")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "RPI3" OR BOARD MATCHES "CORTEXA53")
|
||||
elseif(ARCH MATCHES "RPI3" OR ARCH MATCHES "CORTEXA53")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a53 -ftree-vectorize")
|
||||
set(OPENBLAS_TARGET "CORTEXA53")
|
||||
set(OPENBLAS_BINARY "64")
|
||||
elseif(BOARD MATCHES "RPI4" OR BOARD MATCHES "CORTEXA72")
|
||||
elseif(ARCH MATCHES "RPI4" OR ARCH MATCHES "CORTEXA72")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8.2-a+crypto+fp16+rcpc+dotprod -fasynchronous-unwind-tables")
|
||||
set(OPENBLAS_TARGET "CORTEXA72")
|
||||
set(OPENBLAS_BINARY "64")
|
||||
elseif(BOARD MATCHES "JETSONAGX" OR BOARD MATCHES "CORTEXA76")
|
||||
elseif(ARCH MATCHES "JETSONAGX" OR ARCH MATCHES "CORTEXA76")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a76 -ftree-vectorize")
|
||||
set(OPENBLAS_TARGET "CORTEXA76")
|
||||
set(OPENBLAS_BINARY "64")
|
||||
elseif(BOARD MATCHES "BV")
|
||||
elseif(ARCH MATCHES "BV")
|
||||
set(OPENBLAS_TARGET "RISCV64_GENERIC")
|
||||
set(OPENBLAS_BINARY "64")
|
||||
elseif(BOARD MATCHES "C906")
|
||||
elseif(ARCH MATCHES "C906")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=thead-c906")
|
||||
set(OPENBLAS_TARGET "RISCV64_GENERIC")
|
||||
set(OPENBLAS_BINARY "64")
|
||||
elseif(BOARD MATCHES "x280")
|
||||
elseif(ARCH MATCHES "x280")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=sifive-x280")
|
||||
set(OPENBLAS_TARGET "x280")
|
||||
set(OPENBLAS_BINARY "64")
|
||||
elseif(BOARD MATCHES "KATAMI")
|
||||
elseif(ARCH MATCHES "KATAMI")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium3")
|
||||
set(OPENBLAS_TARGET "KATAMI")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "COPPERMINE")
|
||||
elseif(ARCH MATCHES "COPPERMINE")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium3")
|
||||
set(OPENBLAS_TARGET "COPPERMINE")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD MATCHES "NORTHWOOD")
|
||||
elseif(ARCH MATCHES "NORTHWOOD")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium4")
|
||||
set(OPENBLAS_TARGET "NORTHWOOD")
|
||||
set(OPENBLAS_BINARY "32")
|
||||
elseif(BOARD)
|
||||
elseif(ARCH)
|
||||
## TODO: update documentation with a list of the supported boards.
|
||||
message(FATAL_ERROR "Given BOARD_NAME is not known; please choose a supported board from the list")
|
||||
message(FATAL_ERROR "Given ARCH_NAME is not known; please choose a supported board from the list")
|
||||
endif()
|
||||
|
||||
@@ -112,7 +112,7 @@ cross-compilation toolchain.
|
||||
```sh
|
||||
cmake \
|
||||
-DBUILD_TESTS=ON \
|
||||
-DBOARD_NAME="RPI2" \
|
||||
-DARCH_NAME="RPI2" \
|
||||
-DCMAKE_CROSSCOMPILING=ON \
|
||||
-DCMAKE_TOOLCHAIN_FILE=../CMake/crosscompile-toolchain.cmake \
|
||||
-DTOOLCHAIN_PREFIX=/path/to/bootlin/toolchain/armv7-eabihf--glibc--stable-2024.02-1/bin/arm-buildroot-linux-gnueabihf- \
|
||||
|
||||
@@ -6,7 +6,7 @@ functional operating system (e.g., Linux, MacOS, Windows) with compatible
|
||||
ABI on both the host and the target. In addition, your objective is to create
|
||||
an embedded ABI (eabi). For now, this guide does not support none-eabi or
|
||||
bare-metal C/C++. The following table refers only to possible values of
|
||||
`BOARD_NAME` CMake flag that needs to be specified before the compilation
|
||||
`ARCH_NAME` CMake flag that needs to be specified before the compilation
|
||||
process starts.
|
||||
|
||||
If your device has a fully functional package manager such as apt (for Debian
|
||||
@@ -37,7 +37,7 @@ adapt the CMake command below. ***Don't forget to change
|
||||
```sh
|
||||
cmake \
|
||||
-DBUILD_TESTS=ON \
|
||||
-DBOARD_NAME=(Check the following table) \
|
||||
-DARCH_NAME=(Check the following table) \
|
||||
-DCMAKE_CROSSCOMPILING=ON \
|
||||
-DCMAKE_TOOLCHAIN_FILE=../CMake/crosscompile-toolchain.cmake \
|
||||
-DTOOLCHAIN_PREFIX=(Check the following table) \
|
||||
@@ -46,7 +46,7 @@ cmake \
|
||||
```
|
||||
|
||||
|-----------------------------------------------------------------------------
|
||||
| `BOARD_NAME` | link to crosscompiler | CMake command | Example applications |
|
||||
| `ARCH_NAME` | link to crosscompiler | CMake command | Example applications |
|
||||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| ARM11 | [Bootlin toolchain link](https://toolchains.bootlin.com/releases_armv6-eabihf.html) | [Sysroot and toolchain prefix](#arm11) | [ARM11 on Wikipedia](https://en.wikipedia.org/wiki/ARM11) |
|
||||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
|
||||
Reference in New Issue
Block a user