]> git.tuebingen.mpg.de Git - dss.git/blob - Makefile
d0721ed9c1067f031a336b49fb93cdb7f2666ff7
[dss.git] / Makefile
1 # SPDX-License-Identifier: GPL-2.0
2 PREFIX ?= /usr/local
3 INSTALL ?= install
4 INSTALL_PROGRAM ?= $(INSTALL)
5 INSTALL_DATA ?= $(INSTALL) -m 644
6 MKDIR_P := mkdir -p
7 VERSION := $(shell ./version-gen.sh dss version.c)
8
9 units := dss str file exec sig daemon df tv snap ipc dss.lsg version
10 objs := $(addsuffix .o, $(units))
11 deps := $(addsuffix .d, $(units))
12
13 all: dss dss.1
14 man: dss.1
15 $(objs): dss.lsg.h Makefile
16 -include $(deps)
17
18 DSS_CPPFLAGS += -Wunused-macros
19
20 DSS_CFLAGS := -Wno-sign-compare -g -Wunused -Wundef
21 DSS_CFLAGS += -Wredundant-decls
22 DSS_CFLAGS += -Os
23 DSS_CFLAGS += -Wall
24 DSS_CFLAGS += -Wuninitialized
25 DSS_CFLAGS += -Wchar-subscripts
26 DSS_CFLAGS += -Wformat-security
27 DSS_CFLAGS += -Werror-implicit-function-declaration
28 DSS_CFLAGS += -Wmissing-format-attribute
29 DSS_CFLAGS += -Wunused-parameter
30 DSS_CFLAGS += -Wbad-function-cast
31 DSS_CFLAGS += -Wshadow
32
33 .ONESHELL:
34 .SHELLFLAGS := -ec
35 ifeq ("$(origin V)", "command line")
36         SAY =
37 else
38         SAY = @echo '$(strip $(1))'
39 endif
40 version.c:
41         $(call SAY, VG $@)
42         ./version-gen.sh dss version.c
43 dss: $(objs)
44         $(call SAY, LD $@)
45         $(CC) -o $@ $(objs) $(LDFLAGS) -llopsub
46 %.o: %.c
47         $(call SAY, CC $<)
48         $(CC) -c -o $@ $(DSS_CPPFLAGS) $(CPPFLAGS) $(DSS_CFLAGS) $(CFLAGS) \
49                 -MMD -MF $(*F).d -MT $@ $<
50 %.lsg.h: %.suite
51         $(call SAY, LSGH $<)
52         lopsubgen --gen-h=$@ < $<
53 %.lsg.c: %.suite
54         $(call SAY, LSGC $<)
55         lopsubgen --gen-c=$@ < $<
56 %.1: %.suite
57         $(call SAY, LSGM $<)
58         lopsubgen --gen-man=$@ --version-string=$(VERSION) < $<
59 %.1.html: %.1
60         $(call SAY, GROFF $<)
61         groff -m man -Thtml -P -l -P -r $< | sed -e '1,/^<body>/d; /^<\/body>/,$$d' > $@
62
63 clean:
64         $(call SAY, CLEAM)
65         rm -f *.[od] dss dss.1 *.html dss.lsg.[ch] version.c
66
67 ifneq ($(findstring strip, $(MAKECMDGOALS)),)
68        strip_option := -s
69 endif
70 bindir := $(DESTDIR)$(PREFIX)/bin
71 mandir := $(DESTDIR)$(PREFIX)/share/man/man1
72 install install-strip: all
73         $(MKDIR_P) $(bindir) $(mandir)
74         $(INSTALL_PROGRAM) $(strip_option) dss $(bindir)
75         $(INSTALL_DATA) dss.1 $(mandir)
76
77 index.html: dss.1.html index.html.in INSTALL README NEWS
78         sed -e '/@README@/,$$d' index.html.in > $@
79         markdown README >> $@
80         sed -e '1,/@README@/d' -e '/@NEWS@/,$$d' index.html.in >> $@
81         markdown NEWS >> $@
82         sed -e '1,/@NEWS@/d' -e '/@INSTALL@/,$$d' index.html.in >> $@
83         markdown INSTALL >> $@
84         sed -e '1,/@INSTALL@/d' -e '/@MAN_PAGE@/,$$d' index.html.in >> $@
85         cat dss.1.html >> $@
86         sed -e '1,/@MAN_PAGE@/d' index.html.in >> $@
87
88 -include Makefile.local