$NetBSD: patch-stubdom_Makefile,v 1.1 2017/03/30 09:15:10 bouyer Exp $
--- stubdom/Makefile.orig	2016-12-05 13:03:27.000000000 +0100
+++ stubdom/Makefile	2017-03-29 09:58:39.000000000 +0200
@@ -6,8 +6,6 @@
 
 export stubdom=y
 export debug=y
-# Moved from config/StdGNU.mk
-CFLAGS += -O1 -fno-omit-frame-pointer
 
 ifeq (,$(findstring clean,$(MAKECMDGOALS)))
   ifeq ($(wildcard $(MINI_OS)/Config.mk),)
@@ -24,27 +22,27 @@
 endif
 
 ifeq ($(GNU_TARGET_ARCH), i686)
-TARGET_CFLAGS=
+TARGET_CFLAGS=-O1 -fno-omit-frame-pointer
 NEWLIB_CFLAGS+=-D_I386MACH_ALLOW_HW_INTERRUPTS
 STUBDOM_SUPPORTED=1
+MINIOS_TARGET_ARCH:=x86
 endif
 ifeq ($(GNU_TARGET_ARCH), x86_64)
 TARGET_CFLAGS=-mno-red-zone
 NEWLIB_CFLAGS+=-D_I386MACH_ALLOW_HW_INTERRUPTS
 STUBDOM_SUPPORTED=1
+MINIOS_TARGET_ARCH:=x86
 endif
 
 CROSS_ROOT=cross-root-$(GNU_TARGET_ARCH)
 CROSS_PREFIX=$(CURDIR)/$(CROSS_ROOT)
 
 # Disable PIE/SSP if GCC supports them. They can break us.
-TARGET_CFLAGS += $(CFLAGS)
-TARGET_CPPFLAGS += $(CPPFLAGS)
-$(call cc-options-add,TARGET_CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
+$(call cc-options-add,TARGET_CFLAGS,TARGET_CC,$(EMBEDDED_EXTRA_CFLAGS))
 
 # Do not use host headers and libs
-GCC_INSTALL = $(shell LANG=C gcc -print-search-dirs | sed -n -e 's/install: \(.*\)/\1/p')
-TARGET_CPPFLAGS += -U __linux__ -U __FreeBSD__ -U __sun__
+GCC_INSTALL = $(shell LANG=C ${TARGET_CC} -print-search-dirs | sed -n -e 's/install: \(.*\)/\1/p')
+TARGET_CPPFLAGS += -U __linux__ -U __FreeBSD__ -U __NetBSD__ -U __sun__
 TARGET_CPPFLAGS += -nostdinc
 TARGET_CPPFLAGS += -isystem $(MINI_OS)/include/posix
 TARGET_CPPFLAGS += -isystem $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include
@@ -74,11 +72,8 @@
 # Cross-newlib
 ##############
 
-newlib-$(NEWLIB_VERSION).tar.gz:
-	$(FETCHER) $@ $(NEWLIB_URL)/$@
-
-newlib-$(NEWLIB_VERSION): newlib-$(NEWLIB_VERSION).tar.gz
-	tar xzf $<
+newlib-$(NEWLIB_VERSION): 
+	cp -r ${WRKSRC}/../newlib-$(NEWLIB_VERSION) .
 	patch -d $@ -p0 < newlib.patch
 	patch -d $@ -p0 < newlib-chk.patch
 	patch -d $@ -p1 < newlib-stdint-size_max-fix-from-1.17.0.patch
@@ -92,7 +87,7 @@
 $(NEWLIB_STAMPFILE): mk-headers-$(XEN_TARGET_ARCH) newlib-$(NEWLIB_VERSION)
 	mkdir -p newlib-$(XEN_TARGET_ARCH)
 	( cd newlib-$(XEN_TARGET_ARCH) && \
-	  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 && \
+	  CFLAGS_FOR_BUILD="$(CFLAGS)" CFLAGS="" CC_FOR_TARGET="$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(NEWLIB_CFLAGS) -isystem $(MINI_OS)/include/$(MINIOS_TARGET_ARCH)" 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 && \
 	  $(MAKE) DESTDIR= && \
 	  $(MAKE) DESTDIR= install )
 
@@ -100,19 +95,15 @@
 # Cross-zlib
 ############
 
-zlib-$(ZLIB_VERSION).tar.gz:
-	$(FETCHER) $@ $(ZLIB_URL)/$@
-
-zlib-$(XEN_TARGET_ARCH): zlib-$(ZLIB_VERSION).tar.gz 
-	tar xzf $<
-	mv zlib-$(ZLIB_VERSION) $@
+zlib-$(XEN_TARGET_ARCH): 
+	cp -r ${WRKSRC}/../zlib-$(ZLIB_VERSION) $@
 
 ZLIB_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libz.a
 .PHONY: cross-zlib
 cross-zlib: $(ZLIB_STAMPFILE)
 $(ZLIB_STAMPFILE): zlib-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE)
 	( cd $< && \
-	  CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" CC=$(CC) ./configure --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf && \
+	  CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" CC=$(TARGET_CC) ./configure --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf && \
 	  $(MAKE) DESTDIR= libz.a && \
 	  $(MAKE) DESTDIR= install )
 
