1 # SPDX-License-Identifier: GPL-2.0-only
2 include ..
/..
/..
/..
/scripts
/Kbuild.
include
6 top_srcdir
= ..
/..
/..
/..
8 UNAME_M
:= $(shell uname
-m
)
10 LIBKVM
= lib
/assert.c lib
/elf.c lib
/io.c lib
/kvm_util.c lib
/sparsebit.c lib
/test_util.c
11 LIBKVM_x86_64
= lib
/x86_64
/processor.c lib
/x86_64
/vmx.c lib
/x86_64
/svm.c lib
/x86_64
/ucall.c
12 LIBKVM_aarch64
= lib
/aarch64
/processor.c lib
/aarch64
/ucall.c
13 LIBKVM_s390x
= lib
/s390x
/processor.c lib
/s390x
/ucall.c
15 TEST_GEN_PROGS_x86_64
= x86_64
/cr4_cpuid_sync_test
16 TEST_GEN_PROGS_x86_64
+= x86_64
/evmcs_test
17 TEST_GEN_PROGS_x86_64
+= x86_64
/hyperv_cpuid
18 TEST_GEN_PROGS_x86_64
+= x86_64
/mmio_warning_test
19 TEST_GEN_PROGS_x86_64
+= x86_64
/platform_info_test
20 TEST_GEN_PROGS_x86_64
+= x86_64
/set_memory_region_test
21 TEST_GEN_PROGS_x86_64
+= x86_64
/set_sregs_test
22 TEST_GEN_PROGS_x86_64
+= x86_64
/smm_test
23 TEST_GEN_PROGS_x86_64
+= x86_64
/state_test
24 TEST_GEN_PROGS_x86_64
+= x86_64
/svm_vmcall_test
25 TEST_GEN_PROGS_x86_64
+= x86_64
/sync_regs_test
26 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_close_while_nested_test
27 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_dirty_log_test
28 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_set_nested_state_test
29 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_tsc_adjust_test
30 TEST_GEN_PROGS_x86_64
+= x86_64
/xss_msr_test
31 TEST_GEN_PROGS_x86_64
+= clear_dirty_log_test
32 TEST_GEN_PROGS_x86_64
+= demand_paging_test
33 TEST_GEN_PROGS_x86_64
+= dirty_log_test
34 TEST_GEN_PROGS_x86_64
+= kvm_create_max_vcpus
35 TEST_GEN_PROGS_x86_64
+= steal_time
37 TEST_GEN_PROGS_aarch64
+= clear_dirty_log_test
38 TEST_GEN_PROGS_aarch64
+= demand_paging_test
39 TEST_GEN_PROGS_aarch64
+= dirty_log_test
40 TEST_GEN_PROGS_aarch64
+= kvm_create_max_vcpus
41 TEST_GEN_PROGS_aarch64
+= steal_time
43 TEST_GEN_PROGS_s390x
= s390x
/memop
44 TEST_GEN_PROGS_s390x
+= s390x
/resets
45 TEST_GEN_PROGS_s390x
+= s390x
/sync_regs_test
46 TEST_GEN_PROGS_s390x
+= demand_paging_test
47 TEST_GEN_PROGS_s390x
+= dirty_log_test
48 TEST_GEN_PROGS_s390x
+= kvm_create_max_vcpus
50 TEST_GEN_PROGS
+= $(TEST_GEN_PROGS_
$(UNAME_M
))
51 LIBKVM
+= $(LIBKVM_
$(UNAME_M
))
53 INSTALL_HDR_PATH
= $(top_srcdir
)/usr
54 LINUX_HDR_PATH
= $(INSTALL_HDR_PATH
)/include/
55 LINUX_TOOL_INCLUDE
= $(top_srcdir
)/tools
/include
56 LINUX_TOOL_ARCH_INCLUDE
= $(top_srcdir
)/tools
/arch
/x86
/include
57 CFLAGS
+= -Wall
-Wstrict-prototypes
-Wuninitialized
-O2
-g
-std
=gnu99 \
58 -fno-stack-protector
-fno-PIE
-I
$(LINUX_TOOL_INCLUDE
) \
59 -I
$(LINUX_TOOL_ARCH_INCLUDE
) -I
$(LINUX_HDR_PATH
) -Iinclude \
60 -I
$(<D
) -Iinclude
/$(UNAME_M
) -I..
62 no-pie-option
:= $(call try-run
, echo
'int main() { return 0; }' | \
63 $(CC
) -Werror
-no-pie
-x c
- -o
"$$TMP", -no-pie
)
65 # On s390, build the testcases KVM-enabled
66 pgste-option
= $(call try-run
, echo
'int main() { return 0; }' | \
67 $(CC
) -Werror
-Wl
$(comma
)--s390-pgste
-x c
- -o
"$$TMP",-Wl
$(comma
)--s390-pgste
)
70 LDFLAGS
+= -pthread
$(no-pie-option
) $(pgste-option
)
72 # After inclusion, $(OUTPUT) is defined and
73 # $(TEST_GEN_PROGS) starts with $(OUTPUT)/
76 STATIC_LIBS
:= $(OUTPUT
)/libkvm.a
77 LIBKVM_OBJ
:= $(patsubst %.c
, $(OUTPUT
)/%.o
, $(LIBKVM
))
78 EXTRA_CLEAN
+= $(LIBKVM_OBJ
) $(STATIC_LIBS
) cscope.
*
80 x
:= $(shell mkdir
-p
$(sort $(dir $(LIBKVM_OBJ
))))
81 $(LIBKVM_OBJ
): $(OUTPUT
)/%.o
: %.c
82 $(CC
) $(CFLAGS
) $(CPPFLAGS
) $(TARGET_ARCH
) -c
$< -o
$@
84 $(OUTPUT
)/libkvm.a
: $(LIBKVM_OBJ
)
88 $(TEST_GEN_PROGS
): $(STATIC_LIBS
)
90 cscope
: include_paths
= $(LINUX_TOOL_INCLUDE
) $(LINUX_HDR_PATH
) include lib ..
93 (find
$(include_paths
) -name
'*.h' \
94 -exec realpath
--relative-base
=$(PWD
) {} \
;; \
96 -exec realpath
--relative-base
=$(PWD
) {} \
;) |
sort -u
> cscope.files