Skip to content

Commit

Permalink
MDEV-9943 - TokuDB fails to compile with gcc 5.2.1
Browse files Browse the repository at this point in the history
For some reason check_cxx_compiler_flag() passes result variable name down to
compiler:
https://github.com/Kitware/CMake/blob/master/Modules/CheckCXXSourceCompiles.cmake#L57

But compiler doesn't permit dashes in macro name, like in
-DHAVE_CXX_-fimplicit-templates.

Workarounded by renaming HAVE_CXX_-fimplicit-templates to
HAVE_CXX_IMPLICIT_TEMPLAES.
  • Loading branch information
Sergey Vojtovich committed Apr 20, 2016
1 parent 62122ba commit 0c0a865
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions storage/tokudb/ft-index/cmake_modules/TokuSetupCompiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,13 @@ endmacro(set_cflags_if_supported_named)
## adds a compiler flag if the compiler supports it
macro(set_cflags_if_supported)
foreach(flag ${ARGN})
check_c_compiler_flag(${flag} HAVE_C_${flag})
if (HAVE_C_${flag})
STRING(REGEX REPLACE "[-,= ]" "_" res ${flag})
check_c_compiler_flag(${flag} HAVE_C_${res})
if (HAVE_C_${res})
set(CMAKE_C_FLAGS "${flag} ${CMAKE_C_FLAGS}")
endif ()
check_cxx_compiler_flag(${flag} HAVE_CXX_${flag})
if (HAVE_CXX_${flag})
check_cxx_compiler_flag(${flag} HAVE_CXX_${res})
if (HAVE_CXX_${res})
set(CMAKE_CXX_FLAGS "${flag} ${CMAKE_CXX_FLAGS}")
endif ()
endforeach(flag)
Expand All @@ -75,8 +76,9 @@ endmacro(set_cflags_if_supported)
## adds a linker flag if the compiler supports it
macro(set_ldflags_if_supported)
foreach(flag ${ARGN})
check_cxx_compiler_flag(${flag} HAVE_${flag})
if (HAVE_${flag})
STRING(REGEX REPLACE "[-,= ]" "_" res ${flag})
check_cxx_compiler_flag(${flag} HAVE_${res})
if (HAVE_${res})
set(CMAKE_EXE_LINKER_FLAGS "${flag} ${CMAKE_EXE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${flag} ${CMAKE_SHARED_LINKER_FLAGS}")
endif ()
Expand All @@ -103,8 +105,8 @@ set_cflags_if_supported(

if (CMAKE_CXX_FLAGS MATCHES -fno-implicit-templates)
# must append this because mysql sets -fno-implicit-templates and we need to override it
check_cxx_compiler_flag(-fimplicit-templates HAVE_CXX_-fimplicit-templates)
if (HAVE_CXX_-fimplicit-templates)
check_cxx_compiler_flag(-fimplicit-templates HAVE_CXX_IMPLICIT_TEMPLATES)
if (HAVE_CXX_IMPLICIT_TEMPLATES)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fimplicit-templates")
endif ()
endif()
Expand Down

0 comments on commit 0c0a865

Please sign in to comment.