Skip to content

Commit e183e40

Browse files
authored
Merge pull request torvalds#616 from ddiss/fix_hijack_zpoline_parallel_build_and_drop_wait_from_tests
Fix hijack and zpoline parallel build and drop .WAIT from test targets
2 parents 9f876c1 + 6d360d1 commit e183e40

File tree

4 files changed

+28
-33
lines changed

4 files changed

+28
-33
lines changed

tools/lkl/Makefile

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,9 @@ export CFLAGS += -I$(OUTPUT)/include -Iinclude -Wall -g -O2 -Wextra \
5252

5353
include 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))
6458
all: $(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:

tools/lkl/Targets

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
libs-y += lib/liblkl
22

33
ifneq ($(LKL_HOST_CONFIG_BSD),y)
4+
priv-libs-$(LKL_HOST_CONFIG_POSIX) += lib/hijack/libhijack-priv
45
libs-$(LKL_HOST_CONFIG_POSIX) += lib/hijack/liblkl-hijack
56
libs-$(LKL_HOST_CONFIG_POSIX) += lib/hijack/liblkl-zpoline
67
endif
@@ -26,11 +27,10 @@ LDLIBS_cptofs-y := -larchive
2627
LDLIBS_cptofs-$(LKL_HOST_CONFIG_NEEDS_LARGP) += -largp
2728

2829
# tools/build/Makefile.build does not support parallel builds when
29-
# objects are shared between build objects so keep the test that uses
30-
# the most common object first and insert a build barrier to avoid
31-
# rebuilding common objects
30+
# objects are shared between build objects so use tests-common-in.o
31+
# as a tests build prerequisite which gets linked into each binary.
32+
tests-priv-y := tests/tests-common
3233
tests-y := tests/disk
33-
tests-y += .WAIT
3434
tests-y += tests/boot
3535
tests-y += tests/disk-vfio-pci
3636
tests-y += tests/net-test

tools/lkl/lib/hijack/Build

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1+
libhijack-priv-y += hijack.o
2+
libhijack-priv-y += init.o
3+
libhijack-priv-y += xlate.o
4+
libhijack-priv-y += dbg_handler.o
5+
16
liblkl-hijack-y += preload.o
2-
liblkl-hijack-y += hijack.o
3-
liblkl-hijack-y += init.o
4-
liblkl-hijack-y += xlate.o
5-
liblkl-hijack-y += dbg_handler.o
67

78
liblkl-zpoline-y += zpoline.o
8-
liblkl-zpoline-y += hijack.o
9-
liblkl-zpoline-y += init.o
10-
liblkl-zpoline-y += xlate.o
11-
liblkl-zpoline-y += dbg_handler.o
129

1310
# -std=gnu23/c23 fails due to HOST_CALL (*host_##name)()
1411
CFLAGS_hijack.o += -std=gnu11

tools/lkl/tests/Build

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
boot-y += boot.o test.o
2-
disk-y += disk.o cla.o test.o
3-
disk-vfio-pci-y += disk-vfio-pci.o cla.o test.o
4-
net-test-y += net-test.o cla.o test.o
5-
config-y += config.o test.o
6-
test-dlmopen-y += test-dlmopen.o test.o
1+
tests-common-y += cla.o test.o
2+
boot-y += boot.o
3+
disk-y += disk.o
4+
disk-vfio-pci-y += disk-vfio-pci.o
5+
net-test-y += net-test.o
6+
config-y += config.o
7+
test-dlmopen-y += test-dlmopen.o

0 commit comments

Comments
 (0)