File: Makefile

package info (click to toggle)
cysignals 1.11.2%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 580 kB
  • sloc: ansic: 740; python: 576; makefile: 342; sh: 52
file content (149 lines) | stat: -rw-r--r-- 4,091 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Optional Makefile for easier development

VERSION = $(shell cat VERSION)

PYTHON = python3
PIP = $(PYTHON) -m pip -v
LS_R = ls -Ra1

DOCTEST = $(PYTHON) -B rundoctests.py


#####################
# Build
#####################

all: build doc

build: configure
	$(PYTHON) setup.py build

install: configure
	$(PIP) install --no-index --ignore-installed --no-deps .

dist: configure
	chmod -R go+rX-w .
	umask 0022 && $(PYTHON) setup.py sdist --formats=gztar

doc:
	cd docs && $(MAKE) html


#####################
# Clean
#####################

clean: clean-doc clean-build
	rm -rf tmp

clean-build:
	rm -rf build example/build example/*.cpp

clean-doc:
	rm -rf docs/build

distclean: clean
	rm -rf .eggs example/.eggs
	rm -rf autom4te.cache
	rm -f config.log config.status
	rm -f src/config.h src/cysignals/signals.pxd src/cysignals/cysignals_config.h


#####################
# Check
#####################

test: check

check: check-tmp

check-all: check-tmp
	$(MAKE) check-install

# Install and check
check-install: check-doctest check-example

check-doctest: install
	$(DOCTEST) src/cysignals/*.pyx

check-example: install
	cd example && $(PYTHON) setup.py clean build

check-gdb: install
	$(PYTHON) testgdb.py


#####################
# Check installation
#####################
#
# Test 2 installation scenarios without a real installation
# - prefix (with --prefix and --root)
# - user (with --user)

check-tmp:
	$(MAKE) check-prefix
	$(MAKE) check-user

prefix-install: configure
	rm -rf tmp/local tmp/build tmp/site-packages
	$(PYTHON) setup.py install --prefix="`pwd`/tmp/local" --root=tmp/build
	cd tmp && mv "build/`pwd`/local" local
	cd tmp && cp -R local/lib*/python*/site-packages site-packages

check-prefix: check-prefix-doctest check-prefix-example

check-prefix-doctest: prefix-install
	export PYTHONPATH="`pwd`/tmp/site-packages" && $(DOCTEST) src/cysignals/*.pyx

check-prefix-example: prefix-install
	rm -rf example/build
	export PYTHONPATH="`pwd`/tmp/site-packages" && cd example && $(PYTHON) setup.py clean build

check-user: check-user-doctest check-user-example

user-install: configure
	rm -rf tmp/user
	export PYTHONUSERBASE="`pwd`/tmp/user" && $(PYTHON) setup.py install --user --old-and-unmanageable

check-user-doctest: user-install
	export PYTHONUSERBASE="`pwd`/tmp/user" && $(DOCTEST) src/cysignals/*.pyx

check-user-example: user-install
	export PYTHONUSERBASE="`pwd`/tmp/user" && cd example && $(PYTHON) setup.py clean build

distcheck: dist
	rm -rf dist/check
	mkdir -p dist/check
	cd dist/check && tar xzf ../cysignals-$(VERSION).tar.gz
	cd dist/check/cysignals-$(VERSION) && $(LS_R) >../dist0.ls
	cd dist/check/cysignals-$(VERSION) && $(MAKE) all
	cd dist/check/cysignals-$(VERSION) && $(MAKE) distclean
	cd dist/check/cysignals-$(VERSION) && $(LS_R) >../dist1.ls
	cd dist/check; diff -u dist0.ls dist1.ls || { echo >&2 "Error: distclean after all leaves garbage"; exit 1; }
	cd dist/check/cysignals-$(VERSION) && $(MAKE) check-user
	cd dist/check/cysignals-$(VERSION) && ./configure --enable-debug
	cd dist/check/cysignals-$(VERSION) && $(MAKE) check-prefix
	cd dist/check/cysignals-$(VERSION) && $(MAKE) distclean
	cd dist/check/cysignals-$(VERSION) && $(LS_R) >../dist2.ls
	cd dist/check; diff -u dist0.ls dist2.ls || { echo >&2 "Error: distclean after check-tmp leaves garbage"; exit 1; }
	cd dist/check/cysignals-$(VERSION) && $(MAKE) dist
	cd dist/check/cysignals-$(VERSION) && tar xzf dist/cysignals-$(VERSION).tar.gz
	cd dist/check/cysignals-$(VERSION)/cysignals-$(VERSION) && $(LS_R) >../../dist3.ls
	cd dist/check; diff -u dist0.ls dist3.ls || { echo >&2 "Error: sdist is not reproducible"; exit 1; }
	rm -rf dist/check


#####################
# Maintain
#####################

configure: configure.ac
	autoreconf -i -f -I m4
	@rm -f src/config.h.in~

.PHONY: all build doc install dist doc clean clean-build clean-doc \
	distclean test check check-all check-tmp check-install \
	check-doctest check-example \
	check-prefix prefix-install check-prefix-doctest check-prefix-example \
	check-user user-install check-user-doctest check-user-example