#! /usr/bin/make -f

# -*- makefile -*-
# debian/rules file derived from the gcc build system
# JSE-12940 :Task: 90928: Porting PR 90181 changes to Java80Sr2 : .deb package won't create from the dsc  
# 92598/JSE-12986  Packaging changes in order to handle "iso-swid" tag removal
export DH_VERBOSE=1
unexport LANG LC_ALL

export DH_OPTIONS=

export SHELL=/bin/bash

distribution	:= $(shell lsb_release -is)
distrelease	:= $(shell lsb_release -cs)

DEB_HOST_ARCH	?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

arch_map	:= amd64=x86_64 i586=i386 i386=i386 ppc64el=ppc64le s390x=s390x
archdir_map	:= amd64=amd64 i586=i386 i386=i386 ppc64el=ppc64el s390x=s390x

arch		:= $(strip $(patsubst $(DEB_HOST_ARCH)=%, %, \
			$(filter $(DEB_HOST_ARCH)=%, $(arch_map))))
archdir		:= $(strip $(patsubst $(DEB_HOST_ARCH)=%, %, \
			$(filter $(DEB_HOST_ARCH)=%, $(archdir_map))))

TOP		:= usr/lib/jvm
dirparts	:= $(shell basename ibm-java80-8.0.6.5 | tr '-' ' ')
VENDOR		:= $(word 1, $(dirparts))
Vendor		:= $(shell echo $(VENDOR) | tr 'a-z' 'A-Z')


javaname	:= $(shell echo $(word 2, $(dirparts)) | sed 's/[0-9.]*$$//')
RELEASE		:= $(shell echo $(word 2, $(dirparts)) | sed 's/^[a-z]*//')
# where to get it?
relstring	:= 8.0
PRODUCT		:= $(javaname)$(RELEASE)
srcname		= $(VENDOR)-$(PRODUCT)
basename	= $(VENDOR)-$(PRODUCT)
dirpartsv	:= $(shell echo $(word 3, $(dirparts)) | tr '.' ' ')
version		:= $(word 1, $(dirpartsv))
releng_ver	:= $(word 2, $(dirpartsv))
Major_Ver	:= $(word 1, $(dirpartsv)).$(word 2, $(dirpartsv))
Minor_Ver	:= $(word 3, $(dirpartsv)).$(word 4, $(dirpartsv))
comp_version	:= $(Major_Ver).$(Minor_Ver)
jdkversion	:= 8.0
#unpackdir	:= jdk$(version)_$(releng_ver)
#unpackdir	:= jdk$(jdkversion)
unpackdir	:= jdk$(jdkversion)_$(releng_ver)
#jdirname	:= java-$(version)-$(VENDOR)-$(version).$(releng_ver)
jdirname	:= java-$(VENDOR)-$(arch)-80
jdiralias	:= java-$(version)-$(VENDOR)
srcdir		:= $(arch)-jdk
bin_pattern	= ibm-java-sdk-$(Major_Ver)-$(Minor_Ver)-$(arch)-archive.bin 
all_archs	= $(filter $(subst =, , $(arch_map)), \
			   $(subst -, , $(patsubst %.bin, %, $(wildcard *.bin))))
priority	:= 1080  

tag		:= $(strip $(subst .,, $(RELEASE)))
mantag		:= $(VENDOR)$(tag)

basedir		= $(TOP)/$(jdirname)
doc		:= usr/share/doc
j2se_lib	:= usr/lib/$(basename)
security	:= etc/$(jdiralias)/security


  packaging_files = packaging-files

info:
	@echo	Build information
	@echo	==========================
	@echo	'PRODUCT       = $(PRODUCT)'
	@echo	'dirparts       = $(dirparts)'
	@echo	'VENDOR1        = $(VENDOR)'
	@echo	'VENDOR        = $(Vendor)'
	@echo	'VERSION       = $(Major_Ver)'
	@echo	'RELEASE       = $(Minor_Ver)'
	@echo	'arch          = $(arch)'
	@echo   'archdir       = $(archdir)'
	@echo	'Install_Path  = $(TOP)'
	@echo	'Install_Folder= $(jdirname)'
	@echo 	'bin_pattern   = $(bin_pattern)'
	@echo	'unpackdir     = $(unpackdir)'
	@echo	'srcdir        = $(srcdir)'

d	= debian/tmp

