5 .PHONY
: all all_32 all_64 warn_32bit_failure
clean
7 TARGETS_C_BOTHBITS
:= sigreturn single_step_syscall sysret_ss_attrs
8 TARGETS_C_32BIT_ONLY
:= entry_from_vm86
10 TARGETS_C_32BIT_ALL
:= $(TARGETS_C_BOTHBITS
) $(TARGETS_C_32BIT_ONLY
)
11 BINARIES_32
:= $(TARGETS_C_32BIT_ALL
:%=%_32
)
12 BINARIES_64
:= $(TARGETS_C_BOTHBITS
:%=%_64
)
14 CFLAGS
:= -O2
-g
-std
=gnu99
-pthread
-Wall
16 UNAME_M
:= $(shell uname
-m
)
17 CAN_BUILD_I386
:= $(shell .
/check_cc.sh
$(CC
) trivial_32bit_program.c
-m32
)
18 CAN_BUILD_X86_64
:= $(shell .
/check_cc.sh
$(CC
) trivial_64bit_program.c
)
20 ifeq ($(CAN_BUILD_I386
),1)
22 TEST_PROGS
+= $(BINARIES_32
)
25 ifeq ($(CAN_BUILD_X86_64
),1)
27 TEST_PROGS
+= $(BINARIES_64
)
30 all_32
: $(BINARIES_32
)
32 all_64
: $(BINARIES_64
)
35 $(RM
) $(BINARIES_32
) $(BINARIES_64
)
37 $(TARGETS_C_32BIT_ALL
:%=%_32
): %_32
: %.c
38 $(CC
) -m32
-o
$@
$(CFLAGS
) $(EXTRA_CFLAGS
) $^
-lrt
-ldl
40 $(TARGETS_C_BOTHBITS
:%=%_64
): %_64
: %.c
41 $(CC
) -m64
-o
$@
$(CFLAGS
) $(EXTRA_CFLAGS
) $^
-lrt
-ldl
43 # x86_64 users should be encouraged to install 32-bit libraries
44 ifeq ($(CAN_BUILD_I386
)$(CAN_BUILD_X86_64
),01)
45 all: warn_32bit_failure
48 @echo
"Warning: you seem to have a broken 32-bit build" 2>&1; \
49 echo
"environment. This will reduce test coverage of 64-bit" 2>&1; \
50 echo
"kernels. If you are using a Debian-like distribution," 2>&1; \
53 echo
" apt-get install gcc-multilib libc6-i386 libc6-dev-i386"; \
55 echo
"If you are using a Fedora-like distribution, try:"; \
57 echo
" yum install glibc-devel.*i686"; \
61 # Some tests have additional dependencies.
62 sysret_ss_attrs_64
: thunks.S