Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Aug 2013 20:46:35 GMT
From:      Brooks Davis <brooks@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 231651 for review
Message-ID:  <201308022046.r72KkZwl078531@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@231651?ac=10

Change 231651 by brooks@brooks_zenith on 2013/08/02 20:46:24

	Add support for WITH_LLVM_INSTRUMENTED and probably WITH_TESLA
	to bsd.prog.mk.  Disabled instrumentation in rtld and bootstrap
	tools and disble building /rescue when either WITH_ option is
	set.

Affected files ...

.. //depot/projects/ctsrd/tesla/src/Makefile.inc1#16 edit
.. //depot/projects/ctsrd/tesla/src/libexec/rtld-elf/Makefile#2 edit
.. //depot/projects/ctsrd/tesla/src/share/mk/bsd.libnames.mk#4 edit
.. //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#9 edit
.. //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#14 edit
.. //depot/projects/ctsrd/tesla/src/sys/boot/i386/Makefile.inc#2 edit

Differences ...

==== //depot/projects/ctsrd/tesla/src/Makefile.inc1#16 (text+ko) ====

@@ -73,7 +73,7 @@
 .if ${MK_KERBEROS} != "no"
 SUBDIR+=kerberos5
 .endif
-.if ${MK_RESCUE} != "no"
+.if ${MK_RESCUE} != "no" && ${MK_LLVM_INSTRUMENTED} == "no"
 SUBDIR+=rescue
 .endif
 SUBDIR+=sbin
@@ -237,7 +237,8 @@
 		DESTDIR= \
 		BOOTSTRAPPING=${OSRELDATE} \
 		SSP_CFLAGS= \
-		-DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
+		-DWITHOUT_HTML -DWITHOUT_INFO -DNO_LLVM_IR -DNO_LINT \
+		-DWITHOUT_MAN \
 		-DNO_PIC -DNO_PROFILE -DNO_SHARED \
 		-DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD
 
@@ -1270,7 +1271,7 @@
 _gcc_tools= gnu/usr.bin/cc/cc_tools
 .endif
 
-.if ${MK_RESCUE} != "no"
+.if ${MK_RESCUE} != "no" && ${MK_LLVM_INSTRUMENTED} == "no"
 _rescue= rescue/rescue
 .endif
 

==== //depot/projects/ctsrd/tesla/src/libexec/rtld-elf/Makefile#2 (text+ko) ====

@@ -2,6 +2,7 @@
 
 .include <bsd.own.mk>
 MK_SSP=		no
+NO_LLVM_IR=	yes
 
 PROG?=		ld-elf.so.1
 SRCS=		rtld_start.S \

==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.libnames.mk#4 (text+ko) ====

@@ -156,6 +156,7 @@
 LIBTACPLUS?=	${DESTDIR}${LIBDIR}/libtacplus.a
 LIBTERMCAP?=	${DESTDIR}${LIBDIR}/libtermcap.a
 LIBTERMLIB?=	"don't use LIBTERMLIB, use LIBTERMCAP"
+LIBTESLA?=	${DESTDIR}${LIBDIR}/libtesla.a
 LIBTINFO?=	"don't use LIBTINFO, use LIBNCURSES"
 LIBUFS?=	${DESTDIR}${LIBDIR}/libufs.a
 LIBUGIDFW?=	${DESTDIR}${LIBDIR}/libugidfw.a

==== //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#9 (text+ko) ====

@@ -52,7 +52,27 @@
 .endif
 
 .if defined(SRCS) && !empty(SRCS)
+# XXX: currently tesla can't handle C++ so build C++ code normaly in the
+# WITH_TESLA case.
+.if defined(NO_LLVM_IR) || ${MK_LLVM_INSTRUMENTED} == "no" || \
+    (${MK_TESLA} != "no" && defined(PROG_CXX))
 OBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
+.else
+# XXX: should blow up if other SRCS types are found
+OBJS+=		${SRCS:M*.bin:R:S/$/.o/g:N.o} ${SRCS:M*.[Ss]:R:S/$/.o/g:N.o}
+LLVM_CFILES=	${SRCS:M*.c} \
+		${SRCS:M*.cc} ${SRCS:M*.cpp} ${SRCS:M*.cxx} ${SRCS:M*.C} \
+		${SRCS:M*.l:R:S/$/.c/:N.c} ${SRCS:M*.y:R:S/$/.c/:N.c}
+OIRS=		${LLVM_CFILES:R:S/$/.o${LLVM_IR_TYPE}/}
+INSTR_IRS=	${LLVM_CFILES:R:S/$/.instr${LLVM_IR_TYPE}/}
+INSTR_OBJS=	${LLVM_CFILES:R:S/$/.instro/}
+OBJS+=		${INSTR_OBJS}
+CLEANFILES+=	${OIRS} ${INSTR_IRS} ${INSTR_OBJS}
+.if ${MK_TESLA} != "no"
+TESLA_FILES=	${LLVM_CFILES:R:S/$/.tesla/}
+CLEANFILES+=	${TESLA_FILES} tesla.manifest
+.endif
+.endif
 
 .if target(beforelinking)
 beforelinking: ${OBJS}