p_jre	:= $(basename)-jre
p_jdk	:= $(basename)-jdk
p_plug	:= $(basename)-plugin
l_jre	:= $(basename)-jre-${archdir}

d_jre	:= debian/$(p_jre)
d_jdk	:= debian/$(p_jdk)
d_plug	:= debian/$(p_plug)
d_jbin  := debian/$(p_jdk)

binary_arch_targets	= \
	$(patsubst %, binary-%, $(p_jdk) $(p_jre))

ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 ))
    binary_arch_targets	+= binary-$(p_plug)
endif


# (most) jre and jdk tools handled by the alternatives system.
# dups in heimdal-clients, krb5-user: kinit, klist, ktab, no alternatives
jre_tools	= java keytool policytool rmid tnameserv rmiregistry
jdk_tools	= extcheck idlj jar jarsigner javac javadoc javah javap javaw javaws jconsole jdb jdmpview native2ascii rmic serialver appletviewer

jre_manpages_re:= $(shell echo $(jre_tools) $(corba_tools) | tr -s ' ' '|')

#ship_packs = yes
ifeq ($(ship_packs),yes)
  jre_packs	= $(shell cd $(srcdir); find jre/lib -name '*.pack')
  jdk_packs	= $(shell cd $(srcdir); find lib -name '*.pack')
endif


version_tag	:= $(shell dpkg-parsechangelog | \
			sed -ne 's/Version: *\([0-9]\+:\)*//p')

tag:
	cvs tag -c -F $(subst .,_,$(ctp_tag)_debian_version_$(version_tag))
ifeq ($(findstring -,$(version_tag)),)
	cvs tag -c -F $(subst .,_,$(ctp_tag)_upstream_version_$(version_tag))
endif

showtags:
	@echo Version: $(version)
	@echo Release: $(release)
	@echo CTP tag: $(ctp_tag)

control: control-stamp
control-stamp: debian/control $(packaging_files)
	touch control-stamp

build: build-arch build-indep

build-arch: build-stamp

build-indep: build-stamp

build-stamp: info unpack-stamp control-stamp update-copyright
	touch build-stamp

debian/control: 
	#@cp -p debian/control debian/control.old
	  sed -e 's/@JRE@/$(p_jre)/g' \
	      -e 's/@JDK@/$(p_jdk)/g' \
	      -e 's/@LJRE@/$(l_jre)/g' \
	      -e 's/@vendor@/$(Vendor)/g' \
	      -e 's/@basename@/$(basename)/g' \
	      -e 's/@arch@/$(archdir)/g' \
	      -e 's,@basedir@,$(basedir),g' \
	      -e 's/@srcname@/$(srcname)/g' \
	      -e 's/@sarch@/$(arch)/g' \
	      -e 's/@RELEASE@/$(relstring)/g' \
	      -e 's/@archdir@/$(archdir)/g' \
	      -e 's/@browsers@/$(browsers)/g' \
	      -e 's/@cjk_fonts@/$(cjk_fonts)/g' \
	      -e 's,@pkg_version@,$(if $(filter $(distrelease),etch dapper edgy feisty gutsy),$${Source-Version},$${source:Version}),g' \
	    debian/control.in > debian/control
