On Tue Apr 02, 2019 at 11:08:13AM +0200, Jeremie Courreges-Anglas wrote:
> On Mon, Apr 01 2019, Rafael Sadowski <raf...@sizeofvoid.org> wrote:
> > On Mon Apr 01, 2019 at 12:04:38PM +0200, Jeremie Courreges-Anglas wrote:
> >> On Mon, Apr 01 2019, Rafael Sadowski <raf...@sizeofvoid.org> 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

Reply via email to