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
|
CC = gcc
CFLAGS = -fvisibility=hidden -fPIC -DPIC -Wall -Wno-sign-compare -Werror -fno-strict-overflow
LDFLAGS = -fPIC
TARGET = RELEASE
ifeq ($(TARGET),DEBUG)
CFLAGS += -g -O0
TARGETNAME = debug
else ifeq ($(TARGET),RELEASE)
CFLAGS += -g -O3
TARGETNAME = release
else
TARGETNAME = $(error Invalid TARGET. Use DEBUG or RELEASE)
endif
HEADERNAME = net_slirp.h
LIBNAME = libslirp.so
PCNAME = slirp.pc
BIN = $(addprefix $(TARGETNAME)/, libslirp.so)
INCLUDEDIR = /usr/include/libslirp
LIBDIR = /usr/lib64
PKGCONFIGDIR = /usr/lib64/pkgconfig
SRCS =\
bootp.c\
cksum.c\
debug.c\
if.c\
ip_icmp.c\
ip_input.c\
ip_output.c\
mbuf.c\
misc.c\
sbuf.c\
net_slirp.c\
tcp_input.c\
tcp_output.c\
tcp_subr.c\
tcp_timer.c\
udp.c\
socket.c\
$(NULL)
TMP = $(SRCS:.c=.o)
OBJ = $(addprefix $(TARGETNAME)/, $(TMP))
STATIC_LIBS =
DYNAMIC_LIBS =
LIBS = -Wl,-Bstatic $(addprefix -l, $(STATIC_LIBS)) -Wl,-Bdynamic $(addprefix -l, $(DYNAMIC_LIBS))
all : $(BIN) link
$(BIN) : $(TARGETNAME) $(OBJ)
$(CC) -shared $(LDFLAGS) -o $(BIN) $(OBJ) $(LIBS)
link : $(BIN)
rm -f $(LIBNAME)
ln -s $(BIN)
MAKEDEPEND = $(CC) -M $(CFLAGS) -o $(addprefix $(TARGETNAME)/,.$*.dep.tmp) $<
$(addprefix $(TARGETNAME)/, %.o) : %.c Makefile
@$(MAKEDEPEND) && \
cp $(addprefix $(TARGETNAME)/, .$*.dep.tmp) $(addprefix $(TARGETNAME)/, .$*.dep) && \
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $(addprefix $(TARGETNAME)/,.$*.dep.tmp) >> $(addprefix $(TARGETNAME)/,.$*.dep) && \
sed -i '1 s/^\(.\)/$(TARGETNAME)\/\1/' $(addprefix $(TARGETNAME)/, .$*.dep) && \
rm -f $(addprefix $(TARGETNAME)/,.$*.dep.tmp)
$(CC) $(CFLAGS) -c -o $@ $<
clean:
@rm -f $(TARGETNAME)/*.o $(TARGETNAME)/.*.dep $(TARGETNAME)/.*.dep.tmp $(BIN)
$(TARGETNAME):
@mkdir -p $(TARGETNAME)
-include $(patsubst %.c, $(TARGETNAME)/.%.dep, $(SRCS))
install:
mkdir -p $(DESTDIR)/$(INCLUDEDIR)
cp $(LIBNAME) $(DESTDIR)/$(LIBDIR)
cp $(HEADERNAME) $(DESTDIR)/$(INCLUDEDIR)
cp $(PCNAME) $(DESTDIR)/$(PKGCONFIGDIR)
uninstall:
rm -f $(DESTDIR)/$(LIBDIR)/$(LIBNAME)
rm -f $(DESTDIR)/$(INCLUDEDIR)/$(HEADERNAME)
rm -f $(DESTDIR)/$(PKGCONFIGDIR)/$(PCNAME)
|