#	@if cmp -s debian/control debian/control.old; then \
	  rm -f debian/control.old; \
	else \
	  echo "debian/control did change, please restart the build"; \
          exit 1; \
	fi

  in_files = debian/*.in
packaging-files:
	for f in $(in_files) debian/.JB-jdk-arch.jinfo.in debian/.JB-jre-arch.jinfo.in; do \
	  case "$$f" in debian/control.in) continue; esac; \
	  f2=$$(echo $$f | sed 's/JB/$(basename)/;s/arch/$(archdir)/;s/\.in$$//'); \
	  echo $$f2; \
	  sed -e 's/@JRE@/$(p_jre)/g' \
	      -e 's/@JDK@/$(p_jdk)/g' \
	      -e 's/@LJRE@/$(l_jre)/g' \
	      -e 's/@vendor@/$(Vendor)/g' \
	      -e 's/@RELEASE@/$(relstring)/g' \
	      -e 's/@basename@/$(basename)/g' \
	      -e 's,@TOP@,$(TOP),g' \
	      -e 's,@basedir@,$(basedir),g' \
	      -e 's,@basediralias@,$(TOP)/$(jdiralias),g' \
	      -e 's,@jdiralias@,$(jdiralias),g' \
	      -e 's,@jdirname@,$(jdirname),g' \
	      -e 's/@srcname@/$(srcname)/g' \
	      -e 's/@arch@/$(arch)/g' \
	      -e 's/@sarch@/$(arch)/g' \
	      -e 's/@archdir@/$(archdir)/g' \
	      -e 's/@tag@/$(tag)/g' \
	      -e 's/@version@/$(comp_version)/g' \
	      -e 's/@ia32txt@/$(ia32txt)/g' \
	      -e 's/@priority@/$(priority)/g' \
	      -e 's/@mantag@/$(mantag)/g' \
	      -e 's/@jre_tools@/$(jre_tools_alt)/g' \
	      -e 's/@jdk_tools@/$(jdk_tools_alt)/g' \
	      -e 's/@corba_tools@/$(corba_tools)/g' \
	      -e 's,@jre_packs@,$(jre_packs),g' \
	      -e 's,@jdk_packs@,$(jdk_packs),g' \
	      -e 's,@j2se_lib@,$(j2se_lib),g' \
	      -e 's,@browser_dirs@,$(browser_plugin_dirs),g' \
	    $$f > $$f2; \
	done

unpack-stamp: $(bin_pattern) 
	rm -rf $(unpackdir)
	mkdir $(unpackdir)
	rm -rf $(srcdir)
	ls -ltr
	cp -pr $(bin_pattern) $(unpackdir)
	cd $(unpackdir) ;\
	./$(bin_pattern) -i silent -DLICENSE_ACCEPTED=true 
	mv $(unpackdir) $(srcdir)
	cd $(srcdir) ;\
	rm -rf *.bin ;\
	mv ibm-java-$(arch)-80/* . ;\
	rm -rf ibm-java-$(arch)-80
	touch unpack-stamp
	
update-license: 
	touch debian/license.templates

update-copyright: 
	jdkdir=$(srcdir) jdkdistrosdir=debian pkgdir=debian \
	  sh debian/mkcopy.sh

clean:
	dh_testdir
	dh_testroot
	rm -f *-stamp
	rm -rf $(srcdir) tmp-* $(unpackdir)
	rm -f debian/*.debhelper debian/more debian/control.old debian/license.template
	rm -f debian/$(p_jbin).substvars.tmp
	: # TODO: and these should be
	: # -rm -f $(d_jre).copyright debian/copyright

	for f in debian/*.in debian/.JB-jdk-arch.jinfo.in debian/.JB-jre-arch.jinfo.in; do \
	 f2=$$(echo $$f | sed 's/JB/$(basename)/;s/arch/$(archdir)/;s/\.in$$//'); \
	 case "$$f2" in debian/control) continue; esac; \
	 rm -f $$f2; \
	done

	rm -f debian/$(basename)*.templates
	rm -f debian/$(basename)*.links
	rm -f debian/copyright.1*
	rm -f debian/*.debhelper.log
	rm -f unpack-stamp
	rm -rf debian/$(basename)-plugin
	rm -rf debian/*.substvars
	dh_clean

mrproper: clean
	rm -rf build-stamp $(srcdir)



binary-$(p_jre):	DH_OPTIONS=-p$(p_jre)
binary-$(p_jre):	#binary-$(p_jbin)
	dh_testdir
	dh_testroot
	dh_clean -d
	dh_installdirs \
		$(basedir)/jre \
		$(basedir)/docs \
		$(basedir)/properties \

	-cp -a $(srcdir)/{jre,properties,docs,copyright,license_en.txt,notices.txt,readme.txt} \
	    $(d_jre)/$(basedir)

	fmt -w 75 -s $(srcdir)/docs/en/license_en.txt | sed 's/^$$/./g' | sed -e 's/^/ /' > debian/license.templates 
	sed -i '1s/^/Description:/' debian/license.templates 
	cat debian/license.templates >> $(d_jre).templates	
ifeq ($(arch),x86_64)
	mv debian/.ibm-java80-jre-$(archdir).jinfo debian/.ibm-java80-jre-$(arch).jinfo
endif
ifeq ($(arch),ppc64le)
	mv debian/.ibm-java80-jre-$(archdir).jinfo debian/.ibm-java80-jre-$(arch).jinfo
endif
	cp -pr debian/.ibm-java80-jre-$(arch).jinfo $(d_jre)/$(TOP)
	ln -s $(jdirname) $(d_jre)/$(TOP)/ibm-java80-jre-$(arch)

	ld_path=$(d_jre)/$(basedir)/jre/lib/$(archdir); \
	dh_shlibdeps \
	-l$$ld_path:$$ld_path/client:$$ld_path/native_threads:$$ld_path/headless \
		-Xlibjavaplugin_oji.so -Xlibnpjp2.so -X_g.so -Xlibibmgpu.so -Xlibcudart.so.5.5 -Xlibcuda.so.1 -Xlibcuda4j55_28.so -Xlibcuda4j55_27.so -Xlibcuda*.so --dpkg-shlibdeps-params=--ignore-missing-info

	sed -i -e 's/ *([^,]*) *//g' $(d_jre).substvars

	dh_installdocs \
		$(srcdir)/readme.txt \

	dh_installchangelogs -k \
