cmake: fuzzing
[platform/upstream/libaec.git] / cmake / macros.cmake
1 macro(check_clzll VARIABLE)
2   check_c_source_compiles(
3     "int main(int argc, char *argv[])
4 {return __builtin_clzll(1LL);}"
5     ${VARIABLE}
6     )
7 endmacro()
8
9 macro(check_bsr64 VARIABLE)
10   check_c_source_compiles(
11     "int main(int argc, char *argv[])
12 {unsigned long foo; unsigned __int64 bar=1LL;
13 return _BitScanReverse64(&foo, bar);}"
14     ${VARIABLE}
15     )
16 endmacro()
17
18 macro(find_inline_keyword)
19   #Inspired from http://www.cmake.org/Wiki/CMakeTestInline
20   set(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
21 static inline int static_foo(){return 0\;}
22 int main(int argc, char *argv[]){return 0\;}
23 ")
24   file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
25     ${INLINE_TEST_SRC})
26
27   foreach(KEYWORD "inline" "__inline__" "__inline")
28     if(NOT DEFINED C_INLINE)
29       try_compile(C_HAS_${KEYWORD}
30         ${CMAKE_CURRENT_BINARY_DIR}
31         ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
32         COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
33         )
34       if(C_HAS_${KEYWORD})
35         set(C_INLINE TRUE)
36         add_definitions("-Dinline=${KEYWORD}")
37         message(STATUS "Inline keyword found - ${KEYWORD}")
38       endif(C_HAS_${KEYWORD})
39     endif(NOT DEFINED C_INLINE)
40   endforeach(KEYWORD)
41
42   if(NOT DEFINED C_INLINE)
43     add_definitions("-Dinline=")
44     message(STATUS "Inline keyword - not found")
45   endif(NOT DEFINED C_INLINE)
46 endmacro(find_inline_keyword)
47
48 macro(find_restrict_keyword)
49   set(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
50 int foo (int * restrict ip){return ip[0]\;}
51 int main(int argc, char *argv[]){int s[1]\;
52 int * restrict t = s\; t[0] = 0\; return foo(t)\;}
53 ")
54
55   file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
56     ${RESTRICT_TEST_SRC})
57
58   foreach(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
59     if(NOT DEFINED C_RESTRICT)
60       try_compile(C_HAS_${KEYWORD}
61         ${CMAKE_CURRENT_BINARY_DIR}
62         ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
63         COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
64         )
65       if(C_HAS_${KEYWORD})
66         set(C_RESTRICT TRUE)
67         add_definitions("-Drestrict=${KEYWORD}")
68         message(STATUS "Restrict keyword found - ${KEYWORD}")
69       endif(C_HAS_${KEYWORD})
70     endif(NOT DEFINED C_RESTRICT)
71   endforeach(KEYWORD)
72
73   if(NOT DEFINED C_RESTRICT)
74     add_definitions("-Drestrict=")
75     message(STATUS "Restrict keyword - not found")
76   endif(NOT DEFINED C_RESTRICT)
77 endmacro(find_restrict_keyword)