#!/usr/bin/make -f
# Sample debian/rules file - for GNU Hello (1.3).
# Copyright 1994,1995 by Ian Jackson.
# I hereby give you perpetual unlimited permission to copy,
# modify and relicense this file, provided that you do not remove
# my name from the file itself.  (I assert my moral right of
# paternity under the Copyright, Designs and Patents Act 1988.)
# This file may have to be extensively modified
#
# Modified for glibc by David Engel <david@debian.org>
# Nodified some more by Dale Scheetz <dwarf@polaris.net> 1998

arch = $(shell dpkg --print-architecture)

ifeq ($(arch),alpha)
p = libc6.1
LOADER = ld-linux.so.2
KVERSION = 2.0.32
KREVISION = 2
COMPAT-DEV = , libc6-dev
else
ifeq ($(arch),m68k)
p = libc6
LOADER = ld.so.1
KVERSION = 2.0.33
KREVISION = 2
else
p = libc6
LOADER = ld-linux.so.2
KVERSION = 2.0.32
KREVISION = 2
endif
endif

LD_LIBRARY_PATH=`pwd`/debian/hold/lib
I18NPATH=debian/tmp/usr/share/i18n/locales
LOCALEDEF=debian/hold/lib/${LOADER} debian/hold/usr/bin/localedef

H_KH=$(shell if [ -e ${KSOURCE}/include/linux/version.h ]; then \
     echo YES; else echo NO; fi)

ifndef KSOURCE
  export KSOURCE:=/usr/src/kernel-headers-${KVERSION}
  ifeq (${H_KH},NO)
  # We still don have any kernel headers!
    export KSOURCE:=/usr/src/kernel-source-${KVERSION}
  endif
else
  export KSOURCE:=$(shell echo ${KSOURCE})
endif

clean:
	-find . -name '*~' | xargs rm -f
	-rm -rf build builddir linux asm scsi pre-binary core
	-cd linuxthreads/man && make clean
	-rm -rf debian/hold debian/tmp debian/files* debian/substvars*

ifeq (${H_KH},NO)
# This means that we actually DON'T have kernel headers!
build binary binary-indep binary-arch binary-doc binary-run binary-dev \
binary-dbg binary-pic binary-locales binary-timezones:
	@echo The glibc package can not be built without the correct
	@echo kernel include files. These headers are expected in either
	@echo /usr/src/kernel-headers-${KVERSION} or the alternate location
	@echo /usr/src/kernel-source-${KVERSION}. If these include files
	@echo are found somewhere else, export the environment variable
	@echo KSOURCE with the path to those files and try again.
	@echo Current path declared by KSOURCE is ${KSOURCE}
		
else

build:

ifeq ($(MAKE_VERSION), 3.76)
	echo "Make 3.76 is broken!  Use make 3.76.1"
	false
endif
	-mkdir builddir
	@echo Current path declared by KSOURCE is ${KSOURCE}
	ln -sf ${KSOURCE}/include/linux linux
	ln -sf ${KSOURCE}/include/asm asm
	ln -sf ${KSOURCE}/include/scsi scsi
	cd builddir && ../configure --prefix=/usr \
	  --sysconfdir=/etc --localstatedir=/var \
	  --enable-add-ons=crypt,linuxthreads,localedata
	cd builddir && $(MAKE)
	cd linuxthreads/man && make all
	touch build

binary:		build binary-indep binary-arch

binary-indep:	binary-doc

binary-arch:	binary-run binary-dev binary-dbg binary-pic \
		binary-locales binary-timezones

pre-binary: build
	# copy most everything into debian/hold
	-rm -rf debian/hold
	install -d debian/hold
	cd builddir && make install_root=`pwd`/../debian/hold \
	  INSTALL_INFO=true install
	install -d debian/hold/usr/man/man3
	cd linuxthreads/man && \
	  make MANDIR='../../debian/hold/usr/man/man3' install
	rm -f debian/hold/usr/lib/libg.a
	sed -e 's/LIBC/$(p)/g' -e 's/COMPAT-DEV/$(COMPAT-DEV)/g' < debian/control.in > debian/control
	echo "$(arch):libc6=ldso (>= 1.8.10-1)" > debian/substvars
	echo "kversion=$(KVERSION)" >> debian/substvars
	echo "krevision=$(KREVISION)" >> debian/substvars
	touch pre-binary

binary-run:	checkroot pre-binary
	# build the libc6 binary
	-rm -rf debian/tmp
	install -d debian/tmp/usr/bin \
                   debian/tmp/lib \
		   debian/tmp/usr/doc/$(p) \
		   debian/tmp/DEBIAN
ifeq ($(arch),alpha)
	cp -a debian/hold/usr/bin/ldd debian/tmp/usr/bin
