Skip to content

Commit 43fbd8c

Browse files
committed
KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
Provide empty targets for KVM selftests if the target architecture is unsupported to make it obvious which architectures are supported, and so that various side effects don't fail and/or do weird things, e.g. as is, "mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))" fails due to a missing operand, and conversely, "$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) ..." will create an empty, useless directory for the unsupported architecture. Move the guts of the Makefile to Makefile.kvm so that it's easier to see that the if-statement effectively guards all of KVM selftests. Reported-by: Muhammad Usama Anjum <usama.anjum@collabora.com> Acked-by: Muhammad Usama Anjum <usama.anjum@collabora.com> Acked-by: Andrew Jones <ajones@ventanamicro.com> Link: https://lore.kernel.org/r/20241128005547.4077116-15-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent b6c304a commit 43fbd8c

File tree

3 files changed

+340
-331
lines changed

3 files changed

+340
-331
lines changed

tools/testing/selftests/kvm/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
!config
1010
!settings
1111
!Makefile
12+
!Makefile.kvm

tools/testing/selftests/kvm/Makefile

Lines changed: 5 additions & 331 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
# SPDX-License-Identifier: GPL-2.0-only
2-
include ../../../build/Build.include
3-
4-
all:
5-
62
top_srcdir = ../../../..
73
include $(top_srcdir)/scripts/subarch.include
84
ARCH ?= $(SUBARCH)
95

6+
ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
107
ifeq ($(ARCH),x86)
118
ARCH_DIR := x86_64
129
else ifeq ($(ARCH),arm64)
@@ -17,332 +14,9 @@ else
1714
ARCH_DIR := $(ARCH)
1815
endif
1916

