@@ -19,77 +19,82 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
1919set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--hash-style=gnu -Wl,--build-id=none" )
2020set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,norelro" )
2121set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections" )
22- ## Keep the following flag in comment, it will be relevant in the case of MCU's
22+ ## Keep the following flag in comment, they might be relevant in the case of MCU's
2323#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-nmagic,-Bsymbolic -nostartfiles")
2424
25+ # BOARD_NAME is deprecated and will be removed in mlpack 5.
26+ # please use ARCH_NAME instead.
2527set (BOARD_NAME "" CACHE STRING "Specify Board name to optimize for." )
26- string (TOUPPER ${BOARD_NAME} BOARD)
28+ set (ARCH_NAME "" CACHE STRING "Name of embedded architecture to optimize for." )
29+
30+ if (BOARD_NAME)
31+ set (ARCH_NAME "${BOARD_NAME} " )
32+ endif ()
33+
34+ string (TOUPPER ${ARCH_NAME} ARCH)
2735
2836# Set specific platforms CMAKE CXX flags.
29- if (BOARD MATCHES "RPI0" OR BOARD MATCHES "RPI1" OR BOARD MATCHES "ARM11" )
37+ if (ARCH STREQUAL "RPI0" OR ARCH STREQUAL "RPI1" OR ARCH STREQUAL "ARM11" )
3038 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=arm1176jzf-s" )
3139 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp" )
3240 set (OPENBLAS_TARGET "ARMV6" )
3341 set (OPENBLAS_BINARY "32" )
34- elseif (BOARD MATCHES "RPI2" OR BOARD MATCHES "CORTEXA7" )
42+ elseif (ARCH STREQUAL "RPI2" OR ARCH STREQUAL "CORTEXA7" )
3543 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a7" )
3644 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon-vfpv4" )
3745 set (OPENBLAS_TARGET "ARMV7" )
3846 set (OPENBLAS_BINARY "32" )
39- elseif (BOARD MATCHES "CORTEXA8" )
47+ elseif (ARCH STREQUAL "CORTEXA8" )
4048 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a8" )
4149 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon" )
4250 set (OPENBLAS_TARGET "ARMV7" )
4351 set (OPENBLAS_BINARY "32" )
44- elseif (BOARD MATCHES "CORTEXA9" )
52+ elseif (ARCH STREQUAL "CORTEXA9" )
4553 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a9" )
4654 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon" )
4755 set (OPENBLAS_TARGET "CORTEXA9" )
4856 set (OPENBLAS_BINARY "32" )
49- elseif (BOARD MATCHES "CORTEXA15" )
57+ elseif (ARCH STREQUAL "CORTEXA15" )
5058 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a15" )
5159 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon" )
5260 set (OPENBLAS_TARGET "CORTEXA15" )
5361 set (OPENBLAS_BINARY "32" )
54- elseif (BOARD MATCHES "RPI3" OR BOARD MATCHES "CORTEXA53" )
55- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a53 -mfloat-abi=hard" )
56- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon-fp-armv8 -mneon-for-64bit" )
62+ elseif (ARCH STREQUAL "RPI3" OR ARCH STREQUAL "CORTEXA53" )
63+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a53 -ftree-vectorize" )
5764 set (OPENBLAS_TARGET "CORTEXA53" )
5865 set (OPENBLAS_BINARY "64" )
59- elseif (BOARD MATCHES "RPI4" OR BOARD MATCHES "CORTEXA72" )
60- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a72 -mfloat-abi=hard" )
61- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon-fp-armv8 -mneon-for-64bit" )
66+ elseif (ARCH STREQUAL "RPI4" OR ARCH STREQUAL "CORTEXA72" )
67+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8.2-a+crypto+fp16+rcpc+dotprod -fasynchronous-unwind-tables" )
6268 set (OPENBLAS_TARGET "CORTEXA72" )
6369 set (OPENBLAS_BINARY "64" )
64- elseif (BOARD MATCHES "JETSONAGX" OR BOARD MATCHES "CORTEXA76" )
65- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a76 -mfloat-abi=hard" )
66- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon-fp-armv8 -mneon-for-64bit" )
70+ elseif (ARCH STREQUAL "JETSONAGX" OR ARCH STREQUAL "CORTEXA76" )
71+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=cortex-a76 -ftree-vectorize" )
6772 set (OPENBLAS_TARGET "CORTEXA76" )
6873 set (OPENBLAS_BINARY "64" )
69- elseif (BOARD MATCHES "BV" )
74+ elseif (ARCH STREQUAL "BV" )
7075 set (OPENBLAS_TARGET "RISCV64_GENERIC" )
7176 set (OPENBLAS_BINARY "64" )
72- elseif (BOARD MATCHES "C906" )
77+ elseif (ARCH STREQUAL "C906" )
7378 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=thead-c906" )
7479 set (OPENBLAS_TARGET "RISCV64_GENERIC" )
7580 set (OPENBLAS_BINARY "64" )
76- elseif (BOARD MATCHES "x280" )
81+ elseif (ARCH STREQUAL "x280" )
7782 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=sifive-x280" )
7883 set (OPENBLAS_TARGET "x280" )
7984 set (OPENBLAS_BINARY "64" )
80- elseif (BOARD MATCHES "KATAMI" )
85+ elseif (ARCH STREQUAL "KATAMI" )
8186 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium3" )
8287 set (OPENBLAS_TARGET "KATAMI" )
8388 set (OPENBLAS_BINARY "32" )
84- elseif (BOARD MATCHES "COPPERMINE" )
89+ elseif (ARCH STREQUAL "COPPERMINE" )
8590 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium3" )
8691 set (OPENBLAS_TARGET "COPPERMINE" )
8792 set (OPENBLAS_BINARY "32" )
88- elseif (BOARD MATCHES "NORTHWOOD" )
93+ elseif (ARCH STREQUAL "NORTHWOOD" )
8994 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=pentium4" )
9095 set (OPENBLAS_TARGET "NORTHWOOD" )
9196 set (OPENBLAS_BINARY "32" )
92- elseif (BOARD )
97+ elseif (ARCH )
9398 ## TODO: update documentation with a list of the supported boards.
94- message (FATAL_ERROR "Given BOARD_NAME is not known; please choose a supported board from the list" )
99+ message (FATAL_ERROR "Given ARCH_NAME is not known; please choose a supported board from the list" )
95100endif ()
0 commit comments