udphole

Basic UDP wormhole proxy
git clone git://git.finwo.net/app/udphole
Log | Files | Refs | README | LICENSE

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