On Mon, 31 Dec 2018 14:26:10 +0100
Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:

> If you remove CFLAGS/CXXFLAGS = -mlongcall and restart the build from
> scratch, are clang and friends properly linked?  Do you get a working
> llvm package?

This actually worked!  I cleaned the build, removed the -mlongcall,
and built llvm with gcc 6.5.0.  The build of llvm took about 28 hours
40 minutes with my PowerBook G4 at half speed = 666 MHz.  (gcc had
taken about 28 h 30 m.)  The removal of -mlongcall also removed most
or all compiler warnings from the log.  The build succeeded.  I can
now use clang++ to compile and run a simple C++ program.

I used the below diff in devel/llvm/Makefile.  I also used
gcc-6-2.diff from my earlier mail to switch ports-gcc to lang/gcc/6.

(Pascal Stumpf recently posted lang/gcc/8, but I'm keeping 6.5.0 for
now because I want to try building other packages.)

Now that I can run clang++, I can show the dependency problem from
my mail "Re: powerpc bulk build report" to ports [1]:

ghostborough$ cat loopy.cpp                                                    
#include <functional>

struct Thing {
        int get() const { return 0; }
};

int f(Thing t) {
        return std::mem_fn(&Thing::get)(t);
}
ghostborough$ clang++ -c loopy.cpp                                             
ghostborough$ doas pkg_delete g++
doas (kern...@ghostborough.my.domain) password: 
g++-6.5.0p0: ok
Read shared items: ok
ghostborough$ clang++ -c loopy.cpp                                             
loopy.cpp:8:14: error: no member named 'mem_fn' in namespace 'std'
        return std::mem_fn(&Thing::get)(t);
               ~~~~~^
1 error generated.

clang++ in the llvm package uses the headers from the g++ package,
but llvm has no dependency on g++.  After I pkg_delete g++, then
clang++ seems to find the old headers from base-gcc, but those
headers don't have C++11 features like std::mem_fn.

[1] https://marc.info/?l=openbsd-ports&m=154629731512667&w=2

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/llvm/Makefile,v
retrieving revision 1.202
diff -u -p -r1.202 Makefile
--- Makefile    15 Dec 2018 15:21:48 -0000      1.202
+++ Makefile    31 Dec 2018 19:26:26 -0000
@@ -83,8 +83,8 @@ CONFIGURE_ARGS =      -DLLVM_ENABLE_FFI:Bool=
 
 # Workaround relocation overflow
 .if ${MACHINE_ARCH} == "powerpc"
-CFLAGS +=              -mlongcall
-CXXFLAGS +=            -mlongcall
+#CFLAGS +=             -mlongcall
+#CXXFLAGS +=           -mlongcall
 # As a workaround for the size only build the PowerPC backend
 CONFIGURE_ARGS +=      -DLLVM_TARGETS_TO_BUILD="PowerPC"
 .elif ${MACHINE_ARCH} == "arm"
@@ -101,7 +101,7 @@ PKG_ARGS +=         -Dpowerpc=0
 TEST_TARGET =          check
 
 # XXX sync
-GCC_VER =              4.9.4
+GCC_VER =              6.5.0
 .if ${MACHINE_ARCH} == "amd64"
 GCC_CONFIG =           x86_64-unknown-openbsd${OSREV}
 .else


-- 
George Koehler <kern...@gmail.com>

Reply via email to