@@ -120,12 +111,8 @@
 # Cross-libpci
 ##############
 
-pciutils-$(LIBPCI_VERSION).tar.bz2:
-	$(FETCHER) $@ $(LIBPCI_URL)/$@
-
-pciutils-$(XEN_TARGET_ARCH): pciutils-$(LIBPCI_VERSION).tar.bz2
-	tar xjf $<
-	mv pciutils-$(LIBPCI_VERSION) $@
+pciutils-$(XEN_TARGET_ARCH): 
+	cp -r ${WRKSRC}/../pciutils-$(LIBPCI_VERSION) $@
 	patch -d $@ -p1 < pciutils.patch
 	touch $@
 
@@ -138,7 +125,7 @@
 	  chmod u+w lib/config.h && \
 	  echo '#define PCILIB_VERSION "$(LIBPCI_VERSION)"' >> lib/config.h && \
 	  ln -sf ../../libpci.config.mak lib/config.mk && \
-	  $(MAKE) DESTDIR= CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I$(call realpath,$(MINI_OS)/include)" lib/libpci.a && \
+	  $(MAKE) DESTDIR= CC="$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -isystem $(call realpath,$(MINI_OS)/include) -isystem $(call realpath,$(MINI_OS)/include/$(MINIOS_TARGET_ARCH)) -isystem $(call realpath,$(MINI_OS)/include/$(MINIOS_TARGET_ARCH)/$(XEN_TARGET_ARCH))" CPPFLAGS="" CFLAGS="" lib/libpci.a && \
 	  $(INSTALL_DATA) lib/libpci.a $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ && \
 	  $(INSTALL_DIR) $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/pci && \
 	  $(INSTALL_DATA) lib/config.h lib/header.h lib/pci.h lib/types.h $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/pci/ \
@@ -148,12 +135,8 @@
 # lwIP
 ######
 
-lwip-$(LWIP_VERSION).tar.gz:
-	$(FETCHER) $@ $(LWIP_URL)/$@
-
-lwip-$(XEN_TARGET_ARCH): lwip-$(LWIP_VERSION).tar.gz
-	tar xzf $<
-	mv lwip $@
+lwip-$(XEN_TARGET_ARCH): 
+	cp -r ${WRKSRC}/../lwip $@
 	patch -d $@ -p0 < lwip.patch-cvs
 	patch -d $@ -p0 < lwip.dhcp_create_request-hwaddr_len.patch
 	touch $@
@@ -161,19 +144,14 @@
 #############
 # cross-gmp
 #############
-gmp-$(GMP_VERSION).tar.bz2:
-	$(FETCHER) $@ $(GMP_URL)/$@
-
 .PHONY: cross-gmp
 ifeq ($(XEN_TARGET_ARCH), x86_32)
    GMPEXT=ABI=32
 endif
-gmp-$(XEN_TARGET_ARCH): gmp-$(GMP_VERSION).tar.bz2 $(NEWLIB_STAMPFILE)
-	tar xjf $<
-	rm $@ -rf || :
-	mv gmp-$(GMP_VERSION) $@
+gmp-$(XEN_TARGET_ARCH): $(NEWLIB_STAMPFILE)
+	cp -r ${WRKSRC}/../gmp-$(GMP_VERSION) $@
 	#patch -d $@ -p0 < gmp.patch
-	cd $@; CPPFLAGS="-isystem $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include $(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" CC=$(CC) $(GMPEXT) ./configure --disable-shared --enable-static --disable-fft --without-readline --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf --libdir=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib --build=`gcc -dumpmachine` --host=$(GNU_TARGET_ARCH)-xen-elf
+	cd $@; CPPFLAGS="-isystem $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include $(TARGET_CPPFLAGS) -isystem $(MINI_OS)/include/$(MINIOS_TARGET_ARCH) -isystem $(MINI_OS)/include" CFLAGS="$(TARGET_CFLAGS)" CC=$(TARGET_CC) $(GMPEXT) ./configure --disable-shared --enable-static --disable-fft --without-readline --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf --libdir=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib --build=`${TARGET_CC} -dumpmachine` --host=$(GNU_TARGET_ARCH)-xen-elf
 	sed -i 's/#define HAVE_OBSTACK_VPRINTF 1/\/\/#define HAVE_OBSTACK_VPRINTF 1/' $@/config.h
 	touch $@
 
