tech-toolchain archive

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

Initial LLVM/clang patch



Hi all,
attached patch + tarball contain enough magic to get a working clang for
AMD64. I could like to get this into the tree to make it simpler to test
and integrated the changes required for doing a (almost) full world
build. Things like support for !x86 targets in clang etc can be provided
incrementally as well.

At the moment, I do not plan to import the upstream LLVM or clang
sources. src/external/llvm/Makefile has a checkout target using svn to
get the "proven" revision as specified in Makefile.inc. This avoids
having to deal with regular imports and repo churn associated.

Status is that with a bunch of other patches and some smaller hacks,
the AMD64 release build finishes almost. The GCC libraries and bootxx
are the primary issues.

Joerg
Index: src/distrib/sets/lists/comp/mi
===================================================================
--- src/distrib/sets/lists/comp/mi
+++ src/distrib/sets/lists/comp/mi
@@ -11,10 +11,12 @@
 ./usr/bin/c++                                  comp-cxx-bin            gcccmds
 ./usr/bin/c++filt                              comp-cxx-bin            binutils
 ./usr/bin/c89                                  comp-c-bin
 ./usr/bin/c99                                  comp-c-bin
 ./usr/bin/cc                                   comp-c-bin              gcccmds
+./usr/bin/clang                                        comp-c-bin              
llvm
+./usr/bin/clang++                              comp-c-bin              llvm
 ./usr/bin/config                               comp-util-bin
 ./usr/bin/crunchgen                            comp-c-bin
 ./usr/bin/crunchide                            comp-c-bin
 ./usr/bin/ctfconvert                           comp-util-bin           dtrace
 ./usr/bin/ctfdump                              comp-util-bin           dtrace
@@ -44,10 +46,11 @@
 ./usr/bin/gprof                                        comp-debug-bin          
binutils
 ./usr/bin/lex                                  comp-c-bin
 ./usr/bin/lint                                 comp-c-bin
 ./usr/bin/lorder                               comp-util-bin
 ./usr/bin/luac                                 comp-util-bin
+./usr/bin/llvm-tblgen                          comp-c-bin              llvm
 ./usr/bin/menuc                                        comp-c-bin
 ./usr/bin/mkstr                                        comp-c-bin
 ./usr/bin/mkubootimage                         comp-util-bin
 ./usr/bin/msgattrib                            comp-c-bin
 ./usr/bin/msgc                                 comp-c-bin

Index: src/distrib/sets/sets.subr
===================================================================
--- src/distrib/sets/sets.subr
+++ src/distrib/sets/sets.subr
@@ -219,10 +219,11 @@
 #      iscsi                   ${MKISCSI} != no
 #      kerberos                ${MKKERBEROS} != no
 #      kmod                    ${MKKMOD} != no
 #      ldap                    ${MKLDAP} != no
 #      lint                    ${MKLINT} != no
+#      llvm                    ${MKLLVM} != no
 #      lvm                     ${MKLVM} != no
 #      man                     ${MKMAN} != no
 #      manpages                ${MKMANPAGES} != no
 #      manz                    ${MKMANZ} != no
 #      mdns                    ${MKMDNS} != no

Index: src/external/bsd/Makefile
===================================================================
--- src/external/bsd/Makefile
+++ src/external/bsd/Makefile
@@ -11,14 +11,17 @@
 .if (${MKISCSI} != "no")
 SUBDIR+= iscsi 
 .endif
 .if (${MKLDAP} != "no")
 SUBDIR+= openldap
+.endif
+.if (${MKLLVM} != "no")
+SUBDIR+= llvm
 .endif
 .if (${MKCRYPTO} != "no")
 SUBDIR+= pkg_install ../../crypto/external/bsd
 .endif
 .if (${MKPCC} != "no")
 SUBDIR+= pcc
 .endif
 
 .include <bsd.subdir.mk>

Index: src/share/mk/bsd.dep.mk
===================================================================
--- src/share/mk/bsd.dep.mk
+++ src/share/mk/bsd.dep.mk
@@ -55,12 +55,12 @@
 
 .C.d .cc.d .cpp.d .cxx.d:
        ${_MKTARGET_CREATE}
        ${MKDEP} -f ${.TARGET} -- ${MKDEPFLAGS} \
            ${CXXFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
-           ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} \
-                       ${DESTDIR}/usr/include/g++} \
+           ${HOSTLIB:U${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} \
+                       ${DESTDIR}/usr/include/g++}} \
            ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}
 
 .endif # defined(SRCS)                                                 # }
 
 ##### Clean rules

Index: src/share/mk/bsd.lib.mk
===================================================================
--- src/share/mk/bsd.lib.mk
+++ src/share/mk/bsd.lib.mk
@@ -62,11 +62,12 @@
 
 ##### Build and install rules
 MKDEP_SUFFIXES?=       .o .po .pico .go .ln
 
 # Use purely kernel private headers in rump builds
