Skip to content

Commit be49fd6

Browse files
authored
Merge pull request #369 from chewi/cross
Fix cross-compiling by using CMAKE_SYSTEM_PROCESSOR and respecting -march|-mcpu
2 parents 859f8c8 + 9817ee8 commit be49fd6

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

CMakeLists.txt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ enable_language(C)
99
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
1010
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -g")
1111

12-
# Get CPU arch
13-
execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
14-
if (NOT (${ARCH} STREQUAL x86_64) AND NOT (${ARCH} STREQUAL aarch64) AND NOT (${ARCH} STREQUAL arm64))
15-
message(FATAL_ERROR "Unknown CPU architecture ${ARCH}")
12+
if (NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64) AND NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) AND NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL arm64))
13+
message(FATAL_ERROR "Unknown CPU architecture ${CMAKE_SYSTEM_PROCESSOR}")
1614
endif ()
1715

1816
option(OBD_VER "Overlaybd version" "overlaybd/0.0.0-undefined")
@@ -25,7 +23,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
2523
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic -Wall -Werror=sign-compare")
2624
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic -Wall -Werror=sign-compare -DOVERLAYBD_VER=${OBD_VER}")
2725

28-
if (${ARCH} STREQUAL aarch64)
26+
if ((CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) OR (CMAKE_SYSTEM_PROCESSOR STREQUAL arm64))
2927
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a+crc -fsigned-char -fno-stack-protector -fomit-frame-pointer")
3028
endif ()
3129

src/overlaybd/zfile/CMakeLists.txt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@ file(GLOB SOURCE_ZFILE "*.cpp")
22
file(GLOB SOURCE_LZ4 "lz4/*.c")
33
file(GLOB SOURCE_CRC32 "crc32/crc32c.cpp")
44

5-
# Get CPU arch
6-
execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
7-
if (NOT (${ARCH} STREQUAL x86_64) AND NOT (${ARCH} STREQUAL aarch64))
8-
message(FATAL_ERROR "Unknown CPU architecture ${ARCH}")
9-
endif ()
10-
115
set (CMAKE_CXX_STANDARD 17)
126
add_library(crc32_lib STATIC ${SOURCE_CRC32})
137
target_include_directories(crc32_lib PUBLIC
148
${PHOTON_INCLUDE_DIR}
159
)
1610

17-
if (${ARCH} STREQUAL x86_64)
11+
if (CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
1812
target_compile_options(crc32_lib PUBLIC -msse4.2 -mcrc32)
1913
else()
20-
target_compile_options(crc32_lib PRIVATE -march=native -mcpu=generic+crc)
14+
if (NOT CMAKE_CXX_FLAGS MATCHES "-march=|-mcpu=")
15+
check_cxx_compiler_flag(-mcpu=native COMPILER_HAS_NATIVE_FLAG)
16+
if (COMPILER_HAS_NATIVE_FLAG)
17+
target_compile_options(crc32_lib PRIVATE -mcpu=native)
18+
else ()
19+
target_compile_options(crc32_lib PRIVATE -mcpu=generic+crc)
20+
endif ()
21+
endif ()
2122
endif()
2223

2324
if(ENABLE_DSA OR ENABLE_ISAL)

0 commit comments

Comments
 (0)