summaryrefslogtreecommitdiff
path: root/cmake/CheckAttribute.cmake
diff options
context:
space:
mode:
authorMartijn van Beurden <mvanb1@gmail.com>2021-07-01 11:20:33 +0200
committerMartijn van Beurden <mvanb1@gmail.com>2022-04-25 20:13:36 +0200
commit8c46644a8d3cf94d31cdc0b24837d7f2231e0a47 (patch)
tree890822f3f63d50190fb7af9634cd31fb37475003 /cmake/CheckAttribute.cmake
parentd15bcf80a06bd5300e33d5f5c94d69fbf879f45a (diff)
downloadflac-8c46644a8d3cf94d31cdc0b24837d7f2231e0a47.tar.gz
[CMake] Add check for PPC64, POWER8/9 and vec_doubleh
Add checks for POWER8/9 intrinsics similar to those in autotools to cmake
Diffstat (limited to 'cmake/CheckAttribute.cmake')
-rw-r--r--cmake/CheckAttribute.cmake23
1 files changed, 23 insertions, 0 deletions
diff --git a/cmake/CheckAttribute.cmake b/cmake/CheckAttribute.cmake
new file mode 100644
index 00000000..d2e1b500
--- /dev/null
+++ b/cmake/CheckAttribute.cmake
@@ -0,0 +1,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)