Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Sep 2013 18:50:03 GMT
From:      Brooks Davis <brooks@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 593392 for review
Message-ID:  <201309051850.r85Io3KM028681@skunkworks.freebsd.org>

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

Change 593392 by brooks@brooks_zenith on 2013/09/05 18:49:16

	Make WITH_SOAAP imply WITH_LLVM_INSTRUMENTED for now.  Break up
	the rules to create *.soaap_cg and *.soaap_perf versions so the
	intermediate files don't collide and are generated by their own
	rules thus allowing conditional compiliation.

Affected files ...

.. //depot/projects/ctsrd/tesla/src/share/mk/bsd.own.mk#11 edit
.. //depot/projects/ctsrd/tesla/src/share/mk/bsd.prog.mk#16 edit
.. //depot/projects/ctsrd/tesla/src/share/mk/sys.mk#17 edit

Differences ...

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

@@ -628,8 +628,8 @@
 # Some targets require a different build process in order to allow LLVM
 # instrumentation passes to be applied.
 #
-# XXX: The current construction allow an empty insturmentation path or
-# a tesla one.
+# XXX: The current construction allow an empty instrumentation path or
+# a TESLA one.
 #
 .if defined(WITH_LLVM_INSTRUMENTED) && defined(WITHOUT_LLVM_INSTRUMENTED)
 .error WITH_LLVM_INSTRUMENTED and WITHOUT_LLVM_INSTRUMENTED can't both be set.
@@ -637,15 +637,28 @@
 .if defined(MK_LLVM_INSTRUMENTED)
 .error MK_LLVM_INSTRUMENTED can't be set by a user.
 .endif
-.if ${MK_TESLA} == "no"
-LLVM_INSTR_DEP?=
-LLVM_INSTR_COMMAND?= cp ${.IMPSRC} ${.TARGET}
+
+.if ${MK_TESLA} == "no" && ${MK_SOAAP} == "no"
 .if defined(WITH_LLVM_INSTRUMENTED)
 MK_LLVM_INSTRUMENTED:=	yes
 .else
 MK_LLVM_INSTRUMENTED:=	no
 .endif
+.endif
+
+.if ${MK_SOAAP} != "no"
+CFLAGS+= -I${SOAAP_SOURCE_DIR}/include
+.if defined(WITHOUT_LLVM_INSTRUMENTED)
+.error WITHOUT_LLVM_INSTRUMENTED and WITH_SOAAP can't both be set.
 .else
+MK_LLVM_INSTRUMENTED:=	yes
+.endif
+.endif
+
+.if ${MK_TESLA} == "no"
+LLVM_INSTR_DEP?=
+LLVM_INSTR_COMMAND?= cp ${.IMPSRC} ${.TARGET}
+.else
 LLVM_INSTR_DEP= tesla.manifest
 .if ${LLVM_IR_TYPE} == "bc"
 LLVM_INSTR_COMMAND= ${TESLA} instrument -verify-each -tesla-manifest \
@@ -663,10 +676,6 @@
 .endif
 .endif
 
-.if defined(WITH_LLVM_INSTRUMENTED) && defined(WITH_SOAAP)
-CFLAGS+= -I${SOAAP_SOURCE_DIR}/include
-.endif
-
 .if ${MK_CTF} != "no"
 CTFCONVERT_CMD=	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
 .elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)

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

@@ -5,7 +5,6 @@
 
 .SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .ln .s .S .asm
 
-
 # XXX The use of COPTS in modern makefiles is discouraged.
 .if defined(COPTS)
 CFLAGS+=${COPTS}
@@ -69,7 +68,7 @@
 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} ${PROG}.${LLVM_IR_TYPE}-a
+CLEANFILES+=	${OIRS} ${INSTR_IRS} ${INSTR_OBJS}
 .if ${MK_TESLA} != "no"
 TESLA_FILES=	${LLVM_CFILES:R:S/$/.tesla/}
 CLEANFILES+=	${TESLA_FILES} tesla.manifest
@@ -119,17 +118,18 @@
 .endif
 .endif # defined(PROG)
 
-.if defined(WITH_LLVM_INSTRUMENTED)
-all: objwarn ${PROG} ${PROG}.${LLVM_IR_TYPE}-a ${SCRIPTS}
-.else
 all: objwarn ${PROG} ${SCRIPTS}
-.endif
 .if ${MK_MAN} != "no"
 all: _manpages
 .endif
 
 .if defined(PROG)
 CLEANFILES+= ${PROG}
