On Tue Apr 02, 2019 at 11:08:13AM +0200, Jeremie Courreges-Anglas wrote:
> On Mon, Apr 01 2019, Rafael Sadowski <[email protected]> wrote:
> > On Mon Apr 01, 2019 at 12:04:38PM +0200, Jeremie Courreges-Anglas wrote:
> >> On Mon, Apr 01 2019, Rafael Sadowski <[email protected]> wrote:
> >> > Enable clang extra tools in devel/llvm to provide some useful C/C++
> >> > tools. I started with the extra tools because we don't have an C++
> >> > Language
> >> > Server Protocol (LSP) server in the tree but I want to play with it.
> >> >
> >> > However, build and works fine on amd64. Notable changes:
> >> >
> >> > - Zap all ":Bool" tags in cmake configure args. It's 2019 and cmake is
> >> > smart enough.
> >>
> >> I'm no cmake guru, what do the cmake authors/best practices say here?
> >
> > https://cmake.org/cmake/help/v3.6/manual/cmake.1.html See -D:
> >
> > "If the :<type> portion is given it must be one of the types specified
> > by the set() command documentation for its CACHE signature."
> >
> > Okay this is useless in almost all our cases because what we do is to
> > modify an option()[1] and NOT a set() with a type.
> >
> > For example, LLVM_ENABLE_RTTI is in llvm defined as:
> >
> > option(LLVM_ENABLE_RTTI "Enable run time type information" OFF)
> >
> > and we can read the following in [1]:
> >
> > "Provide an option for the user to select as ON or OFF. If no initial
> > value is provided, OFF is used."
> >
> > I see no type hint. So the best practices should be:
> >
> > Use ON and OFF without a type!
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> > This is the reason why other stuff works also:
> >
> > From logical-expressions:
> > $<BOOL:string>
> >
> > Converts string to 0 or 1 according to the rules of the if()
> > command. Evaluates to 0 if any of the following is true:
> >
> > - string is empty,
> > - string is a case-insensitive equal of 0, FALSE, OFF, N, NO, IGNORE,
> > or NOTFOUND, or
> > - string ends in the suffix -NOTFOUND (case-sensitive).
> >
> > Otherwise evaluates to 1.
> >
> > 1: https://cmake.org/cmake/help/v3.0/command/option.html?highlight=option
> > 2:
> > https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html#logical-expressions
>
> Hmmk so using just ON/OFF just looks cleaner. Unless someone goes on
> a rampage to unify all cmake CONFIGURE_ARGS in the tree, I'd prefer to
> minimize churn and keep llvm consistent.
>
> >>
> >> > - Set CLANG_ENABLE_STATIC_ANALYZER=True, CLANG_INCLUDE_TESTS=True to
> >> > build clang-tidy and enable test. (It is ignored if the folder extra
> >> > don't exists)
> >> > - Adjust WANTLIB
> >> >
> >> > Comments? OK?
> >>
> >> In this port I'm caring mostly about what is actually used by the ports
> >> tree. So if the extras subpackage breaks somehow, expect me to disable
> >> it, not to fix it.
> >
> > I'll take care of -extras
>
> We still need to ensure that -extras builds reliably, and that it builds
> on non-amd64. That's the main reason why I prefer to postpone this
> after 6.5.
>
> >>
> >> You say you "want to play with it". Do you have an actual use case?
> >> I think it's too late to add "extra" stuff in this release cycle.
> >
> > Clang-tidy and clangd worked-out-of box with qt-creator and a camke+c/c++
> > project.
> >
> > My future use-case is clangd+vim = c++ autocomplete. But qt-creator
> > proves to me that it works, now.
> >
> >>
> >> Comments inline,
> >>
> >
> > New diff with Stuart'S notes. Thanks Stuart.
>
> Stuart also had valid points about DESCR and PLIST. ;)
>
> --
> jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
>
New diff with following changes:
- Rename extras to clang-extras
- More generic aka. lazy DESCR
- Sorted PLIST
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/llvm/Makefile,v
retrieving revision 1.216
diff -u -p -u -p -r1.216 Makefile
--- Makefile 9 Mar 2019 06:18:11 -0000 1.216
+++ Makefile 16 Apr 2019 20:42:06 -0000
@@ -8,9 +8,10 @@ ONLY_FOR_ARCHS = ${LLVM_ARCHS}
DPB_PROPERTIES = parallel
-MULTI_PACKAGES = -main -python -lldb
+MULTI_PACKAGES = -main -python -lldb -clang-extras
COMMENT-main = modular, fast C/C++/ObjC compiler, static analyzer and tools
COMMENT-lldb = LLDB debugger
+COMMENT-clang-extras = clang extra tools
COMMENT-python = Python bindings for Clang
LLVM_V = 7.0.1
@@ -20,13 +21,15 @@ PKGSPEC-main = llvm-=${LLVM_V}
PKGNAME-main = llvm-${LLVM_V}
PKGNAME-python = py-llvm-${LLVM_V}
PKGNAME-lldb = lldb-${LLVM_V}
+PKGNAME-clang-extras = clang-extras-${LLVM_V}
REVISION-main = 9
REVISION-lldb = 0
CATEGORIES = devel
DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \
cfe-${LLVM_V}.src${EXTRACT_SUFX} \
lld-${LLVM_V}.src${EXTRACT_SUFX} \
- lldb-${LLVM_V}.src${EXTRACT_SUFX}
+ lldb-${LLVM_V}.src${EXTRACT_SUFX} \
+ clang-tools-extra-${LLVM_V}.src${EXTRACT_SUFX}
MASTER_SITES = https://www.llvm.org/releases/${LLVM_V}/
EXTRACT_SUFX = .tar.xz
@@ -42,10 +45,10 @@ MAINTAINER= Jeremie Courreges-Anglas <jc
# BSD
PERMIT_PACKAGE_CDROM = Yes
-WANTLIB = ${COMPILER_LIBCXX} c curses edit form m panel pthread \
+WANTLIB = ${COMPILER_LIBCXX} c edit form m panel pthread \
${MODPY_WANTLIB} z
-PSEUDO_FLAVORS = no_lldb
+PSEUDO_FLAVORS = no_lldb no_tools
FLAVOR ?=
NOT_FOR_ARCHS-lldb = ${GCC4_ARCHS}
@@ -72,15 +75,21 @@ WANTLIB-python = clang
RUN_DEPENDS-python = ${MODPY_RUN_DEPENDS}
LIB_DEPENDS-python = ${BUILD_PKGPATH},-main
-WANTLIB-lldb = clang
+WANTLIB-lldb = ${COMPILER_LIBCXX} clang c curses edit form m panel
+WANTLIB-lldb += ${MODPY_WANTLIB}
LIB_DEPENDS-lldb = ${BUILD_PKGPATH},-main
RUN_DEPENDS-lldb = ${MODPY_RUN_DEPENDS} \
devel/py-six
-SEPARATE_BUILD = Yes
+WANTLIB-clang-extras = ${COMPILER_LIBCXX} c m clang
+LIB_DEPENDS-clang-extras = ${BUILD_PKGPATH},-main
+RUN_DEPENDS-clang-extras = ${MODPY_RUN_DEPENDS}
+
CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \
-DLLVM_ENABLE_TERMINFO:Bool=False \
-DLLVM_ENABLE_RTTI:Bool=True \
+ -DCLANG_ENABLE_STATIC_ANALYZER=True \
+ -DCLANG_INCLUDE_TESTS=True \
-DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \
-DLLVM_LINK_LLVM_DYLIB:Bool=True \
-DLLVM_BUILD_LLVM_DYLIB:Bool=True \
@@ -111,7 +120,7 @@ PKG_ARGS += -Dpowerpc=1
PKG_ARGS += -Dpowerpc=0
.endif
-TEST_TARGET = check
+TEST_TARGET = check check-clang check-clang-tools
# XXX sync
GCC_VER = 4.9.4
@@ -127,12 +136,16 @@ post-extract:
mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKSRC}/tools/clang
mv ${WRKDIR}/lld-${LLVM_V}.src ${WRKSRC}/tools/lld
mv ${WRKDIR}/lldb-${LLVM_V}.src ${WRKSRC}/tools/lldb
+ mv ${WRKDIR}/clang-tools-extra-${LLVM_V}.src
${WRKSRC}/tools/clang/tools/extra
pre-configure:
@${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp
-@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python
.if !${BUILD_PACKAGES:M-lldb}
rm -r ${WRKSRC}/tools/lldb
+.endif
+.if !${BUILD_PACKAGES:M-clang-extras}
+ rm -r ${WRKSRC}/tools/clang/tools/extra
.endif
post-build:
Index: distinfo
===================================================================
RCS file: /cvs/ports/devel/llvm/distinfo,v
retrieving revision 1.30
diff -u -p -u -p -r1.30 distinfo
--- distinfo 28 Jan 2019 06:27:28 -0000 1.30
+++ distinfo 16 Apr 2019 20:42:06 -0000
@@ -1,8 +1,10 @@
SHA256 (cfe-7.0.1.src.tar.xz) = pFti3eXX1f3N+odrCvkvFk1DSwbp6JtdCxy8Zd/j9Bg=
+SHA256 (clang-tools-extra-7.0.1.src.tar.xz) =
TJPH0rsHkjqLJy2j73kUQ4CArraTcl9PxcGc0OJhO+0=
SHA256 (lld-7.0.1.src.tar.xz) = iGmqst0tjgDWmUM1LTFm0VnX6uJhX2amhPSgmZ/HQDE=
SHA256 (lldb-7.0.1.src.tar.xz) = drRr51tBKj0i8NJieTBq5+J0/k15iKIYTFKcOKanaYI=
SHA256 (llvm-7.0.1.src.tar.xz) = o438TbRxAux53MKqYek3IsX28G8KlhBzvYS3j7lJQZs=
SIZE (cfe-7.0.1.src.tar.xz) = 12488668
+SIZE (clang-tools-extra-7.0.1.src.tar.xz) = 901368
SIZE (lld-7.0.1.src.tar.xz) = 912812
SIZE (lldb-7.0.1.src.tar.xz) = 19384628
SIZE (llvm-7.0.1.src.tar.xz) = 28311056
Index: pkg/DESCR-clang-extras
===================================================================
RCS file: pkg/DESCR-clang-extras
diff -N pkg/DESCR-clang-extras
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pkg/DESCR-clang-extras 16 Apr 2019 20:42:06 -0000
@@ -0,0 +1,2 @@
+The clang-tools-extra contains helpful developer tools using Clang's tooling
+API.
Index: pkg/PLIST-clang-extras
===================================================================
RCS file: pkg/PLIST-clang-extras
diff -N pkg/PLIST-clang-extras
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pkg/PLIST-clang-extras 16 Apr 2019 20:42:06 -0000
@@ -0,0 +1,46 @@
+@comment $OpenBSD: PLIST-extras,v$
+@bin bin/clang-apply-replacements
+@bin bin/clang-change-namespace
+@bin bin/clang-include-fixer
+@bin bin/clang-query
+@bin bin/clang-reorder-fields
+@bin bin/clang-tidy
+@bin bin/clangd
+@bin bin/find-all-symbols
+@bin bin/modularize
+lib/libclangApplyReplacements.a
+lib/libclangChangeNamespace.a
+lib/libclangDaemon.a
+lib/libclangDoc.a
+lib/libclangIncludeFixer.a
+lib/libclangIncludeFixerPlugin.a
+lib/libclangMove.a
+lib/libclangQuery.a
+lib/libclangReorderFields.a
+lib/libclangTidy.a
+lib/libclangTidyAbseilModule.a
+lib/libclangTidyAndroidModule.a
+lib/libclangTidyBoostModule.a
+lib/libclangTidyBugproneModule.a
+lib/libclangTidyCERTModule.a
+lib/libclangTidyCppCoreGuidelinesModule.a
+lib/libclangTidyFuchsiaModule.a
+lib/libclangTidyGoogleModule.a
+lib/libclangTidyHICPPModule.a
+lib/libclangTidyLLVMModule.a
+lib/libclangTidyMPIModule.a
+lib/libclangTidyMiscModule.a
+lib/libclangTidyModernizeModule.a
+lib/libclangTidyObjCModule.a
+lib/libclangTidyPerformanceModule.a
+lib/libclangTidyPlugin.a
+lib/libclangTidyPortabilityModule.a
+lib/libclangTidyReadabilityModule.a
+lib/libclangTidyUtils.a
+lib/libclangTidyZirconModule.a
+lib/libfindAllSymbols.a
+share/clang/clang-include-fixer.el
+share/clang/clang-include-fixer.py
+share/clang/clang-tidy-diff.py
+share/clang/run-clang-tidy.py
+share/clang/run-find-all-symbols.py