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
11 LIBKVM_x86_64
= lib
/x86_64
/processor.c lib
/x86_64
/vmx.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_sregs_test
21 TEST_GEN_PROGS_x86_64
+= x86_64
/smm_test
22 TEST_GEN_PROGS_x86_64
+= x86_64
/state_test
23 TEST_GEN_PROGS_x86_64
+= x86_64
/sync_regs_test
24 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_close_while_nested_test
25 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_dirty_log_test
26 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_set_nested_state_test
27 TEST_GEN_PROGS_x86_64
+= x86_64
/vmx_tsc_adjust_test
28 TEST_GEN_PROGS_x86_64
+= x86_64
/xss_msr_test
29 TEST_GEN_PROGS_x86_64
+= clear_dirty_log_test
30 TEST_GEN_PROGS_x86_64
+= dirty_log_test
31 TEST_GEN_PROGS_x86_64
+= kvm_create_max_vcpus
33 TEST_GEN_PROGS_aarch64
+= clear_dirty_log_test
34 TEST_GEN_PROGS_aarch64
+= dirty_log_test
35 TEST_GEN_PROGS_aarch64
+= kvm_create_max_vcpus
37 TEST_GEN_PROGS_s390x
= s390x
/memop
38 TEST_GEN_PROGS_s390x
+= s390x
/sync_regs_test
39 TEST_GEN_PROGS_s390x
+= dirty_log_test
40 TEST_GEN_PROGS_s390x
+= kvm_create_max_vcpus
42 TEST_GEN_PROGS
+= $(TEST_GEN_PROGS_
$(UNAME_M
))
43 LIBKVM
+= $(LIBKVM_
$(UNAME_M
))
45 INSTALL_HDR_PATH
= $(top_srcdir
)/usr
46 LINUX_HDR_PATH
= $(INSTALL_HDR_PATH
)/include/
47 LINUX_TOOL_INCLUDE
= $(top_srcdir
)/tools
/include
48 LINUX_TOOL_ARCH_INCLUDE
= $(top_srcdir
)/tools
/arch
/x86
/include
49 CFLAGS
+= -Wall
-Wstrict-prototypes
-Wuninitialized
-O2
-g
-std
=gnu99 \
50 -fno-stack-protector
-fno-PIE
-I
$(LINUX_TOOL_INCLUDE
) \
51 -I
$(LINUX_TOOL_ARCH_INCLUDE
) -I
$(LINUX_HDR_PATH
) -Iinclude \
52 -I
$(<D
) -Iinclude
/$(UNAME_M
) -I..
54 no-pie-option
:= $(call try-run
, echo
'int main() { return 0; }' | \
55 $(CC
) -Werror
-no-pie
-x c
- -o
"$$TMP", -no-pie
)
57 # On s390, build the testcases KVM-enabled
58 pgste-option
= $(call try-run
, echo
'int main() { return 0; }' | \
59 $(CC
) -Werror
-Wl
$(comma
)--s390-pgste
-x c
- -o
"$$TMP",-Wl
$(comma
)--s390-pgste
)
62 LDFLAGS
+= -pthread
$(no-pie-option
) $(pgste-option
)
64 # After inclusion, $(OUTPUT) is defined and
65 # $(TEST_GEN_PROGS) starts with $(OUTPUT)/
68 STATIC_LIBS
:= $(OUTPUT
)/libkvm.a
69 LIBKVM_OBJ
:= $(patsubst %.c
, $(OUTPUT
)/%.o
, $(LIBKVM
))
70 EXTRA_CLEAN
+= $(LIBKVM_OBJ
) $(STATIC_LIBS
) cscope.
*
72 x
:= $(shell mkdir
-p
$(sort $(dir $(LIBKVM_OBJ
))))
73 $(LIBKVM_OBJ
): $(OUTPUT
)/%.o
: %.c
74 $(CC
) $(CFLAGS
) $(CPPFLAGS
) $(TARGET_ARCH
) -c
$< -o
$@
76 $(OUTPUT
)/libkvm.a
: $(LIBKVM_OBJ
)
80 $(TEST_GEN_PROGS
): $(STATIC_LIBS
)
82 cscope
: include_paths
= $(LINUX_TOOL_INCLUDE
) $(LINUX_HDR_PATH
) include lib ..
85 (find
$(include_paths
) -name
'*.h' \
86 -exec realpath
--relative-base
=$(PWD
) {} \
;; \
88 -exec realpath
--relative-base
=$(PWD
) {} \
;) |
sort -u
> cscope.files