#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# This is the debhelper compatability version to use.
export DH_COMPAT=1

#include version
major=$(shell grep '^MAJOR_VERSION' Rules.mak|sed 's/.*=//')
minor=$(shell grep '^MINOR_VERSION' Rules.mak|sed 's/.*=//')
version:=$(strip $(major)).$(strip $(minor))

kernel_source=kernel-source-2.4.18

target=$(DEB_HOST_GNU_CPU)
#target=arm

with_shared_libs=y
#ifeq ($(target),powerpc)
#with_shared_libs=n
#endif

ifeq ($(with_shared_libs),y)
shared_libs_true=true
else
shared_libs_true=false
endif

ifneq ($(target),$(DEB_HOST_GNU_CPU))
target_suffix=-$(target)
endif

ifneq ($(target),mipsel)
config_orig = extra/Configs/Config.$(target)
else
config_orig = extra/Configs/Config.mips
endif

ifneq ($(target),$(DEB_HOST_GNU_CPU))
cross_options = --cross="$(target)-linux-"
else
cross_options = --cross=""
endif

p_dev=libuclibc-dev$(target_suffix)
p_lib=libuclibc0$(target_suffix)
p_gcc=uclibc$(target_suffix)-toolchain

debian/control: debian/control.in debian/rules
	sed -e s/_TARGET_/$(target_suffix)/ \
	  -e "s/_ARCHS_/arm i386 m68k mips mipsel powerpc sh sparc/" \
	  -e "s/_KERNEL_/$(kernel_source)/" \
	  debian/control.in >debian/control

build: build-stamp
build-stamp: debian/control
	dh_testdir

	# Brute force method of getting kernel headers
	tar --bzip2 -xf /usr/src/$(kernel_source).tar.bz2 \
	  $(kernel_source)/include

	# Hack to get include/asm-arm/arch directory.  This should
	# stay here, and not move to the top-level Makefile, since
	# it adds a link _in the kernel source_, which is almost
	# certainly wrong in most situations.
#ifeq ($(target),arm)
	ln -s arch-sa1100 $(kernel_source)/include/asm-arm/arch
	ln -s proc-armo $(kernel_source)/include/asm-arm/proc
