From 80872dbffcb2e0079bfe095d770ccc6c8bd5fd7a Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Fri, 3 Oct 2014 10:26:11 -0700 Subject: [PATCH] Improve cross-reference targets Any of these: make xrefs make tags make TAGS should create "build/cscope.files", containing a list of the source files used in preparing to run tests (minus any test sources). If the 'ctags' or 'etags' programs are installed in the chroot, they'll be run too. BUG=none BRANCH=ToT TEST=manual make xrefs cat build/cscope.files Change-Id: If1173af7edb41742bb348b728238d800ef66ad55 Signed-off-by: Bill Richardson Reviewed-on: https://chromium-review.googlesource.com/221425 Reviewed-by: Randall Spangler --- Makefile | 52 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 17faf4ff05..2f7db8c01a 100644 --- a/Makefile +++ b/Makefile @@ -577,7 +577,7 @@ TESTLIB_SRCS = \ tests/crc32_test.c TESTLIB_OBJS = ${TESTLIB_SRCS:%.c=${BUILD}/%.o} -ALL_OBJS += ${TESTLIB_OBJS} +TEST_OBJS += ${TESTLIB_OBJS} # And some compiled tests. @@ -651,7 +651,7 @@ TEST_NAMES += ${TLCL_TEST_NAMES} # Finally TEST_BINS = $(addprefix ${BUILD}/,${TEST_NAMES}) -ALL_OBJS += $(addsuffix .o,${TEST_BINS}) +TEST_OBJS += $(addsuffix .o,${TEST_BINS}) # Directory containing test keys TEST_KEYS = ${SRC_RUN}/tests/testkeys @@ -691,14 +691,6 @@ install_for_test: install # Don't delete intermediate object files .SECONDARY: -.PHONY: tags TAGS -tags TAGS: ${CGPT_SRCS} ${FUTIL_SRCS} ${UTILLIB_SRCS} ${FWLIB_SRCS} \ - $(if ${VBOOT2},${FWLIB2_SRCS}) \ - $(wildcard $(patsubst -I%,%/*.h,${INCLUDES})) - ${Q}\rm -f cscope.* TAGS - ${Q}echo $^ | tr ' ' '\012' > cscope.files - ${Q}$(if $(shell which etags 2>/dev/null),etags $^,echo "no etags") - # ---------------------------------------------------------------------------- # Firmware library @@ -750,13 +742,13 @@ endif # Linktest ensures firmware lib doesn't rely on outside libraries ${BUILD}/firmware/linktest/main_vbinit: ${VBINIT_OBJS} ${BUILD}/firmware/linktest/main_vbinit: OBJS = ${VBINIT_OBJS} -ALL_OBJS += ${BUILD}/firmware/linktest/main_vbinit.o +TEST_OBJS += ${BUILD}/firmware/linktest/main_vbinit.o ${BUILD}/firmware/linktest/main_vbsf: ${VBSF_OBJS} ${BUILD}/firmware/linktest/main_vbsf: OBJS = ${VBSF_OBJS} -ALL_OBJS += ${BUILD}/firmware/linktest/main_vbsf.o +TEST_OBJS += ${BUILD}/firmware/linktest/main_vbsf.o ${BUILD}/firmware/linktest/main: ${FWLIB} ${BUILD}/firmware/linktest/main: LIBS = ${FWLIB} -ALL_OBJS += ${BUILD}/firmware/linktest/main.o +TEST_OBJS += ${BUILD}/firmware/linktest/main.o .PHONY: fwlinktest fwlinktest: \ @@ -788,7 +780,7 @@ ${FWLIB2}: ${FWLIB2_OBJS} # Link tests for local utilities ${BUILD}/host/linktest/main: ${UTILLIB} ${BUILD}/host/linktest/main: LIBS = ${UTILLIB} -ALL_OBJS += ${BUILD}/host/linktest/main.o +TEST_OBJS += ${BUILD}/host/linktest/main.o .PHONY: utillib utillib: ${UTILLIB} \ @@ -806,7 +798,7 @@ ${UTILLIB}: ${UTILLIB_OBJS} ${FWLIB_OBJS} $(if ${VBOOT2},${FWLIB2_OBJS}) ${BUILD}/host/linktest/extern: ${HOSTLIB} ${BUILD}/host/linktest/extern: LIBS = ${HOSTLIB} ${BUILD}/host/linktest/extern: LDLIBS += -static -ALL_OBJS += ${BUILD}/host/linktest/extern.o +TEST_OBJS += ${BUILD}/host/linktest/extern.o .PHONY: hostlib hostlib: ${HOSTLIB} \ @@ -1018,24 +1010,24 @@ ${BUILD}/tests/rollback_index2_tests: OBJS += \ ${BUILD}/firmware/lib/rollback_index_for_test.o ${BUILD}/tests/rollback_index2_tests: \ ${BUILD}/firmware/lib/rollback_index_for_test.o -ALL_OBJS += ${BUILD}/firmware/lib/rollback_index_for_test.o +TEST_OBJS += ${BUILD}/firmware/lib/rollback_index_for_test.o ${BUILD}/tests/tlcl_tests: OBJS += \ ${BUILD}/firmware/lib/tpm_lite/tlcl_for_test.o ${BUILD}/tests/tlcl_tests: \ ${BUILD}/firmware/lib/tpm_lite/tlcl_for_test.o -ALL_OBJS += ${BUILD}/firmware/lib/tpm_lite/tlcl_for_test.o +TEST_OBJS += ${BUILD}/firmware/lib/tpm_lite/tlcl_for_test.o ${BUILD}/tests/vboot_audio_tests: OBJS += \ ${BUILD}/firmware/lib/vboot_audio_for_test.o ${BUILD}/tests/vboot_audio_tests: \ ${BUILD}/firmware/lib/vboot_audio_for_test.o -ALL_OBJS += ${BUILD}/firmware/lib/vboot_audio_for_test.o +TEST_OBJS += ${BUILD}/firmware/lib/vboot_audio_for_test.o TLCL_TEST_BINS = $(addprefix ${BUILD}/,${TLCL_TEST_NAMES}) ${TLCL_TEST_BINS}: OBJS += ${BUILD}/tests/tpm_lite/tlcl_tests.o ${TLCL_TEST_BINS}: ${BUILD}/tests/tpm_lite/tlcl_tests.o -ALL_OBJS += ${BUILD}/tests/tpm_lite/tlcl_tests.o +TEST_OBJS += ${BUILD}/tests/tpm_lite/tlcl_tests.o # ---------------------------------------------------------------------------- # Here are the special rules that don't fit in the generic rules. @@ -1228,4 +1220,24 @@ endif # Include generated dependencies ALL_DEPS += ${ALL_OBJS:%.o=%.o.d} --include ${ALL_DEPS} +TEST_DEPS += ${TEST_OBJS:%.o=%.o.d} + +# We want to use only relative paths in cscope.files, especially since the +# paths inside and outside the chroot are different. +SRCDIRPAT=$(subst /,\/,${SRCDIR}/) + +${BUILD}/cscope.files: test_setup + ${Q}rm -f $@ + ${Q}cat ${ALL_DEPS} | tr -d ':\\' | tr ' ' '\012' | \ + sed -e "s/${SRCDIRPAT}//" | \ + egrep '\.[chS]$$' | sort | uniq > $@ + +cmd_etags = etags -o ${BUILD}/TAGS $(shell cat ${BUILD}/cscope.files) +cmd_ctags = ctags -o ${BUILD}/tags $(shell cat ${BUILD}/cscope.files) +run_if_prog = $(if $(shell which $(1) 2>/dev/null),$(2),) + +.PHONY: tags TAGS xrefs +tags TAGS xrefs: ${BUILD}/cscope.files + ${Q}\rm -f ${BUILD}/tags ${BUILD}/TAGS + ${Q}$(call run_if_prog,etags,${cmd_etags}) + ${Q}$(call run_if_prog,ctags,${cmd_ctags})