misc: a few portability tweaks
[rb-79.git] / Makefile
blob2ba5f18d931b3aa23b4812ee8f1289b8e43f3cf6
1 .SUFFIXES:
2 .SUFFIXES: .o .c
4 CFLAGS ?=
5 LDFLAGS ?=
7 PREFIX ?= /usr
8 BINDIR ?= $(PREFIX)/bin
9 SHAREDIR ?= $(PREFIX)/share
10 MANDIR ?= $(SHAREDIR)/man
12 CFLAGS += -std=c99 -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
14 # Do you want logging?
15 CFLAGS += -DWRITE_LOGS=1
17 # fcgi - grumble grumble no pkg-config entry
18 LDFLAGS += -lfcgi
20 # libmagic - grumble grumble no pkg-config entry
21 LDFLAGS += -lmagic
23 # sqlite3
24 CFLAGS += $(shell pkg-config --cflags sqlite3)
25 LDFLAGS += $(shell pkg-config --libs sqlite3)
27 # libpcre2
28 CFLAGS += $(shell pkg-config --cflags libpcre2-8)
29 LDFLAGS += $(shell pkg-config --libs libpcre2-8)
31 # libsodium
32 CFLAGS += $(shell pkg-config --cflags libsodium)
33 LDFLAGS += $(shell pkg-config --libs libsodium)
35 # gmime - one of these day's I'll do it without fscking glib
36 CFLAGS += $(shell pkg-config --cflags gmime-2.6)
37 LDFLAGS += $(shell pkg-config --libs gmime-2.6)
39 # Debug
40 # CFLAGS += -g -O0 -pedantic -Wall -Wextra -Werror
42 # The `-O3' makes it go three times faster
43 # CFLAGS += -O3 -pedantic -Wall -Wextra -Werror
45 # If this is `foodb', then you'd better have db-foodb.c ready
46 DB_TYPE = sqlite3
48 default: all
49 all: \
50 rb79-ban-ip \
51 rb79-delete-post \
52 rb79-moderate-post \
53 rb79-server \
54 rb79-update-recent-page \
55 rb79-view-thread
57 SERVER_OFILES = \
58 db-$(DB_TYPE).o \
59 locks.o \
60 multipart.o \
61 preconditions.o \
62 rb79-server.o \
63 sanitize-comment.o \
64 sanitize-file.o \
65 tripcodes.o \
66 util.o \
67 write-thread.o
69 config.h: config.def.h
70 test -f config.h || cp config.def.h config.h
71 touch config.h
73 %.o: %.c config.h rb79.h macros.h unicode-transforms.h
74 $(CC) $(CFLAGS) -c -o $@ $<
76 rb79-server: $(SERVER_OFILES)
77 $(CC) -o $@ $^ $(LDFLAGS)
79 rb79-ban-ip: db-$(DB_TYPE).o locks.o rb79-ban-ip.o util.o \
80 write-thread.o
81 $(CC) -o $@ $^ $(LDFLAGS)
83 rb79-delete-post: db-$(DB_TYPE).o locks.o rb79-delete-post.o util.o \
84 write-thread.o
85 $(CC) -o $@ $^ $(LDFLAGS)
87 rb79-moderate-post: db-$(DB_TYPE).o locks.o rb79-moderate-post.o \
88 util.o write-thread.o
89 $(CC) -o $@ $^ $(LDFLAGS)
91 rb79-update-recent-page: db-$(DB_TYPE).o locks.o write-thread.o util.o \
92 rb79-update-recent-page.o
93 $(CC) -o $@ $^ $(LDFLAGS)
95 rb79-view-thread: db-$(DB_TYPE).o locks.o rb79-view-thread.o util.o \
96 write-thread.o
97 $(CC) -o $@ $^ $(LDFLAGS)
100 .PHONY: clean
101 clean:
102 find -name '*.o' -delete
103 rm -f rb79-server
104 rm -f rb79-ban-ip
105 rm -f rb79-delete-post
106 rm -f rb79-moderate-post
107 rm -f rb79-update-recent-page
108 rm -f rb79-view-thread
110 .PHONY: install
111 install: all
112 mkdir -p $(DESTDIR)$(BINDIR)
113 cp -f rb79-server $(DESTDIR)$(BINDIR)/
114 cp -f tools/rb79-describe-file.sh $(DESTDIR)$(BINDIR)/rb79-describe-file
115 cp -f rb79-ban-ip $(DESTDIR)$(BINDIR)/
116 cp -f rb79-delete-post $(DESTDIR)$(BINDIR)/
117 cp -f rb79-moderate-post $(DESTDIR)$(BINDIR)/
118 cp -f rb79-update-recent-page $(DESTDIR)$(BINDIR)/
119 cp -f rb79-view-thread $(DESTDIR)$(BINDIR)/
120 mkdir -p $(DESTDIR)$(MANDIR)/man1
121 cp -f rb79.1 $(DESTDIR)$(MANDIR)/man1/
122 cp -f rb79-ban-ip.1 $(DESTDIR)$(MANDIR)/man1/
123 cp -f rb79-delete-post.1 $(DESTDIR)$(MANDIR)/man1/
124 cp -f rb79-moderate-post.1 $(DESTDIR)$(MANDIR)/man1/
125 cp -f rb79-server.1 $(DESTDIR)$(MANDIR)/man1/
126 cp -f rb79-update-recent-page.1 $(DESTDIR)$(MANDIR)/man1/
127 cp -f rb79-view-thread.1 $(DESTDIR)$(MANDIR)/man1/
129 .PHONY: uninstall
130 uninstall:
131 cd $(DESTDIR)$(BINDIR) && rm -f rb79-server
132 cd $(DESTDIR)$(BINDIR) && rm -f rb79-describe-file
133 cd $(DESTDIR)$(BINDIR) && rm -f rb79-ban-ip
134 cd $(DESTDIR)$(BINDIR) && rm -f rb79-delete-post
135 cd $(DESTDIR)$(BINDIR) && rm -f rb79-moderate-post
136 cd $(DESTDIR)$(BINDIR) && rm -f rb79-update-recent-page
137 cd $(DESTDIR)$(BINDIR) && rm -f rb79-view-thread
138 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79.1
139 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79-ban-ip.1
140 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79-delete-post.1
141 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79-moderate-post.1
142 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79-server.1
143 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79-update-recent-page.1
144 cd $(DESTDIR)$(MANDIR) && rm -f man1/rb79-view-thread.1