On Fri, Jan 04, 2019 at 12:47:26PM +0100, Jeremie Courreges-Anglas wrote: > On Mon, Dec 31 2018, George Koehler <kern...@gmail.com> wrote: > > On Mon, 31 Dec 2018 00:15:56 -0700 (MST) > > lan...@openbsd.org wrote: > > > >> http://build-failures.rhaalovely.net//powerpc/2018-12-14/x11/qt5/qtbase.log > > > > Fails to #include <type_traits>, a C++ standard library header. > > Is llvm missing a dependency on g++? > > Yup. On sparc64: > > -->8-- > @depend devel/gtest:gtest-*:gtest-1.8.0p3 > @depend lang/gcc/4.9,-libs:gcc-libs->=4.9,<4.10:gcc-libs-4.9.4p12 > @depend lang/python/2.7,-main:python->=2.7,<2.8:python-2.7.15p1 > --8<-- > > > At the top of the log, gcc-4.9.4p15 and gcc-libs-4.9.4p15 and > > llvm-6.0.1p19 get installed, but g++ doesn't. > > > >> ===> Compiler link: gcc -> /usr/local/bin/clang > >> ===> Compiler link: cc -> /usr/local/bin/clang > >> ===> Compiler link: clang -> /usr/local/bin/clang > >> ===> Compiler link: g++ -> /usr/local/bin/clang++ > >> ===> Compiler link: c++ -> /usr/local/bin/clang++ > >> ===> Compiler link: clang++ -> /usr/local/bin/clang++ > > > > The compiler is ports-clang from the llvm package. The compiler > > needs a C++ library. It can't use libc++ from base-clang because > > powerpc doesn't have base-clang. It can't use libstdc++ from > > base-gcc because that lib can't do C++11. > > > > It must use libestdc++ from ports-gcc. The library is in the > > gcc-libs package but its headers are in the g++ package! This is > > odd because most libraries have their headers in the same package. > > > > lang/clang/clang.port.mk uses `MODULES += gcc4` to find libestdc++ > > and add the dependency on gcc-libs. Then lang/gcc/4.9/gcc4.port.mk > > does `MODGCC4_LANGS += c` to add a dependency on the gcc package. > > There seems to be no dependency on the g++ package. This might > > allow dpb to junk g++ after it builds llvm (using g++) and before > > it builds qtbase. > > Thanks a lot for the analysis. The problem is the way the dep on g++ is > added: CHOSEN_COMPILER can only be known after including <bsd.port.mk>, > but IIUC at that time it's too late to amend RUN/TEST_DEPENDS. > > cc'ing Marc in case he has more input, and Landry since he's probably > hitting this issue since a long time. > > Build on ongoing on sparc64 with the diff below:
Yep, using PROPERTIES is the way to go... > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/llvm/Makefile,v > retrieving revision 1.203 > diff -u -p -r1.203 Makefile > --- Makefile 4 Jan 2019 00:14:57 -0000 1.203 > +++ Makefile 4 Jan 2019 11:36:37 -0000 > @@ -20,7 +20,7 @@ PKGSPEC-main = llvm-=${LLVM_V} > PKGNAME-main = llvm-${LLVM_V} > PKGNAME-python = py-llvm-${LLVM_V} > PKGNAME-lldb = lldb-${LLVM_V} > -REVISION-main = 21 > +REVISION-main = 22 > REVISION-python = 4 > REVISION-lldb = 1 > CATEGORIES = devel > @@ -61,6 +61,13 @@ BUILD_DEPENDS += devel/swig \ > textproc/py-sphinx > RUN_DEPENDS += devel/gtest > > +.include <bsd.port.arch.mk> > + > +.if !${PROPERTIES:Mclang} > +TEST_DEPENDS += lang/gcc/${MODGCC4_VERSION},-c++ > +RUN_DEPENDS += lang/gcc/${MODGCC4_VERSION},-c++ > +.endif > + > # clang python module loads libclang.so dynamically with cdll.LoadLibrary() > WANTLIB-python = clang > RUN_DEPENDS-python = ${MODPY_RUN_DEPENDS} > @@ -108,8 +115,6 @@ GCC_CONFIG = ${MACHINE_ARCH}-unknown-op > CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include > SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V GCC_VER GCC_CONFIG > > -.include <bsd.port.arch.mk> > - > post-extract: > mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKSRC}/tools/clang > mv ${WRKDIR}/lld-${LLVM_V}.src ${WRKSRC}/tools/lld > @@ -146,8 +151,3 @@ post-install: > .endif > > .include <bsd.port.mk> > - > -.if ${CHOSEN_COMPILER} == "ports-gcc" > -TEST_DEPENDS += lang/gcc/${MODGCC4_VERSION},-c++ > -RUN_DEPENDS += lang/gcc/${MODGCC4_VERSION},-c++ > -.endif > > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE