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