@@ -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"
4545set (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
4754if (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()
227234add_subdirectory (doc )
228235add_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+
230242if (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