#               $(srcdir)/jre/CHANGES



binary-$(p_plug):	DH_OPTIONS=-p$(p_plug)
binary-$(p_plug):	#binary-$(p_jbin)
	dh_testdir
	dh_testroot
	dh_clean -d
	dh_installdirs \
		usr/share/doc \
		$(foreach d, $(browser_plugin_dirs), usr/lib/$(d)/plugins)
	ln -s $(p_jre) $(d_plug)/usr/share/doc/$(p_plug)
#	cat debian/dlj.templates >> $(d_plug).templates



binary-$(p_jdk):	DH_OPTIONS=-p$(p_jdk)
binary-$(p_jdk):	build
	dh_testdir
	dh_testroot
	dh_clean -d
	dh_installdirs \
		$(basedir)/bin \

	-cp -a $(srcdir)/{bin,include,lib,demo,src.zip,sample,release} \
	    $(d_jdk)/$(basedir)
	fmt -w 75 -s $(srcdir)/docs/en/license_en.txt | sed 's/^$$/./g' | sed -e 's/^/ /' > debian/license.templates
	sed -i '1s/^/Description:/' debian/license.templates
	cat debian/license.templates >> $(d_jdk).templates
ifeq ($(arch),x86_64)
	mv debian/.ibm-java80-jdk-$(archdir).jinfo debian/.ibm-java80-jdk-$(arch).jinfo
endif
ifeq ($(arch),ppc64le)
	mv debian/.ibm-java80-jdk-$(archdir).jinfo debian/.ibm-java80-jdk-$(arch).jinfo
endif
	cp -pr debian/.ibm-java80-jdk-$(arch).jinfo $(d_jdk)/$(TOP)
	ln -s $(jdirname) $(d_jdk)/$(TOP)/ibm-java80-jdk-$(arch)
	ld_path=$(d_jdk)/$(basedir)/lib/$(archdir); \
	dh_shlibdeps \
	-l$$ld_path:$$ld_path/client:$$ld_path/native_threads:$$ld_path/headless \
		-Xlibjavaplugin_oji.so -Xlibnpjp2.so -X_g.so -Xlibibmgpu.so -Xlibcudart.so.5.5 -Xlibcuda.so.1 -Xlibcuda4j55_28.so -Xlibcuda4j55_27.so -Xlibcuda*.so --dpkg-shlibdeps-params=--ignore-missing-info

	sed -i -e 's/ *([^,]*) *//g' $(d_jdk).substvars

	dh_installdocs \
		$(srcdir)/readme.txt 
	dh_installchangelogs

binary-indep:
	:

binary-arch:	DH_OPTIONS=-s $(NO_PACKAGES)
binary-arch:	$(binary_arch_targets)
	dh_testdir
	dh_testroot
	dh_installdebconf
	dh_installmime
	dh_installmenu
	dh_icons || dh_iconcache || true
	: # don't strip the files, we are not allowed to modify these
	#dh_strip -X_g.so
	dh_link
	: # don't compress anything from the shipped demo and sample files
	dh_compress -Xdemo -Xexamples -Xsample -X.html -X.pdf
	dh_fixperms
	: # remove empty directories, when all components are in place
	for d in $$(find debian/{$(VENDOR),ia32*} -depth -type d -name plugins -empty 2> /dev/null); do \
	  while rmdir $$d 2> /dev/null; do d=`dirname $$d`; done; \
	done
	dh_lintian
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-arch 

.PHONY: binary binary-arch install checkroot build debian/control
