[Libreoffice-commits] core.git: 2 commits - compilerplugins/clang compilerplugins/Makefile-clang.mk config_host.mk.in configure.ac

Luboš Luňák (via logerrit) logerrit at kemper.freedesktop.org
Mon Oct 7 19:58:33 UTC 2019


 compilerplugins/Makefile-clang.mk                 |   49 ++++++---------
 compilerplugins/clang/sharedvisitor/analyzer.cxx  |   17 ++---
 compilerplugins/clang/sharedvisitor/generator.cxx |    2 
 config_host.mk.in                                 |    3 
 configure.ac                                      |   69 ++++++++++++++++++++--
 5 files changed, 96 insertions(+), 44 deletions(-)

New commits:
commit 79ca031fb2e8802aa4383362f83306fad6895729
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Sat Oct 5 16:27:48 2019 +0200
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Mon Oct 7 21:57:32 2019 +0200

    make the clang plugins configure check faster
    
    Use a header which is not so expensive to parse/compile.
    
    Change-Id: I4197fb16938b19c18fed541dbf94bf2c97a60e66
    Reviewed-on: https://gerrit.libreoffice.org/80301
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/configure.ac b/configure.ac
index 156dca7b1ed0..7ba93a3f5247 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7036,7 +7036,7 @@ if test "$COM_IS_CLANG" = "TRUE"; then
         CXXCPP="$COMPILER_PLUGINS_CXX -E"
         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
