commit ba30478efe8824e9d77b85c33e07cb7f5daf79c6 parent f9f912278f8d9148d0bbb434e8628454eb8f297d Author: d.levin256@gmail.com <d.levin256@gmail.com> Date: Wed, 14 Aug 2019 10:09:46 +0000 Fix target_set_arch outside project scope Diffstat:
M | cmake/target_set_arch.cmake | | | 57 | ++++++++++++++++++++++++++++++--------------------------- |
1 file changed, 30 insertions(+), 27 deletions(-)
diff --git a/cmake/target_set_arch.cmake b/cmake/target_set_arch.cmake @@ -1,34 +1,35 @@ if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") - set(ARCH_FLAGS_GNU_generic -DCMT_FORCE_GENERIC_CPU) - set(ARCH_FLAGS_GNU_sse2 -msse2) - set(ARCH_FLAGS_GNU_sse3 -msse3) - set(ARCH_FLAGS_GNU_ssse3 -mssse3) - set(ARCH_FLAGS_GNU_sse41 -msse4.1) - set(ARCH_FLAGS_GNU_sse42 -msse4.2) - set(ARCH_FLAGS_GNU_avx -msse4.2 -mavx) - set(ARCH_FLAGS_GNU_avx2 -msse4.2 -mavx2 -mfma) - set(ARCH_FLAGS_GNU_avx512 -msse4.2 -mavx2 -mfma -mavx512f -mavx512cd -mavx512bw -mavx512dq -mavx512vl) - - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - # SSE2 is part of x86_64 - set(ARCH_FLAG_MS_SSE2) - else() - set(ARCH_FLAG_MS_SSE2 -arch:SSE2) - endif() - - set(ARCH_FLAGS_MS_generic ${ARCH_FLAG_MS_SSE2} -DCMT_FORCE_GENERIC_CPU) - set(ARCH_FLAGS_MS_sse2 ${ARCH_FLAG_MS_SSE2}) - set(ARCH_FLAGS_MS_sse3 ${ARCH_FLAG_MS_SSE2} -D__SSE3__) - set(ARCH_FLAGS_MS_ssse3 ${ARCH_FLAG_MS_SSE2} -D__SSSE3__) - set(ARCH_FLAGS_MS_sse41 ${ARCH_FLAG_MS_SSE2} -D__SSE3__ -D__SSSE3__ -D__SSE4_1__) - set(ARCH_FLAGS_MS_sse42 ${ARCH_FLAG_MS_SSE2} -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__) - set(ARCH_FLAGS_MS_avx -arch:AVX) - set(ARCH_FLAGS_MS_avx2 -arch:AVX2) - set(ARCH_FLAGS_MS_avx512 -arch:AVX512) + function(target_set_arch TARGET MODE ARCH) + + set(ARCH_FLAGS_GNU_generic -DCMT_FORCE_GENERIC_CPU) + set(ARCH_FLAGS_GNU_sse2 -msse2) + set(ARCH_FLAGS_GNU_sse3 -msse3) + set(ARCH_FLAGS_GNU_ssse3 -mssse3) + set(ARCH_FLAGS_GNU_sse41 -msse4.1) + set(ARCH_FLAGS_GNU_sse42 -msse4.2) + set(ARCH_FLAGS_GNU_avx -msse4.2 -mavx) + set(ARCH_FLAGS_GNU_avx2 -msse4.2 -mavx2 -mfma) + set(ARCH_FLAGS_GNU_avx512 -msse4.2 -mavx2 -mfma -mavx512f -mavx512cd -mavx512bw -mavx512dq -mavx512vl) + + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + # SSE2 is part of x86_64 + set(ARCH_FLAG_MS_SSE2) + else() + set(ARCH_FLAG_MS_SSE2 -arch:SSE2) + endif() + + set(ARCH_FLAGS_MS_generic ${ARCH_FLAG_MS_SSE2} -DCMT_FORCE_GENERIC_CPU) + set(ARCH_FLAGS_MS_sse2 ${ARCH_FLAG_MS_SSE2}) + set(ARCH_FLAGS_MS_sse3 ${ARCH_FLAG_MS_SSE2} -D__SSE3__) + set(ARCH_FLAGS_MS_ssse3 ${ARCH_FLAG_MS_SSE2} -D__SSSE3__) + set(ARCH_FLAGS_MS_sse41 ${ARCH_FLAG_MS_SSE2} -D__SSE3__ -D__SSSE3__ -D__SSE4_1__) + set(ARCH_FLAGS_MS_sse42 ${ARCH_FLAG_MS_SSE2} -D__SSE3__ -D__SSSE3__ -D__SSE4_1__ -D__SSE4_2__) + set(ARCH_FLAGS_MS_avx -arch:AVX) + set(ARCH_FLAGS_MS_avx2 -arch:AVX2) + set(ARCH_FLAGS_MS_avx512 -arch:AVX512) - function(target_set_arch TARGET MODE ARCH) if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") set(CLANG 1) else () @@ -44,8 +45,10 @@ if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") endif() endif () if (MSVC AND NOT CLANG) + message(STATUS "ARCH_FLAGS_MS_${ARCH} = ${ARCH_FLAGS_MS_${ARCH}}") target_compile_options(${TARGET} ${MODE} ${ARCH_FLAGS_MS_${ARCH}}) else() + message(STATUS "ARCH_FLAGS_GNU_${ARCH} = ${ARCH_FLAGS_GNU_${ARCH}}") target_compile_options(${TARGET} ${MODE} ${ARCH_FLAGS_GNU_${ARCH}}) endif () endfunction()