svn commit: r1925652 - in /subversion/trunk: ./ build/ac-macros/

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
Author: brane
Date: Sat May 17 20:43:53 2025
New Revision: 1925652

URL: http://svn.apache.org/viewvc?rev=1925652&view=rev
Log:
Optionally a .clangd file with include paths and language version
settings for clangd, a language server for C and C++.

* .: ignore .clangd

* configure.ac
  (--enable-dot-clangd): New option. When set, a configure will write a
   .clangd file to the root of the source tree.
  (SVN_DOT_CLANGD, SVN_DOT_CLANGDXX): New functions for setting command
   line arguments in .clangd for the C and C++ compilers, respectively.
  Top level: Add well-known include paths in the source tree.

* build/ac-macros/apache.m4,
  build/ac-macros/apr.m4,
  build/ac-macros/apr_memcache.m4,
  build/ac-macros/aprutil.m4,
  build/ac-macros/ax_boost_base.m4,
  build/ac-macros/berkeley-db.m4,
  build/ac-macros/compiler.m4,
  build/ac-macros/java.m4,
  build/ac-macros/kwallet.m4,
  build/ac-macros/libsecret.m4,
  build/ac-macros/lz4.m4,
  build/ac-macros/py3c.m4,
  build/ac-macros/sasl.m4,
  build/ac-macros/serf.m4,
  build/ac-macros/sqlite.m4,
  build/ac-macros/utf8proc.m4,
  build/ac-macros/zlib.m4:
   Add discovered options to the .clangd list.

Modified:
    subversion/trunk/   (props changed)
    subversion/trunk/build/ac-macros/apache.m4
    subversion/trunk/build/ac-macros/apr.m4
    subversion/trunk/build/ac-macros/apr_memcache.m4
    subversion/trunk/build/ac-macros/aprutil.m4
    subversion/trunk/build/ac-macros/ax_boost_base.m4
    subversion/trunk/build/ac-macros/berkeley-db.m4
    subversion/trunk/build/ac-macros/compiler.m4
    subversion/trunk/build/ac-macros/java.m4
    subversion/trunk/build/ac-macros/kwallet.m4
    subversion/trunk/build/ac-macros/libsecret.m4
    subversion/trunk/build/ac-macros/lz4.m4
    subversion/trunk/build/ac-macros/py3c.m4
    subversion/trunk/build/ac-macros/sasl.m4
    subversion/trunk/build/ac-macros/serf.m4
    subversion/trunk/build/ac-macros/sqlite.m4
    subversion/trunk/build/ac-macros/utf8proc.m4
    subversion/trunk/build/ac-macros/zlib.m4
    subversion/trunk/configure.ac

Propchange: subversion/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sat May 17 20:43:53 2025
@@ -58,6 +58,7 @@ googlemock
 .git
 .gitignore
 .idea
+.clangd
 compile_commands.json
 .kdev4
 *.kdev4

Modified: subversion/trunk/build/ac-macros/apache.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/apache.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/apache.m4 (original)
+++ subversion/trunk/build/ac-macros/apache.m4 Sat May 17 20:43:53 2025
@@ -219,6 +219,7 @@ elif test x"$APXS" != x"no"; then
     echo "=================================================================="
 fi
 
+SVN_DOT_CLANGD([$APACHE_INCLUDES])
 AC_SUBST(APXS)
 AC_SUBST(APACHE_LDFLAGS)
 AC_SUBST(APACHE_INCLUDES)

