[Libreoffice-commits] core.git: compilerplugins/Makefile-clang.mk configure.ac distro-configs/Jenkins

Stephan Bergmann sbergman at redhat.com
Wed Dec 6 06:27:51 UTC 2017


 compilerplugins/Makefile-clang.mk             |   16 +++++-----------
 configure.ac                                  |    8 ++++----
 distro-configs/Jenkins/linux_clang_dbgutil_64 |    1 +
 3 files changed, 10 insertions(+), 15 deletions(-)

New commits:
commit e754d0931ca75403647cc16100edd98e7e5ceadb
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Dec 5 10:21:53 2017 +0100

    Remove CXXFLAGS_CXX11 from Clang plugin compilation
    
    CXXFLAGS_CXX11 is for the compiler used to compile LO proper.  The plugin needs
    to be compiled in a way compatible with compiling Clang, and the compiler and
    any relevant flags can be controlled with COMPILER_PLUGINS_CXX.  (And at least
    on macOS when compiling LO against a locally-built recent Clang trunk,
    CXXFLAGS_CXX11 will now contain -std=gnu++17, but COMPILER_PLUGINS_CXX can still
    point at Apple's Xcode clang++, which does not understand -std=gnu++17.)
    
    Also, if COMPILER_PLUGINS_CXX is not set, simply default it to g++ instead of
    trying to construct an acceptable CLANGCXX value from CXX (which would be
    Clang).  (The problem with using Clang without CXXFLAGS_CXX11 is that Clang,
    unlike GCC, typically defaults to C++03, but building compilerplugins requires
    C++11 at least.  That would cause e.g. the Gerrit/Jenkins linux_clang_dbgutil_64
    builds to fail---but which also needs COMPILER_PLUGINS_CXX to be explicitly set
    to "g++ -std=c++11" as GCC on those machines is still 4.8.5 defaulting to
    C++03.)
    
    Change-Id: Id4ee4e54fa871cb6e621069cd050ae5b31922b34
    Reviewed-on: https://gerrit.libreoffice.org/45856
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/compilerplugins/Makefile-clang.mk b/compilerplugins/Makefile-clang.mk
index 89a798ebd34a..aad53a90ca5c 100644
--- a/compilerplugins/Makefile-clang.mk
+++ b/compilerplugins/Makefile-clang.mk
@@ -18,12 +18,6 @@ CLANG_DL_EXT = .so
 CLANG_EXE_EXT =
 endif
 
-ifeq ($(COMPILER_PLUGINS_CXX),)
-CLANGCXX=$(filter-out -m32 -m64 -fsanitize%,$(CXX))
-else
-CLANGCXX=$(COMPILER_PLUGINS_CXX)
-endif
-
 # Compile flags ('make CLANGCXXFLAGS=-g' if you need to debug the plugin); you
 # may occasionally want to override these:
 ifeq ($(OS),WNT)
@@ -113,8 +107,8 @@ ifeq ($(OS),WNT)
 define clangbuildsrc
 $(3): $(2) $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp
 	@echo [build CXX] $(subst $(SRCDIR)/,,$(2))
-	$(QUIET)$(CLANGCXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) \
-        $(CLANGINCLUDES) /I$(BUILDDIR)/config_host $(2) $(CXXFLAGS_CXX11) /MD \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) \
+        $(CLANGINCLUDES) /I$(BUILDDIR)/config_host $(2) /MD \
         /c /Fo: $(3)
 
 -include $(CLANGOUTDIR)/$(1).d #TODO
@@ -128,7 +122,7 @@ else
 define clangbuildsrc
 $(3): $(2) $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp
 	@echo [build CXX] $(subst $(SRCDIR)/,,$(2))
-	$(QUIET)$(CLANGCXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) $(CLANGINCLUDES) -I$(BUILDDIR)/config_host $(2) -fPIC $(CXXFLAGS_CXX11) -c -o $(3) -MMD -MT $(3) -MP -MF $(CLANGOUTDIR)/$(1).d
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) $(CLANGINCLUDES) -I$(BUILDDIR)/config_host $(2) -fPIC -c -o $(3) -MMD -MT $(3) -MP -MF $(CLANGOUTDIR)/$(1).d
 
 -include $(CLANGOUTDIR)/$(1).d
 
@@ -143,10 +137,10 @@ $(foreach src, $(CLANGSRC), $(eval $(call clangbuildsrc,$(src),$(CLANGINDIR)/$(s
 $(CLANGOUTDIR)/plugin$(CLANG_DL_EXT): $(CLANGOBJS)
 	@echo [build LNK] $(subst $(BUILDDIR)/,,$@)
 ifeq ($(OS),WNT)
-	$(QUIET)$(CLANGCXX) /LD $(CLANGOBJS) /Fe: $@ $(CLANGLIBDIR)/clang.lib \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) /LD $(CLANGOBJS) /Fe: $@ $(CLANGLIBDIR)/clang.lib \
         mincore.lib version.lib /link $(COMPILER_PLUGINS_CXX_LINKFLAGS)
 else
-	$(QUIET)$(CLANGCXX) -shared $(CLANGOBJS) -o $@ \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) -shared $(CLANGOBJS) -o $@ \
 		$(if $(filter MACOSX,$(OS)),-Wl$(CLANG_COMMA)-flat_namespace \
 			-Wl$(CLANG_COMMA)-undefined -Wl$(CLANG_COMMA)suppress)
 endif
diff --git a/configure.ac b/configure.ac
index 874a21e95ce0..208debcbe5a0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6431,10 +6431,10 @@ if test "$COM_IS_CLANG" = "TRUE"; then
         AC_LANG_PUSH([C++])
         save_CPPFLAGS=$CPPFLAGS
         save_CXX=$CXX
-        # compiler plugins must be built with "native" bitness of clang
-        # because they link against clang libraries
-        CXX=${COMPILER_PLUGINS_CXX-$(echo $CXX | sed -e s/-m64// -e s/-m32//)}
-        CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11 -I$CLANGDIR/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
+        # compiler plugins must be built with "native" compiler that was used to build Clang itself:
+        : "${COMPILER_PLUGINS_CXX=g++}"
+        CXX=$COMPILER_PLUGINS_CXX
+        CPPFLAGS="$CPPFLAGS -I$CLANGDIR/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
         AC_CHECK_HEADER(clang/AST/RecursiveASTVisitor.h,
             [COMPILER_PLUGINS=TRUE],
             [
diff --git a/distro-configs/Jenkins/linux_clang_dbgutil_64 b/distro-configs/Jenkins/linux_clang_dbgutil_64
index 61c274af4caf..9865be076515 100644
--- a/distro-configs/Jenkins/linux_clang_dbgutil_64
+++ b/distro-configs/Jenkins/linux_clang_dbgutil_64
@@ -1,2 +1,3 @@
 --enable-dbgutil
 --enable-compiler-plugins
+COMPILER_PLUGINS_CXX=g++ -std=c++11


More information about the Libreoffice-commits mailing list