[ITP] clangd
Takashi Yano via Cygwin-apps <[email protected]> Sun, 18 Jan 2026 08:56:15 +0900
| Newsgroups | gmane.os.cygwin.applications |
|---|---|
| Message-ID | <[email protected]> |
clangd understands the C++ code and adds smart features to the editor: code completion, compile errors, go-to-definition and more. clangd is a language server that can work with many editors via plugins. -- Takashi Yano <[email protected]>
clang_patches.tar.xz
(application/octet-stream, 270 KB) - not displayed
clang++wrapper
(text/plain, 341 B)
#!/bin/sh
if [ -z "${clang_resource_dir}" ]; then
clang_resource_dir="$(clang++ -print-resource-dir)"
fi
/usr/bin/clang++ \
-stdlib=libc++ -isystem /usr/include/c++/v1 \
$@ \
-L${clang_resource_dir}/lib/cygwin \
-lc++ -lclang_rt.builtins-x86_64 -lunwind \
-Wno-unused-command-line-argument \
${additional_option_for_clang}
clangd.cygport
(text/plain, 6.7 KB)
inherit cmake python3
NAME="clangd"
VERSION=20.1.8
RELEASE=1
CATEGORY="Devel"
SUMMARY="a language server for C/C++"
DESCRIPTION="clangd understands the C++ code and adds smart features to the editor: code completion, compile errors, go-to-definition and more. clangd is a language server that can work with many editors via plugins."
HOMEPAGE="https://clang.llvm.org/"
LICENSE="Apache-2.0 WITH LLVM-exception"
SRC_URI="
https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/llvm-project-${PV}.src.tar.xz
"
SRC_DIR="llvm-project-${PV}.src/llvm"
DISTCLEANFILES="
test/tools/llvm-objcopy/COFF/exe-bogus-assoc.test
../clang/lib/Driver/ToolChains/Cygwin.cpp
../clang/lib/Driver/ToolChains/Cygwin.h
../clang/test/CodeGen/X86/cygwin-varargs.c
../clang/test/Driver/cygwin.cpp
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/i686-pc-msys/bin/as
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/i686-pc-msys/bin/ld
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/i686-pc-msys/lib/.keep
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/lib/gcc/i686-pc-msys/10/crtbegin.o
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/lib/gcc/i686-pc-msys/10/crtend.o
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/lib/gcc/x86_64-pc-cygwin/10/crtbegin.o
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/lib/gcc/x86_64-pc-cygwin/10/crtend.o
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/x86_64-pc-cygwin/bin/as
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/x86_64-pc-cygwin/bin/ld
../clang/test/Driver/Inputs/basic_cross_cygwin_tree/usr/x86_64-pc-cygwin/lib/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/include/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/lib/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/include/c++/10/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/include/i686-pc-cygwin/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/include/i686-pc-cygwin/c++/10/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/include/x86_64-pc-msys/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/include/x86_64-pc-msys/c++/10/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/crt0.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/gcc/i686-pc-cygwin/10/crtbegin.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/gcc/i686-pc-cygwin/10/crtbeginS.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/gcc/i686-pc-cygwin/10/crtend.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/gcc/x86_64-pc-msys/10/crtbegin.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/gcc/x86_64-pc-msys/10/crtbeginS.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/gcc/x86_64-pc-msys/10/crtend.o
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/i686-pc-cygwin/.keep
../clang/test/Driver/Inputs/basic_cygwin_tree/usr/lib/x86_64-pc-msys/.keep
"
PATCH_URI="
0001-LLVM-Cygwin-Fix-symbol-visibility-definition.patch
0002-LLVM-Cygwin-Remove-special-case-for-CXX-extensions-o.patch
0003-LLVM-Cygwin-Fix-shared-library-name-136599.patch
0004-LLVM-Cygwin-Fix-Signals-compatibility-with-Cygwin-AP.patch
0005-LLVM-TargetParser-Handle-msys-targets-the-same-as-cy.patch
0006-LLVM-Cygwin-Define-_GNU_SOURCE-on-Cygwin-as-well.-13.patch
0007-Cygwin-Emit-COMDAT-name-correctly-for-Cygwin-138621.patch
0008-LLVM-Cygwin-add-workaround-for-blocking-connect-acce.patch
0009-Support-Cygwin-Fix-handling-of-Process-symbol-lookup.patch
0010-Cygwin-Define-LLVM_ABI-for-Cygwin-143222.patch
0011-Cygwin-CYGWIN-is-not-WIN32-in-current-CMake-143130.patch
0012-Cygwin-Don-t-use-version-script-for-Cygwin-target-14.patch
0013-LLVM-Tests-remove-exeext-from-lli-child-target-param.patch
0014-LLVM-Support-Cygwin-Add-threading-support-for-Cygwin.patch
0015-LLVM-Cygwin-Enable-dynamic-linking-of-libLLVM-146440.patch
0016-LLVM-Cygwin-Enable-conditions-that-are-shared-with-M.patch
0017-llvm-objcopy-COFF-Ignore-associative-sections-in-exe.patch
0018-lli-Fix-crash-with-no-process-syms-on-MinGW-151386.patch
0019-llvm-Enable-building-Analysis-plugins-on-Cygwin-1513.patch
0020-LLVM-adjust-lit.cfg.py-for-Cygwin-151416.patch
"
CLANG_PATCHES="
0101-Cygwin-Global-symbols-should-be-external-by-default-.patch
0102-Clang-Cygwin-Enable-few-conditions-that-are-shared-w.patch
0103-Cygwin-Enable-TLS-on-Cygwin-target-138618.patch
0104-Clang-Cygwin-Fix-symbol-visibility-definition-138118.patch
0105-Cygwin-RTTI-and-VTable-should-be-dllexport-ed-139798.patch
0106-Clang-Cygwin-Disable-shared-libs-on-Cygwin-by-defaul.patch
0107-Clang-Cygwin-Remove-erroneous-_WIN32-define-and-clea.patch
0108-Clang-Cygwin-don-t-use-Bsymbolic-functions-138217.patch
0109-hack-cygwin-allow-multiple-definition-in-c-index-tes.patch
0110-Clang-Driver-add-a-Cygwin-ToolChain-135691.patch
0111-Clang-Driver-use-__cxa_atexit-by-default-on-Cygwin.-.patch
0112-Clang-CMake-use-CMakePushCheckState-138783.patch
0113-CMake-respect-LLVMConfig.cmake-s-LLVM_DEFINITIONS.patch
0114-Cygwin-Internal-class-in-explicitly-instantiation-de.patch
0115-Cygwin-Template-instantiations-should-be-exported-by.patch
0116-Clang-Cygwin-va_list-must-be-treated-like-normal-Win.patch
0117-Clang-Cygwin-wint_t-is-unsigned-int-143117.patch
0118-scan-build-Windows-Fix-driver-name-transformation-in.patch
0119-libclang-Add-missing-dllexport-annotation-147108.patch
0120-libclang-Cygwin-Use-__declspec-dllexport-for-libclan.patch
0121-libclang-Cygwin-Use-LLVM_EXPORTED_SYMBOL_FILE-.def-f.patch
0122-Tests-Add-system-cygwin-feature-and-use-it.-152611.patch
"
SRC_URI+=" ${CLANG_PATCHES}"
SRC_URI+=" clang++wrapper"
CYGPORT_USE_UNSTABLE_API=1
src_patch_hook() {
sdir=$(pwd)
for proj in clang; do
eval list='$'${proj^^}_PATCHES
pushd ../${proj}
for pat in ${list}; do
inform "applying patch ${pat} (-p2):"
patch -p2 < ${sdir}/../../../../${pat}
done
popd
done
}
src_compile() {
echo "import myst_parser" | python3 || error "myst_parser required."
if [ $(clang++ -dumpversion | cut -d. -f1) -ge 21 ]; then
export additional_option_for_clang="
-Wno-unnecessary-virtual-specifier
-Wno-preferred-type-bitfield-enum-conversion
"
fi
export clang_resource_dir=$(clang++ -print-resource-dir)
cd ${B}
CYGCMAKE_GENERATOR="Ninja"
cygcmake \
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/usr/bin/clang \
-DCMAKE_CXX_COMPILER=${B}/../../clang++wrapper \
-DLLVM_ENABLE_LIBCXX=ON
cygninja clangd
}
src_install() {
cd ${B}
exeinto /usr/bin
doexe bin/clangd.exe
# doman share/man/man1/clangd.1
}
PKG_REQUIRES="libc++-devel" # needs c++ headers
BUILD_REQUIRES="
clang
libc++-devel
compiler-rt
libunwind-devel
python3
python39-sphinx
python39-pytz
"
llvm_patches.tar.xz
(application/octet-stream, 90 KB) - not displayed