ia64/xen-unstable

view xen/Makefile @ 10915:08415dfc5918

[XEN] Allow quick building of individual files.

For the purpose of quick compile testing of (namely smaller) changes,
provide a
means to build individual pieces underneath the xen dir (could equally
be applied
to tools, and the top level Makefile could also be made aware of this
logic to
make things even more consistent). At once, add a way to only
pre-process files
in case some of the more complicated macros need change and hence
inspection
of the results.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
author kfraser@localhost.localdomain
date Wed Aug 02 15:06:29 2006 +0100 (2006-08-02)
parents b786bfb058eb
children 6160da08a238
line source
1 # This is the correct place to edit the build version.
2 # All other places this is stored (eg. compile.h) should be autogenerated.
3 export XEN_VERSION = 3
4 export XEN_SUBVERSION = 0
5 export XEN_EXTRAVERSION ?= -unstable
6 export XEN_FULLVERSION = $(XEN_VERSION).$(XEN_SUBVERSION)$(XEN_EXTRAVERSION)
7 -include xen-version
9 export BASEDIR := $(CURDIR)
11 .PHONY: default
12 default: build
14 .PHONY: dist
15 dist: install
17 .PHONY: build install clean distclean cscope TAGS tags
18 build install debug clean distclean cscope TAGS tags::
19 $(MAKE) -f Rules.mk _$@
21 .PHONY: _build
22 _build: $(TARGET).gz
24 .PHONY: _install
25 _install: $(TARGET).gz
26 [ -d $(DESTDIR)/boot ] || $(INSTALL_DIR) $(DESTDIR)/boot
27 $(INSTALL_DATA) $(TARGET).gz $(DESTDIR)/boot/$(notdir $(TARGET))-$(XEN_FULLVERSION).gz
28 ln -f -s $(notdir $(TARGET))-$(XEN_FULLVERSION).gz $(DESTDIR)/boot/$(notdir $(TARGET))-$(XEN_VERSION).$(XEN_SUBVERSION).gz
29 ln -f -s $(notdir $(TARGET))-$(XEN_FULLVERSION).gz $(DESTDIR)/boot/$(notdir $(TARGET))-$(XEN_VERSION).gz
30 ln -f -s $(notdir $(TARGET))-$(XEN_FULLVERSION).gz $(DESTDIR)/boot/$(notdir $(TARGET)).gz
31 $(INSTALL_DATA) $(TARGET)-syms $(DESTDIR)/boot/$(notdir $(TARGET))-syms-$(XEN_FULLVERSION)
32 [ -d $(DESTDIR)/usr/include/xen/io ] || \
33 $(INSTALL_DIR) $(DESTDIR)/usr/include/xen/io
34 $(INSTALL_DATA) include/public/*.h $(DESTDIR)/usr/include/xen
35 $(INSTALL_DATA) include/public/io/*.h $(DESTDIR)/usr/include/xen/io
36 $(INSTALL_DATA) include/public/COPYING $(DESTDIR)/usr/include/xen
38 .PHONY: _debug
39 _debug:
40 objdump -D -S $(TARGET)-syms > $(TARGET).s
42 .PHONY: _clean
43 _clean: delete-unfresh-files
44 $(MAKE) -C tools clean
45 $(MAKE) -f $(BASEDIR)/Rules.mk -C common clean
46 $(MAKE) -f $(BASEDIR)/Rules.mk -C drivers clean
47 $(MAKE) -f $(BASEDIR)/Rules.mk -C acm clean
48 $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) clean
49 rm -f include/asm *.o $(TARGET)* *~ core
50 rm -f include/asm-*/asm-offsets.h
51 rm -f include/xen/acm_policy.h
53 .PHONY: _distclean
54 _distclean: clean
55 rm -f tags TAGS cscope.files cscope.in.out cscope.out cscope.po.out
57 $(TARGET).gz: $(TARGET)
58 gzip -f -9 < $< > $@.new
59 mv $@.new $@
61 $(TARGET): delete-unfresh-files
62 $(MAKE) -C tools
63 $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
64 $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/acm_policy.h
65 [ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
66 $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) asm-offsets.s
67 $(MAKE) -f $(BASEDIR)/Rules.mk include/asm-$(TARGET_ARCH)/asm-offsets.h
68 $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $(TARGET)
70 # drivers/char/console.o contains static banner/compile info. Blow it away.
71 # Don't refresh these files during e.g., 'sudo make install'
72 .PHONY: delete-unfresh-files
73 delete-unfresh-files:
74 @if [ ! -r include/xen/compile.h -o -O include/xen/compile.h ]; then \
75 rm -f include/xen/compile.h; \
76 fi
78 # acm_policy.h contains security policy for Xen
79 include/xen/acm_policy.h:
80 @(set -e; \
81 echo "/*"; \
82 echo " * DO NOT MODIFY."; \
83 echo " *"; \
84 echo " * This file was auto-generated by xen/Makefile $<"; \
85 echo " *"; \
86 echo " */"; \
87 echo ""; \
88 echo "#ifndef ACM_DEFAULT_SECURITY_POLICY"; \
89 echo "#define ACM_DEFAULT_SECURITY_POLICY $(ACM_DEFAULT_SECURITY_POLICY)"; \
90 echo "#endif") >$@
92 # compile.h contains dynamic build info. Rebuilt on every 'make' invocation.
93 include/xen/compile.h: LANG=C
94 include/xen/compile.h: include/xen/compile.h.in
95 @sed -e 's/@@date@@/$(shell date)/g' \
96 -e 's/@@time@@/$(shell date +%T)/g' \
97 -e 's/@@whoami@@/$(shell whoami)/g' \
98 -e 's/@@domain@@/$(shell ([ -x /bin/dnsdomainname ] && /bin/dnsdomainname) || ([ -x /bin/domainname ] && /bin/domainname || echo [unknown]))/g' \
99 -e 's/@@hostname@@/$(shell hostname)/g' \
100 -e 's|@@compiler@@|$(shell $(CC) $(CFLAGS) -v 2>&1 | tail -n 1 | sed -e "s;|;/;")|g' \
101 -e 's/@@version@@/$(XEN_VERSION)/g' \
102 -e 's/@@subversion@@/$(XEN_SUBVERSION)/g' \
103 -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \
104 -e 's!@@changeset@@!$(shell ((hg parents || head -n 7 ../ChangeLog || echo date: unavailable) | awk '{FS="changeset:[ ]+"}/^changeset/{CS=$$2};{FS="date:[ ]+"}/^date/{D=$$2}; END {print D, CS}') 2>/dev/null)!g' \
105 < include/xen/compile.h.in > $@.new
106 tools/figlet/figlet -d tools/figlet Xen $(XEN_FULLVERSION) >> $@.new
107 @mv -f $@.new $@
109 include/asm-$(TARGET_ARCH)/asm-offsets.h: arch/$(TARGET_ARCH)/asm-offsets.s
110 @(set -e; \
111 echo "/*"; \
112 echo " * DO NOT MODIFY."; \
113 echo " *"; \
114 echo " * This file was auto-generated from $<"; \
115 echo " *"; \
116 echo " */"; \
117 echo ""; \
118 echo "#ifndef __ASM_OFFSETS_H__"; \
119 echo "#define __ASM_OFFSETS_H__"; \
120 echo ""; \
121 sed -ne "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"; \
122 echo ""; \
123 echo "#endif") <$< >$@
125 SUBDIRS = acm arch/$(TARGET_ARCH) common drivers
126 define all_sources
127 ( find include/asm-$(TARGET_ARCH) -name SCCS -prune -o -name '*.h' -print; \
128 find include -type d -name SCCS -prune -o \( -name "asm-*" -o \
129 -name config \) -prune -o -name '*.h' -print; \
130 find $(SUBDIRS) -name SCCS -prune -o -name '*.[chS]' -print )
131 endef
133 .PHONY: _TAGS
134 _TAGS:
135 rm -f TAGS && $(all_sources) | xargs etags -a
137 .PHONY: _tags
138 _tags:
139 rm -f TAGS && $(all_sources) | xargs ctags -a
141 .PHONY: _cscope
142 _cscope:
143 $(all_sources) > cscope.files
144 cscope -k -b -q
146 .PHONY: MAP
147 MAP:
148 $(NM) $(TARGET) | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map
150 .PHONY: FORCE
151 FORCE:
153 %.o %.i: %.c FORCE
154 $(MAKE) -f $(BASEDIR)/Rules.mk -C $(*D) $(@F)
156 %.o %.s: %.S FORCE
157 $(MAKE) -f $(BASEDIR)/Rules.mk -C $(*D) $(@F)
159 %/: FORCE
160 $(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in.o