From b7d46f47d2de1761a50c75df8f2db0dc9bf2ba63 Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Sun, 1 Aug 2021 15:57:57 +0200 Subject: [PATCH] install: split lib build in two steps for coverage To ensure the coverage files are correctly named after the .c source file name, first build the object file then process it with linker to build the shared library. --- lib/.gitignore | 1 + lib/Makefile.in | 42 ++++++++++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/lib/.gitignore b/lib/.gitignore index ec87a0f6..93346683 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -5,6 +5,7 @@ /config.log /config.status /configure +/envmodules.o /libtclenvmodules.so /libtestutil-closedir.so /libtestutil-getpwuid.so diff --git a/lib/Makefile.in b/lib/Makefile.in index a7cb9731..a9ac735b 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -6,56 +6,66 @@ CFLAGS_WARNING=@CFLAGS_WARNING@ CC=@TCL_CC@ CFLAGS=@CFLAGS@ @TCL_INCLUDE_SPEC@ LDFLAGS=@LDFLAGS@ -LD=@TCL_SHLIB_LD@ ${CFLAGS} +LD=@TCL_SHLIB_LD@ +LDCC=@TCL_SHLIB_LD@ ${CFLAGS} # apply specific flags to libtclenvmodules build if code coverage asked ifeq ($(COVERAGE),y) CFLAGS_COVERAGE=-coverage -O0 +LDFLAGS_COVERAGE=-coverage endif # setup summary echo rules unless silent mode set ECHO_DIR_PREFIX = lib/ ifneq ($(findstring s,$(MAKEFLAGS)),s) ECHO_CC = @echo ' ' CC '' $(ECHO_DIR_PREFIX)$@; +ECHO_LD = @echo ' ' LD '' $(ECHO_DIR_PREFIX)$@; endif -libtclenvmodules@TCL_SHLIB_SUFFIX@: envmodules.c +all: libtclenvmodules@TCL_SHLIB_SUFFIX@ + +envmodules.o: envmodules.c $(ECHO_CC) - $(LD) ${CFLAGS_COVERAGE} $< -o $@ @TCL_STUB_LIB_SPEC@ + $(CC) $(CFLAGS) $(CFLAGS_COVERAGE) -c $< -o $@ + +libtclenvmodules@TCL_SHLIB_SUFFIX@: envmodules.o + $(ECHO_LD) + $(LD) $(LDFLAGS) $(LDFLAGS_COVERAGE) $< -o $@ @TCL_STUB_LIB_SPEC@ libtestutil-closedir@SHLIB_SUFFIX@: testutil-closedir.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-getpwuid@SHLIB_SUFFIX@: testutil-getpwuid.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-getgroups@SHLIB_SUFFIX@: testutil-getgroups.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-0getgroups@SHLIB_SUFFIX@: testutil-0getgroups.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-dupgetgroups@SHLIB_SUFFIX@: testutil-dupgetgroups.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-getgrgid@SHLIB_SUFFIX@: testutil-getgrgid.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-time@SHLIB_SUFFIX@: testutil-time.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ libtestutil-mktime@SHLIB_SUFFIX@: testutil-mktime.c $(ECHO_CC) - $(LD) $< -o $@ + $(LDCC) $< -o $@ clean: + rm -f envmodules.o rm -f libtclenvmodules@TCL_SHLIB_SUFFIX@ rm -f libtestutil-closedir@SHLIB_SUFFIX@ rm -f libtestutil-getpwuid@SHLIB_SUFFIX@ @@ -85,8 +95,8 @@ ifeq ($(VERBOSE),1) V = 1 endif # let verbose by default the install/clean/test and other specific non-build targets -$(V).SILENT: libtclenvmodules@TCL_SHLIB_SUFFIX@ libtestutil-closedir@SHLIB_SUFFIX@ \ - libtestutil-getpwuid@SHLIB_SUFFIX@ libtestutil-getgroups@SHLIB_SUFFIX@ \ - libtestutil-0getgroups@SHLIB_SUFFIX@ libtestutil-dupgetgroups@SHLIB_SUFFIX@ \ - libtestutil-getgrgid@SHLIB_SUFFIX@ libtestutil-time@SHLIB_SUFFIX@ \ - libtestutil-mktime@SHLIB_SUFFIX@ +$(V).SILENT: envmodules.o libtclenvmodules@TCL_SHLIB_SUFFIX@ \ + libtestutil-closedir@SHLIB_SUFFIX@ libtestutil-getpwuid@SHLIB_SUFFIX@ \ + libtestutil-getgroups@SHLIB_SUFFIX@ libtestutil-0getgroups@SHLIB_SUFFIX@ \ + libtestutil-dupgetgroups@SHLIB_SUFFIX@ libtestutil-getgrgid@SHLIB_SUFFIX@ \ + libtestutil-time@SHLIB_SUFFIX@ libtestutil-mktime@SHLIB_SUFFIX@