1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.6)
2 INCLUDE(CheckIncludeFiles)
4 INCLUDE(CheckCSourceCompiles)
5 INCLUDE(GenerateExportHeader)
7 SET(libaec_VERSION_MAJOR 0)
8 SET(libaec_VERSION_MINOR 2)
9 SET(CMAKE_BUILD_TYPE Release)
12 CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
13 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
14 TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
15 CHECK_C_SOURCE_COMPILES(
16 "int main(int argc, char *argv[])
17 {return __builtin_clzll(1LL);}"
18 HAVE_DECL___BUILTIN_CLZLL
20 IF (NOT HAVE_DECL___BUILTIN_CLZLL)
21 CHECK_C_SOURCE_COMPILES(
22 "int main(int argc, char *argv[])
23 {unsigned long foo; unsigned __int64 bar=1LL;
24 return _BitScanReverse64(&foo, bar);}"
27 ENDIF (NOT HAVE_DECL___BUILTIN_CLZLL)
29 #Inspired from http://www.cmake.org/Wiki/CMakeTestInline
30 SET(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
31 static inline int static_foo(){return 0\;}
32 int main(int argc, char *argv[]){return 0\;}
34 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
37 FOREACH(KEYWORD "inline" "__inline__" "__inline")
38 IF(NOT DEFINED C_INLINE)
39 TRY_COMPILE(C_HAS_${KEYWORD}
40 ${CMAKE_CURRENT_BINARY_DIR}
41 ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
42 COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
46 ADD_DEFINITIONS("-Dinline=${KEYWORD}")
47 ENDIF(C_HAS_${KEYWORD})
48 ENDIF(NOT DEFINED C_INLINE)
51 IF(NOT DEFINED C_INLINE)
52 ADD_DEFINITIONS("-Dinline=")
53 ENDIF(NOT DEFINED C_INLINE)
55 SET(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
56 int foo (int * restrict ip){return ip[0]\;}
57 int main(int argc, char *argv[]){int s[1]\;
58 int * restrict t = s\; t[0] = 0\; return foo(t)\;}
61 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
64 FOREACH(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
65 IF(NOT DEFINED C_RESTRICT)
66 TRY_COMPILE(C_HAS_${KEYWORD}
67 ${CMAKE_CURRENT_BINARY_DIR}
68 ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
69 COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
73 ADD_DEFINITIONS("-Drestrict=${KEYWORD}")
74 ENDIF(C_HAS_${KEYWORD})
75 ENDIF(NOT DEFINED C_RESTRICT)
78 IF(NOT DEFINED C_RESTRICT)
79 ADD_DEFINITIONS("-Drestrict=")
80 ENDIF(NOT DEFINED C_RESTRICT)
83 ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
84 ${CMAKE_CURRENT_BINARY_DIR}/config.h
87 SET(BUILD_SHARED_LIBS FALSE)
88 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
89 INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src")
93 ADD_SUBDIRECTORY(tests)
95 ADD_SUBDIRECTORY(tests EXCLUDE_FROM_ALL)