Modified: subversion/trunk/build/ac-macros/apr.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/apr.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/apr.m4 (original)
+++ subversion/trunk/build/ac-macros/apr.m4 Sat May 17 20:43:53 2025
@@ -106,6 +106,7 @@ AC_DEFUN(SVN_LIB_APR,
     AC_MSG_ERROR([apr-config --shlib-path-var failed])
   fi
 
+  SVN_DOT_CLANGD([$SVN_APR_INCLUDES])
   AC_SUBST(SVN_APR_CONFIG, ["$apr_config"])
   AC_SUBST(SVN_APR_INCLUDES)
   AC_SUBST(SVN_APR_LIBS)

Modified: subversion/trunk/build/ac-macros/apr_memcache.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/apr_memcache.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/apr_memcache.m4 (original)
+++ subversion/trunk/build/ac-macros/apr_memcache.m4 Sat May 17 20:43:53 2025
@@ -77,6 +77,7 @@ dnl We are already linking apr-util ever
     svn_lib_apr_memcache=no
   fi
 
+  SVN_DOT_CLANGD([$SVN_APR_MEMCACHE_INCLUDES])
   AC_SUBST(SVN_APR_MEMCACHE_INCLUDES)
   AC_SUBST(SVN_APR_MEMCACHE_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/aprutil.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/aprutil.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/aprutil.m4 (original)
+++ subversion/trunk/build/ac-macros/aprutil.m4 Sat May 17 20:43:53 2025
@@ -105,6 +105,7 @@ AC_DEFUN(SVN_LIB_APRUTIL,
   fi
   SVN_APRUTIL_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($SVN_APRUTIL_LIBS)`"
 
+  SVN_DOT_CLANGD([$SVN_APRUTIL_INCLUDES])
   AC_SUBST(SVN_APRUTIL_INCLUDES)
   AC_SUBST(SVN_APRUTIL_CONFIG, ["$apu_config"])
   AC_SUBST(SVN_APRUTIL_LIBS)

Modified: subversion/trunk/build/ac-macros/ax_boost_base.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/ax_boost_base.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/ax_boost_base.m4 (original)
+++ subversion/trunk/build/ac-macros/ax_boost_base.m4 Sat May 17 20:43:53 2025
@@ -291,6 +291,7 @@ AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
         ifelse([$3], , :, [$3])
     else
         AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
+        SVN_DOT_CLANGDXX([$BOOST_CPPFLAGS])
         # execute ACTION-IF-FOUND (if present):
         ifelse([$2], , :, [$2])
     fi

Modified: subversion/trunk/build/ac-macros/berkeley-db.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/berkeley-db.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/berkeley-db.m4 (original)
+++ subversion/trunk/build/ac-macros/berkeley-db.m4 Sat May 17 20:43:53 2025
@@ -151,6 +151,8 @@ AC_DEFUN(SVN_LIB_BERKELEY_DB,
       fi
     fi
   fi
+
+  SVN_DOT_CLANGD([$SVN_DB_INCLUDES])
 ])
 
 

Modified: subversion/trunk/build/ac-macros/compiler.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/compiler.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/compiler.m4 (original)
+++ subversion/trunk/build/ac-macros/compiler.m4 Sat May 17 20:43:53 2025
@@ -82,6 +82,7 @@ AC_DEFUN([SVN_CC_MODE_SETUP],
   CNOWARNFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS_KEEP"
 
+  SVN_DOT_CLANGD([$CMODEFLAGS])
   AC_SUBST(CMODEFLAGS)
   AC_SUBST(CNOWARNFLAGS)
   AC_SUBST(CMAINTAINERFLAGS)
@@ -103,9 +104,11 @@ AC_DEFUN([SVN_CXX_MODE_SETUP],
     dnl Find flags to force C++ mode
                   dnl g++ and clang++
     if test "$cxx_language_level" = "any"; then
-      SVN_CXXFLAGS_ADD_IFELSE([-std=c++20],[],[
-        SVN_CXXFLAGS_ADD_IFELSE([-std=c++17],[],[
-          SVN_CXXFLAGS_ADD_IFELSE([-std=c++11])
+      SVN_CXXFLAGS_ADD_IFELSE([-std=c++23],[],[
+        SVN_CXXFLAGS_ADD_IFELSE([-std=c++20],[],[
+          SVN_CXXFLAGS_ADD_IFELSE([-std=c++17],[],[
+            SVN_CXXFLAGS_ADD_IFELSE([-std=c++11])
+          ])
         ])
       ])
     else
@@ -140,6 +143,7 @@ AC_DEFUN([SVN_CXX_MODE_SETUP],
   CXXNOWARNFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS_KEEP"
 
+  SVN_DOT_CLANGDXX([$CXXMODEFLAGS])
   AC_SUBST(CXXMODEFLAGS)
   AC_SUBST(CXXNOWARNFLAGS)
   AC_SUBST(CXXMAINTAINERFLAGS)

Modified: subversion/trunk/build/ac-macros/java.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/java.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/java.m4 (original)
+++ subversion/trunk/build/ac-macros/java.m4 Sat May 17 20:43:53 2025
@@ -180,6 +180,7 @@ AC_DEFUN(SVN_FIND_JDK,
     for dir in $list; do
       JNI_INCLUDES="$JNI_INCLUDES -I$dir"
     done
+    SVN_DOT_CLANGD([$JNI_INCLUDES])
   fi
 
   dnl We use JDK in the Makefile

Modified: subversion/trunk/build/ac-macros/kwallet.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/kwallet.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/kwallet.m4 (original)
+++ subversion/trunk/build/ac-macros/kwallet.m4 Sat May 17 20:43:53 2025
@@ -146,6 +146,7 @@ int main()
   else
     AC_MSG_RESULT([no])
   fi
+  SVN_DOT_CLANGD([$SVN_KWALLET_INCLUDES])
   AC_SUBST(SVN_KWALLET_INCLUDES)
   AC_SUBST(SVN_KWALLET_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/libsecret.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/libsecret.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/libsecret.m4 (original)
+++ subversion/trunk/build/ac-macros/libsecret.m4 Sat May 17 20:43:53 2025
@@ -89,6 +89,7 @@ AC_DEFUN(SVN_LIB_SECRET,
   else
     AC_MSG_RESULT([no])
   fi
+  SVN_DOT_CLANGD([$SVN_GNOME_KEYRING_INCLUDES])
   AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
   AC_SUBST(SVN_GNOME_KEYRING_LIBS)
   AC_SUBST(SVN_GNOME_KEYRING_PCLIBS)

Modified: subversion/trunk/build/ac-macros/lz4.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/lz4.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/lz4.m4 (original)
+++ subversion/trunk/build/ac-macros/lz4.m4 Sat May 17 20:43:53 2025
@@ -57,6 +57,7 @@ AC_DEFUN(SVN_LZ4,
       AC_MSG_ERROR([Subversion requires LZ4 >= r129, or use --with-lz4=internal])
     fi
   fi
+  SVN_DOT_CLANGD([$SVN_LZ4_INCLUDES])
   AC_SUBST(SVN_LZ4_INCLUDES)
   AC_SUBST(SVN_LZ4_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/py3c.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/py3c.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/py3c.m4 (original)
+++ subversion/trunk/build/ac-macros/py3c.m4 Sat May 17 20:43:53 2025
@@ -84,6 +84,7 @@ AC_DEFUN(SVN_PY3C,
     fi
   fi
 
+  SVN_DOT_CLANGD([$SVN_PY3C_INCLUDES])
   AC_SUBST(SVN_PY3C_INCLUDES)
 ])
 

Modified: subversion/trunk/build/ac-macros/sasl.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/sasl.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/sasl.m4 (original)
+++ subversion/trunk/build/ac-macros/sasl.m4 Sat May 17 20:43:53 2025
@@ -96,7 +96,8 @@ AC_DEFUN(SVN_LIB_SASL,
 
     CPPFLAGS="$saved_CPPFLAGS"
   fi
-    
+
+  SVN_DOT_CLANGD([$SVN_SASL_INCLUDES])
   AC_SUBST(SVN_SASL_INCLUDES)
   AC_SUBST(SVN_SASL_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/serf.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/serf.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/serf.m4 (original)
+++ subversion/trunk/build/ac-macros/serf.m4 Sat May 17 20:43:53 2025
@@ -89,6 +89,7 @@ AC_DEFUN(SVN_LIB_SERF,
 
   svn_lib_serf=$serf_found
 
+  SVN_DOT_CLANGD([$SVN_SERF_INCLUDES])
   AC_SUBST(SVN_SERF_INCLUDES)
   AC_SUBST(SVN_SERF_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/sqlite.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/sqlite.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/sqlite.m4 (original)
+++ subversion/trunk/build/ac-macros/sqlite.m4 Sat May 17 20:43:53 2025
@@ -96,6 +96,7 @@ AC_DEFUN(SVN_LIB_SQLITE,
     fi
   ])
 
+  SVN_DOT_CLANGD([$SVN_SQLITE_INCLUDES])
   AC_SUBST(SVN_SQLITE_INCLUDES)
   AC_SUBST(SVN_SQLITE_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/utf8proc.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/utf8proc.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/utf8proc.m4 (original)
+++ subversion/trunk/build/ac-macros/utf8proc.m4 Sat May 17 20:43:53 2025
@@ -57,6 +57,7 @@ AC_DEFUN(SVN_UTF8PROC,
       AC_MSG_ERROR([Subversion requires UTF8PROC; install it or re-run configure with "--with-utf8proc=internal"])
     fi
   fi
+  SVN_DOT_CLANGD([$SVN_UTF8PROC_INCLUDES])
   AC_SUBST(SVN_UTF8PROC_INCLUDES)
   AC_SUBST(SVN_UTF8PROC_LIBS)
 ])

Modified: subversion/trunk/build/ac-macros/zlib.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/zlib.m4?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/build/ac-macros/zlib.m4 (original)
+++ subversion/trunk/build/ac-macros/zlib.m4 Sat May 17 20:43:53 2025
@@ -78,6 +78,7 @@ AC_DEFUN(SVN_LIB_Z,
     AC_MSG_ERROR([subversion requires zlib])
   fi
 
+  SVN_DOT_CLANGD([$SVN_ZLIB_INCLUDES])
   AC_SUBST(SVN_ZLIB_INCLUDES)
   AC_SUBST(SVN_ZLIB_LIBS)
 ])

Modified: subversion/trunk/configure.ac
URL: http://svn.apache.org/viewvc/subversion/trunk/configure.ac?rev=1925652&r1=1925651&r2=1925652&view=diff
==============================================================================
--- subversion/trunk/configure.ac (original)
+++ subversion/trunk/configure.ac Sat May 17 20:43:53 2025
@@ -46,6 +46,80 @@ AC_SUBST([SWIG_LDFLAGS])
 # Generate config.nice early (before the arguments are munged)
 SVN_CONFIG_NICE(config.nice)
 
+# ==== Construcet .clangd ====================================================
+
+svn_dot_clangd_file="$abs_srcdir/.clangd"
+AC_ARG_ENABLE([dot-clangd],
+AC_HELP_STRING([--enable-dot-clangd],
+               [Generate a .clangd file at the root of the source tree]),
+[
+  AC_MSG_NOTICE([Creating $svn_dot_clangd_file])
+  svn_dot_clangd_contents='---
+If:
+  PathMatch: .*\.c
+  PathMatch: .*\.h
+  PathExclude: subversion/bindings/javahl/native/.*
+
+CompileFlags:
+  Add:'
+
+  svn_dot_clangdxx_contents='---
+If:
+  PathMatch: .*\.cpp
+  PathMatch: .*\.hpp
+  PathMatch: subversion/bindings/javahl/native/.*\.h
+
+CompileFlags:
+  Add:'
+],
+[])
+
+AC_DEFUN([SVN_DOT_CLANGD],
+[
+  if test "x$svn_dot_clangd_contents" != "x"; then
+    indent="    -"
+    dnl Split multiple flags to one per line.
+    set fake [$1]
+    while test "${#}" -gt 1; do
+      line="${2}"; shift
+      svn_dot_clangd_contents=`cat <<EOF
+$svn_dot_clangd_contents
+$indent $line
+EOF
+      `
+    done
+  fi
+])
+
+AC_DEFUN([SVN_DOT_CLANGDXX],
+[
+  if test "x$svn_dot_clangdxx_contents" != "x"; then
+    indent="    -"
+    dnl Split multiple flags to one per line.
+    set fake [$1]
+    while test "${#}" -gt 1; do
+      line="${2}"; shift
+svn_dot_clangdxx_contents=`cat <<EOF
+$svn_dot_clangdxx_contents
+$indent $line
+EOF
+      `
+    done
+  fi
+])
+
+
+dnl Add well-known source and build paths to .clangd
+SVN_DOT_CLANGD([-I$abs_builddir/subversion])
+SVN_DOT_CLANGD([-I$abs_srcdir/subversion/include])
+SVN_DOT_CLANGD([-I$abs_srcdir/subversion/tests])
+SVN_DOT_CLANGDXX([-I$abs_srcdir/subversion/bindings/cxx/include])
+SVN_DOT_CLANGDXX([-I$abs_srcdir/subversion/bindings/cxx/tests])
+SVN_DOT_CLANGDXX([-I$abs_srcdir/subversion/bindings/javahl/native])
+SVN_DOT_CLANGD([-I$abs_srcdir/subversion/bindings/swig/perl/libsvn_swig_perl])
+SVN_DOT_CLANGD([-I$abs_srcdir/subversion/bindings/swig/python/libsvn_swig_py])
+SVN_DOT_CLANGD([-I$abs_srcdir/subversion/bindings/swig/ruby/libsvn_swig_ruby])
+
 # ==== Check for programs ====================================================
 
 # Look for a C compiler (before anything can set CFLAGS)
@@ -1783,6 +1857,18 @@ AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "
 
 AC_OUTPUT
 
+# ==== Generate the .clangd file =============================================
+if test "x$svn_dot_clangd_contents$svn_dot_clangdxx_contents" = "x" ; then
+   if test -f "$svn_dot_clangd_file"; then
+      AC_MSG_NOTICE([Removing $svn_dot_clangd_file])
+      rm -f "$svn_dot_clangd_file"
+   fi
+else
+  AC_MSG_NOTICE([Writing $svn_dot_clangd_file])
+  echo "$svn_dot_clangd_contents" > "$svn_dot_clangd_file"
+  echo "$svn_dot_clangdxx_contents" >> "$svn_dot_clangd_file"
+fi
+
 # ==== Print final messages to user ==========================================
 
 dnl Configure is long - users tend to miss warnings printed during it.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.