From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 970512995F for ; Thu, 20 Sep 2018 15:57:00 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y_gbFvA6iNDf for ; Thu, 20 Sep 2018 15:57:00 -0400 (EDT) Received: from smtp3.mail.ru (smtp3.mail.ru [94.100.179.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 5086728DEF for ; Thu, 20 Sep 2018 15:57:00 -0400 (EDT) From: Alexander Turenko Subject: [tarantool-patches] [PATCH] Fix clang build (fails on -Wno-cast-function-type) Date: Thu, 20 Sep 2018 22:56:43 +0300 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: Kirill Yukhin Cc: Alexander Turenko , tarantool-patches@freelists.org, Konstantin Osipov The problem is that clang does not support -Wno-cast-function-type flag. It is the regression from 8c538963a78f22746233b22648fb2aa6933dc135. Follow up of #3685. Fixes #3701. --- branch: https://github.com/tarantool/tarantool/tree/Totktonada/gh-3701-fix-clang-build issue: https://github.com/tarantool/tarantool/issues/3701 Please, check-in into 1.9 branch. cmake/compiler.cmake | 10 ++++++++++ src/CMakeLists.txt | 8 -------- test/unit/CMakeLists.txt | 8 -------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index 05d33ab48..f1a861533 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -95,6 +95,7 @@ check_c_compiler_flag("-Wno-varargs" CC_HAS_WNO_VARARGS) check_c_compiler_flag("-Wno-char-subscripts" CC_HAS_WNO_CHAR_SUBSCRIPTS) check_c_compiler_flag("-Wno-format-truncation" CC_HAS_WNO_FORMAT_TRUNCATION) check_c_compiler_flag("-Wno-implicit-fallthrough" CC_HAS_WNO_IMPLICIT_FALLTHROUGH) +check_c_compiler_flag("-Wno-cast-function-type" CC_HAS_WNO_CAST_FUNCTION_TYPE) # # Perform build type specific configuration. @@ -247,6 +248,15 @@ macro(enable_tnt_compile_flags) add_compile_flags("C" "-fno-gnu89-inline") endif() + # Suppress noise GCC 8 warnings. + # + # reflection.h casts a pointer to a member function to an another pointer + # to a member function to store it in a structure, but cast it back before + # a call. It is legal and does not lead to an undefined behaviour. + if (CC_HAS_WNO_CAST_FUNCTION_TYPE) + add_compile_flags("C;CXX" "-Wno-cast-function-type") + endif() + add_definitions("-D__STDC_FORMAT_MACROS=1") add_definitions("-D__STDC_LIMIT_MACROS=1") add_definitions("-D__STDC_CONSTANT_MACROS=1") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2e7e1c436..b1c4cd711 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,14 +3,6 @@ # enable_tnt_compile_flags() -# Suppress noise GCC 8 warnings. -# -# reflection.h casts a pointer to a member function to an another pointer to a -# member function to store it in a structure, but cast it back before a call. -# It is legal and does not lead to an undefined behaviour. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-cast-function-type") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-cast-function-type") - include_directories(${LIBEV_INCLUDE_DIR}) include_directories(${LIBEIO_INCLUDE_DIR}) include_directories(${LIBCORO_INCLUDE_DIR}) diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index b6ffe1cfa..943788b94 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -5,14 +5,6 @@ endif() file(GLOB all_sources *.c *.cc) set_source_files_compile_flags(${all_sources}) -# Suppress noise GCC 8 warnings. -# -# reflection.h casts a pointer to a member function to an another pointer to a -# member function to store it in a structure, but cast it back before a call. -# It is legal and does not lead to an undefined behaviour. -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-cast-function-type") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-cast-function-type") - include_directories(${PROJECT_SOURCE_DIR}/src) include_directories(${PROJECT_BINARY_DIR}/src) include_directories(${PROJECT_SOURCE_DIR}/src/box) -- 2.19.0