mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 08:03:01 +09:00
Merge pull request #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
This commit is contained in:
@@ -52,15 +52,9 @@ export CFLAGS += -I$(OUTPUT)/include -Iinclude -Wall -g -O2 -Wextra \
|
||||
|
||||
include Targets
|
||||
|
||||
# Expand targets to output location and suffix but preserve special
|
||||
# targets (e.g. .WAIT)
|
||||
# $1 - targets
|
||||
# $2 - suffix
|
||||
expand-targets = $(foreach t,$(1),$(if $(filter .%,$(t)),$(t),$(OUTPUT)$(t)$(2)))
|
||||
|
||||
TARGETS := $(call expand-targets,$(progs-y),$(EXESUF))
|
||||
TARGETS += $(call expand-targets,$(tests-y),$(EXESUF))
|
||||
TARGETS += $(call expand-targets,$(libs-y),$(SOSUF))
|
||||
TARGETS := $(progs-y:%=$(OUTPUT)%$(EXESUF))
|
||||
TARGETS := $(tests-y:%=$(OUTPUT)%$(EXESUF))
|
||||
TARGETS += $(libs-y:%=$(OUTPUT)%$(SOSUF))
|
||||
all: $(TARGETS)
|
||||
|
||||
# this workaround is for FreeBSD
|
||||
@@ -87,13 +81,15 @@ $(OUTPUT)lib/lkl.o: bin/stat $(DOT_CONFIG)
|
||||
$(MAKE) -C ../.. ARCH=lkl $(KOPT)
|
||||
$(MAKE) -C ../.. ARCH=lkl $(KOPT) install INSTALL_PATH=$(OUTPUT)
|
||||
|
||||
# rules to link libs
|
||||
# rules to link hijack libs
|
||||
$(OUTPUT)%$(SOSUF): LDFLAGS += -shared
|
||||
$(OUTPUT)%$(SOSUF): $(OUTPUT)%-in.o $(OUTPUT)liblkl.a
|
||||
$(OUTPUT)%$(SOSUF): $(priv-libs-y:%=$(OUTPUT)%-in.o) $(OUTPUT)%-in.o $(OUTPUT)liblkl.a
|
||||
$(QUIET_LINK)$(CC) $(LDFLAGS) $(LDFLAGS_$*-y) -o $@ $^ $(LDLIBS) $(LDLIBS_$*-y)
|
||||
|
||||
# liblkl is special
|
||||
$(OUTPUT)liblkl$(SOSUF): $(OUTPUT)%-in.o $(OUTPUT)lib/lkl.o
|
||||
$(OUTPUT)lib/liblkl$(SOSUF): $(OUTPUT)lib/liblkl-in.o $(OUTPUT)lib/lkl.o
|
||||
$(QUIET_LINK)$(CC) $(LDFLAGS) $(LDFLAGS_$*-y) -o $@ $^ $(LDLIBS) $(LDLIBS_$*-y)
|
||||
|
||||
$(OUTPUT)liblkl.a: $(OUTPUT)lib/liblkl-in.o $(OUTPUT)lib/lkl.o
|
||||
$(QUIET_AR)$(AR) -rc $@ $^
|
||||
|
||||
@@ -101,11 +97,13 @@ $(OUTPUT)liblkl.a: $(OUTPUT)lib/liblkl-in.o $(OUTPUT)lib/lkl.o
|
||||
$(OUTPUT)%$(EXESUF): $(OUTPUT)%-in.o $(OUTPUT)liblkl.a
|
||||
$(QUIET_LINK)$(CC) $(LDFLAGS) $(LDFLAGS_$*-y) -o $@ $^ $(LDLIBS) $(LDLIBS_$*-y)
|
||||
|
||||
# tests use a common private lib
|
||||
$(tests-y:%=$(OUTPUT)%$(EXESUF)): $(tests-priv-y:%=$(OUTPUT)%-in.o)
|
||||
|
||||
# rule to build objects
|
||||
$(OUTPUT)%-in.o: $(OUTPUT)lib/lkl.o FORCE
|
||||
$(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(patsubst %/,%,$(dir $*)) obj=$(notdir $*)
|
||||
|
||||
|
||||
$(OUTPUT)cpfromfs$(EXESUF): cptofs$(EXESUF)
|
||||
$(Q)if ! [ -e $@ ]; then ln -s $< $@; fi
|
||||
|
||||
@@ -181,7 +179,7 @@ libraries_install: $(libs-y:%=$(OUTPUT)%$(SOSUF)) $(OUTPUT)liblkl.a
|
||||
install -d $(DESTDIR)$(LIBDIR) ; \
|
||||
install -m 644 $^ $(DESTDIR)$(LIBDIR)
|
||||
|
||||
programs_install: $(call expand-targets,$(progs-y),$(EXESUF))
|
||||
programs_install: $(progs-y:%=$(OUTPUT)%$(EXESUF))
|
||||
$(call QUIET_INSTALL, programs) \
|
||||
install -d $(DESTDIR)$(BINDIR) ; \
|
||||
install -m 755 $^ $(DESTDIR)$(BINDIR)
|
||||
@@ -197,4 +195,3 @@ FORCE: ;
|
||||
.PHONY: headers_install libraries_install programs_install install
|
||||
.NOTPARALLEL : lib/lkl.o
|
||||
.SECONDARY:
|
||||
.WAIT:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
libs-y += lib/liblkl
|
||||
|
||||
ifneq ($(LKL_HOST_CONFIG_BSD),y)
|
||||
priv-libs-$(LKL_HOST_CONFIG_POSIX) += lib/hijack/libhijack-priv
|
||||
libs-$(LKL_HOST_CONFIG_POSIX) += lib/hijack/liblkl-hijack
|
||||
libs-$(LKL_HOST_CONFIG_POSIX) += lib/hijack/liblkl-zpoline
|
||||
endif
|
||||
@@ -26,11 +27,10 @@ LDLIBS_cptofs-y := -larchive
|
||||
LDLIBS_cptofs-$(LKL_HOST_CONFIG_NEEDS_LARGP) += -largp
|
||||
|
||||
# tools/build/Makefile.build does not support parallel builds when
|
||||
# objects are shared between build objects so keep the test that uses
|
||||
# the most common object first and insert a build barrier to avoid
|
||||
# rebuilding common objects
|
||||
# objects are shared between build objects so use tests-common-in.o
|
||||
# as a tests build prerequisite which gets linked into each binary.
|
||||
tests-priv-y := tests/tests-common
|
||||
tests-y := tests/disk
|
||||
tests-y += .WAIT
|
||||
tests-y += tests/boot
|
||||
tests-y += tests/disk-vfio-pci
|
||||
tests-y += tests/net-test
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
libhijack-priv-y += hijack.o
|
||||
libhijack-priv-y += init.o
|
||||
libhijack-priv-y += xlate.o
|
||||
libhijack-priv-y += dbg_handler.o
|
||||
|
||||
liblkl-hijack-y += preload.o
|
||||
liblkl-hijack-y += hijack.o
|
||||
liblkl-hijack-y += init.o
|
||||
liblkl-hijack-y += xlate.o
|
||||
liblkl-hijack-y += dbg_handler.o
|
||||
|
||||
liblkl-zpoline-y += zpoline.o
|
||||
liblkl-zpoline-y += hijack.o
|
||||
liblkl-zpoline-y += init.o
|
||||
liblkl-zpoline-y += xlate.o
|
||||
liblkl-zpoline-y += dbg_handler.o
|
||||
|
||||
# -std=gnu23/c23 fails due to HOST_CALL (*host_##name)()
|
||||
CFLAGS_hijack.o += -std=gnu11
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
boot-y += boot.o test.o
|
||||
disk-y += disk.o cla.o test.o
|
||||
disk-vfio-pci-y += disk-vfio-pci.o cla.o test.o
|
||||
net-test-y += net-test.o cla.o test.o
|
||||
config-y += config.o test.o
|
||||
test-dlmopen-y += test-dlmopen.o test.o
|
||||
tests-common-y += cla.o test.o
|
||||
boot-y += boot.o
|
||||
disk-y += disk.o
|
||||
disk-vfio-pci-y += disk-vfio-pci.o
|
||||
net-test-y += net-test.o
|
||||
config-y += config.o
|
||||
test-dlmopen-y += test-dlmopen.o
|
||||
|
||||
Reference in New Issue
Block a user