aboutsummaryrefslogtreecommitdiff
path: root/src/secp256k1/cmake/TryAppendCFlags.cmake
blob: 1d81a9317a0a4b5046522063924bb5796084eb78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
include(CheckCCompilerFlag)

function(secp256k1_check_c_flags_internal flags output)
  string(MAKE_C_IDENTIFIER "${flags}" result)
  string(TOUPPER "${result}" result)
  set(result "C_SUPPORTS_${result}")
  if(NOT MSVC)
    set(CMAKE_REQUIRED_FLAGS "-Werror")
  endif()

  # This avoids running a linker.
  set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
  check_c_compiler_flag("${flags}" ${result})

  set(${output} ${${result}} PARENT_SCOPE)
endfunction()

# Append flags to the COMPILE_OPTIONS directory property if CC accepts them.
macro(try_append_c_flags)
  secp256k1_check_c_flags_internal("${ARGV}" result)
  if(result)
    add_compile_options(${ARGV})
  endif()
endmacro()