@@ -52,15 +52,9 @@ export CFLAGS += -I$(OUTPUT)/include -Iinclude -Wall -g -O2 -Wextra \
5252
5353include Targets
5454
55- # Expand targets to output location and suffix but preserve special
56- # targets (e.g. .WAIT)
57- # $1 - targets
58- # $2 - suffix
59- expand-targets = $(foreach t,$(1 ) ,$(if $(filter .% ,$(t ) ) ,$(t ) ,$(OUTPUT )$(t )$(2 ) ) )
60-
61- TARGETS := $(call expand-targets,$(progs-y ) ,$(EXESUF ) )
62- TARGETS += $(call expand-targets,$(tests-y ) ,$(EXESUF ) )
63- TARGETS += $(call expand-targets,$(libs-y ) ,$(SOSUF ) )
55+ TARGETS := $(progs-y:%=$(OUTPUT ) %$(EXESUF ) )
56+ TARGETS := $(tests-y:%=$(OUTPUT ) %$(EXESUF ) )
57+ TARGETS += $(libs-y:%=$(OUTPUT ) %$(SOSUF ) )
6458all : $(TARGETS )
6559
6660# this workaround is for FreeBSD
@@ -87,25 +81,29 @@ $(OUTPUT)lib/lkl.o: bin/stat $(DOT_CONFIG)
8781 $(MAKE) -C ../.. ARCH=lkl $(KOPT)
8882 $(MAKE) -C ../.. ARCH=lkl $(KOPT) install INSTALL_PATH=$(OUTPUT)
8983
90- # rules to link libs
84+ # rules to link hijack libs
9185$(OUTPUT ) % $(SOSUF ) : LDFLAGS += -shared
92- $(OUTPUT ) % $(SOSUF ) : $(OUTPUT ) % -in.o $(OUTPUT ) liblkl.a
86+ $(OUTPUT ) % $(SOSUF ) : $(priv-libs-y:%= $( OUTPUT ) %-in.o ) $( OUTPUT )% -in.o $(OUTPUT ) liblkl.a
9387 $(QUIET_LINK )$(CC ) $(LDFLAGS ) $(LDFLAGS_$* -y ) -o $@ $^ $(LDLIBS ) $(LDLIBS_$* -y )
9488
9589# liblkl is special
96- $(OUTPUT ) liblkl$(SOSUF ) : $(OUTPUT ) % -in.o $(OUTPUT ) lib/lkl.o
90+ $(OUTPUT ) lib/liblkl$(SOSUF ) : $(OUTPUT ) lib/liblkl-in.o $(OUTPUT ) lib/lkl.o
91+ $(QUIET_LINK )$(CC ) $(LDFLAGS ) $(LDFLAGS_$* -y ) -o $@ $^ $(LDLIBS ) $(LDLIBS_$* -y )
92+
9793$(OUTPUT ) liblkl.a : $(OUTPUT ) lib/liblkl-in.o $(OUTPUT ) lib/lkl.o
9894 $(QUIET_AR )$(AR ) -rc $@ $^
9995
10096# rule to link programs
10197$(OUTPUT ) % $(EXESUF ) : $(OUTPUT ) % -in.o $(OUTPUT ) liblkl.a
10298 $(QUIET_LINK )$(CC ) $(LDFLAGS ) $(LDFLAGS_$* -y ) -o $@ $^ $(LDLIBS ) $(LDLIBS_$* -y )
10399
100+ # tests use a common private lib
101+ $(tests-y:% =$(OUTPUT ) %$(EXESUF ) ): $(tests-priv-y:%=$(OUTPUT ) %-in.o )
102+
104103# rule to build objects
105104$(OUTPUT ) % -in.o : $(OUTPUT ) lib/lkl.o FORCE
106105 $(Q )$(MAKE ) -f $(srctree ) /tools/build/Makefile.build dir=$(patsubst % /,% ,$(dir $* ) ) obj=$(notdir $* )
107106
108-
109107$(OUTPUT ) cpfromfs$(EXESUF ) : cptofs$(EXESUF )
110108 $(Q ) if ! [ -e $@ ]; then ln -s $< $@ ; fi
111109
@@ -181,7 +179,7 @@ libraries_install: $(libs-y:%=$(OUTPUT)%$(SOSUF)) $(OUTPUT)liblkl.a
181179 install -d $(DESTDIR )$(LIBDIR ) ; \
182180 install -m 644 $^ $(DESTDIR )$(LIBDIR )
183181
184- programs_install : $(call expand-targets, $( progs-y ) , $(EXESUF ) )
182+ programs_install : $(progs-y:%= $( OUTPUT ) % $(EXESUF ) )
185183 $(call QUIET_INSTALL, programs) \
186184 install -d $(DESTDIR )$(BINDIR ) ; \
187185 install -m 755 $^ $(DESTDIR )$(BINDIR )
@@ -197,4 +195,3 @@ FORCE: ;
197195.PHONY : headers_install libraries_install programs_install install
198196.NOTPARALLEL : lib/lkl.o
199197.SECONDARY :
200- .WAIT :
0 commit comments