blob: c0b7a4556390e7c15e3f088ab1368c5db3cb9cca [file] [log] [blame]
Rusty Russell8ca47e02007-07-19 01:49:29 -07001# This creates the demonstration utility "lguest" which runs a Linux guest.
2
3# For those people that have a separate object dir, look there for .config
4KBUILD_OUTPUT := ../..
5ifdef O
6 ifeq ("$(origin O)", "command line")
7 KBUILD_OUTPUT := $(O)
8 endif
9endif
10# We rely on CONFIG_PAGE_OFFSET to know where to put lguest binary.
11include $(KBUILD_OUTPUT)/.config
12LGUEST_GUEST_TOP := ($(CONFIG_PAGE_OFFSET) - 0x08000000)
13
Rusty Russell6570c45992007-07-23 18:43:56 -070014CFLAGS:=-Wall -Wmissing-declarations -Wmissing-prototypes -O3 -Wl,-T,lguest.lds
Rusty Russell8ca47e02007-07-19 01:49:29 -070015LDLIBS:=-lz
Ronald G. Minniche3bcf5e2007-08-09 21:07:24 +100016# Removing this works for some versions of ld.so (eg. Ubuntu Feisty) and
17# not others (eg. FC7).
18LDFLAGS+=-static
Rusty Russell8ca47e02007-07-19 01:49:29 -070019all: lguest.lds lguest
20
21# The linker script on x86 is so complex the only way of creating one
22# which will link our binary in the right place is to mangle the
23# default one.
24lguest.lds:
25 $(LD) --verbose | awk '/^==========/ { PRINT=1; next; } /SIZEOF_HEADERS/ { gsub(/0x[0-9A-F]*/, "$(LGUEST_GUEST_TOP)") } { if (PRINT) print $$0; }' > $@
26
27clean:
28 rm -f lguest.lds lguest