Blob


1 CC = cc
3 #CFLAGS = -g3 -ggdb
4 CFLAGS = -O2
6 CFLAGS += -pipe -fPIE -fdiagnostics-color -Wno-unknown-warning-option -Wpedantic
7 CFLAGS += -Wall -Werror-implicit-function-declaration -Wno-format-truncation
8 CFLAGS += -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
9 CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare
10 CFLAGS += -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Werror=format-security
11 LDADD = -Wl,-z,now -Wl,-z,relro -pie -lssl -lcrypto -lpthread
13 BIN = twind
14 OBJS = twind.o gemini.o log.o request.o mime.o util.o
16 INSTALL ?= install -p
18 PREFIX ?= /usr/local
19 SBIN ?= $(PREFIX)/sbin
20 MAN ?= $(PREFIX)/man
21 GEMINIDIR ?= /var/twind
22 CONFDIR ?= /etc/twind
24 UID = 4000
26 all: $(BIN)
28 install: all
29 $(INSTALL) -d -m 755 -o root $(MAN)/man8
30 $(INSTALL) -d -m 750 -o root $(CONFDIR)
31 $(INSTALL) -d -m 755 -o root $(GEMINIDIR)
32 $(INSTALL) -d -m 755 -o _twind -g _twind $(GEMINIDIR)/logs
33 $(INSTALL) -m 644 -o root twind.8 $(MAN)/man8
34 $(INSTALL) -m 755 -o root twind $(SBIN)
36 user:
37 @useradd -d $(GEMINIDIR) -s /sbin/nologin -u $(UID) _twind
39 setuptls:
40 @openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes -keyout $(CONFDIR)/twind.key.pem -new -subj /CN=$(HN) -out $(CONFDIR)/twind.cert.pem -addext subjectAltName=DNS:$(HN)
42 $(BIN): $(OBJS)
43 $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDADD)
45 .c.o:
46 $(CC) $(CFLAGS) -o $@ -c $<
48 clean:
49 rm -f $(BIN) $(OBJS)