@@ -187,12 +165,8 @@
 #############
 # cross-polarssl
 #############
-polarssl-$(POLARSSL_VERSION)-gpl.tgz:
-	$(FETCHER) $@ $(POLARSSL_URL)/$@
-
-polarssl-$(XEN_TARGET_ARCH): polarssl-$(POLARSSL_VERSION)-gpl.tgz
-	tar xzf $<
-	mv polarssl-$(POLARSSL_VERSION) $@
+polarssl-$(XEN_TARGET_ARCH): 
+	cp -r ${WRKSRC}/../polarssl-$(POLARSSL_VERSION) $@
 	patch -d $@ -p1 < polarssl.patch
 	touch $@
 
@@ -200,7 +174,7 @@
 cross-polarssl: $(POLARSSL_STAMPFILE)
 $(POLARSSL_STAMPFILE): polarssl-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) lwip-$(XEN_TARGET_ARCH)
 	 ( cd $</library && \
-	   make CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I $(realpath $(MINI_OS)/include)" && \
+	   $(MAKE) CFLAGS="" CC="$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I../include" && \
 	   mkdir -p $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include && \
 	   cp -r ../include/* $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include && \
 	   mkdir -p $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib && \
@@ -209,13 +183,10 @@
 #############
 # cross-tpmemu
 #############
-tpm_emulator-$(TPMEMU_VERSION).tar.gz:
-	$(FETCHER) $@ $(TPMEMU_URL)/$@
-
-tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz
+VTPM_CPPFLAGS=$(TARGET_CPPFLAGS) -isystem $(MINI_OS)/include -isystem $(MINI_OS)/include/$(MINIOS_TARGET_ARCH)/$(XEN_TARGET_ARCH) -isystem $(MINI_OS)/include/$(MINIOS_TARGET_ARCH)
+tpm_emulator-$(XEN_TARGET_ARCH): 
 	@if [ ! -f "$(CMAKE)" ]; then echo "cmake not installed! Install it and then rerun ./configure!"; false; fi
-	tar xzf $<
-	mv tpm_emulator-$(TPMEMU_VERSION) $@
+	cp -r ${WRKSRC}/../tpm_emulator-$(TPMEMU_VERSION) $@
 	patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch;
 	patch -d $@ -p1 < vtpm-bufsize.patch
 	patch -d $@ -p1 < vtpm-locality.patch
@@ -224,7 +195,7 @@
 	patch -d $@ -p1 < vtpm-deepquote-anyloc.patch
 	patch -d $@ -p1 < vtpm-cmake-Wextra.patch
 	mkdir $@/build
-	cd $@/build; CC=${CC} $(CMAKE) .. -DCMAKE_C_FLAGS:STRING="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
+	cd $@/build; CC=${TARGET_CC} $(CMAKE) .. -DCMAKE_C_FLAGS:STRING="-std=gnu99 -DTPM_NO_EXTERN $(VTPM_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
 	touch $@
 
 TPMEMU_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm.a
@@ -243,11 +214,8 @@
 CAMLLIB = $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ocaml
 OCAML_STAMPFILE=$(CAMLLIB)/.dirstamp
 
-ocaml-$(OCAML_VERSION).tar.gz:
-	$(FETCHER) $@ $(OCAML_URL)/$@
-
-ocaml-$(XEN_TARGET_ARCH)/.dirstamp: ocaml-$(OCAML_VERSION).tar.gz ocaml.patch
-	tar xzf $<
+ocaml-$(XEN_TARGET_ARCH)/.dirstamp: ocaml.patch
+	cp -r ${WRKSRC}/../ocaml-$(OCAML_VERSION) .
 	cd ocaml-$(OCAML_VERSION) && patch -p0 < ../ocaml.patch
 	rm -rf ocaml-$(XEN_TARGET_ARCH)
 	mv ocaml-$(OCAML_VERSION) ocaml-$(XEN_TARGET_ARCH)
@@ -260,7 +228,7 @@
 $(OCAML_STAMPFILE): ocaml-$(XEN_TARGET_ARCH)/.dirstamp
 	cd ocaml-$(XEN_TARGET_ARCH) &&  ./configure -prefix $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf \
 		-no-pthread -no-shared-libs -no-tk -no-curses \
-		-cc "$(CC) -U_FORTIFY_SOURCE -fno-stack-protector -mno-red-zone"
+		-cc "$(TARGET_CC) -U_FORTIFY_SOURCE -fno-stack-protector -mno-red-zone"
 	$(foreach i,$(MINIOS_HASNOT),sed -i 's,^\(#define HAS_$(i)\),//\1,' ocaml-$(XEN_TARGET_ARCH)/config/s.h ; )
 	$(MAKE) DESTDIR= -C ocaml-$(XEN_TARGET_ARCH) world
 	$(MAKE) DESTDIR= -C ocaml-$(XEN_TARGET_ARCH) opt
@@ -374,7 +342,7 @@
 .PHONY: libxentoollog
 libxentoollog: libs-$(XEN_TARGET_ARCH)/toollog/libxentoollog.a
 libs-$(XEN_TARGET_ARCH)/toollog/libxentoollog.a: mk-headers-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE)
