Makefile (3557B)
1 lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) 2 3 LIBS:= 4 SRC:= 5 6 # UNAME_MACHINE=$(call lc,$(shell uname -m)) 7 # UNAME_SYSTEM=$(call lc,$(shell uname -s)) 8 9 BIN?=udphole 10 VERSION?=1.2.0 11 12 CC:=gcc 13 CPP:=g++ 14 15 FIND=$(shell which gfind find | head -1) 16 SRC+=$(shell $(FIND) src/ -type f -name '*.c') 17 # Exclude standalone test programs from main binary 18 SRC:=$(filter-out $(wildcard src/test/test_*.c),$(SRC)) 19 20 INCLUDES:= 21 22 override CFLAGS?=-Wall -O2 23 override CFLAGS+=-I src -D INI_HANDLER_LINENO=1 -D'UDPHOLE_VERSION_STR="$(VERSION)"' 24 override LDFLAGS?= 25 26 override LDFLAGS+=-lresolv 27 28 override CPPFLAGS?= 29 30 ifeq ($(OS),Windows_NT) 31 # CFLAGS += -D WIN32 32 override CPPFLAGS+=-lstdc++ 33 override CPPFLAGS+= 34 ifeq ($(PROCESSOR_ARCHITEW6432),AMD64) 35 # CFLAGS += -D AMD64 36 else 37 ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) 38 # CFLAGS += -D AMD64 39 endif 40 ifeq ($(PROCESSOR_ARCHITECTURE),x86) 41 # CFLAGS += -D IA32 42 endif 43 endif 44 else 45 UNAME_S := $(shell uname -s) 46 ifeq ($(UNAME_S),Linux) 47 # CFLAGS += -D LINUX 48 override CPPFLAGS+=-lstdc++ 49 # override CFLAGS+=$(shell pkg-config --cflags glib-2.0) 50 # override LDFLAGS+=$(shell pkg-config --libs glib-2.0) 51 override CFLAGS+=-D _GNU_SOURCE 52 endif 53 ifeq ($(UNAME_S),Darwin) 54 # CFLAGS += -D OSX 55 override CPPFLAGS+=-std=c++14 56 override CFLAGS+=-D _BSD_SOURCE 57 endif 58 UNAME_P := $(shell uname -p) 59 ifeq ($(UNAME_P),x86_64) 60 # CFLAGS += -D AMD64 61 endif 62 ifneq ($(filter %86,$(UNAME_P)),) 63 # CFLAGS += -D IA32 64 endif 65 ifneq ($(filter arm%,$(UNAME_P)),) 66 # CFLAGS += -D ARM 67 endif 68 # TODO: flags for riscv 69 endif 70 71 include lib/.dep/config.mk 72 73 OBJ:=$(SRC:.c=.o) 74 OBJ:=$(OBJ:.cc=.o) 75 76 override CFLAGS+=$(INCLUDES) 77 override CPPFLAGS+=$(INCLUDES) 78 override CPPFLAGS+=$(CFLAGS) 79 80 .PHONY: default 81 default: $(BIN) 82 83 # Stddoc: extract /// documentation from source to markdown for manpage 84 STDDOC ?= stddoc 85 doc/cli_doc.md: $(SRC) 86 @mkdir -p doc 87 cat $(SRC) | $(STDDOC) > doc/cli_doc.md 88 89 # Manpage: template + stddoc fragment (markdown -> man) + envsubst for VERSION 90 doc/cli_doc.man: doc/cli_doc.md 91 pandoc doc/cli_doc.md -f markdown -t man -o doc/cli_doc.man 92 93 doc/license.man: LICENSE.md 94 @mkdir -p doc 95 pandoc LICENSE.md -f markdown -t man --standalone=false -o doc/license.man 96 97 $(BIN).1: doc/udphole.1.in doc/cli_doc.man doc/license.man 98 VERSION=$(VERSION) envsubst '$$VERSION' < doc/udphole.1.in | sed '/__COMMANDS_MAN__/r doc/cli_doc.man' | sed '/__COMMANDS_MAN__/d' | sed '/__LICENSE_MAN__/r doc/license.man' | sed '/__LICENSE_MAN__/d' > $(BIN).1 99 100 # .cc.o: 101 # $(CPP) $< $(CPPFLAGS) -c -o $@ 102 103 .c.o: 104 ${CC} $< ${CFLAGS} -c -o $@ 105 106 $(BIN): $(OBJ) 107 ${CC} ${OBJ} ${CFLAGS} ${LDFLAGS} -o $@ 108 109 .PHONY: test 110 test: $(BIN) 111 @node test/system-commands.js 112 @sleep 1 113 @node test/basic-forwarding-tcp.js 114 @sleep 1 115 @node test/basic-forwarding-unix.js 116 @sleep 1 117 @node test/listen-relearn-tcp.js 118 @sleep 1 119 @node test/listen-relearn-unix.js 120 @sleep 1 121 @node test/cluster-basic.js 122 @sleep 1 123 @node test/cluster-integration.js 124 @sleep 1 125 @node test/connect-drop-unknown.js 126 127 .PHONY: clean 128 clean: 129 rm -rf $(BIN) $(BIN).1 130 rm -rf $(OBJ) 131 rm -rf doc/cli_doc.md doc/cli_doc.man doc/license.man