summaryrefslogtreecommitdiff
path: root/cmake/CheckAttribute.cmake
blob: d2e1b500b9d359aa6f43ea595c0a68a055a9a03c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
macro(_CHECK_ATTRIBUTE ATTRIBUTE VARIABLE)
    if(NOT DEFINED HAVE_${VARIABLE})
        message(STATUS "Check for  __attribute__ ((${ATTRIBUTE})) ")
        set(CHECK_ATTRIBUTE ${ATTRIBUTE})
        configure_file(${PROJECT_SOURCE_DIR}/cmake/CheckAttribute.c.in ${PROJECT_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckAttribute.c @ONLY)
        try_compile(HAVE_${VARIABLE} "${PROJECT_BINARY_DIR}"
            "${PROJECT_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckAttribute.c")
        if(HAVE_${VARIABLE})
            message(STATUS "Check for  __attribute__ ((${ATTRIBUTE})) - yes")
            set(${VARIABLE} 1 CACHE INTERNAL "Result of CHECK_ATTRIBUTE ${ATTRIBUTE}" FORCE)
        else ()
            message(STATUS "Check for  __attribute__ ((${ATTRIBUTE})) - no")
        endif()
    endif ()
endmacro(_CHECK_ATTRIBUTE)

macro(CHECK_ATTRIBUTE_POWER8 VARIABLE)
    _CHECK_ATTRIBUTE("target(\"cpu=power8\")" ${VARIABLE})
endmacro(CHECK_ATTRIBUTE_POWER8)

macro(CHECK_ATTRIBUTE_POWER9 VARIABLE)
    _CHECK_ATTRIBUTE("target(\"cpu=power9\")" ${VARIABLE})
endmacro(CHECK_ATTRIBUTE_POWER9)