Skip to content

Commit 1f64be3

Browse files
Provide cmake-level configuration switch for emulated build
Previous manual configuration was setting emulated arch flags while keeping -march=native which led to conflicting arch detection.
1 parent 9ce5347 commit 1f64be3

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

.github/workflows/emulated.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ jobs:
3535
-DCMAKE_BUILD_TYPE=Release \
3636
-DCMAKE_CXX_COMPILER=${{ matrix.sys.compiler }} \
3737
-DXSIMD_ENABLE_WERROR=ON \
38-
-DCMAKE_CXX_FLAGS="-DXSIMD_DEFAULT_ARCH=emulated\<${{ matrix.sys.size }}\> -DXSIMD_WITH_EMULATED=1 $CXXFLAGS" \
38+
-DTARGET_ARCH="emulated<${{ matrix.sys.size }}>" \
39+
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
3940
-GNinja
4041
- name: Build
4142
run: ninja -C _build

test/CMakeLists.txt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ OPTION(CROSS_COMPILE_ARM "cross compile for ARM targets" OFF)
4343
# Note: to compile on ARM (or cross compile), you may need to add the following:
4444
# -DTARGET_ARCH="armv8-a -mfpu=neon -mfloat-abi=softfp -target arm-linux-gnueabi"
4545
set(TARGET_ARCH "native" CACHE STRING "Target architecture arguments")
46+
string(REGEX MATCH "emulated\\<[0-9]+\\>" TARGET_EMULATED ${TARGET_ARCH})
47+
48+
if (TARGET_EMULATED)
49+
message(STATUS "Using emulated target: ${TARGET_EMULATED}")
50+
set(EMULATED_COMPILE_FLAGS -DXSIMD_DEFAULT_ARCH=${TARGET_ARCH};-DXSIMD_WITH_EMULATED=1)
51+
unset(TARGET_ARCH CACHE)
52+
endif()
4653

4754
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
4855
if (NOT WIN32 AND NOT ANDROID)
@@ -111,7 +118,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
111118
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "s390x")
112119
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=z14 -mzvector")
113120
elseif(NOT WIN32 AND NOT EMSCRIPTEN)
114-
if(NOT CMAKE_CXX_FLAGS MATCHES "-march" AND NOT CMAKE_CXX_FLAGS MATCHES "-arch" AND NOT CMAKE_OSX_ARCHITECTURES)
121+
if(TARGET_ARCH AND NOT CMAKE_CXX_FLAGS MATCHES "-march" AND NOT CMAKE_CXX_FLAGS MATCHES "-arch" AND NOT CMAKE_OSX_ARCHITECTURES)
115122
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${TARGET_ARCH}")
116123
endif()
117124
endif()
@@ -227,6 +234,11 @@ endif()
227234
add_subdirectory(doc)
228235
add_subdirectory(architectures)
229236

237+
if(EMULATED_COMPILE_FLAGS)
238+
message(STATUS ${EMULATED_COMPILE_FLAGS})
239+
target_compile_options(test_xsimd PRIVATE ${EMULATED_COMPILE_FLAGS})
240+
endif()
241+
230242
if(EMSCRIPTEN)
231243
set_target_properties(test_xsimd PROPERTIES LINK_FLAGS "-s MODULARIZE=1 -s EXPORT_NAME=test_xsimd_wasm -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -lembind")
232244
target_compile_options(test_xsimd

0 commit comments

Comments
 (0)