about summary refs log tree commit diff stats
path: root/makefile
blob: a4cec5add7881b30c1f75e056b66e52ab1ef0483 (plain) (blame)
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
CC:=clang
ifeq ($(DEBUG),1)
CFLAGS:=-march=native -fsanitize=address -funroll-loops -Wall -Wextra -Werror -O1
LDFLAGS:=-lpthread
else
CFLAGS:=-march=native -O3 -funroll-loops -Wall -Wextra -Werror
LDFLAGS:=-flto=thin -lpthread
endif

ifeq ($(shell uname),SunOS)
CC = gcc
LDFLAGS += -lsocket
CFLAGS += -std=gnu11
else
CFLAGS += -std=c11
endif

INCLUDES=-Iinc/

OBJECTS=obj/main.o obj/packet.o obj/netascii.o obj/handlers.o

.PHONY: all
all: bin/nbtpd

.PHONY: release
release: rel/nbtpd dbg/nbtpd.debug

rel/%: bin/%
	@if [ ! -d "rel" ]; then mkdir -p rel; fi
	strip -s -o $@ $^

dbg/%.debug: bin/%
	@if [ ! -d "dbg" ]; then mkdir -p dbg; fi
	strip --only-keep-debug -o $@ $^

bin/%: $(OBJECTS)
	@if [ ! -d "bin" ]; then mkdir -p bin; fi
	$(CC) -g $(CFLAGS) $(LDFLAGS) -o bin/nbtpd $^

obj/%.o: src/%.c
	@if [ ! -d "obj" ]; then mkdir -p obj; fi
	$(CC) -g -c $(INCLUDES) $(CFLAGS) -o $@ $^

.PHONY: clean
clean:
	@rm -rf obj
	@rm -rf bin
	@rm -rf rel
	@rm -rf dbg