File: CheckDisablePIESupport.cmake

package info (click to toggle)
madness 0.10.1%2Bgit20200818.eee5fd9f-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 34,980 kB
  • sloc: cpp: 280,841; ansic: 12,626; python: 4,961; fortran: 4,245; xml: 1,053; makefile: 714; sh: 276; perl: 244; yacc: 227; lex: 188; asm: 141; csh: 55
file content (36 lines) | stat: -rw-r--r-- 1,043 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

include(CheckCXXCompilerFlag)

macro(check_disablepie_support _outvar _disablepie_linker_flags)

  if(NOT ${_outvar})
    message(STATUS "Checking for PIE-disabling linker flags")
  endif()
  
  # set the flag manually for Darwin
  if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
    set(disablepie_linker_flags "-Wl,-no_pie")
  else()
    set(disablepie_linker_flags )
    foreach(_disablepie_test_flag "-no-pie")
      
      # Try compiling
      unset(${_outvar} CACHE)
      check_cxx_compiler_flag(${_disablepie_test_flag} ${_outvar})
      
      if(${_outvar})
        list(APPEND disablepie_linker_flags "${_disablepie_test_flag}")
        break()
      endif()
      
    endforeach()
  endif()

  if (disablepie_linker_flags)
    set(${_disablepie_linker_flags} "${disablepie_linker_flags}"
          CACHE STRING "Linker flags required to disable PIE support")
    mark_as_advanced(${_disablepie_linker_flags})
    message(STATUS "PIE-disabling linker flags: ${${_disablepie_linker_flags}}")
  endif()
  
endmacro(check_disablepie_support)