Move some CMake chunks as macros in separate file
authorMathis Rosenhauer <rosenhauer@dkrz.de>
Fri, 25 Jul 2014 09:00:04 +0000 (11:00 +0200)
committerMathis Rosenhauer <rosenhauer@dkrz.de>
Fri, 25 Jul 2014 09:00:04 +0000 (11:00 +0200)
.gitignore
CMakeLists.txt
cmake/config.h.in [moved from config.h.in with 100% similarity]
cmake/macros.cmake [new file with mode: 0644]

index 83af2b9..5076717 100644 (file)
@@ -16,6 +16,4 @@ libtool
 autom4te.cache
 .DS_Store
 data
-*.cmake
-CMakeFiles
-build
+build*
index 9b789ab..6a914e9 100644 (file)
@@ -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")
similarity index 100%
rename from config.h.in
rename to cmake/config.h.in
diff --git a/cmake/macros.cmake b/cmake/macros.cmake
new file mode 100644 (file)
index 0000000..39bca9a
--- /dev/null
@@ -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)