1XEN_ROOT = $(CURDIR)/../..
2include $(XEN_ROOT)/tools/Rules.mk
3
4# Caution: some tools/libs/*/Makefile generate header files directly in
5# tools/include, and they do the [un]install actions for those, too.
6# In case other headers need to be built cwin tools/include this should be
7# taken into account, i.e. there should be no rules added here for generating
8# any tools/include/*.h files.
9
10.PHONY: all
11all: xen-foreign xen-dir xen-xsm/.dir
12ifeq ($(CONFIG_X86),y)
13all: xen/lib/x86/all
14endif
15
16.PHONY: build
17build: all
18
19.PHONY: xen-foreign
20xen-foreign:
21	$(MAKE) -C xen-foreign
22
23.PHONY: xen-dir
24xen-dir:
25	mkdir -p xen/libelf acpi
26	find xen/ acpi/ -type l -exec rm '{}' +
27	sed -e 's#@includedir@#$(includedir)/xen#g' xen.COPYING.in > xen/COPYING
28	ln -s $(XEN_ROOT)/xen/include/public/*.h xen/
29	ln -s $(XEN_ROOT)/xen/include/public/*/ xen/
30	ln -s ../xen-sys/$(XEN_OS) xen/sys
31	ln -s $(addprefix $(XEN_ROOT)/xen/include/xen/,libelf.h elfstructs.h) xen/libelf/
32	ln -s ../xen-foreign xen/foreign
33	ln -s $(XEN_ROOT)/xen/include/acpi/platform acpi/
34	ln -s $(XEN_ROOT)/xen/include/acpi/ac*.h acpi/
35ifeq ($(CONFIG_X86),y)
36	ln -s $(XEN_ROOT)/xen/arch/x86/include/asm xen/
37	mkdir -p xen/lib/x86
38	ln -s $(filter-out %autogen.h,$(wildcard $(XEN_ROOT)/xen/include/xen/lib/x86/*.h)) xen/lib/x86/
39	ln -s $(XEN_ROOT)/xen/include/xen/lib/x86/Makefile xen/lib/x86/
40endif
41
42.PHONY: xen/lib/x86/all
43xen/lib/x86/all: xen-dir
44	$(MAKE) -C xen/lib/x86 all XEN_ROOT=$(XEN_ROOT) PYTHON=$(PYTHON)
45
46MKFLASK := $(XEN_ROOT)/xen/xsm/flask/policy/mkflask.sh
47FLASK_H_DEPEND := $(XEN_ROOT)/xen/xsm/flask/policy/initial_sids
48
49# Not xen/xsm as that clashes with link to
50# $(XEN_ROOT)/xen/include/public/xsm above.
51xen-xsm/.dir: $(MKFLASK) $(FLASK_H_DEPEND)
52	mkdir -p xen-xsm/flask
53	$(SHELL) $(MKFLASK) $(AWK) xen-xsm/flask $(FLASK_H_DEPEND)
54	touch $@
55
56.PHONY: install
57install: all
58	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/arch-x86
59	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/arch-x86/hvm
60	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/arch-arm
61	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/arch-arm/hvm
62	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/foreign
63	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/hvm
64	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/io
65	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/sys
66	$(INSTALL_DIR) $(DESTDIR)$(includedir)/xen/xsm
67	$(INSTALL_DATA) xen/COPYING $(DESTDIR)$(includedir)/xen
68	$(INSTALL_DATA) xen/*.h $(DESTDIR)$(includedir)/xen
69	$(INSTALL_DATA) xen/arch-x86/*.h $(DESTDIR)$(includedir)/xen/arch-x86
70	$(INSTALL_DATA) xen/arch-x86/hvm/*.h $(DESTDIR)$(includedir)/xen/arch-x86/hvm
71	$(INSTALL_DATA) xen/arch-arm/*.h $(DESTDIR)$(includedir)/xen/arch-arm
72	$(INSTALL_DATA) xen/arch-arm/hvm/*.h $(DESTDIR)$(includedir)/xen/arch-arm/hvm
73	$(INSTALL_DATA) xen/foreign/*.h $(DESTDIR)$(includedir)/xen/foreign
74	$(INSTALL_DATA) xen/hvm/*.h $(DESTDIR)$(includedir)/xen/hvm
75	$(INSTALL_DATA) xen/io/*.h $(DESTDIR)$(includedir)/xen/io
76	$(INSTALL_DATA) xen/sys/*.h $(DESTDIR)$(includedir)/xen/sys
77	$(INSTALL_DATA) xen/xsm/*.h $(DESTDIR)$(includedir)/xen/xsm
78	$(INSTALL_DATA) xen_list.h $(DESTDIR)$(includedir)
79
80.PHONY: uninstall
81uninstall:
82	echo "[FIXME] uninstall headers"
83	rm -rf $(DESTDIR)$(includedir)/xen
84	rm -f $(DESTDIR)$(includedir)/xen_list.h
85
86.PHONY: clean
87clean:
88	rm -rf xen xen-xsm acpi
89	$(MAKE) -C xen-foreign clean
90	rm -f _*.h
91
92.PHONY: distclean
93distclean: clean
94