-        AC_CHECK_HEADER(clang/AST/RecursiveASTVisitor.h,
+        AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
             [COMPILER_PLUGINS=TRUE],
             [
             if test "$compiler_plugins" = "yes"; then
@@ -7053,15 +7053,15 @@ if test "$COM_IS_CLANG" = "TRUE"; then
                 LIBS="-lclangTooling -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangEdit \
  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_CXX_LINKFLAGS"
                 AC_LINK_IFELSE([
-                    AC_LANG_PROGRAM([[#include "clang/Tooling/Tooling.h"]],
-                        [[ clang::tooling::runToolOnCode( nullptr, "some code" ); ]])
+                    AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
+                        [[ clang::FullSourceLoc().dump(); ]])
                 ],[CLANGTOOLLIBS="$LIBS"],[])
             fi
             if test -z "$CLANGTOOLLIBS"; then
                 LIBS="-lclang-cpp $COMPILER_PLUGINS_CXX_LINKFLAGS"
                 AC_LINK_IFELSE([
-                    AC_LANG_PROGRAM([[#include "clang/Tooling/Tooling.h"]],
-                        [[ clang::tooling::runToolOnCode( nullptr, "some code" ); ]])
+                    AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
+                        [[ clang::FullSourceLoc().dump(); ]])
                 ],[CLANGTOOLLIBS="$LIBS"],[])
             fi
             AC_MSG_RESULT([$CLANGTOOLLIBS])
commit ad5cbcf6ba0afdc1d8d7405c2641cce8de4a360b
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Sun Oct 6 15:01:07 2019 +0200
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Mon Oct 7 21:57:13 2019 +0200

    try to autodetect flags needed to build Clang plugins
    
    Instead of having a lot of it hardcoded, which brings problems like:
    - Clang-to-be-10 has switched to -std=c++14, so our hardcoded c++11
      makes the build fail
    - I cannot compile with my openSUSE-shipped clang, because it ships
      only libclang-cpp and not the other libClangSomething libs
    The possibility to explicitly set the necessary variables is still there.
    
    Change-Id: I58d401d4584fa064f1c1351a8a06ff4e29643063
    Reviewed-on: https://gerrit.libreoffice.org/80300
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/compilerplugins/Makefile-clang.mk b/compilerplugins/Makefile-clang.mk
index 14356d1548fd..a132df918b50 100644
--- a/compilerplugins/Makefile-clang.mk
+++ b/compilerplugins/Makefile-clang.mk
@@ -23,14 +23,14 @@ CLANGCXXFLAGS=/nologo /D_HAS_EXCEPTIONS=0 /wd4141 /wd4577 /EHs-c- /GR-
 ifeq ($(CLANGDEBUG),)
 CLANGCXXFLAGS+=/O2 /Oi
 else
-CLANGCXXFLAGS+=/DEBUG
+CLANGCXXFLAGS+=/DEBUG /Od
 endif
 else # WNT
 CLANGCXXFLAGS=-Wall -Wextra -Wundef
 ifeq ($(CLANGDEBUG),)
 CLANGCXXFLAGS+=-O2
 else
-CLANGCXXFLAGS+=-g
+CLANGCXXFLAGS+=-g -O0 -UNDEBUG
 endif
 endif
 
@@ -61,20 +61,13 @@ CLANG_EXE_EXT =
 endif
 
 # Clang headers require these.
-CLANGDEFS=-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-ifneq ($(OS),WNT)
-CLANGDEFS += -fno-rtti
-endif
+CLANGDEFS:=$(COMPILER_PLUGINS_CXXFLAGS)
 # All include locations needed (using -isystem silences various warnings when
 # including those files):
-ifeq ($(OS),WNT)
-CLANGINCLUDES=-I$(CLANGDIR)/include
-else
-CLANGINCLUDES=$(if $(filter /usr,$(CLANGDIR)),,-isystem $(CLANGDIR)/include)
+ifneq ($(OS),WNT)
+CLANGDEFS:=$(filter-out -isystem/usr/include,$(foreach opt,$(CLANGDEFS),$(patsubst -I%,-isystem%,$(opt))))
 endif
 
-LLVMCONFIG=$(CLANGDIR)/bin/llvm-config
-
 # Clang/LLVM libraries are intentionally not linked in, they are usually built as static libraries, which means the resulting
 # plugin would be big (even though the clang binary already includes it all) and it'd be necessary to explicitly specify
 # also all the dependency libraries.
@@ -166,7 +159,7 @@ ifeq ($(OS),WNT)
 define clangbuildsrc
 $(2): $(1) $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp
 	$$(call gb_Output_announce,$(subst $(SRCDIR)/,,$(subst $(BUILDDIR)/,,$(1))),$(true),CXX,3)
-	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGDEFS) $(CLANGCXXFLAGS) $(CLANGWERROR) \
         $(CLANGINCLUDES) /I$(BUILDDIR)/config_host /I$(CLANGINDIR) $(1) /MD \
         /c /Fo: $(2)
 
@@ -182,7 +175,7 @@ else
 define clangbuildsrc
 $(2): $(1) $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp
 	$$(call gb_Output_announce,$(subst $(SRCDIR)/,,$(subst $(BUILDDIR)/,,$(1))),$(true),CXX,3)
-	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGDEFS) $(CLANGCXXFLAGS) $(CLANGWERROR) \
 	$(CLANGINCLUDES) -I$(BUILDDIR)/config_host -I$(CLANGINDIR) $(1) \
 	-fPIC -c -o $(2) -MMD -MT $(2) -MP -MF $(3)
 
@@ -231,38 +224,37 @@ $(CLANGOUTDIR)/sharedvisitor/sharedvisitor.cxx: $(SHARED_SOURCE_INFOS) $(CLANGOU
 	$(QUIET)$(ICECREAM_RUN) $(CLANGOUTDIR)/sharedvisitor/generator$(CLANG_EXE_EXT) \
         $(SHARED_SOURCE_INFOS) > $@
 
-CLANGTOOLLIBS = -lclangTooling -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangEdit -lclangAnalysis \
-        -lclangAST -lclangLex -lclangSerialization -lclangBasic $(shell $(LLVMCONFIG) --ldflags --libs --system-libs)
-# Path to the clang system headers (no idea if there's a better way to get it).
-CLANGTOOLDEFS = -DCLANGSYSINCLUDE=$(shell $(LLVMCONFIG) --libdir)/clang/$(shell $(LLVMCONFIG) --version | sed 's/svn//')/include
-# -std=c++11 is in line with the default value for COMPILER_PLUGINS_CXX in configure.ac:
-CLANGSTDOPTION := $(or $(filter -std=%,$(COMPILER_PLUGINS_CXX)),-std=c++11)
-CLANGTOOLDEFS += -DSTDOPTION=\"$(CLANGSTDOPTION)\"
+# Flags used internally in analyzer.
+# Older versions of Clang have a problem to find their own internal headers, so add it.
+# Also filter out the c++ library, it's not necessary to be specific about it in this case
+# and it can also cause trouble with finding the proper headers.
+CLANGTOOLDEFS = $(filter-out -stdlib=%,$(CLANGDEFS) -I$(CLANGSYSINCLUDE))
+CLANGTOOLDEFS += -w
 ifneq ($(filter-out MACOSX WNT,$(OS)),)
 ifneq ($(CLANGDIR),/usr)
 # Help the generator find Clang shared libs, if Clang is built so and installed in a non-standard prefix.
-CLANGTOOLLIBS += -Wl,--rpath,$(shell $(LLVMCONFIG) --libdir)
+CLANGTOOLLIBS += -Wl,--rpath,$(CLANGLIBDIR)
 endif
 endif
 
 $(CLANGOUTDIR)/sharedvisitor/analyzer$(CLANG_EXE_EXT): $(CLANGINDIR)/sharedvisitor/analyzer.cxx \
         | $(CLANGOUTDIR)/sharedvisitor
 	$(call gb_Output_announce,$(subst $(BUILDDIR)/,,$@),$(true),GEN,1)
-	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) $(CLANGTOOLDEFS) $(CLANGINCLUDES) \
-        -DCLANGDIR=$(CLANGDIR) -I$(BUILDDIR)/config_host \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGDEFS) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGINCLUDES) \
+        -I$(BUILDDIR)/config_host -DCLANGFLAGS="$(CLANGTOOLDEFS)" \
         -DLO_CLANG_USE_ANALYZER_PCH=$(LO_CLANG_USE_ANALYZER_PCH) \
         -c $< -o $(CLANGOUTDIR)/sharedvisitor/analyzer.o -MMD -MT $@ -MP \
         -MF $(CLANGOUTDIR)/sharedvisitor/analyzer.d