-	CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C libs-$(XEN_TARGET_ARCH)/toollog
+	CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" EXTRA_HOSTCFLAGS="" $(MAKE) DESTDIR= -C libs-$(XEN_TARGET_ARCH)/toollog
 
 #######
 # libxenevtchn
@@ -436,11 +404,12 @@
 	  ( $(buildmakevars2shellvars); \
 	    cd ioemu ; \
 	    LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) \
-	    TARGET_CPPFLAGS="$(TARGET_CPPFLAGS) $(shell cat ioemu-minios-config.mk)" \
+	    TARGET_CPPFLAGS="$(TARGET_CPPFLAGS) $(shell cat ioemu-minios-config.mk) -DNEED_TIME_H -isystem $(MINI_OS)/include -isystem $(MINI_OS)/include/$(MINIOS_TARGET_ARCH)/$(XEN_TARGET_ARCH) -isystem $(MINI_OS)/include/$(MINIOS_TARGET_ARCH)" \
 	    TARGET_CFLAGS="$(TARGET_CFLAGS)" \
 	    TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \
+	    CPPFLAGS="" CFLAGS="" \
 	    $(QEMU_ROOT)/xen-setup-stubdom )
-	$(MAKE) DESTDIR= -C ioemu -f $(QEMU_ROOT)/Makefile
+	CPPFLAGS="" CFLAGS="" $(MAKE) DESTDIR= -C ioemu -f $(QEMU_ROOT)/Makefile
 
 ######
 # caml
@@ -473,7 +442,7 @@
 
 .PHONY: vtpm
 vtpm: cross-polarssl cross-tpmemu vtpm-minios-config.mk
-	XEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(TARGET_CPPFLAGS) $(shell cat vtpm-minios-config.mk)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@
+	XEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(VTPM_CPPFLAGS) $(shell cat vtpm-minios-config.mk)" CFLAGS="$(TARGET_CFLAGS) -std=gnu99" $(MAKE) -C $@
 
 ######
 # VTPMMGR
@@ -484,18 +453,14 @@
 
 .PHONY: vtpmmgr
 vtpmmgr: cross-polarssl vtpmmgr-minios-config.mk
-	XEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(TARGET_CPPFLAGS) $(shell cat vtpmmgr-minios-config.mk)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@
+	XEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(VTPM_CPPFLAGS) $(shell cat vtpmmgr-minios-config.mk) -DHAVE_LIBC" CFLAGS="$(TARGET_CFLAGS) -std=gnu99" $(MAKE) -C $@
 
 ######
 # Grub
 ######
 
-grub-$(GRUB_VERSION).tar.gz:
-	$(FETCHER) $@ $(GRUB_URL)/$@
-
-grub-upstream: grub-$(GRUB_VERSION).tar.gz
-	tar xzf $<
-	mv grub-$(GRUB_VERSION) $@
+grub-upstream: 
+	cp -r ${WRKSRC}/../grub-$(GRUB_VERSION) $@
 	for i in grub.patches/* ; do \
 		patch -d $@ -p1 < $$i || exit 1; \
 	done
@@ -538,11 +503,11 @@
 
 .PHONY: vtpm-stubdom
 vtpm-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpm vtpm
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/vtpm/minios.cfg" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS="$(CURDIR)/vtpm/vtpm.a" APP_LDLIBS="-ltpm -ltpm_crypto -lgmp -lpolarssl"
+	DEF_CPPFLAGS="$(VTPM_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/vtpm/minios.cfg" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS="$(CURDIR)/vtpm/vtpm.a" APP_LDLIBS="-ltpm -ltpm_crypto -lgmp -lpolarssl"
 
 .PHONY: vtpmmgr-stubdom
 vtpmmgr-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpmmgr vtpmmgr
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/vtpmmgr/minios.cfg" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS="$(CURDIR)/vtpmmgr/vtpmmgr.a" APP_LDLIBS="-lm -lpolarssl"
+	DEF_CPPFLAGS="$(VTPM_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/vtpmmgr/minios.cfg" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS="$(CURDIR)/vtpmmgr/vtpmmgr.a" APP_LDLIBS="-lm -lpolarssl"
 
 .PHONY: pv-grub
 pv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxc grub
