summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2014-06-16 21:30:48 +0200
committerSergei Golubchik <serg@mariadb.org>2014-06-26 11:54:13 +0200
commit6c0e3ef4503c6121f7d5b6b07dcd2ee035e26032 (patch)
tree693231d79fec36224f6ec0cd74bb33b9e65b8fb9 /cmake
parentafa4c36ca055328f52973d8b8d28a04520ccdc59 (diff)
downloadmariadb-git-6c0e3ef4503c6121f7d5b6b07dcd2ee035e26032.tar.gz
cmake cleanup: use MY_CHECK_AND_SET_COMPILER_FLAG.
move MY_CHECK_C_COMPILER_FLAG and MY_CHECK_CXX_COMPILER_FLAG to a separate file, introduce MY_CHECK_AND_SET_COMPILER_FLAG, use it where possible.
Diffstat (limited to 'cmake')
-rw-r--r--cmake/check_compiler_flag.cmake51
-rw-r--r--cmake/os/Windows.cmake1
-rw-r--r--cmake/os/WindowsCache.cmake1
3 files changed, 51 insertions, 2 deletions
diff --git a/cmake/check_compiler_flag.cmake b/cmake/check_compiler_flag.cmake
new file mode 100644
index 00000000000..25e4af23dd9
--- /dev/null
+++ b/cmake/check_compiler_flag.cmake
@@ -0,0 +1,51 @@
+include(CheckCSourceCompiles)
+include(CheckCXXSourceCompiles)
+# We need some extra FAIL_REGEX patterns
+# Note that CHECK_C_SOURCE_COMPILES is a misnomer, it will also link.
+SET(fail_patterns
+ FAIL_REGEX "argument unused during compilation"
+ FAIL_REGEX "unsupported .*option"
+ FAIL_REGEX "unknown .*option"
+ FAIL_REGEX "unrecognized .*option"
+ FAIL_REGEX "ignoring unknown option"
+ FAIL_REGEX "warning:.*ignored"
+ FAIL_REGEX "[Ww]arning: [Oo]ption"
+ )
+
+MACRO (MY_CHECK_C_COMPILER_FLAG flag result)
+ SET(SAVE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+ SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
+ CHECK_C_SOURCE_COMPILES("int main(void) { return 0; }" ${result}
+ ${fail_patterns})
+ SET(CMAKE_REQUIRED_FLAGS "${SAVE_CMAKE_REQUIRED_FLAGS}")
+ENDMACRO()
+
+MACRO (MY_CHECK_CXX_COMPILER_FLAG flag result)
+ SET(SAVE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+ SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
+ CHECK_CXX_SOURCE_COMPILES("int main(void) { return 0; }" ${result}
+ ${fail_patterns})
+ SET(CMAKE_REQUIRED_FLAGS "${SAVE_CMAKE_REQUIRED_FLAGS}")
+ENDMACRO()
+
+FUNCTION(MY_CHECK_AND_SET_COMPILER_FLAG flag)
+ # At the moment this is gcc-only.
+ # Let's avoid expensive compiler tests on Windows:
+ IF(WIN32)
+ RETURN()
+ ENDIF()
+ MY_CHECK_C_COMPILER_FLAG(${flag} HAVE_C_${flag})
+ MY_CHECK_CXX_COMPILER_FLAG(${flag} HAVE_CXX_${flag})
+ IF (HAVE_C_${flag} AND HAVE_CXX_${flag})
+ IF(ARGN)
+ FOREACH(type ${ARGN})
+ SET(CMAKE_C_FLAGS_${type} "${CMAKE_C_FLAGS_${type}} ${flag}" PARENT_SCOPE)
+ SET(CMAKE_CXX_FLAGS_${type} "${CMAKE_CXX_FLAGS_${type}} ${flag}" PARENT_SCOPE)
+ ENDFOREACH()
+ ELSE()
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" PARENT_SCOPE)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE)
+ ENDIF()
+ ENDIF()
+ENDFUNCTION()
+
diff --git a/cmake/os/Windows.cmake b/cmake/os/Windows.cmake
index 254d9f6d946..53c3bad7fed 100644
--- a/cmake/os/Windows.cmake
+++ b/cmake/os/Windows.cmake
@@ -20,7 +20,6 @@ INCLUDE (CheckCXXSourceCompiles)
INCLUDE (CheckStructHasMember)
INCLUDE (CheckLibraryExists)
INCLUDE (CheckFunctionExists)
-INCLUDE (CheckCCompilerFlag)
INCLUDE (CheckCSourceRuns)
INCLUDE (CheckSymbolExists)
INCLUDE (CheckTypeSize)
diff --git a/cmake/os/WindowsCache.cmake b/cmake/os/WindowsCache.cmake
index 1453cc55053..4786108ec8c 100644
--- a/cmake/os/WindowsCache.cmake
+++ b/cmake/os/WindowsCache.cmake
@@ -370,5 +370,4 @@ SET(HAVE_SYS_UTSNAME_H CACHE INTERNAL "")
SET(HAVE_PTHREAD_ATTR_GETGUARDSIZE CACHE INTERNAL "")
SET(HAVE_UCONTEXT_H CACHE INTERNAL "")
SET(HAVE_SOCKPEERCRED CACHE INTERNAL "")
-SET(HAVE_GGDB3 CACHE INTERNAL "")
ENDIF(MSVC)