1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 INCLUDE(CheckIncludeFiles)
4 INCLUDE(CheckCSourceCompiles)
6 SET(libaec_VERSION_MAJOR 0)
7 SET(libaec_VERSION_MINOR 2)
8 SET(CMAKE_BUILD_TYPE Release)
11 CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
12 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
13 TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
14 CHECK_C_SOURCE_COMPILES(
15 "int main(int argc, char *argv[])
16 {return __builtin_clzll(1LL)\;}"
17 HAVE_DECL___BUILTIN_CLZLL
20 #Inspired from http://www.cmake.org/Wiki/CMakeTestInline
21 SET(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
22 static inline int static_foo(){return 0\;}
23 int main(int argc, char *argv[]){return 0\;}
25 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
28 FOREACH(KEYWORD "inline" "__inline__" "__inline")
29 IF(NOT DEFINED C_INLINE)
30 TRY_COMPILE(C_HAS_${KEYWORD}
31 ${CMAKE_CURRENT_BINARY_DIR}
32 ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
33 COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
37 ADD_DEFINITIONS("-Dinline=${KEYWORD}")
38 ENDIF(C_HAS_${KEYWORD})
39 ENDIF(NOT DEFINED C_INLINE)
42 IF(NOT DEFINED C_INLINE)
43 ADD_DEFINITIONS("-Dinline=")
44 ENDIF(NOT DEFINED C_INLINE)
46 SET(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
47 int foo (int * restrict ip){return ip[0]\;}
48 int main(int argc, char *argv[]){int s[1]\;
49 int * restrict t = s\; t[0] = 0\; return foo(t)\;}
52 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
55 FOREACH(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
56 IF(NOT DEFINED C_RESTRICT)
57 TRY_COMPILE(C_HAS_${KEYWORD}
58 ${CMAKE_CURRENT_BINARY_DIR}
59 ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
60 COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
64 ADD_DEFINITIONS("-Drestrict=${KEYWORD}")
65 ENDIF(C_HAS_${KEYWORD})
66 ENDIF(NOT DEFINED C_RESTRICT)
69 IF(NOT DEFINED C_RESTRICT)
70 ADD_DEFINITIONS("-Drestrict=")
71 ENDIF(NOT DEFINED C_RESTRICT)
74 ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
75 ${CMAKE_CURRENT_BINARY_DIR}/config.h
78 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
80 ADD_SUBDIRECTORY(tests EXCLUDE_FROM_ALL)