Repository: kudu
Updated Branches:
  refs/heads/master ba3cdea53 -> 726dedacd


KUDU-2427: only add -fno-sized-deallocation for C++ files

Ubuntu 18.04 has a gcc that's new enough to support -fsized-deallocation.
But, if -fno-sized-deallocation is added to a C file's compilation flags,
the compiler will emit a warning:

  cc1: warning: command line option ‘-fno-sized-deallocation’ is valid for 
C++/ObjC++ but not for C

The problem is that we want to apply this flag only to "exported" targets,
but we have one such target (gutil_exported) that has both C and C++ files
in it. To address this, we can use a cmake generator expression[1] to
conditionally add the flag only to the C++ files in the target. This means
adding the flag with target_compile_options(), as set_target_properties()
does not support generator expressions.

1. https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html

Change-Id: Ib2fbd94f19495eb48119d8f9ecb6fdceee2387c3
Reviewed-on: http://gerrit.cloudera.org:8080/10430
Reviewed-by: Todd Lipcon <t...@apache.org>
Tested-by: Adar Dembo <a...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/726dedac
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/726dedac
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/726dedac

Branch: refs/heads/master
Commit: 726dedacd1203cbefa20f82c9eba529a28f44013
Parents: ba3cdea
Author: Adar Dembo <a...@cloudera.com>
Authored: Fri May 11 12:41:29 2018 -0700
Committer: Adar Dembo <a...@cloudera.com>
Committed: Thu May 17 18:07:07 2018 +0000

----------------------------------------------------------------------
 CMakeLists.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/726dedac/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 508aab9..782ecbc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -613,7 +613,9 @@ endif()
   # include sized deallocation (new in C++14). This reverses the setting from
   # non-exported (default) flags.
   if(COMPILER_SUPPORTS_SIZED_DEALLOCATION)
-    set(EXPORTED_FLAGS "${EXPORTED_FLAGS} -fno-sized-deallocation")
+    # Note: this is retained by the set_target_properties() call below.
+    target_compile_options(${EXPORTED_LIB_NAME}
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fno-sized-deallocation>)
   endif()
 
   set_target_properties(${EXPORTED_LIB_NAME}

Reply via email to