File: rules

package info (click to toggle)
swi-prolog 8.2.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 78,084 kB
  • sloc: ansic: 362,656; perl: 322,276; java: 5,451; cpp: 4,625; sh: 3,047; ruby: 1,594; javascript: 1,509; yacc: 845; xml: 317; makefile: 156; sed: 12; sql: 6
file content (133 lines) | stat: -rwxr-xr-x 4,385 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/make -f

export DH_VERBOSE = 1

export DEB_BUILD_MAINT_OPTIONS := hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

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

CMAKE_OPTIONS = \
	-DSWIPL_PACKAGES_QT=OFF \
	-DSWIPL_INSTALL_DIR=$(PLBASENAME) \
	-DSWIPL_INSTALL_IN_LIB=ON \
	-DSWIPL_INSTALL_IN_SHARE=ON \
	-DINSTALL_TESTS=ON \
	-DCMAKE_BUILD_TYPE=DEB \
	-DJAVA_COMPATIBILITY=ON \
	-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

CORE_COMPONENTS = \
	Core_system
COREPKGS_COMPONENTS = \
	Core_packages
NOX_COMPONENTS = \
	Archive_interface \
	Commandline_editors \
	Perl_regex \
	YAML_support \
	OpenSSL_interface
X_COMPONENTS = \
	Graphics_subsystem
ODBC_COMPONENTS = \
	ODBC_interface
BDB_COMPONENTS = \
	BerkeleyDB_interface
DOC_COMPONENTS = \
	Documentation \
	Examples
TEST_COMPONENTS = \
	Tests

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 $@ --builddirectory=build

override_dh_auto_configure:
	dh_auto_configure --builddirectory=build -- $(CMAKE_OPTIONS)

override_dh_auto_install:
	$(call install_components,$(CORE_COMPONENTS),swi-prolog-core)
	$(call install_components,$(COREPKGS_COMPONENTS),swi-prolog-core-packages)
	$(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)
	$(call install_components,$(DOC_COMPONENTS),swi-prolog-doc)
	$(call install_components,$(TEST_COMPONENTS),swi-prolog-test)

	# This file is (re-)generated by postinst scripts
	rm debian/swi-prolog-core/$(PLBASE)/library/INDEX.pl

	# Remove extra license file
	rm -f debian/swi-prolog-test/usr/lib/swi-prolog/test/Tests/COPYING

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

override_dh_install:

# 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:

# Set ABI
ABI := $(shell LD_LIBRARY_PATH=debian/swi-prolog-core/usr/lib debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//')

# Set foreign extensions ABI
FABI := $(shell LD_LIBRARY_PATH=debian/swi-prolog-core/usr/lib debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 1)

# Set binary terms ABI
BABI := $(shell LD_LIBRARY_PATH=debian/swi-prolog-core/usr/lib debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 2)

# Set QLF ABI
QLF := $(shell LD_LIBRARY_PATH=debian/swi-prolog-core/usr/lib debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 3)

# Set saved states ABI
SSTATES := $(shell LD_LIBRARY_PATH=debian/swi-prolog-core/usr/lib debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 4)

override_dh_gencontrol:
	dh_gencontrol -- -Vswi-prolog:ABI="$(ABI)" -Vswi-prolog:FABI="$(FABI)" -Vswi-prolog:BABI="$(BABI)" -Vswi-prolog:QLF="$(QLF)" -Vswi-prolog:SSTATES="$(SSTATES)"

.PHONY: override_dh_auto_configure override_dh_auto_install override_dh_auto_test
.PHONY: override_dh_install override_dh_gencontrol