|
1 | 1 | include_guard(GLOBAL)
|
2 | 2 |
|
| 3 | +include(CheckCCompilerFlag) |
| 4 | +include(CheckCXXCompilerFlag) |
| 5 | + |
| 6 | +if(NOT DEFINED _NBL_JOBS_AMOUNT_) |
| 7 | + message(WARNING "\"${CMAKE_CURRENT_LIST_FILE}\" included without defined \"_NBL_JOBS_AMOUNT_\", setting it to \"1\"") |
| 8 | + set(_NBL_JOBS_AMOUNT_ 1) |
| 9 | +endif() |
| 10 | + |
3 | 11 | define_property(TARGET PROPERTY NBL_CONFIGURATION_MAP
|
4 | 12 | BRIEF_DOCS "Stores configuration map for a target, it will evaluate to the configuration it's mapped to"
|
5 | 13 | )
|
6 | 14 |
|
7 |
| -macro(_NBL_IMPL_GET_FLAGS_PROFILE_) |
8 |
| - if(MSVC) |
9 |
| - include("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/windows/msvc.cmake") |
10 |
| - elseif(ANDROID) |
11 |
| - include("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/unix/android.cmake") |
12 |
| - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
13 |
| - include("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/unix/gnu.cmake") |
14 |
| - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") |
15 |
| - include("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/template/unix/clang.cmake") |
16 |
| - else() |
17 |
| - message(WARNING "UNTESTED COMPILER DETECTED, EXPECT WRONG OPTIMIZATION FLAGS! SUBMIT ISSUE ON GITHUB https://github.com/Devsh-Graphics-Programming/Nabla/issues") |
18 |
| - endif() |
19 |
| -endmacro() |
| 15 | +function(NBL_REQUEST_COMPILE_OPTION_SUPPORT _NBL_COMPILE_OPTION_) |
| 16 | + set(NBL_COMPILE_OPTION "${_NBL_COMPILE_OPTION_}") |
20 | 17 |
|
21 |
| -function(NBL_EXT_P_APPEND_COMPILE_OPTIONS NBL_LIST_NAME MAP_RELEASE MAP_RELWITHDEBINFO MAP_DEBUG) |
22 |
| - _NBL_IMPL_GET_FLAGS_PROFILE_() |
23 |
| - |
| 18 | + foreach(COMPILER IN ITEMS c cxx) |
| 19 | + string(TOUPPER "${COMPILER}" COMPILER_UPPER) |
| 20 | + |
| 21 | + string(REGEX REPLACE "[-=:;/.]" "_" flag_signature "${NBL_COMPILE_OPTION}") |
| 22 | + set(flag_var "__${COMPILER_UPPER}_Flag_${flag_signature}") |
| 23 | + |
| 24 | + if(COMPILER STREQUAL "c") |
| 25 | + check_c_compiler_flag("${NBL_COMPILE_OPTION}" ${flag_var}) |
| 26 | + elseif(COMPILER STREQUAL "cxx") |
| 27 | + check_cxx_compiler_flag("${NBL_COMPILE_OPTION}" ${flag_var}) |
| 28 | + endif() |
| 29 | + |
| 30 | + if(${flag_var}) |
| 31 | + message(STATUS "Enabled \"${NBL_COMPILE_OPTION}\" ${COMPILER_UPPER} compile option for Nabla projects!") |
| 32 | + set(NBL_${COMPILER_UPPER}_COMPILE_OPTIONS "${NBL_${COMPILER_UPPER}_COMPILE_OPTIONS};${NBL_COMPILE_OPTION}" PARENT_SCOPE) |
| 33 | + else() |
| 34 | + message(STATUS "Disabled \"${NBL_COMPILE_OPTION}\" ${COMPILER_UPPER} compile option for Nabla projects! (no support)") |
| 35 | + endif() |
| 36 | + endforeach() |
| 37 | +endfunction() |
| 38 | + |
| 39 | +option(NBL_REQUEST_SSE_4_2 "Request compilation with SSE 4.2 instruction set enabled for Nabla projects" ON) |
| 40 | +option(NBL_REQUEST_SSE_AXV2 "Request compilation with SSE Intel Advanced Vector Extensions 2 for Nabla projects" ON) |
| 41 | + |
| 42 | +# profiles |
| 43 | +if(MSVC) |
| 44 | + include("${CMAKE_CURRENT_LIST_DIR}/template/windows/msvc.cmake") |
| 45 | +elseif(ANDROID) |
| 46 | + include("${CMAKE_CURRENT_LIST_DIR}/template/unix/android.cmake") |
| 47 | +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 48 | + include("${CMAKE_CURRENT_LIST_DIR}/template/unix/gnu.cmake") |
| 49 | +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") |
| 50 | + include("${CMAKE_CURRENT_LIST_DIR}/template/unix/clang.cmake") |
| 51 | +else() |
| 52 | + message(WARNING "UNTESTED COMPILER DETECTED, EXPECT WRONG OPTIMIZATION FLAGS! SUBMIT ISSUE ON GITHUB https://github.com/Devsh-Graphics-Programming/Nabla/issues") |
| 53 | +endif() |
| 54 | + |
| 55 | +function(NBL_EXT_P_APPEND_COMPILE_OPTIONS NBL_LIST_NAME MAP_RELEASE MAP_RELWITHDEBINFO MAP_DEBUG) |
24 | 56 | macro(NBL_MAP_CONFIGURATION NBL_CONFIG_FROM NBL_CONFIG_TO)
|
25 | 57 | string(TOUPPER "${NBL_CONFIG_FROM}" NBL_CONFIG_FROM_U)
|
26 | 58 | string(TOUPPER "${NBL_CONFIG_TO}" NBL_CONFIG_TO_U)
|
@@ -82,8 +114,6 @@ function(nbl_adjust_flags)
|
82 | 114 |
|
83 | 115 | list(APPEND _NBL_OPTIONS_IMPL_ TARGET)
|
84 | 116 | cmake_parse_arguments(NBL "" "" "${_NBL_OPTIONS_IMPL_}" ${ARGN})
|
85 |
| - |
86 |
| - _NBL_IMPL_GET_FLAGS_PROFILE_() |
87 | 117 |
|
88 | 118 | # TARGET mode
|
89 | 119 | if(NBL_TARGET)
|
|
0 commit comments