diff options
author | Sergei Golubchik <serg@mariadb.org> | 2016-02-23 21:35:05 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2016-02-23 21:35:05 +0100 |
commit | a5679af1b13bb0c7c4eaa75f27551072dc18fb7d (patch) | |
tree | 7d039fb5e83c331daa75f9b9b67625b0469f6a9b /configure.cmake | |
parent | 20c4dfd4a9e7c5f2f570488a7ead0b7c74e61817 (diff) | |
parent | 5f2f3c4fa81851b45dcee33601f14e05f6407333 (diff) | |
download | mariadb-git-a5679af1b13bb0c7c4eaa75f27551072dc18fb7d.tar.gz |
Merge branch '10.0' into 10.1
Diffstat (limited to 'configure.cmake')
-rw-r--r-- | configure.cmake | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/configure.cmake b/configure.cmake index 56d68e302d2..a1fdb98389d 100644 --- a/configure.cmake +++ b/configure.cmake @@ -799,16 +799,36 @@ ENDIF() # # Test for how the C compiler does inline, if at all # +# SunPro is weird, apparently it only supports inline at -xO3 or -xO4. +# And if CMAKE_C_FLAGS has -xO4 but CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE} has -xO2 +# then CHECK_C_SOURCE_COMPILES will succeed but the built will fail. +# We must test all flags here. +# XXX actually, we can do this for all compilers, not only SunPro +IF (CMAKE_CXX_COMPILER_ID MATCHES "SunPro" AND + CMAKE_GENERATOR MATCHES "Makefiles") + STRING(TOUPPER "CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}" flags) + SET(CMAKE_REQUIRED_FLAGS "${${flags}}") +ENDIF() CHECK_C_SOURCE_COMPILES(" -static inline int foo(){return 0;} +extern int bar(int x); +static inline int foo(){return bar(1);} int main(int argc, char *argv[]){return 0;}" C_HAS_inline) IF(NOT C_HAS_inline) CHECK_C_SOURCE_COMPILES(" - static __inline int foo(){return 0;} + extern int bar(int x); + static __inline int foo(){return bar(1);} int main(int argc, char *argv[]){return 0;}" C_HAS___inline) - SET(C_INLINE __inline) + IF(C_HAS___inline) + SET(C_INLINE __inline) + ElSE() + SET(C_INLINE) + MESSAGE(WARNING "C compiler does not support funcion inlining") + IF(NOT NOINLINE) + MESSAGE(FATAL_ERROR "Use -DNOINLINE=TRUE to allow compilation without inlining") + ENDIF() + ENDIF() ENDIF() IF(NOT CMAKE_CROSSCOMPILING AND NOT MSVC) |