#endif
	
	touch $(kernel_source)/include/linux/autoconf.h

	# Various stupid programs use linux/version.h to find the
	# Linux version.
	( \
		echo '#define UTS_RELEASE "2.4.16"' \
		echo '#define LINUX_VERSION_CODE 132112' \
		echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' \
	) >$(kernel_source)/include/linux/version.h

	extra/Configs/uClibc_config_fix.pl \
		--arch=$(target) \
		$(cross_options) \
		--devel_prefix=/usr/$(target)-linux-uclibc \
		--kernel_dir=`pwd`/$(kernel_source) \
		--large_file=true \
		--rpc_support=true \
		--c99_math=true \
		--threads=true \
		--long_long=true \
		--float=true \
		--shadow=true \
		--ldso_path="/lib" \
		--shared_support=$(shared_libs_true) \
		--file=$(config_orig) \
		>Config

ifeq (yes,no)
	echo '#Debian configuration overrides'  >>Config
ifneq ($(target),$(DEB_HOST_GNU_CPU))
	echo 'TARGET_ARCH = $(target)'  >>Config
	echo 'CROSS = $(target)-linux-'  >>Config
else
	echo 'CROSS = '  >>Config
endif
	echo 'DOPIC = true'  >>Config
	echo 'SYSTEM_DEVEL_PREFIX = /usr'  >>Config
	echo 'DEVEL_PREFIX = /usr/$$(TARGET_ARCH)-linux-uclibc'  >>Config
	echo 'SHARED_LIB_LOADER_PATH = /lib'  >>Config
	#echo 'TARGET_PREFIX = /'  >>Config
ifeq ($(with_shared_libs),n)
	echo 'HAVE_SHARED = false' >>Config
else
	echo 'HAVE_SHARED = true' >>Config
endif
	echo 'KERNEL_SOURCE = '`pwd`/$(kernel_source) >>Config
	echo 'HAS_MMU = true' >>Config
	echo 'HAS_FLOATING_POINT = true' >>Config
	echo 'DO_C99_MATH = true' >>Config
	echo 'DODEBUG = false' >>Config
	echo 'INCLUDE_THREADS = true' >>Config
endif

	mkdir -p lib

	$(MAKE)

	touch build-stamp

clean: debian/control
	dh_testdir
	dh_testroot
	rm -f build-stamp

	rm -f debian/$(p_dev)

	rm -rf kernel-source-*

	# Add here commands to clean up after the build process.
	-$(MAKE) clean

	-rm Config

	dh_clean

install: build debian/control
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	-rm debian/$(p_dev)
	ln -s tmp debian/$(p_dev)

	# Add here commands to install the package into debian/tmp.
	$(MAKE) install_dev PREFIX=`pwd`/debian/$(p_dev)
	$(MAKE) install_runtime PREFIX=`pwd`/debian/$(p_lib)
	$(MAKE) install_toolchain PREFIX=`pwd`/debian/$(p_gcc)
	$(MAKE) install_utils PREFIX=`pwd`/debian/$(p_gcc)

	install -d debian/$(p_gcc)/usr/share/man/man1
	install -m 644 debian/uclibc-gcc.1 \
	  debian/$(p_gcc)/usr/share/man/man1/$(target)-uclibc-gcc.1
	(cd debian/$(p_gcc)/usr/share/man/man1; \
	  ln -sf $(target)-uclibc-gcc.1.gz $(target)-uclibc-cc.1.gz; \
	  ln -sf $(target)-uclibc-gcc.1.gz $(target)-uclibc-ld.1.gz; \
	  for x in addr2line ar as cpp gasp nm objcopy objdump ranlib \
	  size strings strip;do \
	    ln -sf $$x.1.gz $(target)-uclibc-$$x.1.gz;done)
	
	install -d debian/$(p_lib)/usr/share/man/man1
	install -m 644 debian/uclibc-ldd.1 \
	  debian/$(p_lib)/usr/share/man/man1/$(target)-uclibc-ldd.1
	install -m 644 debian/uclibc-ldconfig.1 \
	  debian/$(p_lib)/usr/share/man/man1/$(target)-uclibc-ldconfig.1
	install -m 644 debian/uclibc-readelf.1 \
	  debian/$(p_lib)/usr/share/man/man1/$(target)-uclibc-readelf.1

	(cd debian/$(p_dev); find . -name '.*' -exec rm -f '{}' ';')
	(cd debian/$(p_lib); find . -name '.*' -exec rm -f '{}' ';')
	(cd debian/$(p_gcc); find . -name '.*' -exec rm -f '{}' ';')

ifeq ($(with_shared_libs),y)
ifeq ($(target),$(DEB_HOST_GNU_CPU))
	mkdir -p debian/$(p_lib)/lib/
	ln -sf /usr/$(target)-linux-uclibc/lib/ld-uClibc.so.0 \
	  debian/$(p_lib)/lib/ld-uClibc.so.0
endif
endif

# Build architecture-independent files here.
binary-indep:

# Build architecture-dependent files here.
binary-arch: build install
#	dh_testversion
	dh_testdir
	dh_testroot

#	dh_installdebconf	
	dh_installdocs
	dh_installexamples
	dh_installmenu
#	dh_installemacsen
#	dh_installpam
#	dh_installinit
	dh_installcron
#	dh_installmanpages -plibuclibc0
	dh_installinfo
#	dh_undocumented
	dh_installchangelogs 
	dh_link
	cd debian/libuclibc0 && ../fixlinks
	cd debian/libuclibc-dev && ../fixlinks
	cd debian/uclibc-toolchain && ../fixlinks
	dh_strip
	dh_compress
	dh_fixperms -Xld-uClibc
	# You may want to make some executables suid here.
#	dh_suidregister
#	dh_makeshlibs
	dh_installdeb
#	dh_perl
ifeq ($(target),$(DEB_HOST_GNU_CPU))
	dh_shlibdeps --exclude=ld_uclibc -ldebian/$(p_lib)/usr/$(target)-linux-uclibc/lib
else
	dh_shlibdeps --exclude=lib
endif
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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