@@ -69,47 +89,15 @@
 .endif
 .endif
 
-# XXX: forced assignment due to make not figuring out how to make things
-# from generated .c files (which are added to SRCS later).
-CSRC_OBJS:=	${SRCS:M*.c:R:S/$/.object/:N.object}
-CXXSRC_OBJS:=	${SRCS:M*.cc:R:S/$/.object/:N.object} \
-		${SRCS:M*.cpp:R:S/$/.object/:N.object} \
-		${SRCS:M*.cxx:R:S/$/.object/:N.object} \
-		${SRCS:M*.C:R:S/$/.object/:N.object}
-SRC_OBJS=	${CSRC_OBJS} ${CXX_OBJS}
-
-TESLA_FILES=	${CSRC_OBJS:.object=.tesla}
-OLLS=		${CSRC_OBJS:.object=.oll}
-INSTRLLS=	${CSRC_OBJS:.object=.instrll}
-INSTROBJS=	${CSRC_OBJS:.object=.instro}
-CLEANFILES+=	${TESLA_FILES} tesla.manifest ${OLLS} ${INSTRLLS} ${INSTROBJS} \
-		${PROG}.instrumented
-
+.if ${MK_TESLA} != "no"
 tesla.manifest: ${TESLA_FILES}
 	cat ${TESLA_FILES} > ${.TARGET}
 
-tesla: ${PROG}.instrumented
-
-${PROG}.instrumented: ${INSTROBJS}
-	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${INSTROBJS} ${LDADD} -ltesla
-
-.if defined(LLVM_IR) && !defined(NO_LLVM_IR)
-LOBJS:=		${SRC_OBJS:.object=.obc}
-CLEANFILES+=	${PROG}.bc ${LOBJS}
-
-.if !empty(LOBJS)
-all: ${PROG}.bc
-${PROG}.bc: ${LOBJS}
-	${LLVM_LINK} -o ${.TARGET} ${LOBJS}
-
-all: ${PROG}.bc-opt
-${PROG}.bc-opt: ${PROG}.bc
-.if empty(OPT_PASSES)
-	cp ${PROG}.bc ${.TARGET}
+DPADD+=	${LIBTESLA}
+LDADD+= -ltesla
 .else
-	${OPT} -o ${.TARGET} ${OPT_PASSES} ${PROG}.bc
-.endif
-.endif
+tesla.manifest:
+	touch ${.TARGET}
 .endif
 
 .if	${MK_MAN} != "no" && !defined(MAN) && \

==== //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#14 (text+ko) ====

@@ -233,12 +233,6 @@
 	cp -fp ${.IMPSRC} ${.TARGET}
 	chmod a+x ${.TARGET}
 
-.c.obc:
-	${CC} ${CFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET}
-
-.c.oll:
-	${CC} ${CFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET}
-
 .c.ln:
 	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
 	    touch ${.TARGET}
@@ -255,6 +249,12 @@
 	${CC} ${CFLAGS} -c ${.IMPSRC}
 	${CTFCONVERT_CMD}
 
+.c.obc:
+	${CC} ${CFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET}
+
+.c.oll:
+	${CC} ${CFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET}
+
 .c.tesla:
 	${TESLA} analyse ${.IMPSRC} -o ${.TARGET} -- ${CFLAGS} ${XFLAGS} -D TESLA
 
@@ -264,6 +264,12 @@
 .cc.o .cpp.o .cxx.o .C.o:
 	${CXX} ${CXXFLAGS} -c ${.IMPSRC}
 
+.cc.obc .cpp.obc .cxx.obc .C.obc:
+	${CC} ${CXXFLAGS:N-O*} -emit-llvm -c ${.IMPSRC} -o ${.TARGET}
+
+.c.oll:
+	${CC} ${CXXFLAGS:N-O*} -emit-llvm -S ${.IMPSRC} -o ${.TARGET}
+
 .m.o:
 	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
 	${CTFCONVERT_CMD}

==== //depot/projects/ctsrd/tesla/src/sys/boot/i386/Makefile.inc#2 (text+ko) ====

@@ -4,6 +4,8 @@
 
 BINDIR?=	/boot
 
+NO_LLVM_IR=	yes
+
 LOADER_ADDRESS?=0x200000
 CFLAGS+=	-march=i386 -ffreestanding -mpreferred-stack-boundary=2 \
 		-mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308022046.r72KkZwl078531>