#!/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