xref: /aosp_15_r20/external/linux-kselftest/tools/testing/selftests/kvm/Makefile (revision 053f45be4e351dfd5e965df293cd45b779f579ee)
1*053f45beSAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0-only
2*053f45beSAndroid Build Coastguard Workerinclude ../../../build/Build.include
3*053f45beSAndroid Build Coastguard Worker
4*053f45beSAndroid Build Coastguard Workerall:
5*053f45beSAndroid Build Coastguard Worker
6*053f45beSAndroid Build Coastguard Workertop_srcdir = ../../../..
7*053f45beSAndroid Build Coastguard Workerinclude $(top_srcdir)/scripts/subarch.include
8*053f45beSAndroid Build Coastguard WorkerARCH            ?= $(SUBARCH)
9*053f45beSAndroid Build Coastguard Worker
10*053f45beSAndroid Build Coastguard Worker# For cross-builds to work, UNAME_M has to map to ARCH and arch specific
11*053f45beSAndroid Build Coastguard Worker# directories and targets in this Makefile. "uname -m" doesn't map to
12*053f45beSAndroid Build Coastguard Worker# arch specific sub-directory names.
13*053f45beSAndroid Build Coastguard Worker#
14*053f45beSAndroid Build Coastguard Worker# UNAME_M variable to used to run the compiles pointing to the right arch
15*053f45beSAndroid Build Coastguard Worker# directories and build the right targets for these supported architectures.
16*053f45beSAndroid Build Coastguard Worker#
17*053f45beSAndroid Build Coastguard Worker# TEST_GEN_PROGS and LIBKVM are set using UNAME_M variable.
18*053f45beSAndroid Build Coastguard Worker# LINUX_TOOL_ARCH_INCLUDE is set using ARCH variable.
19*053f45beSAndroid Build Coastguard Worker#
20*053f45beSAndroid Build Coastguard Worker# x86_64 targets are named to include x86_64 as a suffix and directories
21*053f45beSAndroid Build Coastguard Worker# for includes are in x86_64 sub-directory. s390x and aarch64 follow the
22*053f45beSAndroid Build Coastguard Worker# same convention. "uname -m" doesn't result in the correct mapping for
23*053f45beSAndroid Build Coastguard Worker# s390x and aarch64.
24*053f45beSAndroid Build Coastguard Worker#
25*053f45beSAndroid Build Coastguard Worker# No change necessary for x86_64
26*053f45beSAndroid Build Coastguard WorkerUNAME_M := $(shell uname -m)
27*053f45beSAndroid Build Coastguard Worker
28*053f45beSAndroid Build Coastguard Worker# Set UNAME_M for arm64 compile/install to work
29*053f45beSAndroid Build Coastguard Workerifeq ($(ARCH),arm64)
30*053f45beSAndroid Build Coastguard Worker	UNAME_M := aarch64
31*053f45beSAndroid Build Coastguard Workerendif
32*053f45beSAndroid Build Coastguard Worker# Set UNAME_M s390x compile/install to work
33*053f45beSAndroid Build Coastguard Workerifeq ($(ARCH),s390)
34*053f45beSAndroid Build Coastguard Worker	UNAME_M := s390x
35*053f45beSAndroid Build Coastguard Workerendif
36*053f45beSAndroid Build Coastguard Worker# Set UNAME_M riscv compile/install to work
37*053f45beSAndroid Build Coastguard Workerifeq ($(ARCH),riscv)
38*053f45beSAndroid Build Coastguard Worker	UNAME_M := riscv
39*053f45beSAndroid Build Coastguard Workerendif
40*053f45beSAndroid Build Coastguard Worker
41*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/assert.c
42*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/elf.c
43*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/guest_modes.c
44*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/io.c
45*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/kvm_util.c
46*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/perf_test_util.c
47*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/rbtree.c
48*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/sparsebit.c
49*053f45beSAndroid Build Coastguard WorkerLIBKVM += lib/test_util.c
50*053f45beSAndroid Build Coastguard Worker
51*053f45beSAndroid Build Coastguard WorkerLIBKVM_STRING += lib/string_override.c
52*053f45beSAndroid Build Coastguard Worker
53*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/apic.c
54*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/handlers.S
55*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/perf_test_util.c
56*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/processor.c
57*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/svm.c
58*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/ucall.c
59*053f45beSAndroid Build Coastguard WorkerLIBKVM_x86_64 += lib/x86_64/vmx.c
60*053f45beSAndroid Build Coastguard Worker
61*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/gic.c
62*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/gic_v3.c
63*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/handlers.S
64*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/processor.c
65*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/spinlock.c
66*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/ucall.c
67*053f45beSAndroid Build Coastguard WorkerLIBKVM_aarch64 += lib/aarch64/vgic.c
68*053f45beSAndroid Build Coastguard Worker
69*053f45beSAndroid Build Coastguard WorkerLIBKVM_s390x += lib/s390x/diag318_test_handler.c
70*053f45beSAndroid Build Coastguard WorkerLIBKVM_s390x += lib/s390x/processor.c
71*053f45beSAndroid Build Coastguard WorkerLIBKVM_s390x += lib/s390x/ucall.c
72*053f45beSAndroid Build Coastguard Worker
73*053f45beSAndroid Build Coastguard WorkerLIBKVM_riscv += lib/riscv/processor.c
74*053f45beSAndroid Build Coastguard WorkerLIBKVM_riscv += lib/riscv/ucall.c
75*053f45beSAndroid Build Coastguard Worker
76*053f45beSAndroid Build Coastguard Worker# Non-compiled test targets
77*053f45beSAndroid Build Coastguard WorkerTEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
78*053f45beSAndroid Build Coastguard Worker
79*053f45beSAndroid Build Coastguard Worker# Compiled test targets
80*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
81*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
82*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/get_msr_index_features
83*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/evmcs_test
84*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/emulator_error_test
85*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
86*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
87*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
88*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
89*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
90*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
91*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
92*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/mmio_warning_test
93*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
94*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
95*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
96*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
97*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
98*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
99*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/smm_test
100*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/state_test
101*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
102*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
103*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
104*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
105*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
106*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
107*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
108*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
109*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
110*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
111*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
112*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
113*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
114*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
115*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
116*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
117*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
118*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
119*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
120*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
121*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
122*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
123*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/debug_regs
124*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
125*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
126*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
127*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
128*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
129*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/amx_test
130*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
131*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
132*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += access_tracking_perf_test
133*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += demand_paging_test
134*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += dirty_log_test
135*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += dirty_log_perf_test
136*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += hardware_disable_test
137*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
138*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += kvm_page_table_test
139*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += max_guest_memory_test
140*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
141*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += memslot_perf_test
142*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += rseq_test
143*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += set_memory_region_test
144*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += steal_time
145*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
146*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_x86_64 += system_counter_offset_test
147*053f45beSAndroid Build Coastguard Worker
148*053f45beSAndroid Build Coastguard Worker# Compiled outputs used by test targets
149*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
150*053f45beSAndroid Build Coastguard Worker
151*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
152*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/arch_timer
153*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
154*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/get-reg-list
155*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/hypercalls
156*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/psci_test
157*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
158*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/vgic_init
159*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
160*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += demand_paging_test
161*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += dirty_log_test
162*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += dirty_log_perf_test
163*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
164*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += kvm_page_table_test
165*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
166*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += memslot_perf_test
167*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += rseq_test
168*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += set_memory_region_test
169*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += steal_time
170*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
171*053f45beSAndroid Build Coastguard Worker
172*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x = s390x/memop
173*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += s390x/resets
174*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += s390x/sync_regs_test
175*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += s390x/tprot
176*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += demand_paging_test
177*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += dirty_log_test
178*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += kvm_create_max_vcpus
179*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += kvm_page_table_test
180*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += rseq_test
181*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += set_memory_region_test
182*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_s390x += kvm_binary_stats_test
183*053f45beSAndroid Build Coastguard Worker
184*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_riscv += demand_paging_test
185*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_riscv += dirty_log_test
186*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_riscv += kvm_create_max_vcpus
187*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_riscv += kvm_page_table_test
188*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_riscv += set_memory_region_test
189*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_riscv += kvm_binary_stats_test
190*053f45beSAndroid Build Coastguard Worker
191*053f45beSAndroid Build Coastguard WorkerTEST_PROGS += $(TEST_PROGS_$(UNAME_M))
192*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS += $(TEST_GEN_PROGS_$(UNAME_M))
193*053f45beSAndroid Build Coastguard WorkerTEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(UNAME_M))
194*053f45beSAndroid Build Coastguard WorkerLIBKVM += $(LIBKVM_$(UNAME_M))
195*053f45beSAndroid Build Coastguard Worker
196*053f45beSAndroid Build Coastguard WorkerINSTALL_HDR_PATH = $(top_srcdir)/usr
197*053f45beSAndroid Build Coastguard WorkerLINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
198*053f45beSAndroid Build Coastguard WorkerLINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
199*053f45beSAndroid Build Coastguard Workerifeq ($(ARCH),x86_64)
200*053f45beSAndroid Build Coastguard WorkerLINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
201*053f45beSAndroid Build Coastguard Workerelse
202*053f45beSAndroid Build Coastguard WorkerLINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
203*053f45beSAndroid Build Coastguard Workerendif
204*053f45beSAndroid Build Coastguard WorkerCFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
205*053f45beSAndroid Build Coastguard Worker	-fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \
206*053f45beSAndroid Build Coastguard Worker	-I$(LINUX_TOOL_ARCH_INCLUDE) -I$(LINUX_HDR_PATH) -Iinclude \
207*053f45beSAndroid Build Coastguard Worker	-I$(<D) -Iinclude/$(UNAME_M) -I ../rseq -I.. $(EXTRA_CFLAGS) \
208*053f45beSAndroid Build Coastguard Worker	$(KHDR_INCLUDES)
209*053f45beSAndroid Build Coastguard Worker
210*053f45beSAndroid Build Coastguard Workerno-pie-option := $(call try-run, echo 'int main() { return 0; }' | \
211*053f45beSAndroid Build Coastguard Worker        $(CC) -Werror -no-pie -x c - -o "$$TMP", -no-pie)
212*053f45beSAndroid Build Coastguard Worker
213*053f45beSAndroid Build Coastguard Worker# On s390, build the testcases KVM-enabled
214*053f45beSAndroid Build Coastguard Workerpgste-option = $(call try-run, echo 'int main() { return 0; }' | \
215*053f45beSAndroid Build Coastguard Worker	$(CC) -Werror -Wl$(comma)--s390-pgste -x c - -o "$$TMP",-Wl$(comma)--s390-pgste)
216*053f45beSAndroid Build Coastguard Worker
217*053f45beSAndroid Build Coastguard WorkerLDLIBS += -ldl
218*053f45beSAndroid Build Coastguard WorkerLDFLAGS += -pthread $(no-pie-option) $(pgste-option)
219*053f45beSAndroid Build Coastguard Worker
220*053f45beSAndroid Build Coastguard Worker# After inclusion, $(OUTPUT) is defined and
221*053f45beSAndroid Build Coastguard Worker# $(TEST_GEN_PROGS) starts with $(OUTPUT)/
222*053f45beSAndroid Build Coastguard Workerinclude ../lib.mk
223*053f45beSAndroid Build Coastguard Worker
224*053f45beSAndroid Build Coastguard WorkerLIBKVM_C := $(filter %.c,$(LIBKVM))
225*053f45beSAndroid Build Coastguard WorkerLIBKVM_S := $(filter %.S,$(LIBKVM))
226*053f45beSAndroid Build Coastguard WorkerLIBKVM_C_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_C))
227*053f45beSAndroid Build Coastguard WorkerLIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
228*053f45beSAndroid Build Coastguard WorkerLIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
229*053f45beSAndroid Build Coastguard WorkerLIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
230*053f45beSAndroid Build Coastguard Worker
231*053f45beSAndroid Build Coastguard WorkerEXTRA_CLEAN += $(LIBKVM_OBJS) cscope.*
232*053f45beSAndroid Build Coastguard Worker
233*053f45beSAndroid Build Coastguard Workerx := $(shell mkdir -p $(sort $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
234*053f45beSAndroid Build Coastguard Worker$(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c
235*053f45beSAndroid Build Coastguard Worker	$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
236*053f45beSAndroid Build Coastguard Worker
237*053f45beSAndroid Build Coastguard Worker$(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S
238*053f45beSAndroid Build Coastguard Worker	$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
239*053f45beSAndroid Build Coastguard Worker
240*053f45beSAndroid Build Coastguard Worker# Compile the string overrides as freestanding to prevent the compiler from
241*053f45beSAndroid Build Coastguard Worker# generating self-referential code, e.g. without "freestanding" the compiler may
242*053f45beSAndroid Build Coastguard Worker# "optimize" memcmp() by invoking memcmp(), thus causing infinite recursion.
243*053f45beSAndroid Build Coastguard Worker$(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c
244*053f45beSAndroid Build Coastguard Worker	$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
245*053f45beSAndroid Build Coastguard Worker
246*053f45beSAndroid Build Coastguard Workerx := $(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
247*053f45beSAndroid Build Coastguard Worker$(TEST_GEN_PROGS): $(LIBKVM_OBJS)
248*053f45beSAndroid Build Coastguard Worker$(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
249*053f45beSAndroid Build Coastguard Worker
250*053f45beSAndroid Build Coastguard Workercscope: include_paths = $(LINUX_TOOL_INCLUDE) $(LINUX_HDR_PATH) include lib ..
251*053f45beSAndroid Build Coastguard Workercscope:
252*053f45beSAndroid Build Coastguard Worker	$(RM) cscope.*
253*053f45beSAndroid Build Coastguard Worker	(find $(include_paths) -name '*.h' \
254*053f45beSAndroid Build Coastguard Worker		-exec realpath --relative-base=$(PWD) {} \;; \
255*053f45beSAndroid Build Coastguard Worker	find . -name '*.c' \
256*053f45beSAndroid Build Coastguard Worker		-exec realpath --relative-base=$(PWD) {} \;) | sort -u > cscope.files
257*053f45beSAndroid Build Coastguard Worker	cscope -b
258