endif
	cp -a debian/hold/lib/{ld,lib}*-2*.so debian/tmp/lib
	cp -a debian/hold/lib/lib*-0*.so debian/tmp/lib
	#strip -g -K _dl_debug_state debian/tmp/lib/ld*.so
	strip debian/tmp/lib/lib*.so
	cp -a debian/hold/lib/{ld,lib}*.so.* debian/tmp/lib
	for f in ChangeLog BUGS FAQ INSTALL NEWS NOTES PROJECTS README ; do \
	  cp -a $$f debian/tmp/usr/doc/$(p)/$$f ; \
	done
	cd crypt && for f in README ; do \
	  cp -a $$f ../debian/tmp/usr/doc/$(p)/$$f.crypt ; \
	done
	cd linuxthreads && for f in README* Changes ChangeLog ; do \
	  cp -a $$f ../debian/tmp/usr/doc/$(p)/$$f.linuxthreads ; \
	done
	cd localedata && for f in README ChangeLog ; do \
	  cp -a $$f ../debian/tmp/usr/doc/$(p)/$$f.localedata ; \
	done
	cp debian/changelog debian/tmp/usr/doc/$(p)/changelog.Debian
	cp debian/FAQ debian/tmp/usr/doc/$(p)/FAQ.Debian
	gzip -f9 debian/tmp/usr/doc/$(p)/*
	cd debian/tmp/usr/doc/$(p) ; ln ChangeLog.gz changelog.gz
	cp debian/copyright debian/tmp/usr/doc/$(p)
	chmod 644 debian/tmp/usr/doc/$(p)/*
	cp debian/libc/* debian/tmp/DEBIAN
	if [ -f debian/shlibs.$(arch) ] ; then \
	  cp debian/shlibs.$(arch) debian/tmp/DEBIAN/shlibs ; \
	else \
	  cp debian/shlibs debian/tmp/DEBIAN ; \
	fi
	chmod +x debian/tmp/DEBIAN/p*
	dpkg-gencontrol -p$(p) -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

binary-dev:	checkroot pre-binary
	# build the $(p)-dev binary
	-rm -rf debian/tmp
	install -d debian/tmp/usr/bin \
		   debian/tmp/usr/lib \
		   debian/tmp/usr/include \
		   debian/tmp/usr/include/asm \
		   debian/tmp/usr/include/linux \
		   debian/tmp/usr/include/scsi \
		   debian/tmp/usr/doc \
		   debian/tmp/DEBIAN
	cp -a debian/hold/usr/bin/{gencat,getconf,makedb} debian/tmp/usr/bin
	strip debian/tmp/usr/bin/*
	cp -a debian/hold/usr/bin/glibcbug debian/tmp/usr/bin
	cp -a debian/hold/usr/lib/*.{o,a} debian/tmp/usr/lib
	rm -f debian/tmp/usr/lib/lib*_p.a
	strip -g debian/tmp/usr/lib/*.{o,a}
	cp -a debian/hold/usr/lib/lib*.so debian/tmp/usr/lib
	v=2.0.7; \
	pv=0.7; \
	cd debian/tmp/usr/lib ; \
	for f in *.so ; do \
	    if [ $$f != libc.so -a $$f != libndbm.so ]; then \
        	rm $$f ; \
            if [ $$f != libpthread.so ]; then \
                ln -s /lib/$$(basename $$f .so)-$$v.so $$f ; \
	    else  \
	        ln -s /lib/$$(basename $$f .so)-$$pv.so $$f ; \
	    fi \
	    fi \
	done
	cp -a debian/hold/usr/include/* debian/tmp/usr/include
	rm -f linux/linux asm/asm scsi/scsi
	cp -ar linux/* debian/tmp/usr/include/linux
	cp -ar asm/* debian/tmp/usr/include/asm
	cp -ar scsi/* debian/tmp/usr/include/scsi
	ln -sf $(p) debian/tmp/usr/doc/$(p)-dev
	cp debian/libc-dev/* debian/tmp/DEBIAN
	chmod +x debian/tmp/DEBIAN/p*
	dpkg-gencontrol -p$(p)-dev -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

binary-dbg:	checkroot pre-binary
	# build the $(p)-dbg binary
	-rm -rf debian/tmp
	install -d debian/tmp/usr/lib \
		   debian/tmp/usr/doc \
		   debian/tmp/DEBIAN
	for f in `find debian/hold/usr/lib -name '*.a' ! -name '*_p.a'` ; do \
	  cp $$f debian/tmp/usr/lib/`basename $$f .a`_g.a ; \
	done
	cp -a debian/hold/usr/lib/*_p.a debian/tmp/usr/lib
	ln -sf $(p) debian/tmp/usr/doc/$(p)-dbg
	#cp debian/libc-dbg/* debian/tmp/DEBIAN
	#chmod +x debian/tmp/DEBIAN/p*
	dpkg-gencontrol -p$(p)-dbg -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

binary-pic:	checkroot pre-binary
	# build the $(p)-pic binary
	-rm -rf debian/tmp
	install -d debian/tmp/usr/lib \
		   debian/tmp/usr/doc \
		   debian/tmp/DEBIAN \
	           debian/tmp/usr/lib/libc_pic
	cp builddir/libc_pic.a debian/tmp/usr/lib
	cp builddir/interp.so debian/tmp/usr/lib/libc_pic
	cp builddir/elf/soinit.so debian/tmp/usr/lib/libc_pic
	cp builddir/elf/sofini.so debian/tmp/usr/lib/libc_pic
	ln -sf $(p) debian/tmp/usr/doc/$(p)-pic
	dpkg-gencontrol -p$(p)-pic -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

binary-doc:	checkroot pre-binary
	# build the $(p)-doc binary
	-rm -rf debian/tmp
	install -d debian/tmp/usr/info \
		   debian/tmp/usr/man \
		   debian/tmp/usr/doc \
		   debian/tmp/DEBIAN
	cp -a debian/hold/usr/info/* debian/tmp/usr/info
	rm -f debian/tmp/usr/info/dir
	gzip -f9 debian/tmp/usr/info/*
	cp -a debian/hold/usr/man/* debian/tmp/usr/man
	gzip -f9 debian/tmp/usr/man/*/*
	ln -sf $(p) debian/tmp/usr/doc/$(p)-doc
	cp debian/libc-doc/* debian/tmp/DEBIAN
	chmod +x debian/tmp/DEBIAN/p*
	dpkg-gencontrol -p$(p)-doc -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

binary-locales:	checkroot pre-binary
	# build the locales binary
	-rm -rf debian/tmp
	install -d debian/tmp/usr/bin \
		   debian/tmp/usr/share \
		   debian/tmp/usr/doc \
		   debian/tmp/usr/man/man1 \
		   debian/tmp/DEBIAN
	cp -a debian/hold/usr/bin/{locale,localedef} debian/tmp/usr/bin
	strip debian/tmp/usr/bin/*
	cp -a debian/hold/usr/share/{i18n,locale} debian/tmp/usr/share
#	bash debian/do_locales $(LOADER)
	(while read locale charset; do \
	   $(LOCALEDEF) -c -i debian/hold/usr/share/i18n/locales/$$locale \
	                -f debian/hold/usr/share/i18n/charmaps/$$charset \
			debian/tmp/usr/share/locale/$$locale; \
	 done) < localedata/SUPPORTED
	cp -a debian/localedef.1 debian/tmp/usr/man/man1
	gzip -9 debian/tmp/usr/man/man1/*
	ln -s $(p) debian/tmp/usr/doc/locales
	#cp debian/locales/* debian/tmp/DEBIAN
	#chmod +x debian/tmp/DEBIAN/p*
	dpkg-gencontrol -plocales -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

binary-timezones: checkroot pre-binary
	# build the timezones binary
	-rm -rf debian/tmp
	install -d debian/tmp/etc \
		   debian/tmp/usr/bin \
		   debian/tmp/usr/man/man1 \
		   debian/tmp/usr/sbin \
		   debian/tmp/usr/share \
		   debian/tmp/usr/doc \
		   debian/tmp/DEBIAN
	echo Factory > debian/tmp/etc/timezone
	cp -a debian/hold/usr/bin/tzselect debian/tmp/usr/bin
	cp -a debian/hold/usr/sbin/{zdump,zic} debian/tmp/usr/sbin
	strip debian/tmp/usr/sbin/*
	cp -a debian/tzconfig debian/tmp/usr/sbin
	cp -a debian/tzview debian/tmp/usr/sbin
	chmod 755 debian/tmp/usr/sbin/tzconfig debian/tmp/usr/sbin/tzview
	cp -a debian/tzconfig.1 debian/tmp/usr/man/man1
	cp -a debian/tzselect.1 debian/tmp/usr/man/man1
	gzip -9 debian/tmp/usr/man/man1/*
	cp -a debian/hold/usr/share/zoneinfo debian/tmp/usr/share
	cp debian/timezones/* debian/tmp/DEBIAN
	chmod +x debian/tmp/DEBIAN/p*
	ln -s $(p) debian/tmp/usr/doc/timezones
	dpkg-gencontrol -ptimezones -isp
	chmod -R g-w debian/tmp
	chown -R root.root debian/tmp
	dpkg --build debian/tmp ..

endif

checkroot:
	$(checkdir)
	@test root = "`whoami`" || (echo need root priviledges; exit 1)

.PHONY: binary binary-arch binary-indep clean checkroot

# Local Variables:
# mode: makefile
# end:
