pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Oh, but to compile clang



On Fri, 4 May 2012 21:51:55 +0200
Jonathan Schleifer <js-pkgsrc-users%webkeks.org@localhost> wrote:

> I have been having the exact same problem for quite a while now. I
> tried adding an #undef NetBSD there which fixed it, but
> unfortunately, there is more broken with the headers so it completely
> failed later on with a completely different problem. 

$ svn info
Path: .
URL: http://llvm.org/svn/llvm-project/cfe/trunk
Repository Root: http://llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 155632

I have this version of clang compiled and working with gcc 4.6.  I used
the latest Subversion repository from about a week ago.  I had to
modify one gcc header file per below.   

In ctype_base.h, after 

        #include <sys/param.h>

I added 

        #if DNU_SYS_PARAMS_H
        # undef NetBSD
        # undef FSCALE
        #endif

For simplicity, I added this guard to Clang's header file:

$ svn diff
Index: include/llvm/ADT/SmallVector.h
===================================================================
--- include/llvm/ADT/SmallVector.h      (revision 155441)
+++ include/llvm/ADT/SmallVector.h      (working copy)
@@ -23,6 +23,12 @@
 #include <iterator>
 #include <memory>
 
+#ifdef NetBSD
+# if NetBSD == 199905
+#  error "NetBSD has been defined by sys/param.h"
+# endif
+#endif
+
 namespace llvm {

That way, if the "NetBSD" value leaks out of param.h, compilation fails
early with a clear message.  

That gets clang itslef compiled and working.  To actually use it to
compile C++ programs requires more support from NetBSD, notably
locale functions.  

--jkl


Home | Main Index | Thread Index | Old Index