#!/usr/bin/make -f

# for "debian/rules get-orig-source"
ORIGTGZ_SOURCE:=	-D'2011/11/08 20:00'
ORIGTGZ_DESTINATION:=	0.33~cvs20111108

# determine whether we are cross-compiling
DEB_BUILD_GNU_TYPE:=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE:=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
ifeq (${DEB_BUILD_GNU_TYPE},${DEB_HOST_GNU_TYPE})
CROSS:=0
else
CROSS:=1
endif

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
  DEBUG =DEBUG=1
else
  DEBUG =
endif

ARCH ?=$(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(ARCH),amd64)
  ARCH =x86_64
else
ifeq ($(ARCH),powerpc)
  ARCH =ppc
else
ifeq ($(ARCH),hppa)
  ARCH =parisc
else
ifeq ($(ARCH),mipsel)
  ARCH =mips
else
ifneq (,$(findstring arm,$(ARCH)))
  ARCH =arm
# DEBUG =DEBUG=1
endif
endif
endif
endif
endif

DYN =0
ifneq ($(ARCH),i386)
  DYN =0
endif

DIR =$(shell pwd)/debian/dietlibc
VERSION =$(shell head -n1 debian/changelog |sed -e 's/.*(\(.*\)).*/\1/')

build: deb-checkdir build-stamp
build-stamp:
	rm -f parisc/strstr.S
	$(MAKE) prefix=/usr/lib/diet \
	  MYARCH='$(ARCH)' VERSION='$(VERSION)' $(DEBUG)
ifeq (${CROSS},0)
	bin-'$(ARCH)'/diet -v -Os gcc -nostdinc -o ttt test/select.c
	./ttt
	rm -f ttt
	bin-'$(ARCH)'/diet -v -Os gcc -nostdinc -static -o ttt debian/test/tc523086.c
	./ttt
	rm -f ttt
	bin-'$(ARCH)'/diet -v -Os gcc -nostdinc -static -o ttt debian/test/t-ascii1.c
	./ttt
	rm -f ttt
endif
	test '$(DYN)' -eq 0 || \
	  $(MAKE) dyn prefix=/usr/lib/diet \
	    MYARCH='$(ARCH)' VERSION='$(VERSION)' $(DEBUG)
	touch build-stamp

clean: deb-checkdir deb-checkuid
	$(MAKE) clean MYARCH='$(ARCH)'
	rm -f build-stamp install-stamp ttt
	rm -f dynlinker.README libdl.README libpthread.CHANGES \
	  libpthread.README profiling.PORTING profiling.README \
	  sparc64.README ia64.README changelog
	rm -rf '$(DIR)' '$(DIR)'-dev '$(DIR)'-doc
	rm -f debian/files debian/substvars debian/dietlibc-dev.postinst \
	  debian/dietlibc-dev.prerm

