-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
101 lines (79 loc) · 2.1 KB
/
Makefile
File metadata and controls
101 lines (79 loc) · 2.1 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Makefile of netloop
# Copyright (C) 2019-2020 hxdyxd <hxdyxd@gmail.com>
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar
LD = $(CC)
INSTALL = install
RM = rm
PKG_CONFIG ?= pkg-config
TARGET += example/proxy_example
TARGET += example/tftpd_example
ifeq ($(LIBUCONTEXT), 1)
SUBMODS += $(shell pwd)/libucontext
endif
SUBMODS += $(shell pwd)/src
SUBMODS += $(shell pwd)/utils
LIBSUBMODS += $(shell pwd)/utils/lib.a
LIBSUBMODS += $(shell pwd)/src/lib.a
C_INCLUDES += -I $(shell pwd)/src
C_INCLUDES += -I $(shell pwd)/utils
CFLAGS += -O3 -Wall -g $(C_DEFS)
CFLAGS += -D_GNU_SOURCE
ifeq ($(LIBUCONTEXT), 1)
LIBSUBMODS += $(shell pwd)/libucontext/libucontext.a
C_INCLUDES += -I $(shell pwd)/libucontext/include
CFLAGS += -DLIBUCONTEXT
endif
ifeq ($(LIBCARES), 1)
C_INCLUDES += -I $(shell pwd)/cares/include
CFLAGS += -DLIBCARES
LDFLAGS += -lcares_static
LDFLAGS += -L $(shell pwd)/cares/lib
endif
ifeq ($(SSL), 1)
TARGET += example/sslproxy_example
C_INCLUDES += -I $(shell pwd)/libopenssl/include
CFLAGS += -DNETSSL
LDFLAGS += -lssl -lcrypto
LDFLAGS += -L $(shell pwd)/libopenssl/lib
endif
LDFLAGS += -lpthread -lrt -ldl
quiet_CC = @echo " CC $@"; $(CC)
quiet_LD = @echo " LD $@"; $(LD)
quiet_INSTALL = @echo " INSTALL $?"; $(INSTALL)
quiet_MAKE = @echo " MAKE $@"; $(MAKE)
V = 0
ifeq ($(V), 0)
quiet = quiet_
else
quiet =
endif
STATIC = 0
ifeq ($(STATIC), 1)
LDFLAGS += -static
endif
CFLAGS += $(C_INCLUDES)
export CROSS_COMPILE CFLAGS V CC AR LD SSL ARCH
OBJSTARGET = $(patsubst %_example, %.o, $(TARGET))
CLEANSUBMODS = $(patsubst %, %_clean, $(SUBMODS))
all: $(TARGET)
@echo "build success!"
%_example: %.o $(LIBSUBMODS)
$($(quiet)LD) -o $@ $< $(LIBSUBMODS) $(LDFLAGS)
%.o: %.c
$($(quiet)CC) $(CFLAGS) -o $@ -c $<
$(LIBSUBMODS): $(SUBMODS)
.PHONY: $(SUBMODS)
$(SUBMODS):
+$($(quiet)MAKE) -C $@
.PHONY: clean
clean: $(CLEANSUBMODS)
-$(RM) -f $(TARGET)
-$(RM) -f $(OBJSTARGET)
.PHONY: $(CLEANSUBMODS)
$(CLEANSUBMODS):
+$($(quiet)MAKE) -C $(patsubst %_clean, %, $@) clean
install: $(TARGET)
$($(quiet)INSTALL) -D $< /usr/local/bin/$<
uninstall:
-$(RM) -f /usr/local/bin/$(TARGET)