20-
LIBKVM += lib/assert.c
21-
LIBKVM += lib/elf.c
22-
LIBKVM += lib/guest_modes.c
23-
LIBKVM += lib/io.c
24-
LIBKVM += lib/kvm_util.c
25-
LIBKVM += lib/memstress.c
26-
LIBKVM += lib/guest_sprintf.c
27-
LIBKVM += lib/rbtree.c
28-
LIBKVM += lib/sparsebit.c
29-
LIBKVM += lib/test_util.c
30-
LIBKVM += lib/ucall_common.c
31-
LIBKVM += lib/userfaultfd_util.c
32-
33-
LIBKVM_STRING += lib/string_override.c
34-
35-
LIBKVM_x86_64 += lib/x86_64/apic.c
36-
LIBKVM_x86_64 += lib/x86_64/handlers.S
37-
LIBKVM_x86_64 += lib/x86_64/hyperv.c
38-
LIBKVM_x86_64 += lib/x86_64/memstress.c
39-
LIBKVM_x86_64 += lib/x86_64/pmu.c
40-
LIBKVM_x86_64 += lib/x86_64/processor.c
41-
LIBKVM_x86_64 += lib/x86_64/sev.c
42-
LIBKVM_x86_64 += lib/x86_64/svm.c
43-
LIBKVM_x86_64 += lib/x86_64/ucall.c
44-
LIBKVM_x86_64 += lib/x86_64/vmx.c
45-
46-
LIBKVM_aarch64 += lib/aarch64/gic.c
47-
LIBKVM_aarch64 += lib/aarch64/gic_v3.c
48-
LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
49-
LIBKVM_aarch64 += lib/aarch64/handlers.S
50-
LIBKVM_aarch64 += lib/aarch64/processor.c
51-
LIBKVM_aarch64 += lib/aarch64/spinlock.c
52-
LIBKVM_aarch64 += lib/aarch64/ucall.c
53-
LIBKVM_aarch64 += lib/aarch64/vgic.c
54-
55-
LIBKVM_s390x += lib/s390x/diag318_test_handler.c
56-
LIBKVM_s390x += lib/s390x/processor.c
57-
LIBKVM_s390x += lib/s390x/ucall.c
58-
LIBKVM_s390x += lib/s390x/facility.c
59-
60-
LIBKVM_riscv += lib/riscv/handlers.S
61-
LIBKVM_riscv += lib/riscv/processor.c
62-
LIBKVM_riscv += lib/riscv/ucall.c
63-
64-
# Non-compiled test targets
65-
TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
66-
67-
# Compiled test targets
68-
TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
69-
TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
70-
TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
71-
TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
72-
TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
73-
TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
74-
TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
75-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
76-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
77-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
78-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
79-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
80-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
81-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
82-
TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
83-
TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
84-
TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
85-
TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
86-
TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
87-
TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
88-
TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
89-
TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
90-
TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
91-
TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
92-
TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
93-
TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
94-
TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
95-
TEST_GEN_PROGS_x86_64 += x86_64/smm_test
96-
TEST_GEN_PROGS_x86_64 += x86_64/state_test
97-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
98-
TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
99-
TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
100-
TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
101-
TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
102-
TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
103-
TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
104-
TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
105-
TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
106-
TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
107-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
108-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
109-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
110-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
111-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
112-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
113-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
114-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
115-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
116-
TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
117-
TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
118-
TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
119-
TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
120-
TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
121-
TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
122-
TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
123-
TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
124-
TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
125-
TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
126-
TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
127-
TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
128-
TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
129-
TEST_GEN_PROGS_x86_64 += x86_64/amx_test
130-
TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
131-
TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
132-
TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
133-
TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
134-
TEST_GEN_PROGS_x86_64 += coalesced_io_test
135-
TEST_GEN_PROGS_x86_64 += demand_paging_test
136-
TEST_GEN_PROGS_x86_64 += dirty_log_test
137-
TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
138-
TEST_GEN_PROGS_x86_64 += guest_memfd_test
139-
TEST_GEN_PROGS_x86_64 += guest_print_test
140-
TEST_GEN_PROGS_x86_64 += hardware_disable_test
141-
TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
142-
TEST_GEN_PROGS_x86_64 += kvm_page_table_test
143-
TEST_GEN_PROGS_x86_64 += mmu_stress_test
144-
TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
145-
TEST_GEN_PROGS_x86_64 += memslot_perf_test
146-
TEST_GEN_PROGS_x86_64 += rseq_test
147-
TEST_GEN_PROGS_x86_64 += set_memory_region_test
148-
TEST_GEN_PROGS_x86_64 += steal_time
149-
TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
150-
TEST_GEN_PROGS_x86_64 += system_counter_offset_test
151-
TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
152-
153-
# Compiled outputs used by test targets
154-
TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
155-
156-
TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
157-
TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
158-
TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
159-
TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
160-
TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
161-
TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
162-
TEST_GEN_PROGS_aarch64 += aarch64/psci_test
163-
TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
164-
TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
165-
TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
166-
TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
167-
TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
168-
TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
169-
TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
170-
TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
171-
TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
172-
TEST_GEN_PROGS_aarch64 += arch_timer
173-
TEST_GEN_PROGS_aarch64 += coalesced_io_test
174-
TEST_GEN_PROGS_aarch64 += demand_paging_test
175-
TEST_GEN_PROGS_aarch64 += dirty_log_test
176-
TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
177-
TEST_GEN_PROGS_aarch64 += guest_print_test
178-
TEST_GEN_PROGS_aarch64 += get-reg-list
179-
TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
180-
TEST_GEN_PROGS_aarch64 += kvm_page_table_test
181-
TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
182-
TEST_GEN_PROGS_aarch64 += memslot_perf_test
183-
TEST_GEN_PROGS_aarch64 += mmu_stress_test
184-
TEST_GEN_PROGS_aarch64 += rseq_test
185-
TEST_GEN_PROGS_aarch64 += set_memory_region_test
186-
TEST_GEN_PROGS_aarch64 += steal_time
187-
TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
188-
189-
TEST_GEN_PROGS_s390x = s390x/memop
190-
TEST_GEN_PROGS_s390x += s390x/resets
191-
TEST_GEN_PROGS_s390x += s390x/sync_regs_test
192-
TEST_GEN_PROGS_s390x += s390x/tprot
193-
TEST_GEN_PROGS_s390x += s390x/cmma_test
194-
TEST_GEN_PROGS_s390x += s390x/debug_test
195-
TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
196-
TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
197-
TEST_GEN_PROGS_s390x += s390x/ucontrol_test
198-
TEST_GEN_PROGS_s390x += demand_paging_test
199-
TEST_GEN_PROGS_s390x += dirty_log_test
200-
TEST_GEN_PROGS_s390x += guest_print_test
201-
TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
202-
TEST_GEN_PROGS_s390x += kvm_page_table_test
203-
TEST_GEN_PROGS_s390x += rseq_test
204-
TEST_GEN_PROGS_s390x += set_memory_region_test
205-
TEST_GEN_PROGS_s390x += kvm_binary_stats_test
206-
207-
TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
208-
TEST_GEN_PROGS_riscv += riscv/ebreak_test
209-
TEST_GEN_PROGS_riscv += arch_timer
210-
TEST_GEN_PROGS_riscv += coalesced_io_test
211-
TEST_GEN_PROGS_riscv += demand_paging_test
212-
TEST_GEN_PROGS_riscv += dirty_log_test
213-
TEST_GEN_PROGS_riscv += get-reg-list
214-
TEST_GEN_PROGS_riscv += guest_print_test
215-
TEST_GEN_PROGS_riscv += kvm_binary_stats_test
216-
TEST_GEN_PROGS_riscv += kvm_create_max_vcpus
217-
TEST_GEN_PROGS_riscv += kvm_page_table_test
218-
TEST_GEN_PROGS_riscv += set_memory_region_test
219-
TEST_GEN_PROGS_riscv += steal_time
220-
221-
SPLIT_TESTS += arch_timer
222-
SPLIT_TESTS += get-reg-list
223-
224-
TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
225-
TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
226-
TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
227-
LIBKVM += $(LIBKVM_$(ARCH_DIR))
228-
229-
OVERRIDE_TARGETS = 1
230-
231-
# lib.mak defines $(OUTPUT), prepends $(OUTPUT)/ to $(TEST_GEN_PROGS), and most
232-
# importantly defines, i.e. overwrites, $(CC) (unless `make -e` or `make CC=`,
233-
# which causes the environment variable to override the makefile).
234-
include ../lib.mk
235-
236-
INSTALL_HDR_PATH = $(top_srcdir)/usr
237-
LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
238-
LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
239-
ifeq ($(ARCH),x86_64)
240-
LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
241-
else
242-
LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
243-
endif
244-
CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
245-
-Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
246-
-fno-builtin-memcmp -fno-builtin-memcpy \
247-
-fno-builtin-memset -fno-builtin-strnlen \
248-
-fno-stack-protector -fno-PIE -fno-strict-aliasing \
249-
-I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
250-
-I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
251-
-I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
252-
ifeq ($(ARCH),s390)
253-
CFLAGS += -march=z10
254-
endif
255-
ifeq ($(ARCH),x86)
256-
ifeq ($(shell echo "void foo(void) { }" | $(CC) -march=x86-64-v2 -x c - -c -o /dev/null 2>/dev/null; echo "$$?"),0)
257-
CFLAGS += -march=x86-64-v2
258-
endif
259-
endif
260-
ifeq ($(ARCH),arm64)
261-
tools_dir := $(top_srcdir)/tools
262-
arm64_tools_dir := $(tools_dir)/arch/arm64/tools/
263-
264-
ifneq ($(abs_objdir),)
265-
arm64_hdr_outdir := $(abs_objdir)/tools/
17+
include Makefile.kvm
26618
else
267-
arm64_hdr_outdir := $(tools_dir)/
268-
endif
269-
270-
GEN_HDRS := $(arm64_hdr_outdir)arch/arm64/include/generated/
271-
CFLAGS += -I$(GEN_HDRS)
272-
273-
$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*)
274-
$(MAKE) -C $(arm64_tools_dir) OUTPUT=$(arm64_hdr_outdir)
19+
# Empty targets for unsupported architectures
20+
all:
21+
clean:
27522
endif
276-
277-
no-pie-option := $(call try-run, echo 'int main(void) { return 0; }' | \
278-
$(CC) -Werror $(CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie)
279-
280-
# On s390, build the testcases KVM-enabled
281-
pgste-option = $(call try-run, echo 'int main(void) { return 0; }' | \
282-
$(CC) -Werror -Wl$(comma)--s390-pgste -x c - -o "$$TMP",-Wl$(comma)--s390-pgste)
283-
284-
LDLIBS += -ldl
285-
LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
286-
287-
LIBKVM_C := $(filter %.c,$(LIBKVM))
288-
LIBKVM_S := $(filter %.S,$(LIBKVM))
289-
LIBKVM_C_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_C))
290-
LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
291-
LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
292-
LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
293-
SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
294-
SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
295-
296-
TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
297-
TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
298-
TEST_DEP_FILES = $(patsubst %.o, %.d, $(TEST_GEN_OBJ))
299-
TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
300-
TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
301-
-include $(TEST_DEP_FILES)
302-
303-
$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
304-
305-
$(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
306-
$(TEST_GEN_PROGS_EXTENDED): %: %.o
307-
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $< $(LIBKVM_OBJS) $(LDLIBS) -o $@
308-
$(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
309-
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
310-
311-
$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
312-
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
313-
$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
314-
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
315-
316-
EXTRA_CLEAN += $(GEN_HDRS) \
317-
$(LIBKVM_OBJS) \
318-
$(SPLIT_TEST_GEN_OBJ) \
319-
$(TEST_DEP_FILES) \
320-
$(TEST_GEN_OBJ) \
321-
cscope.*
322-
323-
$(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c $(GEN_HDRS)
324-
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
325-
326-
$(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS)
327-
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
328-
329-
# Compile the string overrides as freestanding to prevent the compiler from
330-
# generating self-referential code, e.g. without "freestanding" the compiler may
331-
# "optimize" memcmp() by invoking memcmp(), thus causing infinite recursion.
332-
$(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c
333-
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
334-
335-
$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
336-
$(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS)
337-
$(TEST_GEN_PROGS): $(LIBKVM_OBJS)
338-
$(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
339-
$(TEST_GEN_OBJ): $(GEN_HDRS)
340-
341-
cscope: include_paths = $(LINUX_TOOL_INCLUDE) $(LINUX_HDR_PATH) include lib ..
342-
cscope:
343-
$(RM) cscope.*
344-
(find $(include_paths) -name '*.h' \
345-
-exec realpath --relative-base=$(PWD) {} \;; \
346-
find . -name '*.c' \
347-
-exec realpath --relative-base=$(PWD) {} \;) | sort -u > cscope.files
348-
cscope -b

0 commit comments

Comments
 (0)