#!/usr/bin/make -f

PACKAGE:=mpg123

ARCH:=$(shell dpkg --print-gnu-build-architecture)

ARCH_i486:=
ARCH_alpha:=-alpha
ARCH_powerpc:=-ppc
ARCH_m68k:=-m68k
ARCH_arm:=-arm
ARCH_sparc:=-sparc
ARCH_hppa:=-hppa

TYPE_oss:=
TYPE_oss-i486:=-i486
TYPE_oss-3dnow:=-3dnow
TYPE_esd:=-esd
TYPE_alsa:=-alsa
TYPE_nas:=-nas

TARGETS_i486:=mpg123-oss mpg123-esd mpg123-nas \
	mpg123-oss-i486 mpg123-oss-3dnow
TARGETS_alpha:=mpg123-oss mpg123-esd
TARGETS_powerpc:=mpg123-oss mpg123-esd
TARGETS_m68k:=mpg123-oss
TARGETS_arm:=mpg123-oss
TARGETS_sparc:=mpg123-oss
TARGETS_hppa:=mpg123-oss

PKGNAME_mpg123-oss:=mpg123
PKGNAME_mpg123-oss-i486:=mpg123-oss-i486
PKGNAME_mpg123-oss-3dnow:=mpg123-oss-3dnow
PKGNAME_mpg123-esd:=mpg123-esd
PKGNAME_mpg123-alsa:=mpg123-alsa
PKGNAME_mpg123-nas:=mpg123-nas

# We assume if the user installs esd/nas, he wants
# esd/nas, and if he installs alsa, he wants
# alsa. For both alsa and esd/nas installed, assume
# he has an esd-alsa installed and wants to use it.
# i486 or 3dnow is used by default only if it's the only provider.
ALTPRIO_mpg123-oss:=30
ALTPRIO_mpg123-oss-i486:=60
ALTPRIO_mpg123-oss-3dnow:=60
ALTPRIO_mpg123-alsa:=40
ALTPRIO_mpg123-esd:=50
ALTPRIO_mpg123-nas:=50

mpg123-%:
	$(MAKE) clean
	$(MAKE) linux$(ARCH_$(ARCH))$(TYPE_$*)
	mv mpg123 $@

build: build-stamp
build-stamp: $(TARGETS_$(ARCH))
	touch build-stamp

clean:
	test -e debian/control
	test `id -u` = "0"
	-rm -f build-stamp
	$(MAKE) clean
	-rm -f $(TARGETS_$(ARCH))
	-rm -rf debian/tmp.* debian/files debian/substvars.*

binary-indep: build

binary-pkg-%: build
	test -e debian/control
	test `id -u` = "0"
	-rm -rf debian/substvars.* "debian/tmp.$*"

	install -d -m0755 "debian/tmp.$*/usr/bin"
	install -m 0755 "$*" "debian/tmp.$*/usr/bin"
	install -d -m0755 "debian/tmp.$*/usr/share/man/man1"
	install -d -m0755 "debian/tmp.$*/usr/lib/mime/packages"
	install -m 0644 mpg123.1 "debian/tmp.$*/usr/share/man/man1/$*.1"
	install -m 0644 debian/mime \
		"debian/tmp.$*/usr/lib/mime/packages/$*"

	install -d --mode=0755 "debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)"
	install --mode=0644 debian/copyright \
		README README.remote TODO BENCHMARKING BUGS \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)"
	install --mode=0644 CHANGES \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)/changelog"
	install --mode=0644 debian/changelog \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)/changelog.Debian"
	install --mode=0644 debian/README \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)/README.Debian"
	gzip -9 \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)/changelog" \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)/changelog.Debian" \
		"debian/tmp.$*/usr/share/doc/$(PKGNAME_$*)"/[A-Z]* \
		"debian/tmp.$*/usr/share/man/man1/$*.1"
	install -d --mode=0755 "debian/tmp.$*/DEBIAN"
	sed \
		-e 's/@PACKAGE@/$(PKGNAME_$*)/g' \
		-e 's/@FILENAME@/$*/g' \
		-e 's/@PRIORITY@/$(ALTPRIO_$*)/g' \
		<debian/postinst \
		>"debian/tmp.$*/DEBIAN/postinst"
	sed \
		-e 's/@PACKAGE@/$(PKGNAME_$*)/g' \
		-e 's/@FILENAME@/$*/g' \
		<debian/postrm \
		>"debian/tmp.$*/DEBIAN/postrm"
	sed \
		-e 's/@PACKAGE@/$(PKGNAME_$*)/g' \
		-e 's/@FILENAME@/$*/g' \
		<debian/prerm \
		>"debian/tmp.$*/DEBIAN/prerm"
	chmod 0755 \
		"debian/tmp.$*/DEBIAN/postinst" \
		"debian/tmp.$*/DEBIAN/postrm" \
		"debian/tmp.$*/DEBIAN/prerm"
	strip --remove-section=.comment --remove-section=.note \
		"debian/tmp.$*/usr/bin/$*"
	dpkg-shlibdeps -T"debian/substvars.$*" "debian/tmp.$*/usr/bin/$*"
	dpkg-gencontrol -isp -T"debian/substvars.$*" \
		-p"$(PKGNAME_$*)" -P"debian/tmp.$*"
	dpkg --build "debian/tmp.$*" ..

binary-arch: build $(TARGETS_$(ARCH):%=binary-pkg-%)

binary: binary-indep binary-arch

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