#!/usr/bin/make -f # removes noautodbgsym from DEB_BUILD_OPTIONS JOBS=4 DEB_BUILD_OPTIONS = parallel=$(JOBS) DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_BUILD_MULTIARCH := $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH) PLBASENAME := swi-prolog PLBASE := /usr/lib/$(PLBASENAME)/ JNIDIR := /usr/lib/$(DEB_BUILD_MULTIARCH)/jni CMAKE_OPTIONS = \ -DSWIPL_PACKAGES_QT=OFF \ -DCMAKE_INSTALL_PREFIX=/usr \ -DSWIPL_INSTALL_DIR=$(PLBASENAME) \ -DJAVA_COMPATIBILITY=ON \ -DCMAKE_BUILD_TYPE=DEB \ -DJNIDIR=$(JNIDIR) # 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)),) CMAKE_OPTIONS += -DSWIPL_PACKAGES_JAVA=OFF else JAVA_COMPONENTS = Java_interface endif NOX_COMPONENTS = \ Core_system \ Core_packages \ Archive_interface \ Commandline_editors \ Perl_regex \ YAML_support \ OpenSSL_interface \ Python_interface \ Documentation \ Examples X_COMPONENTS = \ Graphics_subsystem ODBC_COMPONENTS = \ ODBC_interface BDB_COMPONENTS = \ BerkeleyDB_interface ifeq ($(shell dpkg-architecture -qDEB_BUILD_ARCH_OS),linux) NOX_COMPONENTS += TIPC_networking else CMAKE_OPTIONS += -DSWIPL_PACKAGES_TIPC=OFF endif # install_component component deb_pkg # env -C build doesn't work on Ubuntu 16.04 or older define install_component cd build && env DESTDIR=$(CURDIR)/debian/$(2) \ cmake -DCMAKE_INSTALL_COMPONENT=$(1) \ -P cmake_install.cmake endef # install_components plog_pkg_list deb_pkg define install_components $(foreach component,$(1),$(call install_component,$(component),$(2))) endef %: dh $@ --parallel override_dh_auto_configure: mkdir build && cd build && cmake $(CMAKE_OPTIONS) .. override_dh_auto_build: cd build && $(MAKE) -j $(JOBS) < /dev/null override_dh_auto_clean: rm -rf build override_dh_auto_install: $(call install_components,$(NOX_COMPONENTS),swi-prolog-nox) $(call install_components,$(X_COMPONENTS),swi-prolog-x) $(call install_components,$(JAVA_COMPONENTS),swi-prolog-java) $(call install_components,$(ODBC_COMPONENTS),swi-prolog-odbc) $(call install_components,$(BDB_COMPONENTS),swi-prolog-bdb) # This file is generated by swi-prolog-nox postinst (updated by triggers) rm debian/swi-prolog-nox/$(PLBASE)/library/INDEX.pl # Remove empty directories find debian/ -depth -type d -empty -exec rm -rfv {} \; # mv $(CURDIR)/debian/swi-prolog-nox/$(PLBASE)/lib/$(DEB_BUILD_ARCH)/libswipl.* $(CURDIR)/debian/swi-prolog-nox/usr/lib/ override_dh_install: override_dh_builddeb: dh_builddeb -- -Zxz # tell the tests NOT to try to access http://www.swi-prolog.org. This # is used in some of the HTTP tests USE_PUBLIC_NETWORK_TESTS=false export USE_PUBLIC_NETWORK_TESTS # we exclude the JPL test (-E jpl:) because embedded Java in Linux is # currently non-functional. See # https://stackoverflow.com/questions/44763387/jni-createjavavm-stack-corruption-in-recent-ubuntu-16-04 override_dh_auto_test: -cd build && ctest -V -E jpl: -j $(JOBS) .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