-.if !defined(RUMPKERNEL)
+# Skip NetBSD headers for the toolchain builds
+.if !defined(RUMPKERNEL) && !defined(HOSTLIB)
 .if empty(CPPFLAGS:M-nostdinc)
 CPPFLAGS+=     ${DESTDIR:D-nostdinc ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include}
 .endif
 .if empty(CXXFLAGS:M-nostdinc++)
 CXXFLAGS+=     ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} 
${DESTDIR}/usr/include/g++}

Index: src/share/mk/bsd.own.mk
===================================================================
--- src/share/mk/bsd.own.mk
+++ src/share/mk/bsd.own.mk
@@ -300,10 +300,11 @@
 TOOL_SPARKCRC=         ${TOOLDIR}/bin/${_TOOL_PREFIX}sparkcrc
 TOOL_STAT=             ${TOOLDIR}/bin/${_TOOL_PREFIX}stat
 TOOL_STRFILE=          ${TOOLDIR}/bin/${_TOOL_PREFIX}strfile
 TOOL_SUNLABEL=         ${TOOLDIR}/bin/${_TOOL_PREFIX}sunlabel
 TOOL_TBL=              ${TOOLDIR}/bin/${_TOOL_PREFIX}tbl
+TOOL_TBLGEN=           ${TOOLDIR}/bin/${_TOOL_PREFIX}tblgen
 TOOL_TIC=              ${TOOLDIR}/bin/${_TOOL_PREFIX}tic
 TOOL_UUDECODE=         ${TOOLDIR}/bin/${_TOOL_PREFIX}uudecode
 TOOL_VGRIND=           ${TOOLDIR}/bin/${_TOOL_PREFIX}vgrind -f
 TOOL_ZIC=              ${TOOLDIR}/bin/${_TOOL_PREFIX}zic
 
@@ -378,10 +379,11 @@
 TOOL_SPARKCRC=         sparkcrc
 TOOL_STAT=             stat
 TOOL_STRFILE=          strfile
 TOOL_SUNLABEL=         sunlabel
 TOOL_TBL=              tbl
+TOOL_TBLGEN=           llvm-tblgen
 TOOL_TIC=              tic
 TOOL_UUDECODE=         uudecode
 TOOL_VGRIND=           vgrind -f
 TOOL_ZIC=              zic
 
@@ -755,11 +757,11 @@
 #
 _MKVARS.no= \
        MKBSDTAR MKCRYPTO_IDEA MKCRYPTO_MDC2 MKCRYPTO_RC5 MKDEBUG MKDEBUGLIB \
        MKDTRACE MKEXTSRC \
        MKMANDOC MKMANZ MKOBJDIRS \
-       MKPCC MKPCCCMDS \
+       MKLLVM MKPCC MKPCCCMDS \
        MKPIGZGZIP \
        MKREPRO \
        MKSOFTFLOAT MKSTRIPIDENT \
        MKUNPRIVED MKUPDATE MKX11 MKZFS
 .for var in ${_MKVARS.no}

Index: src/share/mk/bsd.prog.mk
===================================================================
--- src/share/mk/bsd.prog.mk
+++ src/share/mk/bsd.prog.mk
@@ -51,16 +51,19 @@
 AFLAGS+=       ${PIE_AFLAGS}
 LDFLAGS+=      ${PIE_LDFLAGS}
 .endif
 
 ##### Default values
+.if !defined(HOSTLIB)
 .if empty(CPPFLAGS:M-nostdinc)
 CPPFLAGS+=     ${DESTDIR:D-nostdinc ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include}
 .endif
 .if empty(CXXFLAGS:M-nostdinc++)
 CXXFLAGS+=     ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} 
${DESTDIR}/usr/include/g++}
 .endif
+.endif
+
 CFLAGS+=       ${COPTS}
 OBJCFLAGS+=    ${OBJCOPTS}
 MKDEP_SUFFIXES?=       .o .ln
 
 # CTF preserve debug symbols

Index: src/tools/Makefile
===================================================================
--- src/tools/Makefile
+++ src/tools/Makefile
@@ -60,10 +60,20 @@
                .WAIT disklabel \
                .WAIT paxctl \
                .WAIT fdisk \
                .WAIT installboot \
                pwd_mkdb stat strfile sunlabel zic
+
+.if ${MKLLVM} != "no"
+SUBDIR+= \
+       llvm .WAIT \
+       llvm-lib/libLLVMSupport .WAIT \
+       llvm-tblgen .WAIT \
+       llvm-include .WAIT \
+       llvm-lib .WAIT \
+       llvm-clang
+.endif
 
 .if ${MKMAN} != "no" || ${MKDOC} != "no" || ${MKHTML} != "no"
 .  if ${MKGROFF} != "no"
 SUBDIR+=       groff
 .  endif

Attachment: clang-base.tar.gz
Description: Binary data



Home | Main Index | Thread Index | Old Index