diff options
author | Michal Klocek <michal.klocek@qt.io> | 2021-07-06 07:57:46 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2021-07-07 01:04:18 +0200 |
commit | b1a6adf731828b1f68f51480eeb21dd9e7d3ba1e (patch) | |
tree | ad24c582e89bc4a19a3431dbd130feed5817c698 /cmake | |
parent | 05a7dba5c2733b5893fbea8aac89af5df13d53fb (diff) |
Add arm optimization flags to cmake build
Pick-to: dev
Change-Id: Ibab4630fd226f46f58d08c603436dc2c378212ec
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/Functions.cmake | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake index 8bdeaa2ad..c972b8f4e 100644 --- a/cmake/Functions.cmake +++ b/cmake/Functions.cmake @@ -405,3 +405,58 @@ function(create_pkg_config_host_wrapper wrapperName wrapperCmd) ) file(CHMOD ${wrapperName} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) endfunction() + +function(extract_cflag result cflag) + set(i 1) + while(NOT "x${CMAKE_CXX_COMPILER_ARG${i}}" STREQUAL "x") + list(APPEND cflags ${CMAKE_CXX_COMPILER_ARG${i}}) + math(EXPR i "${i} + 1") + endwhile() + list(APPEND cflags ${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}) + message(DEBUG "Found cflags: ${cflags}") + if (cflags MATCHES "-${cflag}=([^ ]+)") + set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE) + return() + endif() + if (cflags MATCHES "-${cflag}") + set(${result} ON PARENT_SCOPE) + else() + set(${result} OFF PARENT_SCOPE) + endif() +endfunction() + +function(extend_gn_list_cflag outList) + qt_parse_all_arguments(GN "extend_gn_list_cflag" "" "" "ARG;CFLAG" "${ARGN}") + extract_cflag(cflag "${GN_CFLAG}") + if(cflag) + set(${outList} "${${outList}}" "${GN_ARG}=\"${cflag}\"" PARENT_SCOPE) + endif() +endfunction() + +function(get_arm_version result cflag) + if(cflag MATCHES "^armv([0-9])") + set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE) + endif() +endfunction() + +function(check_thumb result) + extract_cflag(thumb "mthumb") + if(thumb) + set(${result} TRUE PARENT_SCOPE) + return() + else() + extract_cflag(marm "marm") + if(marm) + set(${result} FALSE PARENT_SCOPE) + return() + else() + extract_cflag(march "march") + get_arm_version(arm_version ${march}) + if(arm_version GREATER_EQUAL 7) + set(${result} TRUE PARENT_SCOPE) + return() + endif() + endif() + endif() + set(${result} FALSE PARENT_SCOPE) +endfunction() |