PERFORCE change 231651 for review
Brooks Davis
brooks at FreeBSD.org
Fri Aug 2 20:46:36 UTC 2013
http://p4web.freebsd.org/@@231651?ac=10
Change 231651 by brooks at 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
More information about the p4-projects
mailing list