-	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGOUTDIR)/sharedvisitor/analyzer.o \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGDEFS) $(CLANGCXXFLAGS) $(CLANGOUTDIR)/sharedvisitor/analyzer.o \
         -o $@ $(CLANGTOOLLIBS)
 
 $(CLANGOUTDIR)/sharedvisitor/generator$(CLANG_EXE_EXT): $(CLANGINDIR)/sharedvisitor/generator.cxx \
         | $(CLANGOUTDIR)/sharedvisitor
 	$(call gb_Output_announce,$(subst $(BUILDDIR)/,,$@),$(true),GEN,1)
-	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGDEFS) $(CLANGCXXFLAGS) $(CLANGWERROR) \
         -c $< -o $(CLANGOUTDIR)/sharedvisitor/generator.o -MMD -MT $@ -MP \
         -MF $(CLANGOUTDIR)/sharedvisitor/generator.d
-	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGCXXFLAGS) $(CLANGOUTDIR)/sharedvisitor/generator.o \
+	$(QUIET)$(COMPILER_PLUGINS_CXX) $(CLANGDEFS) $(CLANGCXXFLAGS) $(CLANGOUTDIR)/sharedvisitor/generator.o \
         -o $@
 
 $(CLANGOUTDIR)/sharedvisitor/analyzer$(CLANG_EXE_EXT): $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp
@@ -302,8 +294,7 @@ endif
 ifdef LO_CLANG_USE_ANALYZER_PCH
 
 # these are from the invocation in analyzer.cxx
-LO_CLANG_ANALYZER_PCH_CXXFLAGS := -I$(BUILDDIR)/config_host -I$(CLANGDIR)/include $(CLANGTOOLDEFS) $(CLANGSTDOPTION) \
-    -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
+LO_CLANG_ANALYZER_PCH_CXXFLAGS := -I$(BUILDDIR)/config_host $(CLANGTOOLDEFS)
 
 $(CLANGOUTDIR)/sharedvisitor/clang.pch: $(CLANGINDIR)/sharedvisitor/precompiled_clang.hxx \
         $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp \
diff --git a/compilerplugins/clang/sharedvisitor/analyzer.cxx b/compilerplugins/clang/sharedvisitor/analyzer.cxx
index 5b716f407fd4..4d8e2b2bb763 100644
--- a/compilerplugins/clang/sharedvisitor/analyzer.cxx
+++ b/compilerplugins/clang/sharedvisitor/analyzer.cxx
@@ -12,6 +12,7 @@
 #include "clang/Frontend/CompilerInstance.h"
 #include "clang/Frontend/FrontendAction.h"
 #include "clang/Tooling/Tooling.h"
+#include "llvm/ADT/StringExtras.h"
 
 #include <cstddef>
 #include <cstring>
@@ -27,6 +28,7 @@
 using namespace std;
 
 using namespace clang;
+using namespace llvm;
 
 using namespace loplugin;
 
@@ -241,16 +243,13 @@ int main(int argc, char** argv)
     }
 #define STRINGIFY2(a) #a
 #define STRINGIFY(a) STRINGIFY2(a)
