#!/usr/bin/make -f # # Do we make rt.a into an ELF library? # Do we make iconx link with xpm.so? DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null) DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null) # Take account of old dpkg-architecture output. ifeq ($(DEB_HOST_ARCH_CPU),) DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) ifeq ($(DEB_HOST_ARCH_CPU),x86_64) DEB_HOST_ARCH_CPU := amd64 endif endif ifeq ($(DEB_HOST_ARCH_OS),) DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)) ifeq ($(DEB_HOST_ARCH_OS),gnu) DEB_HOST_ARCH_OS := hurd endif endif CFLAGS_OPT = -O2 ifneq (, $(filter $(DEB_HOST_ARCH_CPU), alpha hppa ia64 mips mipsel \ powerpc s390 sparc amd64 i386 \ arm armel armeb ppc64 )) CFLAGS_OPT = -O0 endif ifneq (, $(filter $(DEB_HOST_ARCH_OS), linux kfreebsd knetbsd)) system = linux else ifeq ($(DEB_HOST_ARCH_OS),hurd) system = gnu else system = $(DEB_HOST_ARCH_OS) endif endif ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS_OPT = -O0 endif CFLAGS = -Wall -g $(CFLAGS_OPT) configure: $(checkdir) $(MAKE) X-Configure name=$(system) sed "s/CFLAGS = .*/CFLAGS = $(CFLAGS)/" Makedefs > Makedefs.tmp mv Makedefs.tmp Makedefs touch configure build-icont: configure $(checkdir) $(MAKE) Icont touch build-icont build-iconc: configure $(checkdir) $(MAKE) Iconc (cd src/common && make patchstr && cp patchstr ../../bin) touch build-iconc build-ipl: configure $(checkdir) $(MAKE) Ilib clean: $(checkdir) -rm -f configure build-icont build-iconc build-ipl -rm -rf debian/tmp-iconx debian/tmp-icont debian/tmp-iconc debian/tmp-ipl debian/files debian/*~ -rm -f bin/* debian/substvars $(MAKE) Pure binary-icont: checkroot build-icont test-icont $(checkdir) -rm -rf debian/tmp-icont # Create the directory hierarchy. install -d debian/tmp-icont/usr/bin install -d debian/tmp-icont/DEBIAN install -d debian/tmp-icont/usr/share/man/man1 install -d debian/tmp-icont/usr/share/doc/icont # Copy the executables and documentation... install -s -m 755 bin/icont debian/tmp-icont/usr/bin install -m 644 debian/icon.1 debian/tmp-icont/usr/share/man/man1/icont.1 sed -e 's/icon-dir/icont/g' debian/copyright \ >debian/tmp-icont/usr/share/doc/icont/copyright install -m 644 debian/changelog \ debian/tmp-icont/usr/share/doc/icont/changelog.Debian # Patch icont... # bin/patchstr debian/tmp-icont/usr/bin/icont /usr/bin/iconx # Wrap icont to provide default for IPATH and LPATH # mv debian/tmp-icont/usr/bin/icont debian/tmp-icont/usr/bin/icont.real # install -o root -g root -m 755 debian/icont-wrapper debian/tmp-icont/usr/bin/icont # Compress documentation... test -f debian/tmp-icont/usr/share/doc/icont/changelog.Debian.gz || \ gzip -9 debian/tmp-icont/usr/share/doc/icont/changelog.Debian -gzip -9rq debian/tmp-icont/usr/share/man # (cd debian/tmp-icont/usr/share/man/man1 && ln -sf icont.1.gz icont.real.1.gz) # Fix permissions... chmod -R u=rwX,go=rX debian/tmp-icont chown -R root.root debian/tmp-icont # Make the debian control area. dpkg-shlibdeps -pshlibs-icont debian/tmp-icont/usr/bin/* dpkg-gencontrol -isp -picont -Pdebian/tmp-icont # And finally, build the Debian package! dpkg --build debian/tmp-icont .. binary-iconx: checkroot build-icont $(checkdir) -rm -rf debian/tmp-iconx # Create the directory hierarchy. install -d debian/tmp-iconx/usr/bin install -d debian/tmp-iconx/DEBIAN install -d debian/tmp-iconx/usr/share/man/man1 install -d debian/tmp-iconx/usr/share/doc/iconx # Copy the executables and documentation... install -s -m 755 bin/iconx debian/tmp-iconx/usr/bin install -m 644 debian/icon.1 debian/tmp-iconx/usr/share/man/man1/iconx.1 sed -e 's/icon-dir/iconx/g' debian/copyright \ >debian/tmp-iconx/usr/share/doc/iconx/copyright install -m 644 debian/changelog \ debian/tmp-iconx/usr/share/doc/iconx/changelog.Debian # Compress documentation... test -f debian/tmp-iconx/usr/share/doc/iconx/changelog.Debian.gz || \ gzip -9 debian/tmp-iconx/usr/share/doc/iconx/changelog.Debian -gzip -9rq debian/tmp-iconx/usr/share/man # Fix permissions... chmod -R u=rwX,go=rX debian/tmp-iconx chown -R root.root debian/tmp-iconx # Make the debian control area. dpkg-shlibdeps -pshlibs-iconx debian/tmp-iconx/usr/bin/* dpkg-gencontrol -isp -piconx -Pdebian/tmp-iconx # And finally, build the Debian package! dpkg --build debian/tmp-iconx .. binary-iconc: checkroot build-iconc $(checkdir) -rm -rf debian/tmp-iconc # Create the directory hierarchy. install -d debian/tmp-iconc/usr/bin install -d debian/tmp-iconc/DEBIAN install -d debian/tmp-iconc/usr/share/man/man1 install -d debian/tmp-iconc/usr/share/doc/iconc install -d debian/tmp-iconc/usr/lib/iconc # Copy the executables and library files... install -s -m 755 bin/iconc debian/tmp-iconc/usr/bin install -m 644 bin/dlrgint.o bin/rt.* bin/libIgpx.a debian/tmp-iconc/usr/lib/iconc # Patch iconc... bin/patchstr debian/tmp-iconc/usr/bin/iconc /usr/lib/iconc/ # Copy documentation... install -m 644 debian/icon.1 debian/tmp-iconc/usr/share/man/man1/iconc.1 sed -e 's/icon-dir/iconc/g' debian/copyright \ >debian/tmp-iconc/usr/share/doc/iconc/copyright install -m 644 debian/changelog \ debian/tmp-iconc/usr/share/doc/iconc/changelog.Debian # Compress documentation... test -f debian/tmp-iconc/usr/share/doc/iconc/changelog.Debian.gz || \ gzip -9 debian/tmp-iconc/usr/share/doc/iconc/changelog.Debian -gzip -9rq debian/tmp-iconc/usr/share/man # Fix permissions... chmod -R u=rwX,go=rX debian/tmp-iconc chown -R root.root debian/tmp-iconc # Make the debian control area. dpkg-shlibdeps -pshlibs-iconc debian/tmp-iconc/usr/bin/* dpkg-gencontrol -isp -piconc -Pdebian/tmp-iconc # And finally, build the Debian package! dpkg --build debian/tmp-iconc .. binary-ipl: checkroot build-ipl $(checkdir) -rm -rf debian/tmp-ipl # Create the directory hierarchy. install -d debian/tmp-ipl/DEBIAN install -d debian/tmp-ipl/usr/share/doc/icon-ipl install -d debian/tmp-ipl/usr/lib/icon-ipl # Copy Icon program library... cp -r lib/* ipl/procs/*.icn ipl/gprocs/*.icn debian/tmp-ipl/usr/lib/icon-ipl # Copy copyright information. sed -e 's/icon-dir/icon-ipl/g' debian/copyright \ >debian/tmp-ipl/usr/share/doc/icon-ipl/copyright install -m 644 debian/changelog \ debian/tmp-ipl/usr/share/doc/icon-ipl/changelog.Debian # Compress documentation... find debian/tmp-ipl/usr/share/doc/icon-ipl -type f -size +6k -print | \ xargs --no-run-if-empty gzip -9 test -f debian/tmp-ipl/usr/share/doc/icon-ipl/changelog.Debian.gz || \ gzip -9 debian/tmp-ipl/usr/share/doc/icon-ipl/changelog.Debian # Fix permissions... chmod -R u=rwX,go=rX debian/tmp-ipl chown -R root.root debian/tmp-ipl # Make the debian control area. dpkg-gencontrol -isp -picon-ipl -Pdebian/tmp-ipl # And finally, build the Debian package! dpkg --build debian/tmp-ipl .. test-icont: build-icont $(checkdir) @echo Tests for the Icon interpreter. @echo First some simple tests to be sure Icon works. $(MAKE) Samples-icont @echo More exhaustive tests of various features of Icon and larger programs. @echo 1. Basic tests. Should show only insignificant differences. $(MAKE) Test-icont test-iconc: build-iconc $(checkdir) @echo Tests for the Icon compiler. @echo First some simple tests to be sure Icon works. $(MAKE) Samples-iconc @echo More exhaustive tests of various features of Icon and larger programs. @echo 1. Basic tests. Should show only insignificant differences. $(MAKE) Test-iconc Test-opt Test-noopt benchmark-icont: build-icont $(checkdir) $(MAKE) Benchmark-icont benchmark-iconc: build-iconc $(checkdir) $(MAKE) Benchmark-icont build-iconx: build-icont build: build-icont build-ipl binary-arch: binary-icont binary-iconx binary-indep: binary-ipl $(checkroot) binary: binary-indep binary-arch test: test-icont benchmark: benchmark-icont define checkdir test -f src/icont/tmem.c -a -f debian/rules endef source diff: @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false checkroot: $(checkdir) test "`whoami`" = root .PHONY: binary binary-arch binary-indep clean checkroot