debuggers.hg

annotate stubdom/Makefile @ 19661:e0221531d0e5

stubdom: Rebuild the ocaml runtime libraries with the options needed
if they are to be linked with object files created by ocamlc and the minios
kernel.

This is needed to build stubdoms written in ocaml.

Signed-off-by: Alex Zeffertt <alex.zeffertt@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Tue May 19 14:17:56 2009 +0100 (2009-05-19)
parents b5522741f6b5
children 415505139333
rev   line source
keir@18447 1 XEN_ROOT = ..
keir@17905 2 MINI_OS = $(XEN_ROOT)/extras/mini-os
keir@17066 3
keir@17070 4 export XEN_OS=MiniOS
keir@17070 5
keir@17066 6 export stubdom=y
keir@17066 7 export debug=y
keir@18007 8 include $(XEN_ROOT)/Config.mk
keir@17066 9
keir@19007 10 #ZLIB_URL?=http://www.zlib.net
keir@19007 11 ZLIB_URL=$(XEN_EXTFILES_URL)
keir@17066 12 ZLIB_VERSION=1.2.3
keir@19007 13
keir@19007 14 #LIBPCI_URL?=http://www.kernel.org/pub/software/utils/pciutils
keir@19007 15 LIBPCI_URL?=$(XEN_EXTFILES_URL)
keir@17066 16 LIBPCI_VERSION=2.2.9
keir@19007 17
keir@19007 18 #NEWLIB_URL?=ftp://sources.redhat.com/pub/newlib
keir@19007 19 NEWLIB_URL?=$(XEN_EXTFILES_URL)
keir@18034 20 NEWLIB_VERSION=1.16.0
keir@19007 21
keir@19007 22 #LWIP_URL?=http://download.savannah.gnu.org/releases/lwip
keir@19007 23 LWIP_URL?=$(XEN_EXTFILES_URL)
keir@18114 24 LWIP_VERSION=1.3.0
keir@19007 25
keir@19007 26 #GRUB_URL?=http://alpha.gnu.org/gnu/grub
keir@19007 27 GRUB_URL?=$(XEN_EXTFILES_URL)
keir@18113 28 GRUB_VERSION=0.97
keir@17066 29
keir@19661 30 #OCAML_URL?=$(XEN_EXTFILES_URL)
keir@19661 31 OCAML_URL?=http://caml.inria.fr/pub/distrib/ocaml-3.11
keir@19661 32 OCAML_VERSION=3.11.0
keir@19661 33
keir@17066 34 WGET=wget -c
keir@17066 35
keir@17066 36 GNU_TARGET_ARCH:=$(XEN_TARGET_ARCH)
keir@17066 37 ifeq ($(XEN_TARGET_ARCH),x86_32)
keir@17066 38 GNU_TARGET_ARCH:=i686
keir@17066 39 endif
keir@17066 40
keir@17066 41 ifeq ($(GNU_TARGET_ARCH), i686)
keir@17066 42 TARGET_CFLAGS=
keir@17830 43 NEWLIB_CFLAGS+=-D_I386MACH_ALLOW_HW_INTERRUPTS
keir@18034 44 STUBDOM_SUPPORTED=1
keir@17066 45 endif
keir@17066 46 ifeq ($(GNU_TARGET_ARCH), x86_64)
keir@17066 47 TARGET_CFLAGS=-mno-red-zone
keir@17830 48 NEWLIB_CFLAGS+=-D_I386MACH_ALLOW_HW_INTERRUPTS
keir@18034 49 STUBDOM_SUPPORTED=1
keir@17066 50 endif
keir@17066 51 ifeq ($(GNU_TARGET_ARCH), ia64)
keir@17066 52 TARGET_CFLAGS=-mconstant-gp
keir@17066 53 endif
keir@17066 54
keir@17066 55 CROSS_ROOT=cross-root-$(GNU_TARGET_ARCH)
keir@17066 56 CROSS_PREFIX=$(CURDIR)/$(CROSS_ROOT)
keir@18007 57
keir@18007 58 # Disable PIE/SSP if GCC supports them. They can break us.
keir@18007 59 TARGET_CFLAGS += $(CFLAGS)
keir@18007 60 TARGET_CPPFLAGS += $(CPPFLAGS)
keir@18007 61 TARGET_CFLAGS += $(call cc-option,$(CC),-nopie,)
keir@18007 62 TARGET_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
keir@18007 63 TARGET_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,)
keir@18007 64
keir@18007 65 # Do not use host headers and libs
keir@18430 66 GCC_INSTALL = $(shell LANG=C gcc -print-search-dirs | sed -n -e 's/install: \(.*\)/\1/p')
keir@18007 67 TARGET_CPPFLAGS += -U __linux__ -U __FreeBSD__ -U __sun__
keir@18055 68 TARGET_CPPFLAGS += -nostdinc
keir@18069 69 TARGET_CPPFLAGS += -isystem $(CURDIR)/$(MINI_OS)/include/posix
keir@18007 70 TARGET_CPPFLAGS += -isystem $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include
keir@18007 71 TARGET_CPPFLAGS += -isystem $(GCC_INSTALL)include
keir@18510 72 TARGET_CPPFLAGS += -isystem $(CURDIR)/lwip-$(XEN_TARGET_ARCH)/src/include
keir@18510 73 TARGET_CPPFLAGS += -isystem $(CURDIR)/lwip-$(XEN_TARGET_ARCH)/src/include/ipv4
keir@18044 74 TARGET_CPPFLAGS += -I$(CURDIR)/include
keir@18007 75
keir@18007 76 TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib
keir@17066 77
keir@17909 78 TARGETS=ioemu c caml grub
keir@17905 79
keir@17066 80 .PHONY: all
keir@18034 81 all: build
keir@18034 82 ifeq ($(STUBDOM_SUPPORTED),1)
keir@18034 83 build: ioemu-stubdom c-stubdom pv-grub
keir@18034 84 else
keir@18034 85 build:
keir@18034 86 endif
keir@17066 87
keir@17066 88 ##############
keir@17066 89 # Cross-newlib
keir@17066 90 ##############
keir@17066 91
keir@18034 92 newlib-$(NEWLIB_VERSION).tar.gz:
keir@18281 93 $(WGET) $(NEWLIB_URL)/$@
keir@18034 94
keir@18034 95 newlib-$(NEWLIB_VERSION): newlib-$(NEWLIB_VERSION).tar.gz
keir@18034 96 tar xzf $<
keir@17905 97 patch -d $@ -p0 < newlib.patch
keir@19490 98 patch -d $@ -p0 < newlib-chk.patch
keir@18034 99 touch $@
keir@17066 100
keir@17066 101 NEWLIB_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libc.a
keir@17066 102 .PHONY: cross-newlib
keir@17066 103 cross-newlib: $(NEWLIB_STAMPFILE)
keir@18368 104 $(NEWLIB_STAMPFILE): mk-headers-$(XEN_TARGET_ARCH) newlib-$(NEWLIB_VERSION)
keir@18368 105 mkdir -p newlib-$(XEN_TARGET_ARCH)
keir@18368 106 ( cd newlib-$(XEN_TARGET_ARCH) && \
keir@18034 107 CC_FOR_TARGET="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(NEWLIB_CFLAGS)" AR_FOR_TARGET=$(AR) LD_FOR_TARGET=$(LD) RANLIB_FOR_TARGET=$(RANLIB) ../newlib-$(NEWLIB_VERSION)/configure --prefix=$(CROSS_PREFIX) --verbose --target=$(GNU_TARGET_ARCH)-xen-elf --enable-newlib-io-long-long --disable-multilib && \
keir@17066 108 $(MAKE) && \
keir@18034 109 DESTDIR= $(MAKE) install )
keir@17066 110
keir@17066 111 ############
keir@17066 112 # Cross-zlib
keir@17066 113 ############
keir@17066 114
keir@17066 115 zlib-$(ZLIB_VERSION).tar.gz:
keir@18281 116 $(WGET) $(ZLIB_URL)/$@
keir@17066 117
keir@18368 118 zlib-$(XEN_TARGET_ARCH): zlib-$(ZLIB_VERSION).tar.gz
keir@18368 119 tar xzf $<
keir@18368 120 mv zlib-$(ZLIB_VERSION) $@
keir@18368 121
keir@17066 122 ZLIB_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libz.a
keir@17066 123 .PHONY: cross-zlib
keir@17066 124 cross-zlib: $(ZLIB_STAMPFILE)
keir@18368 125 $(ZLIB_STAMPFILE): zlib-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE)
keir@18368 126 ( cd $< && \
keir@18007 127 CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" CC=$(CC) ./configure --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf && \
keir@17066 128 $(MAKE) libz.a && \
keir@17066 129 $(MAKE) install )
keir@17066 130
keir@17066 131 ##############
keir@17066 132 # Cross-libpci
keir@17066 133 ##############
keir@17066 134
keir@17066 135 pciutils-$(LIBPCI_VERSION).tar.bz2:
keir@18281 136 $(WGET) $(LIBPCI_URL)/$@
keir@17066 137
keir@18368 138 pciutils-$(XEN_TARGET_ARCH): pciutils-$(LIBPCI_VERSION).tar.bz2
keir@17984 139 tar xjf $<
keir@18368 140 mv pciutils-$(LIBPCI_VERSION) $@
keir@17984 141 patch -d $@ -p1 < pciutils.patch
keir@17984 142 touch $@
keir@17984 143
keir@17066 144 LIBPCI_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libpci.a
keir@17066 145 .PHONY: cross-libpci
keir@17066 146 cross-libpci: $(LIBPCI_STAMPFILE)
keir@18368 147 $(LIBPCI_STAMPFILE): pciutils-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) $(ZLIB_STAMPFILE)
keir@18368 148 ( cd $< && \
keir@17066 149 cp ../libpci.config.h lib/config.h && \
keir@17066 150 echo '#define PCILIB_VERSION "$(LIBPCI_VERSION)"' >> lib/config.h && \
keir@17066 151 cp ../libpci.config.mak lib/config.mk && \
keir@18007 152 $(MAKE) CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I$(realpath $(MINI_OS)/include)" lib/libpci.a && \
keir@17066 153 $(INSTALL_DATA) lib/libpci.a $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ && \
keir@17066 154 $(INSTALL_DIR) $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/pci && \
keir@18259 155 $(INSTALL_DATA) lib/config.h lib/header.h lib/pci.h lib/types.h $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/pci/ \
keir@17066 156 )
keir@17066 157
keir@17066 158 ######
keir@17066 159 # lwIP
keir@17066 160 ######
keir@17066 161
keir@18114 162 lwip-$(LWIP_VERSION).tar.gz:
keir@18281 163 $(WGET) $(LWIP_URL)/$@
keir@18114 164
keir@18368 165 lwip-$(XEN_TARGET_ARCH): lwip-$(LWIP_VERSION).tar.gz
keir@18114 166 tar xzf $<
keir@18368 167 mv lwip $@
keir@18114 168 patch -d $@ -p0 < lwip.patch-cvs
keir@18114 169 touch $@
keir@17066 170
keir@19661 171 #############
keir@19661 172 # Cross-ocaml
keir@19661 173 #############
keir@19661 174
keir@19661 175 CAMLLIB = $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ocaml
keir@19661 176 OCAML_STAMPFILE=$(CAMLLIB)/.dirstamp
keir@19661 177
keir@19661 178 ocaml-$(OCAML_VERSION).tar.gz:
keir@19661 179 $(WGET) $(OCAML_URL)/$@
keir@19661 180
keir@19661 181 ocaml-$(XEN_TARGET_ARCH)/.dirstamp: ocaml-$(OCAML_VERSION).tar.gz ocaml.patch
keir@19661 182 tar xzf $<
keir@19661 183 cd ocaml-$(OCAML_VERSION) && patch -p0 < ../ocaml.patch
keir@19661 184 rm -rf ocaml-$(XEN_TARGET_ARCH)
keir@19661 185 mv ocaml-$(OCAML_VERSION) ocaml-$(XEN_TARGET_ARCH)
keir@19661 186 touch $@
keir@19661 187
keir@19661 188 MINIOS_HASNOT=IPV6 INET_ATON
keir@19661 189
keir@19661 190 .PHONY: cross-ocaml
keir@19661 191 cross-ocaml: $(OCAML_STAMPFILE)
keir@19661 192 $(OCAML_STAMPFILE): ocaml-$(XEN_TARGET_ARCH)/.dirstamp
keir@19661 193 cd ocaml-$(XEN_TARGET_ARCH) && ./configure -prefix $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf \
keir@19661 194 -no-pthread -no-shared-libs -no-tk -no-curses \
keir@19661 195 -cc "$(CC) -U_FORTIFY_SOURCE -fno-stack-protector"
keir@19661 196 $(foreach i,$(MINIOS_HASNOT),sed -i 's,^\(#define HAS_$(i)\),//\1,' ocaml-$(XEN_TARGET_ARCH)/config/s.h ; )
keir@19661 197 $(MAKE) -C ocaml-$(XEN_TARGET_ARCH) world
keir@19661 198 $(MAKE) -C ocaml-$(XEN_TARGET_ARCH) opt
keir@19661 199 $(MAKE) -C ocaml-$(XEN_TARGET_ARCH) install
keir@19661 200 touch $@
keir@19661 201
keir@17066 202 #######
keir@17066 203 # Links
keir@17066 204 #######
keir@17066 205
keir@17066 206 .PHONY: $(CROSS_ROOT)
keir@17066 207 $(CROSS_ROOT): cross-newlib cross-zlib cross-libpci
keir@17066 208
keir@18510 209 $(XEN_ROOT)/tools/ioemu-dir:
keir@18510 210 make -C $(XEN_ROOT)/tools ioemu-dir-find
keir@18510 211
keir@18522 212 ioemu/linkfarm.stamp: $(XEN_ROOT)/tools/ioemu-dir
keir@18522 213 mkdir -p ioemu
keir@18522 214 set -e; \
keir@18522 215 $(absolutify_xen_root); \
keir@18522 216 cd ioemu; \
keir@18522 217 src="$$XEN_ROOT/tools/ioemu-dir"; export src; \
keir@18522 218 (cd $$src && find * -type d -print) | xargs mkdir -p; \
keir@18522 219 (cd $$src && find * ! -type l -type f $(addprefix ! -name , \
keir@18522 220 '*.[oda1]' 'config-*' config.mak qemu-dm qemu-img-xen \
keir@18522 221 '*.html' '*.pod' \
keir@18522 222 )) | \
keir@18522 223 while read f; do rm -f "$$f"; ln -s "$$src/$$f" "$$f"; done
keir@18522 224 touch ioemu/linkfarm.stamp
keir@18522 225
keir@18522 226 mk-headers-$(XEN_TARGET_ARCH): ioemu/linkfarm.stamp
keir@18044 227 mkdir -p include/xen && \
keir@18044 228 ln -sf $(addprefix ../../,$(wildcard $(XEN_ROOT)/xen/include/public/*.h)) include/xen && \
keir@18055 229 ln -sf $(addprefix ../../$(XEN_ROOT)/xen/include/public/,arch-ia64 arch-x86 hvm io xsm) include/xen && \
keir@18044 230 ( [ -h include/xen/sys ] || ln -sf ../../$(XEN_ROOT)/tools/include/xen-sys/MiniOS include/xen/sys ) && \
keir@19062 231 ( [ -h include/xen/libelf ] || ln -sf ../../$(XEN_ROOT)/tools/include/xen/libelf include/xen/libelf ) && \
keir@18044 232 mkdir -p include/xen-foreign && \
keir@18044 233 ln -sf $(addprefix ../../,$(wildcard $(XEN_ROOT)/tools/include/xen-foreign/*)) include/xen-foreign/ && \
keir@18044 234 $(MAKE) -C include/xen-foreign/ && \
keir@18044 235 ( [ -h include/xen/foreign ] || ln -sf ../xen-foreign include/xen/foreign )
keir@18368 236 mkdir -p libxc-$(XEN_TARGET_ARCH)
keir@18368 237 [ -h libxc-$(XEN_TARGET_ARCH)/Makefile ] || ( cd libxc-$(XEN_TARGET_ARCH) && \
keir@17905 238 ln -sf ../$(XEN_ROOT)/tools/libxc/*.h . && \
keir@17905 239 ln -sf ../$(XEN_ROOT)/tools/libxc/*.c . && \
keir@17905 240 ln -sf ../$(XEN_ROOT)/tools/libxc/Makefile . )
keir@18368 241 mkdir -p libxc-$(XEN_TARGET_ARCH)/$(XEN_TARGET_ARCH)
keir@18368 242 [ -h libxc-$(XEN_TARGET_ARCH)/$(XEN_TARGET_ARCH) ] || ( cd libxc-$(XEN_TARGET_ARCH)/$(XEN_TARGET_ARCH) && \
keir@17905 243 ln -sf ../$(XEN_ROOT)/tools/libxc/$(XEN_TARGET_ARCH)/*.c . && \
keir@17905 244 ln -sf ../$(XEN_ROOT)/tools/libxc/$(XEN_TARGET_ARCH)/*.h . && \
keir@17905 245 ln -sf ../$(XEN_ROOT)/tools/libxc/$(XEN_TARGET_ARCH)/Makefile . )
keir@17905 246 $(MAKE) -C $(MINI_OS) links
keir@18368 247 touch mk-headers-$(XEN_TARGET_ARCH)
keir@17905 248
keir@18368 249 TARGETS_MINIOS=$(addprefix mini-os-$(XEN_TARGET_ARCH)-,$(TARGETS))
keir@17905 250 $(TARGETS_MINIOS): mini-os-%:
keir@17905 251 [ -d $@ ] || \
keir@17905 252 for i in $$(cd $(MINI_OS) ; find . -type d) ; do \
keir@17905 253 mkdir -p $@/$$i ; \
keir@17905 254 done
keir@17066 255
keir@17066 256 #######
keir@17066 257 # libxc
keir@17066 258 #######
keir@17066 259
keir@17066 260 .PHONY: libxc
keir@18368 261 libxc: libxc-$(XEN_TARGET_ARCH)/libxenctrl.a libxc-$(XEN_TARGET_ARCH)/libxenguest.a
keir@18368 262 libxc-$(XEN_TARGET_ARCH)/libxenctrl.a libxc-$(XEN_TARGET_ARCH)/libxenguest.a:: cross-zlib
keir@18368 263 CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C libxc-$(XEN_TARGET_ARCH)
keir@17066 264
keir@17066 265 #######
keir@17066 266 # ioemu
keir@17066 267 #######
keir@17066 268
keir@17066 269 .PHONY: ioemu
keir@18126 270 ioemu: cross-zlib cross-libpci libxc
keir@18055 271 [ -f ioemu/config-host.mak ] || \
keir@18512 272 ( $(absolutify_xen_root); \
keir@19645 273 PREFIX=$(PREFIX); \
keir@19645 274 export PREFIX; \
keir@18512 275 cd ioemu ; \
keir@19427 276 LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) \
keir@19427 277 TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \
keir@19427 278 TARGET_CFLAGS="$(TARGET_CFLAGS)" \
keir@19427 279 TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \
keir@19427 280 ./xen-setup-stubdom )
keir@19427 281 $(MAKE) -C ioemu
keir@17066 282
keir@17066 283 ######
keir@17066 284 # caml
keir@17066 285 ######
keir@17066 286
keir@17066 287 .PHONY: caml
keir@18127 288 caml: $(CROSS_ROOT)
keir@19661 289 CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@ LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) OCAMLC_CROSS_PREFIX=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/bin/
keir@17066 290
keir@17299 291 ###
keir@17299 292 # C
keir@17299 293 ###
keir@17299 294
keir@17299 295 .PHONY: c
keir@18127 296 c: $(CROSS_ROOT)
keir@18368 297 CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@ LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)
keir@17299 298
keir@17909 299 ######
keir@17909 300 # Grub
keir@17909 301 ######
keir@17909 302
keir@18113 303 grub-$(GRUB_VERSION).tar.gz:
keir@18281 304 $(WGET) $(GRUB_URL)/$@
keir@18113 305
keir@18113 306 grub-upstream: grub-$(GRUB_VERSION).tar.gz
keir@18113 307 tar xzf $<
keir@18113 308 mv grub-$(GRUB_VERSION) $@
keir@17909 309 for i in grub.patches/* ; do \
keir@17909 310 patch -d $@ -p1 < $$i ; \
keir@17909 311 done
keir@17909 312
keir@17909 313 .PHONY: grub
keir@18127 314 grub: grub-upstream $(CROSS_ROOT)
keir@18368 315 mkdir -p grub-$(XEN_TARGET_ARCH)
keir@18368 316 CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@ OBJ_DIR=$(CURDIR)/grub-$(XEN_TARGET_ARCH)
keir@17909 317
keir@17066 318 ########
keir@17066 319 # minios
keir@17066 320 ########
keir@17066 321
keir@17778 322 .PHONY: ioemu-stubdom
keir@18055 323 ioemu-stubdom: APP_OBJS=$(CURDIR)/ioemu/i386-stubdom/qemu.a $(CURDIR)/ioemu/i386-stubdom/libqemu.a $(CURDIR)/ioemu/libqemu_common.a
keir@18368 324 ioemu-stubdom: mini-os-$(XEN_TARGET_ARCH)-ioemu lwip-$(XEN_TARGET_ARCH) libxc ioemu
keir@18368 325 DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="-DCONFIG_QEMU $(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(APP_OBJS)"
keir@17066 326
keir@17066 327 .PHONY: caml-stubdom
keir@18368 328 caml-stubdom: mini-os-$(XEN_TARGET_ARCH)-caml lwip-$(XEN_TARGET_ARCH) libxc caml
keir@18368 329 DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="-DCONFIG_CAML $(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(CURDIR)/caml/main-caml.o $(CURDIR)/caml/caml.o $(CAMLLIB)/libasmrun.a"
keir@17299 330
keir@17299 331 .PHONY: c-stubdom
keir@18368 332 c-stubdom: mini-os-$(XEN_TARGET_ARCH)-c lwip-$(XEN_TARGET_ARCH) libxc c
keir@18368 333 DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="-DCONFIG_C $(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS=$(CURDIR)/c/main.a
keir@17909 334
keir@17909 335 .PHONY: pv-grub
keir@18368 336 pv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxc grub
keir@18368 337 DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="-DCONFIG_GRUB $(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/grub-$(XEN_TARGET_ARCH)/main.a
keir@17066 338
keir@17066 339 #########
keir@17066 340 # install
keir@17066 341 #########
keir@17066 342
keir@18034 343 ifeq ($(STUBDOM_SUPPORTED),1)
keir@18282 344 install: install-readme install-ioemu install-grub
keir@18034 345 else
keir@18034 346 install:
keir@18034 347 endif
keir@17909 348
keir@18282 349 install-readme:
keir@18282 350 $(INSTALL_DIR) $(DESTDIR)$(DOCDIR)
keir@18282 351 $(INSTALL_DATA) README $(DESTDIR)$(DOCDIR)/README.stubdom
keir@18282 352
keir@18034 353 install-ioemu: ioemu-stubdom
keir@19437 354 $(INSTALL_DIR) "$(DESTDIR)$(LIBEXEC)"
keir@19437 355 $(INSTALL_PROG) stubdom-dm "$(DESTDIR)$(LIBEXEC)"
keir@19437 356 $(INSTALL_DIR) "$(DESTDIR)$(LIBDIR_x86_32)/xen/boot"
keir@19437 357 $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-ioemu/mini-os.gz "$(DESTDIR)$(LIBDIR_x86_32)/xen/boot/ioemu-stubdom.gz"
keir@17909 358
keir@18034 359 install-grub: pv-grub
keir@19437 360 $(INSTALL_DIR) "$(DESTDIR)$(LIBDIR_x86_32)/xen/boot"
keir@19437 361 $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-grub/mini-os.gz "$(DESTDIR)$(LIBDIR_x86_32)/xen/boot/pv-grub-$(XEN_TARGET_ARCH).gz"
keir@17066 362
keir@17066 363 #######
keir@17066 364 # clean
keir@17066 365 #######
keir@17066 366
keir@17066 367 # Only clean the libxc/ioemu/mini-os part
keir@17066 368 .PHONY: clean
keir@17066 369 clean:
keir@18368 370 rm -fr mini-os-$(XEN_TARGET_ARCH)-ioemu
keir@18368 371 rm -fr mini-os-$(XEN_TARGET_ARCH)-c
keir@18368 372 rm -fr mini-os-$(XEN_TARGET_ARCH)-caml
keir@18368 373 rm -fr mini-os-$(XEN_TARGET_ARCH)-grub
keir@17066 374 $(MAKE) -C caml clean
keir@17778 375 $(MAKE) -C c clean
keir@18368 376 rm -fr grub-$(XEN_TARGET_ARCH)
keir@18368 377 [ ! -d libxc-$(XEN_TARGET_ARCH) ] || $(MAKE) -C libxc-$(XEN_TARGET_ARCH) clean
keir@18510 378 -[ ! -d ioemu ] || $(MAKE) -C ioemu clean
keir@17066 379
keir@17066 380 # clean the cross-compilation result
keir@17066 381 .PHONY: crossclean
keir@17066 382 crossclean: clean
keir@17066 383 rm -fr $(CROSS_ROOT)
keir@18368 384 rm -fr newlib-$(XEN_TARGET_ARCH)
keir@18368 385 rm -fr zlib-$(XEN_TARGET_ARCH) pciutils-$(XEN_TARGET_ARCH)
keir@18368 386 rm -fr libxc-$(XEN_TARGET_ARCH) ioemu
keir@18368 387 rm -f mk-headers-$(XEN_TARGET_ARCH)
keir@19661 388 rm -fr ocaml-$(XEN_TARGET_ARCH)
keir@17066 389
keir@17066 390 # clean patched sources
keir@17066 391 .PHONY: patchclean
keir@17066 392 patchclean: crossclean
keir@18034 393 rm -fr newlib-$(NEWLIB_VERSION)
keir@18368 394 rm -fr lwip-$(XEN_TARGET_ARCH)
keir@18113 395 rm -fr grub-upstream
keir@17066 396
keir@17066 397 # clean downloads
keir@17066 398 .PHONY: downloadclean
keir@17066 399 downloadclean: patchclean
keir@18055 400 rm -f newlib-$(NEWLIB_VERSION).tar.gz
keir@17066 401 rm -f zlib-$(ZLIB_VERSION).tar.gz
keir@17066 402 rm -f pciutils-$(LIBPCI_VERSION).tar.bz2
keir@18114 403 rm -f grub-$(GRUB_VERSION).tar.gz
keir@18114 404 rm -f lwip-$(LWIP_VERSION).tar.gz
keir@19661 405 rm -f ocaml-$(OCAML_VERSION).tar.gz
keir@17066 406
keir@17066 407 .PHONY: distclean
keir@17066 408 distclean: downloadclean