On Sun, Apr 05, 2015 at 09:56:34AM +0100, Stuart Henderson wrote: > On 2015/04/05 09:55, Sébastien Marie wrote: > > Currently the port of rustc (see openbsd-wip/lang/rustc) start by > > building llvm (using g++-4.8 as it need c++11) in order to build rustc. > > Does newer llvm require a c++11 standard library or is the older one > still usable?
I haven't tested a lot: my purpose was to package rustc, and not to package llvm :) What I have checked is that llvm complaint if building is done with base gcc: | The selected GCC C++ compiler is not new enough to build LLVM. Please | upgrade to GCC 4.7. and if I force the use of base gcc, I have the following error: | cc1plus: error: unrecognized command line option "-std=c++11" next, if I try to build newer llvm with llvm from ports, the configure have the following error: | We detected a missing feature in the standard C++ library that was known | to be missing in libstdc++4.6 and implemented in libstdc++4.7. There are | numerous C++11 problems with 4.6's library, and we don't support GCCs or | libstdc++ older than 4.7. You will need to update your system and ensure | Clang uses the newer standard library. same, if I bypass the check, build errors arrived very quickly... | error: no template named 'enable_if' in namespace 'std' | ... | error: no type named 'remove_reference' in namespace 'std' | ... | error: 'Callable' does not refer to a value | ... But the errors could be due to us llvm version: the version annonced (3.5) isn't exactly accurated: it is more something between 3.4 and 3.5 (if I recall the search I do when I have tried to build rustc with llvm from ports). > If at least the package can be made self-contained that > would be nice as it is pretty unappealing to pull in gcc 4.8/9 (as a > library dependency) when you pkg_add llvm. I have just checked the binaries of llvm that are builded for rustc (but aren't installed with using package: llvm is just a BUILD_DEP): all the binaries builded depends of libestdc++. So pkg_add llvm would install libstdc++-4.8.4p1 package (lang/gcc/4.8,-estdc). But from build point of vue, yes building llvm would required to first build lang/gcc. > Another possible issue is that depending on ports gcc during build is > that there will likely be a negative impact on bulk build time, llvm is > on the path to a number of large ports. Not sure how bad this will be. A test would be needed to measure the impact. Just add a BUILD_DEP for gcc in llvm ports should be suffisant for measure it as first approch. -- Sébastien Marie