USE_BRANDING := yes
IMPORT_BRANDING := yes
REPONAME=linux-3.x
include /b/common.mk
include /b/rpmbuild.mk

RPM_BUILT_COOKIE  = $(MY_OBJ_DIR)/.pvops_rpm_built_cookie
REPO              = $(call pq_loc,$(REPONAME))
REPOSTAMP         = $(call pq_req,$(REPONAME))

-include $(MY_OBJ_DIR)/pvops_version.inc
$(MY_OBJ_DIR)/pvops_version.inc: $(REPOSTAMP)
	$(call version-makefile) > $@
	awk -F. '{ print "REPO_VERSION=" $$0; }' \
		< $(REPOSTAMP) >> $@
	awk '/(^VERSION)|(^PATCHLEVEL)|(^SUBLEVEL)|(^EXTRAVERSION)/ { print "KERNEL_"$$_ }' ../Makefile >> $@
	echo LINUX_VERSION := '$$(KERNEL_VERSION).$$(KERNEL_PATCHLEVEL).$$(KERNEL_SUBLEVEL)$$(KERNEL_EXTRAVERSION)' >> $@
	$(call pq_cset_number,$(REPONAME)) >> $@
	echo XS_RELEASE := '.xs$$(PLATFORM_VERSION).$$(CSET_NUMBER)' >> $@

# RPM package Version and Release.
#
# This is a bit messy as if EXTRAVERSION is set it will start with a
# dash so it needs to end up in PKG_RELEASE (but without the leading
# dash).
ifeq ($(KERNEL_EXTRAVERSION),)
release_prefix := 1
else
release_prefix := $(KERNEL_EXTRAVERSION:-%=%)
endif
PKG_VERSION := $(KERNEL_VERSION).$(KERNEL_PATCHLEVEL).$(KERNEL_SUBLEVEL)
PKG_RELEASE := $(release_prefix)$(XS_RELEASE)
ARCHS := $(DOMAIN0_ARCH_OPTIMIZED) x86_64

SOURCES = $(RPM_SOURCESDIR)/linux-$(LINUX_VERSION)$(XS_RELEASE).tar.bz2 \
	  $(ARCHS:%=$(RPM_SOURCESDIR)/kernel-$(LINUX_VERSION)$(XS_RELEASE)-%.config) \
          $(RPM_SPECSDIR)/kernel.spec

SRPM = $(RPM_SRPMSDIR)/kernel-$(PKG_VERSION)-$(PKG_RELEASE).src.rpm

.PHONY: build
build: $(RPM_BUILT_COOKIE) $(MY_OUTPUT_DIR)/kernel.inc $(BRANDING) $(MY_SOURCES)/MANIFEST
	@ :

.PHONY: clean
clean:
	rm -f $(RPM_BUILT_COOKIE)
	rm -f $(SOURCES)
	rm -f $(SRPM)
	-rm -f $(MY_OBJ_DIR)/version.inc
	$(call component_clean,$(COMPONENT))

$(RPM_SOURCESDIR)/linux-$(LINUX_VERSION)$(XS_RELEASE).tar.bz2: $(RPM_DIRECTORIES)
	hg -R $(call pq_loc,$(REPONAME)) archive -t tbz2 $@

$(RPM_SOURCESDIR)/kernel-$(LINUX_VERSION)$(XS_RELEASE)-i686.config: ../buildconfigs/linux-defconfig_xen_x86_32 $(RPM_DIRECTORIES)
	cp -f $< $@

$(RPM_SOURCESDIR)/kernel-$(LINUX_VERSION)$(XS_RELEASE)-x86_64.config: ../buildconfigs/linux-defconfig_xen_x86_64 $(RPM_DIRECTORIES)
	cp -f $< $@

$(RPM_SPECSDIR)/kernel.spec: kernel.spec.in $(RPM_DIRECTORIES)
	echo "Version: $(PKG_VERSION) Release: $(PKG_RELEASE)"; \
	$(call brand,kernel.spec.in) | \
	sed -e s\,@REPO_VERSION@,$(REPO_VERSION),g   \
	    -e s\,@LINUX_VERSION@,$(LINUX_VERSION)$(XS_RELEASE),g \
	    -e s\,@XS_RELEASE@,$(XS_RELEASE),g       \
	    -e s\,@PKG_VERSION@,$(PKG_VERSION),g    \
	    -e s\,@PKG_RELEASE@,$(PKG_RELEASE),g    \
	> $@

$(SRPM): $(SOURCES)
	mkdir -p $(RPM_SRPMSDIR)
	$(RPMBUILD) -bs $(RPM_SPECSDIR)/kernel.spec

$(RPM_BUILT_COOKIE): $(RPM_DIRECTORIES) $(SRPM)
	for arch in $(ARCHS); do \
		$(RPMBUILD) --target $$arch --rebuild $(SRPM); \
	done
	@touch $@

OUTPUT_RPM = kernel-$(PKG_VERSION)-$(PKG_RELEASE).$(DOMAIN0_ARCH_OPTIMIZED).rpm
OUTPUT_FIRMWARE_RPM = kernel-firmware-$(PKG_VERSION)-$(PKG_RELEASE).$(DOMAIN0_ARCH_OPTIMIZED).rpm
OUTPUT_DEBUG_RPM = kernel-debuginfo-$(PKG_VERSION)-$(PKG_RELEASE).$(DOMAIN0_ARCH_OPTIMIZED).rpm

$(MY_OUTPUT_DIR)/kernel.inc: $(MY_OUTPUT_DIR)/.dirstamp
	( echo KERNEL_PKG_NAME := kernel ;\
	  echo KERNEL_PKG_VERSION := $(LINUX_VERSION)$(XS_RELEASE) ;\
	  echo KERNEL_PKG_ARCH := $(DOMAIN0_ARCH_OPTIMIZED) ;\
	  echo KERNEL_PKG_FILE := RPMS/$(DOMAIN0_ARCH_OPTIMIZED)/$(OUTPUT_RPM) ;\
	  echo KERNEL_VERSION := \$$\(KERNEL_PKG_VERSION\) ;\
	) >$@

$(BRANDING):
	( echo KERNEL_VERSION := $(LINUX_VERSION)$(XS_RELEASE)xen ; \
	  echo KDUMP_VERSION := $(LINUX_VERSION)$(XS_RELEASE)kdump ; \
	) >$(BRANDING)

$(MY_SOURCES)/MANIFEST: $(MY_SOURCES_DIRSTAMP)
	echo "$(COMPONENT) gpl file $(SRPM)" >$@

.PHONY: sources
sources: $(MY_SOURCES)/MANIFEST
	@ :
