No benchmarking on Windows for now.
[platform/upstream/libaec.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 INCLUDE(CheckIncludeFiles)
3 INCLUDE(TestBigEndian)
4 INCLUDE(CheckCSourceCompiles)
5 PROJECT(libaec)
6 SET(libaec_VERSION_MAJOR 0)
7 SET(libaec_VERSION_MINOR 2)
8 SET(CMAKE_BUILD_TYPE Release)
9 ENABLE_TESTING()
10
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
18   )
19
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\;}
24 ")
25 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
26   ${INLINE_TEST_SRC})
27
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}"
34        )
35      IF(C_HAS_${KEYWORD})
36        SET(C_INLINE TRUE)
37        ADD_DEFINITIONS("-Dinline=${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 ENDIF(NOT DEFINED C_INLINE)
45
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)\;}
50 ")
51
52 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
53   ${RESTRICT_TEST_SRC})
54
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}"
61        )
62      IF(C_HAS_${KEYWORD})
63        SET(C_RESTRICT TRUE)
64        ADD_DEFINITIONS("-Drestrict=${KEYWORD}")
65      ENDIF(C_HAS_${KEYWORD})
66    ENDIF(NOT DEFINED C_RESTRICT)
67 ENDFOREACH(KEYWORD)
68
69 IF(NOT DEFINED C_RESTRICT)
70    ADD_DEFINITIONS("-Drestrict=")
71 ENDIF(NOT DEFINED C_RESTRICT)
72
73 CONFIGURE_FILE(
74   ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
75   ${CMAKE_CURRENT_BINARY_DIR}/config.h
76   )
77
78 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
79 ADD_SUBDIRECTORY(src)
80 ADD_SUBDIRECTORY(tests EXCLUDE_FROM_ALL)