1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.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
19 IF (NOT HAVE_DECL___BUILTIN_CLZLL)
20 CHECK_C_SOURCE_COMPILES(
21 "int main(int argc, char *argv[])
22 {unsigned long foo; unsigned __int64 bar=1LL;
23 return _BitScanReverse64(&foo, bar);}"
26 ENDIF (NOT HAVE_DECL___BUILTIN_CLZLL)
28 #Inspired from http://www.cmake.org/Wiki/CMakeTestInline
29 SET(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
30 static inline int static_foo(){return 0\;}
31 int main(int argc, char *argv[]){return 0\;}
33 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
36 FOREACH(KEYWORD "inline" "__inline__" "__inline")
37 IF(NOT DEFINED C_INLINE)
38 TRY_COMPILE(C_HAS_${KEYWORD}
39 ${CMAKE_CURRENT_BINARY_DIR}
40 ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
41 COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
45 ADD_DEFINITIONS("-Dinline=${KEYWORD}")
46 ENDIF(C_HAS_${KEYWORD})
47 ENDIF(NOT DEFINED C_INLINE)
50 IF(NOT DEFINED C_INLINE)
51 ADD_DEFINITIONS("-Dinline=")
52 ENDIF(NOT DEFINED C_INLINE)
54 SET(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
55 int foo (int * restrict ip){return ip[0]\;}
56 int main(int argc, char *argv[]){int s[1]\;
57 int * restrict t = s\; t[0] = 0\; return foo(t)\;}
60 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
63 FOREACH(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
64 IF(NOT DEFINED C_RESTRICT)
65 TRY_COMPILE(C_HAS_${KEYWORD}
66 ${CMAKE_CURRENT_BINARY_DIR}
67 ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
68 COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
72 ADD_DEFINITIONS("-Drestrict=${KEYWORD}")
73 ENDIF(C_HAS_${KEYWORD})
74 ENDIF(NOT DEFINED C_RESTRICT)
77 IF(NOT DEFINED C_RESTRICT)
78 ADD_DEFINITIONS("-Drestrict=")
79 ENDIF(NOT DEFINED C_RESTRICT)
82 ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
83 ${CMAKE_CURRENT_BINARY_DIR}/config.h
85 ADD_DEFINITIONS("-DHAVE_CONFIG_H")
87 # Allow the developer to select if Dynamic or Static libraries are built
88 OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
89 IF (BUILD_SHARED_LIBS)
90 # User wants to build Dynamic Libraries,
91 # so change the LIB_TYPE variable to CMake keyword 'SHARED'
93 ELSE(BUILD_SHARED_LIBS)
95 ENDIF (BUILD_SHARED_LIBS)
97 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
98 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}/src")
99 INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src")
101 ADD_SUBDIRECTORY(src)
103 ADD_SUBDIRECTORY(tests)
105 ADD_SUBDIRECTORY(tests EXCLUDE_FROM_ALL)