+    SmallVector< StringRef, 20 > clangflags;
+    SplitString( STRINGIFY(CLANGFLAGS), clangflags );
+    args.insert( args.end(), clangflags.begin(), clangflags.end());
     args.insert(
         args.end(),
         {   // These must match LO_CLANG_ANALYZER_PCH_CXXFLAGS in Makefile-clang.mk .
-            "-I" BUILDDIR "/config_host", // plugin sources use e.g. config_global.h
-            "-I" STRINGIFY(CLANGDIR) "/include", // clang's headers
-            "-I" STRINGIFY(CLANGSYSINCLUDE), // clang system headers
-            STDOPTION,
-            "-D__STDC_CONSTANT_MACROS", // Clang headers require these.
-            "-D__STDC_FORMAT_MACROS",
-            "-D__STDC_LIMIT_MACROS"
+            "-I" BUILDDIR "/config_host" // plugin sources use e.g. config_global.h
 #ifdef LO_CLANG_USE_ANALYZER_PCH
             ,
             "-include-pch", // use PCH with Clang headers to speed up parsing/analysing
@@ -264,9 +263,9 @@ int main(int argc, char** argv)
             continue;
         foundSomething = false;
 #if CLANG_VERSION >= 100000
-        if( !clang::tooling::runToolOnCodeWithArgs( std::unique_ptr<FindNamedClassAction>(new FindNamedClassAction), contents, args, argv[ i ] ))
+        if( !tooling::runToolOnCodeWithArgs( std::unique_ptr<FindNamedClassAction>(new FindNamedClassAction), contents, args, argv[ i ] ))
 #else
-        if( !clang::tooling::runToolOnCodeWithArgs( new FindNamedClassAction, contents, args, argv[ i ] ))
+        if( !tooling::runToolOnCodeWithArgs( new FindNamedClassAction, contents, args, argv[ i ] ))
 #endif
         {
             cerr << "Failed to analyze: " << argv[ i ] << endl;
diff --git a/compilerplugins/clang/sharedvisitor/generator.cxx b/compilerplugins/clang/sharedvisitor/generator.cxx
index 052b16b433fd..bf8cfb601264 100644
--- a/compilerplugins/clang/sharedvisitor/generator.cxx
+++ b/compilerplugins/clang/sharedvisitor/generator.cxx
@@ -124,7 +124,7 @@ void generate()
 "} // namespace loplugin\n"
 "\n"
 "#endif // LO_CLANG_SHARED_PLUGINS\n";
-};
+}
 
 void generateVisitor( PluginType type )
 {
diff --git a/config_host.mk.in b/config_host.mk.in
index 9a1bb81f70d7..91ced61d3d94 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -65,6 +65,8 @@ export CDR_LIBS=$(gb_SPACE)@CDR_LIBS@
 @x_CFLAGS@ export CFLAGS=@CFLAGS@
 export CLANGDIR=@CLANGDIR@
 export CLANGLIBDIR=@CLANGLIBDIR@
+export CLANGSYSINCLUDE=@CLANGSYSINCLUDE@
+export CLANGTOOLLIBS=@CLANGTOOLLIBS@
 export CLUCENE_CFLAGS=$(gb_SPACE)@CLUCENE_CFLAGS@
 export CLUCENE_LIBS=$(gb_SPACE)@CLUCENE_LIBS@
 export LIBCMIS_CFLAGS=$(gb_SPACE)@LIBCMIS_CFLAGS@
@@ -75,6 +77,7 @@ export COMMONS_LOGGING_VERSION=@COMMONS_LOGGING_VERSION@
 export COMPATH=@COMPATH@
 export COMPILER_PLUGINS=@COMPILER_PLUGINS@
 export COMPILER_PLUGINS_CXX=@COMPILER_PLUGINS_CXX@
+export COMPILER_PLUGINS_CXXFLAGS=@COMPILER_PLUGINS_CXXFLAGS@
 export COMPILER_PLUGINS_CXX_LINKFLAGS=@COMPILER_PLUGINS_CXX_LINKFLAGS@
 export COMPILER_PLUGINS_DEBUG=@COMPILER_PLUGINS_DEBUG@
 export COMPILER_PLUGINS_TOOLING_ARGS=@COMPILER_PLUGINS_TOOLING_ARGS@
diff --git a/configure.ac b/configure.ac
index ecb4c877b563..156dca7b1ed0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7012,15 +7012,30 @@ if test "$COM_IS_CLANG" = "TRUE"; then
         if test -z "$CLANGDIR"; then
             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $CXX))))
         fi
