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.