File: Makefile

package info (click to toggle)
ustreamer 5.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 824 kB
  • sloc: ansic: 7,554; makefile: 240; python: 119; sh: 40
file content (127 lines) | stat: -rw-r--r-- 2,266 bytes parent folder | download | duplicates (2)
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
-include config.mk

DESTDIR ?=
PREFIX ?= /usr/local
MANPREFIX ?= $(PREFIX)/share/man

CC ?= gcc
PY ?= python3
CFLAGS ?= -O3
LDFLAGS ?=

RPI_VC_HEADERS ?= /opt/vc/include
RPI_VC_LIBS ?= /opt/vc/lib

export

_LINTERS_IMAGE ?= ustreamer-linters


# =====
define optbool
$(filter $(shell echo $(1) | tr A-Z a-z), yes on 1)
endef


# =====
all:
	+ $(MAKE) apps
ifneq ($(call optbool,$(WITH_PYTHON)),)
	+ $(MAKE) python
endif
ifneq ($(call optbool,$(WITH_JANUS)),)
	+ $(MAKE) janus
endif


apps:
	$(MAKE) -C src
	@ ln -sf src/ustreamer.bin ustreamer
	@ ln -sf src/ustreamer-dump.bin ustreamer-dump


python:
	$(MAKE) -C python
	@ ln -sf python/build/lib.*/*.so .


janus:
	$(MAKE) -C janus
	@ ln -sf janus/*.so .


install: all
	$(MAKE) -C src install
ifneq ($(call optbool,$(WITH_PYTHON)),)
	$(MAKE) -C python install
endif
ifneq ($(call optbool,$(WITH_JANUS)),)
	$(MAKE) -C janus install
endif
	mkdir -p $(DESTDIR)$(MANPREFIX)/man1
	for man in $(shell ls man); do \
		install -m644 man/$$man $(DESTDIR)$(MANPREFIX)/man1/$$man; \
		gzip -f $(DESTDIR)$(MANPREFIX)/man1/$$man; \
	done


install-strip: install
	$(MAKE) -C src install-strip


regen:
	tools/$(MAKE)-jpeg-h.py src/ustreamer/data/blank.jpeg src/ustreamer/data/blank_jpeg.c BLANK
	tools/$(MAKE)-html-h.py src/ustreamer/data/index.html src/ustreamer/data/index_html.c INDEX


release:
	$(MAKE) clean
	$(MAKE) tox
	$(MAKE) push
	$(MAKE) bump V=$(V)
	$(MAKE) push
	$(MAKE) clean


tox: linters
	time docker run --rm \
			--volume `pwd`:/src:ro \
			--volume `pwd`/linters:/src/linters:rw \
		-t $(_LINTERS_IMAGE) bash -c " \
			cd /src \
			&& tox -q -c linters/tox.ini $(if $(E),-e $(E),-p auto) \
		"


linters:
	docker build \
			$(if $(call optbool,$(NC)),--no-cache,) \
			--rm \
			--tag $(_LINTERS_IMAGE) \
		-f linters/Dockerfile linters


bump:
	bumpversion $(if $(V),$(V),minor)


push:
	git push
	git push --tags


clean-all: linters clean
	- docker run --rm \
			--volume `pwd`:/src \
		-it $(_LINTERS_IMAGE) bash -c "cd src && rm -rf linters/{.tox,.mypy_cache}"


clean:
	rm -rf pkg/arch/pkg pkg/arch/src pkg/arch/v*.tar.gz pkg/arch/ustreamer-*.pkg.tar.{xz,zst}
	rm -f ustreamer ustreamer-dump *.so
	$(MAKE) -C src clean
	$(MAKE) -C python clean
	$(MAKE) -C janus clean


.PHONY: python janus linters