handle GNUCC_ARCH on non-x86 properly

This commit is contained in:
Konstantinos Margaritis 2021-07-02 19:10:21 +03:00
parent 1ce5e17ce9
commit 9685095379

View File

@ -182,7 +182,7 @@ else()
string(REGEX REPLACE "-O[^ ]*" "" CMAKE_CXX_FLAGS_${CONFIG} "${CMAKE_CXX_FLAGS_${CONFIG}}") string(REGEX REPLACE "-O[^ ]*" "" CMAKE_CXX_FLAGS_${CONFIG} "${CMAKE_CXX_FLAGS_${CONFIG}}")
endforeach () endforeach ()
if (ARCH_IA32 OR ARCH_X86_64 AND CMAKE_COMPILER_IS_GNUCC) if (CMAKE_COMPILER_IS_GNUCC)
message(STATUS "gcc version ${CMAKE_C_COMPILER_VERSION}") message(STATUS "gcc version ${CMAKE_C_COMPILER_VERSION}")
# If gcc doesn't recognise the host cpu, then mtune=native becomes # If gcc doesn't recognise the host cpu, then mtune=native becomes
# generic, which isn't very good in some cases. march=native looks at # generic, which isn't very good in some cases. march=native looks at
@ -199,16 +199,20 @@ else()
string(REGEX REPLACE "march=[ \t]*([^ \n]*)[ \n].*" "\\1" string(REGEX REPLACE "march=[ \t]*([^ \n]*)[ \n].*" "\\1"
GNUCC_ARCH "${_GCC_OUTPUT}") GNUCC_ARCH "${_GCC_OUTPUT}")
# test the parsed flag if (ARCH_IA32 OR ARCH_X86_64)
set (EXEC_ARGS ${CC_ARG1} -E - -mtune=${GNUCC_ARCH}) # test the parsed flag
execute_process(COMMAND ${CMAKE_C_COMPILER} ${EXEC_ARGS} set (EXEC_ARGS ${CC_ARG1} -E - -mtune=${GNUCC_ARCH})
OUTPUT_QUIET ERROR_QUIET execute_process(COMMAND ${CMAKE_C_COMPILER} ${EXEC_ARGS}
INPUT_FILE /dev/null OUTPUT_QUIET ERROR_QUIET
RESULT_VARIABLE GNUCC_TUNE_TEST) INPUT_FILE /dev/null
if (NOT GNUCC_TUNE_TEST EQUAL 0) RESULT_VARIABLE GNUCC_TUNE_TEST)
message(SEND_ERROR "Something went wrong determining gcc tune: -mtune=${GNUCC_ARCH} not valid") if (NOT GNUCC_TUNE_TEST EQUAL 0)
message(SEND_ERROR "Something went wrong determining gcc tune: -mtune=${GNUCC_ARCH} not valid")
endif()
set(TUNE_FLAG ${GNUCC_ARCH})
else()
set(TUNE_FLAG native)
endif() endif()
set(TUNE_FLAG ${GNUCC_ARCH})
elseif (NOT TUNE_FLAG) elseif (NOT TUNE_FLAG)
set(TUNE_FLAG native) set(TUNE_FLAG native)
endif() endif()