install: deb-checkdir deb-checkuid install-stamp
install-stamp: build-stamp
	rm -rf '$(DIR)' '$(DIR)'-dev '$(DIR)'-doc
	install -d -m0755 '$(DIR)'/etc
	$(MAKE) install prefix=/usr/lib/diet DESTDIR='$(DIR)' \
	  MYARCH='$(ARCH)' VERSION='$(VERSION)' $(DEBUG)
	# dietlibc dietlibc-dev dietlibc-doc
	echo '/usr/lib/diet/lib' >'$(DIR)'/etc/diet.ld.conf
	install -d -m0755 '$(DIR)'-dev/usr/include
	mv '$(DIR)'/usr/lib/diet/include '$(DIR)'-dev/usr/include/diet
	install -d -m0755 '$(DIR)'-dev/usr/lib/diet
	ln -s ../../include/diet '$(DIR)'-dev/usr/lib/diet/include
	mv '$(DIR)'/usr/lib/diet/lib-'$(ARCH)' '$(DIR)'/usr/lib/diet/lib
	cp -pr '$(DIR)'/usr/lib/diet/lib '$(DIR)'-dev/usr/lib/diet/
	rm -f '$(DIR)'/usr/lib/diet/lib/*.[ao]
	rm -f '$(DIR)'-dev/usr/lib/diet/lib/*.so
	#ln -s lib '$(DIR)'-dev/usr/lib/diet/lib-'$(ARCH)'
	mv '$(DIR)'/usr/lib/diet/bin '$(DIR)'-dev/usr/lib/diet/
	install -d -m0755 '$(DIR)'-dev/usr/bin
	mv '$(DIR)'-dev/usr/lib/diet/bin/diet* '$(DIR)'-dev/usr/bin/
	ln -s ../../../bin/diet '$(DIR)'-dev/usr/lib/diet/bin/
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	strip -s -R .comment '$(DIR)'-dev/usr/bin/diet
	if test '$(DYN)' -eq 1; then \
	  strip -s -R .comment '$(DIR)'-dev/usr/bin/diet-dyn; \
	fi
	strip -s -R .comment '$(DIR)'-dev/usr/lib/diet/bin/dnsd
	strip -s -R .comment '$(DIR)'-dev/usr/lib/diet/bin/elftrunc
endif
	if test '$(DYN)' -eq 1; then \
	  ln -s ../../../bin/diet-dyn '$(DIR)'-dev/usr/lib/diet/bin/ && \
	  chmod 0644 '$(DIR)'/usr/lib/diet/lib/*.so && \
	  chmod 0755 '$(DIR)'/usr/lib/diet/lib/libdl.so; \
	fi
	install -d -m0755 $(DIR)-dev/usr/share/man
	mv $(DIR)/usr/lib/diet/man/man? $(DIR)-dev/usr/share/man/
	gzip -9 $(DIR)-dev/usr/share/man/man?/*
	rmdir $(DIR)/usr/lib/diet/man
	install -d -m0755 $(DIR)-doc
	# .in
	sed -e 's/|ARCH|/$(ARCH)/g' <debian/dietlibc-dev.postinst.in \
	  >debian/dietlibc-dev.postinst
	sed -e 's/|ARCH|/$(ARCH)/g' <debian/dietlibc-dev.prerm.in \
	  >debian/dietlibc-dev.prerm
	# lintian overrides
	install -d -m0755 '$(DIR)'-dev/usr/share/lintian/overrides
	install -m0644 debian/dietlibc-dev.lintian \
	  '$(DIR)'-dev/usr/share/lintian/overrides/dietlibc-dev
	# doc
	rm -f dynlinker.README libdl.README libpthread.CHANGES \
	  libpthread.README profiling.PORTING profiling.README \
	  sparc64.README ia64.README changelog
	ln -s dynlinker/README dynlinker.README
	ln -s libdl/README libdl.README
	ln -s libpthread/CHANGES libpthread.CHANGES
	ln -s libpthread/README libpthread.README
	ln -s profiling/PORTING profiling.PORTING
	ln -s profiling/README profiling.README
	ln -s sparc64/README sparc64.README
	ln -s ia64/README ia64.README
	ln -s CHANGES changelog
	touch install-stamp

binary-indep: deb-checkdir deb-checkuid install dietlibc-doc.deb
	dpkg-gencontrol -isp -pdietlibc-doc -P'$(DIR)'-doc
	dpkg -b '$(DIR)'-doc ..

binary-arch: deb-checkdir deb-checkuid install dietlibc-dev.deb dietlibc.deb
	dpkg-gencontrol -isp -pdietlibc-dev -P'$(DIR)'-dev
	dpkg -b '$(DIR)'-dev ..
	if test '$(DYN)' -eq 1; then \
	  dpkg-gencontrol -isp -pdietlibc -P'$(DIR)'; \
	  dpkg -b '$(DIR)' ..; \
	fi

binary: binary-indep binary-arch
.PHONY: build clean install binary-indep binary-arch binary

include debian/implicit

_ANONCVSROOT:=		:pserver:cvs@cvs.fefe.de:/cvs
_CVSEXPORT:=		env CVS_RSH=ssh TZ=UTC cvs -qd ${_ANONCVSROOT} -z9 export
ifneq (,$(wildcard /usr/bin/mircpio))
_PACK:=			find dietlibc-${ORIGTGZ_DESTINATION} -type f | sort | \
			    mircpio -oC512 -Hustar -Mdist
else
_PACK:=			tar -cf - dietlibc-${ORIGTGZ_DESTINATION}
endif

get-orig-source:
	rm -rf $@.tmp
	mkdir $@.tmp
	# to get a Debian .orig.tar.gz we need to pull the source from CVS
	cd $@.tmp; ${_CVSEXPORT} ${ORIGTGZ_SOURCE} dietlibc
	# fixup files with CR-LF line endings
	cd $@.tmp; find dietlibc -type f -print0 | \
	    xargs -0 perl -pi -e 's/\r$$//' --
	# then rename and pack it up
	mv $@.tmp/dietlibc $@.tmp/dietlibc-${ORIGTGZ_DESTINATION}
	cd $@.tmp; ${_PACK} | gzip -n9 >../dietlibc_${ORIGTGZ_DESTINATION}.orig.tar.gz
	rm -rf $@.tmp
	# there we are...
	ls -l dietlibc_${ORIGTGZ_DESTINATION}.orig.tar.gz