+        # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
+        if test -z "$COMPILER_PLUGINS_CXX"; then
+            COMPILER_PLUGINS_CXX=$CXX
+        fi
+        AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],$CLANGDIR/bin $PATH)
+        if test -n "$LLVM_CONFIG"; then
+            COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
+            COMPILER_PLUGINS_CXX_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
+            if test -z "$CLANGLIBDIR"; then
+                CLANGLIBDIR=$($LLVM_CONFIG --libdir)
+            fi
+        fi
+        AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
         AC_LANG_PUSH([C++])
-        save_CPPFLAGS=$CPPFLAGS
         save_CXX=$CXX
         save_CXXCPP=$CXXCPP
-        # compiler plugins must be built with "native" compiler that was used to build Clang itself:
-        : "${COMPILER_PLUGINS_CXX=g++ -std=c++11}"
+        save_CPPFLAGS=$CPPFLAGS
+        save_CXXFLAGS=$CXXFLAGS
+        save_LDFLAGS=$LDFLAGS
+        save_LIBS=$LIBS
         CXX=$COMPILER_PLUGINS_CXX
         CXXCPP="$COMPILER_PLUGINS_CXX -E"
-        CPPFLAGS="$CPPFLAGS -I$CLANGDIR/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
+        CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
+        CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
         AC_CHECK_HEADER(clang/AST/RecursiveASTVisitor.h,
             [COMPILER_PLUGINS=TRUE],
             [
@@ -7031,9 +7046,50 @@ if test "$COM_IS_CLANG" = "TRUE"; then
                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
             fi
             ])
+        if test -n "$COMPILER_PLUGINS"; then
+            LDFLAGS=""
+            AC_MSG_CHECKING([for clang libraries to use])
+            if test -z "$CLANGTOOLLIBS"; then
+                LIBS="-lclangTooling -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangEdit \
+ -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_CXX_LINKFLAGS"
+                AC_LINK_IFELSE([
+                    AC_LANG_PROGRAM([[#include "clang/Tooling/Tooling.h"]],
+                        [[ clang::tooling::runToolOnCode( nullptr, "some code" ); ]])
+                ],[CLANGTOOLLIBS="$LIBS"],[])
+            fi
+            if test -z "$CLANGTOOLLIBS"; then
+                LIBS="-lclang-cpp $COMPILER_PLUGINS_CXX_LINKFLAGS"
+                AC_LINK_IFELSE([
+                    AC_LANG_PROGRAM([[#include "clang/Tooling/Tooling.h"]],
+                        [[ clang::tooling::runToolOnCode( nullptr, "some code" ); ]])
+                ],[CLANGTOOLLIBS="$LIBS"],[])
+            fi
+            AC_MSG_RESULT([$CLANGTOOLLIBS])
+            if test -z "$CLANGTOOLLIBS"; then
+                if test "$compiler_plugins" = "yes"; then
+                    cat config.log
+                    AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
+                else
+                    AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
+                    add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
+                fi
+                COMPILER_PLUGINS=
+            fi
+            if test -n "$COMPILER_PLUGINS"; then
+                if test -z "$CLANGSYSINCLUDE"; then
+                    if test -n "$LLVM_CONFIG"; then
+                        # Path to the clang system headers (no idea if there's a better way to get it).
+                        CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/svn//')/include
+                    fi
+                fi
+            fi
+        fi
         CXX=$save_CXX
         CXXCPP=$save_CXXCPP
         CPPFLAGS=$save_CPPFLAGS
+        CXXFLAGS=$save_CXXFLAGS
+        LDFLAGS=$save_LDFLAGS
+        LIBS="$save_LIBS"
         AC_LANG_POP([C++])
     fi
 else
@@ -7043,11 +7099,14 @@ else
 fi
 AC_SUBST(COMPILER_PLUGINS)
 AC_SUBST(COMPILER_PLUGINS_CXX)
+AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
 AC_SUBST(COMPILER_PLUGINS_DEBUG)
 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
 AC_SUBST(CLANGDIR)
 AC_SUBST(CLANGLIBDIR)
+AC_SUBST(CLANGTOOLLIBS)
+AC_SUBST(CLANGSYSINCLUDE)
 
 # Plugin to help linker.
 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.


More information about the Libreoffice-commits mailing list