+.if ${MK_SOAAP} != "no"
+CLEANFILES+=	${PROG}.${LLVM_IR_TYPE}-a \
+		${PROG}.bc_cep ${PROG}.po_cep ${PROG}.soaap_cg \
+		${PROG}.bc_soaap_perf ${PROG}.po_soaap_perf ${PROG}.soaap_pef
+.endif
 .endif
 
 .if defined(OBJS)

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

@@ -32,7 +32,7 @@
 .if defined(%POSIX)
 .SUFFIXES:	.o .c .y .l .a .sh .f
 .else
-.SUFFIXES:	.out .a .dot .bc-a .ll-a .instrbc .instrll .instro .obc .oll .ln .manifest .o .c .cc .cpp .cxx .C .m .F .f .e .r .soaap .soaap_cg .soaap_perf .tesla .y .l .S .asm .s .cl .p .h .sh
+.SUFFIXES:	.out .a .ao .dot .bc-a .bc_cep .bc_soaap_perf .ll-a .instrbc .instrll .instro .llvmlinked .obc .oll .po_cep .po_soaap_perf .ln .manifest .o .c .cc .cpp .cxx .C .m .F .f .e .r .soaap .soaap_cg .soaap_perf .tesla .y .l .S .asm .s .cl .p .h .sh
 .endif
 
 AR		?=	ar
@@ -297,21 +297,37 @@
 .error Unknown LLVM IR type ${LLVM_IR_TYPE}
 .endif
 
-.if defined(WITH_SOAAP)
-CLEANFILES+= *.${LLVM_IR_TYPE}-a *.po *.pbc *.soaap_cg *.soaap_perf
 .${LLVM_IR_TYPE}-a.soaap:
-	${OPT} -load $(SOAAP_BUILD_DIR)/libsoaap.so -soaap ${SOAAP_FLAGS} -o /dev/null ${.IMPSRC}
+	${OPT} -load ${SOAAP_BUILD_DIR}/libsoaap.so -soaap ${SOAAP_FLAGS} \
+	    -o /dev/null ${.IMPSRC}
+
+.${LLVM_IR_TYPE}-a.bc_cep:
+	${OPT} -load ${SOAAP_BUILD_DIR}/libcep.so -insert-call-edge-profiling \
+	    -o ${.TARGET} ${.IMPSRC}
+
+.bc_cep.po_cep:
+	${LLC} -filetype=obj ${LLCFLAGS} -o ${.TARGET} ${.IMPSRC}
+
+.po_cep.soaap_cg:
+	${CC} ${.IMPSRC} -L${SOAAP_BUILD_DIR} -L${LLVM_BUILD_DIR}/lib \
+	    -lcep_rt -lprofile_rt ${LDADD} -o ${.TARGET}
+
+.${LLVM_IR_TYPE}-a.bc_soaap_perf:
+	${OPT} -load ${SOAAP_BUILD_DIR}/libsoaap.so -soaap \
+	    -soaap-emulate-performance ${SOAAP_FLAGS} -o ${.TARGET} ${.IMPSRC}
+
+.bc_soaap_perf.po_soaap_perf:
+	${LLC} -filetype=obj -o ${.TARGET} ${.IMPSRC}
+
+.po_soaap_perf.soaap_perf:
+	${CC} ${.IMPSRC} ${LDADD} -o ${.TARGET}
 
-.${LLVM_IR_TYPE}-a.soaap_cg:
-	${OPT} -load $(SOAAP_BUILD_DIR)/libcep.so -insert-call-edge-profiling -o ${.IMPSRC:R}.pbc ${.IMPSRC}
-	${LLC} -filetype=obj -o ${.IMPSRC:R}.po ${.IMPSRC:R}.pbc 
-	${CC} -L $(SOAAP_BUILD_DIR) -L $(LLVM_BUILD_DIR)/lib -lcep_rt -lprofile_rt $(LDADD) -o ${.TARGET} ${.IMPSRC:R}.po
+.${LLVM_IR_TYPE}-a.ao:
+	${LLC} -filetype=obj -o ${.TARGET} ${.IMPSRC}
 
-.${LLVM_IR_TYPE}-a.soaap_perf:
-	${OPT} -load $(SOAAP_BUILD_DIR)/libsoaap.so -soaap -soaap-emulate-performance ${SOAAP_FLAGS} -o ${.IMPSRC:R}.pbc ${.IMPSRC}
-	${LLC} -filetype=obj -o ${.IMPSRC:R}.po ${.IMPSRC:R}.pbc 
-	${CC} $(LDADD) -o ${.TARGET} ${.IMPSRC:R}.po
-.endif
+# XXX: missing non-c objects
+.ao.llvmlinked:
+	${CC} ${.IMPSRC} ${LDADD} -o ${.TARGET}
 
 .manifest.dot:
 	${TESLA} graph ${.IMPSRC} -o ${.TARGET}



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