Codebase list swi-prolog / debian/6.4.1-2 debian / rules
debian/6.4.1-2

Tree @debian/6.4.1-2 (Download .tar.gz)

rules @debian/6.4.1-2raw · history · blame

#!/usr/bin/make -f

DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
DEB_BUILD_MULTIARCH := $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif

CONFFLAGS = --libdir=/usr/lib --with-world --disable-libdirversion --enable-shared

COFLAGS := $(shell dpkg-buildflags --get CFLAGS)
CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) -fPIC $(shell pkg-config --cflags ncursesw)
LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) $(shell dpkg-buildflags --get CFLAGS)

# FIXME implement a proper fix
ifeq ($(shell dpkg-architecture -qDEB_BUILD_ARCH_OS),hurd)
CPPFLAGS += -DMAXPATHLEN=1024
endif

export COFLAGS CPPFLAGS LDFLAGS

# List of architectures where -java package should be built.
JAVA_ARCHS = $(shell grep-dctrl -PX swi-prolog-java -nsArchitecture debian/control)

ifeq ($(filter $(DEB_BUILD_ARCH),$(JAVA_ARCHS)),)
    DISABLE_PKGS=jpl
else
    JAVA_PACKAGES = jpl
endif

PLBASE := /usr/lib/swi-prolog/
JNIDIR := /usr/lib/$(DEB_BUILD_MULTIARCH)/jni

NOX_PACKAGES = clib cpp table sgml RDF semweb http chr clpqr nlp ssl pldoc plunit zlib R protobufs PDT utf8proc archive
X_PACKAGES = xpce
ODBC_PACKAGES = odbc

# Add here all packages that are not installed into deb packages
DISABLE_PKGS += windows
export DISABLE_PKGS

ifeq ($(shell dpkg-architecture -qDEB_BUILD_ARCH_OS),linux)
    NOX_PACKAGES += tipc
else
    DISABLE_PKGS += tipc
endif

# install_package prolog_pkg deb_pkg
define install_package
	mkdir -p $(CURDIR)/debian/$(2)/$(PLBASE)/library
	$(MAKE) -C packages/$(1) \
		DESTDIR=$(CURDIR)/debian/$(2) \
		PL=$(CURDIR)/src/swipl.sh \
		PLEXE=$(CURDIR)/src/swipl.sh \
		install < /dev/null

endef

# install_packages plog_pkg_list deb_pkg
define install_packages
	$(foreach pkg,$(1),$(call install_package,$(pkg),$(2)))
endef

%:
	dh $@ --with=autoreconf

override_dh_auto_configure:
	$(SHELL) -c "ulimit -a"
	$(SHELL) -c "ulimit -Ha"
	dh_auto_configure -- $(CONFFLAGS) PL="swipl" PLARCH=$(DEB_BUILD_ARCH)

override_dh_auto_build:
	$(MAKE) < /dev/null 

override_dh_auto_clean:
	[ ! -f Makefile ] || $(MAKE) clean
	[ ! -f Makefile ] || $(MAKE) distclean

override_dh_auto_install:
	$(MAKE) DESTDIR=$(CURDIR)/debian/swi-prolog-nox install-lite

	mkdir -p $(CURDIR)/debian/swi-prolog-x/usr/bin

	$(call install_packages,$(NOX_PACKAGES),swi-prolog-nox)
	$(call install_packages,$(X_PACKAGES),swi-prolog-x)
	$(call install_packages,$(JAVA_PACKAGES),swi-prolog-java)
	$(call install_packages,$(ODBC_PACKAGES),swi-prolog-odbc)

	# This file is generated by swi-prolog-nox postinst (updated by triggers)
	rm debian/swi-prolog-nox/$(PLBASE)/library/INDEX.pl

	# Generate xpce's autoload index
	echo "make_library_index('$(CURDIR)/debian/swi-prolog-x/$(PLBASE)/xpce/prolog/lib/')." | $(CURDIR)/src/swipl.sh

	# Remove superfluous copies of the GPL
	rm debian/swi-prolog-x/$(PLBASE)/xpce/COPYING

	# Remove empty directories
	find debian/ -depth -type d -empty -exec rm -rfv {} \;

	mv $(CURDIR)/debian/swi-prolog-nox/$(PLBASE)/lib/$(DEB_BUILD_ARCH)/libswipl.so* $(CURDIR)/debian/swi-prolog-nox/usr/lib/
	mv $(CURDIR)/debian/swi-prolog-nox/$(PLBASE)/lib/$(DEB_BUILD_ARCH)/libswipl.a $(CURDIR)/debian/swi-prolog-nox/usr/lib/

	# Link libjpl.so from the JNI directory so java can load it without LD_LIBRARY_PATH
	mkdir -p $(CURDIR)/debian/swi-prolog-java/$(JNIDIR)
	ln -s $(PLBASE)/lib/$(DEB_BUILD_ARCH)/libjpl.so \
	      $(CURDIR)/debian/swi-prolog-java/$(JNIDIR)/

	install -m755 debian/debhelper/dh_swi_prolog debian/swi-prolog-nox/usr/bin/
	install -d debian/swi-prolog-nox/usr/share/man/man1
	pod2man debian/debhelper/dh_swi_prolog > debian/swi-prolog-nox/usr/share/man/man1/dh_swi_prolog.1

	install -d debian/swi-prolog-nox/usr/share/perl5/Debian/Debhelper/Sequence
	install -m644 debian/debhelper/swi_prolog.pm debian/swi-prolog-nox/usr/share/perl5/Debian/Debhelper/Sequence/

override_dh_install:

override_dh_gencontrol:
	debian/debhelper/dh_swi_prolog -pswi-prolog-nox
	dh_gencontrol

override_dh_builddeb:
	dh_builddeb -- -Zxz

override_dh_auto_test:
	# TODO enable other tests
	$(MAKE) -C $(CURDIR)/src check
	$(MAKE) -C $(CURDIR)/packages/chr check
	# requires network connection
	# $(MAKE) -C $(CURDIR)/packages/http check
	$(MAKE) -C $(CURDIR)/packages/sgml check
	$(MAKE) -C $(CURDIR)/packages/RDF check
	$(MAKE) -C $(CURDIR)/packages/table check
	$(MAKE) -C $(CURDIR)/packages/plunit check
	$(MAKE) -C $(CURDIR)/packages/pldoc check
	$(MAKE) -C $(CURDIR)/packages/archive check
	$(MAKE) -C $(CURDIR)/packages/cpp check
	$(MAKE) -C $(CURDIR)/packages/nlp check
	$(MAKE) -C $(CURDIR)/packages/zlib check
	$(MAKE) -C $(CURDIR)/packages/protobufs check
ifneq ($(JAVA_PACKAGES),)
	$(MAKE) -C $(CURDIR)/packages/jpl check
endif

override_dh_makeshlibs: V=$(shell dpkg-parsechangelog|awk '/^Version:/ {sub("-[^-]$$", "",$$2); print $$2}')
override_dh_makeshlibs:
	# This library is not for external apps for now
	dh_makeshlibs -V"swi-prolog-nox (>= $(V)~), swi-prolog-nox (<< $(V).0~)"

.PHONY: override_dh_auto_configure override_dh_auto_build override_dh_auto_clean override_dh_auto_install
.PHONY: override_dh_install override_dh_builddeb override_dh_auto_test override_dh_gencontrol