summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--CMakeLists.txt75
-rw-r--r--cmake/config.h.in (renamed from config.h.in)0
-rw-r--r--cmake/macros.cmake77
4 files changed, 86 insertions, 70 deletions
diff --git a/.gitignore b/.gitignore
index 83af2b9..5076717 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,4 @@ libtool
autom4te.cache
.DS_Store
data
-*.cmake
-CMakeFiles
-build
+build*
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b789ab..6a914e9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.6)
INCLUDE(CheckIncludeFiles)
INCLUDE(TestBigEndian)
INCLUDE(CheckCSourceCompiles)
+INCLUDE(cmake/macros.cmake)
PROJECT(libaec)
SET(libaec_VERSION_MAJOR 0)
SET(libaec_VERSION_MINOR 2)
@@ -11,75 +12,15 @@ ENABLE_TESTING()
CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
-CHECK_C_SOURCE_COMPILES(
- "int main(int argc, char *argv[])
-{return __builtin_clzll(1LL);}"
- HAVE_DECL___BUILTIN_CLZLL
- )
-IF (NOT HAVE_DECL___BUILTIN_CLZLL)
- CHECK_C_SOURCE_COMPILES(
- "int main(int argc, char *argv[])
-{unsigned long foo; unsigned __int64 bar=1LL;
-return _BitScanReverse64(&foo, bar);}"
- HAVE_BSR64
- )
-ENDIF (NOT HAVE_DECL___BUILTIN_CLZLL)
-
-#Inspired from http://www.cmake.org/Wiki/CMakeTestInline
-SET(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
-static inline int static_foo(){return 0\;}
-int main(int argc, char *argv[]){return 0\;}
-")
-FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
- ${INLINE_TEST_SRC})
-
-FOREACH(KEYWORD "inline" "__inline__" "__inline")
- IF(NOT DEFINED C_INLINE)
- TRY_COMPILE(C_HAS_${KEYWORD}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
- COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
- )
- IF(C_HAS_${KEYWORD})
- SET(C_INLINE TRUE)
- ADD_DEFINITIONS("-Dinline=${KEYWORD}")
- ENDIF(C_HAS_${KEYWORD})
- ENDIF(NOT DEFINED C_INLINE)
-ENDFOREACH(KEYWORD)
-
-IF(NOT DEFINED C_INLINE)
- ADD_DEFINITIONS("-Dinline=")
-ENDIF(NOT DEFINED C_INLINE)
-
-SET(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
-int foo (int * restrict ip){return ip[0]\;}
-int main(int argc, char *argv[]){int s[1]\;
-int * restrict t = s\; t[0] = 0\; return foo(t)\;}
-")
-
-FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
- ${RESTRICT_TEST_SRC})
-
-FOREACH(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
- IF(NOT DEFINED C_RESTRICT)
- TRY_COMPILE(C_HAS_${KEYWORD}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
- COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
- )
- IF(C_HAS_${KEYWORD})
- SET(C_RESTRICT TRUE)
- ADD_DEFINITIONS("-Drestrict=${KEYWORD}")
- ENDIF(C_HAS_${KEYWORD})
- ENDIF(NOT DEFINED C_RESTRICT)
-ENDFOREACH(KEYWORD)
-
-IF(NOT DEFINED C_RESTRICT)
- ADD_DEFINITIONS("-Drestrict=")
-ENDIF(NOT DEFINED C_RESTRICT)
+CHECK_CLZLL(HAVE_DECL___BUILTIN_CLZLL)
+IF(NOT HAVE_DECL___BUILTIN_CLZLL)
+ CHECK_BSR64(HAVE_BSR64)
+ENDIF(NOT HAVE_DECL___BUILTIN_CLZLL)
+FIND_INLINE_KEYWORD()
+FIND_RESTRICT_KEYWORD()
CONFIGURE_FILE(
- ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h
)
ADD_DEFINITIONS("-DHAVE_CONFIG_H")
diff --git a/config.h.in b/cmake/config.h.in
index acfb060..acfb060 100644
--- a/config.h.in
+++ b/cmake/config.h.in
diff --git a/cmake/macros.cmake b/cmake/macros.cmake
new file mode 100644
index 0000000..39bca9a
--- /dev/null
+++ b/cmake/macros.cmake
@@ -0,0 +1,77 @@
+MACRO(CHECK_CLZLL VARIABLE)
+ CHECK_C_SOURCE_COMPILES(
+ "int main(int argc, char *argv[])
+{return __builtin_clzll(1LL);}"
+ ${VARIABLE}
+ )
+ENDMACRO()
+
+MACRO(CHECK_BSR64 VARIABLE)
+ CHECK_C_SOURCE_COMPILES(
+ "int main(int argc, char *argv[])
+{unsigned long foo; unsigned __int64 bar=1LL;
+return _BitScanReverse64(&foo, bar);}"
+ ${VARIABLE}
+ )
+ENDMACRO()
+
+MACRO(FIND_INLINE_KEYWORD)
+ #Inspired from http://www.cmake.org/Wiki/CMakeTestInline
+ SET(INLINE_TEST_SRC "/* Inspired by autoconf's c.m4 */
+static inline int static_foo(){return 0\;}
+int main(int argc, char *argv[]){return 0\;}
+")
+ FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
+ ${INLINE_TEST_SRC})
+
+ FOREACH(KEYWORD "inline" "__inline__" "__inline")
+ IF(NOT DEFINED C_INLINE)
+ TRY_COMPILE(C_HAS_${KEYWORD}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCInline.c
+ COMPILE_DEFINITIONS "-Dinline=${KEYWORD}"
+ )
+ IF(C_HAS_${KEYWORD})
+ SET(C_INLINE TRUE)
+ ADD_DEFINITIONS("-Dinline=${KEYWORD}")
+ MESSAGE(STATUS "Inline keyword found - ${KEYWORD}")
+ ENDIF(C_HAS_${KEYWORD})
+ ENDIF(NOT DEFINED C_INLINE)
+ ENDFOREACH(KEYWORD)
+
+ IF(NOT DEFINED C_INLINE)
+ ADD_DEFINITIONS("-Dinline=")
+ MESSAGE(STATUS "Inline keyword - not found")
+ ENDIF(NOT DEFINED C_INLINE)
+ENDMACRO(FIND_INLINE_KEYWORD)
+
+MACRO(FIND_RESTRICT_KEYWORD)
+ SET(RESTRICT_TEST_SRC "/* Inspired by autoconf's c.m4 */
+int foo (int * restrict ip){return ip[0]\;}
+int main(int argc, char *argv[]){int s[1]\;
+int * restrict t = s\; t[0] = 0\; return foo(t)\;}
+")
+
+ FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
+ ${RESTRICT_TEST_SRC})
+
+ FOREACH(KEYWORD "restrict" "__restrict" "__restrict__" "_Restrict")
+ IF(NOT DEFINED C_RESTRICT)
+ TRY_COMPILE(C_HAS_${KEYWORD}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}/CMakeTestCRestrict.c
+ COMPILE_DEFINITIONS "-Drestrict=${KEYWORD}"
+ )
+ IF(C_HAS_${KEYWORD})
+ SET(C_RESTRICT TRUE)
+ ADD_DEFINITIONS("-Drestrict=${KEYWORD}")
+ MESSAGE(STATUS "Restrict keyword found - ${KEYWORD}")
+ ENDIF(C_HAS_${KEYWORD})
+ ENDIF(NOT DEFINED C_RESTRICT)
+ ENDFOREACH(KEYWORD)
+
+ IF(NOT DEFINED C_RESTRICT)
+ ADD_DEFINITIONS("-Drestrict=")
+ MESSAGE(STATUS "Restrict keyword - not found")
+ ENDIF(NOT DEFINED C_RESTRICT)
+ENDMACRO(FIND_RESTRICT_KEYWORD)