xref: /mOS-networking-stack/core/src/Makefile.in (revision dcdbbb98)
1
2.PHONY: clean
3
4DISABLE_NUMA=@NONUMA@
5ENABLE_DPDK=@DPDK@
6ENABLE_PCAP=@PCAP@
7ENABLE_NETMAP=@NETMAP@
8
9### TARGET ###
10MTCP_LIB_DIR=../lib
11MTCP_LIB=libmtcp.a
12
13MTCP_HDR_DIR=../include
14MTCP_HDR = mtcp_api.h mos_api.h mtcp_epoll.h mtcp_util.h
15
16
17### GCC ###
18GCC = @CC@
19GCC_OPT = -m64 -Wall -fPIC -DNEWEV -fgnu89-inline -Werror
20
21#DBG_OPT = -DDBGMSG -DDBGFUNC -DSTREAM -DSTATE -DTSTAT -DAPP -DEPOLL
22#DBG_OPT = -DDBGMSG -DDBGFUNC -DSTREAM -DSTATE
23#DBG_OPT += -DPKTDUMP
24#DBG_OPT += -DDUMP_STREAM
25#GCC_OPT += -g -DNETSTAT -DINFO -DDBGERR -DDBGCERR
26GCC_OPT += -DNDEBUG -O3 -g -DNETSTAT -DINFO -DDBGERR -DDBGCERR
27GCC_OPT += $(DBG_OPT)
28
29ifeq ($V,) # no echo
30    export MSG=@echo
31    export HIDE=@
32else
33    export MSG=@\#
34    export HIDE=
35endif
36
37### LIBRARIES AND INCLUDES ###
38INC_DIR=./include
39INC= -I$(INC_DIR) -I$(INC_DIR)/bpf
40
41ifeq ($(shell uname), Darwin)
42GCC_OPT += -DDARWIN -Wno-deprecated -Dinline=''
43endif
44
45LIBS = -lpthread -lrt
46ifeq ($(DISABLE_NUMA), 1)
47GCC_OPT += -DDISABLE_NUMA
48LIBS += -lnuma
49endif
50
51ifeq ($(ENABLE_DPDK), 1)
52# DPDK LIBRARY and HEADER
53DPDK_INC=../../drivers/dpdk/include
54DPDK_LIB=../../drivers/dpdk/lib/
55# CFLAGS for DPDK-related compilation
56DPDK_MACHINE_FLAGS = $(shell cat $(DPDK_INC)/cflags.txt)
57INC += -DENABLE_DPDK ${DPDK_MACHINE_FLAGS} -I${DPDK_INC} -include $(DPDK_INC)/rte_config.h
58LIBS += -export-dynamic -L$(DPDK_LIB)
59endif
60
61ifeq ($(ENABLE_PCAP), 1)
62# PacketShader LIBRARY and HEADER
63GCC_OPT += -D__thread="" -DBE_RESILIENT_TO_PACKET_DROP
64INC += -DENABLE_PCAP
65LIBS += -lpcap
66endif
67
68ifeq ($(ENABLE_NETMAP), 1)
69INC += -DENABLE_NETMAP
70endif
71
72### SOURCE CODE ###
73SRCS = core.c tcp_stream.c config.c api.c mos_api.c eventpoll.c socket.c pipe.c \
74	   tcp_util.c eth_in.c ip_in.c tcp.c tcp_in.c eth_out.c ip_out.c tcp_out.c \
75	   arp.c timer.c cpu.c util.c addr_pool.c fhash.c memory_mgt.c logger.c debug.c \
76	   tcp_rb_frag_queue.c tcp_send_buffer.c tcp_sb_queue.c tcp_stream_queue.c \
77	bpf/sf_bpf_filter.c bpf/sfbpf-int.c bpf/sf_gencode.c bpf/sf_grammar.c \
78	bpf/sf_nametoaddr.c bpf/sf_optimize.c bpf/sf_scanner.c \
79	event_callback.c tcp_rb.c icmp.c scalable_event.c key_value_store.c
80
81ifeq ($(ENABLE_DPDK), 1)
82SRCS += dpdk_module.c
83endif
84
85ifeq ($(ENABLE_PCAP), 1)
86SRCS += pcap_module.c
87endif
88
89ifeq ($(ENABLE_NETMAP), 1)
90SRCS += netmap_module.c
91endif
92
93OBJS = $(patsubst %.c,%.o,$(SRCS))
94DEPS = $(patsubst %.c,.%.d,$(SRCS))
95
96
97### GOALS ###
98default: $(OBJS)
99	mkdir -p $(MTCP_LIB_DIR)
100	$(MSG) "   AR $(MTCP_LIB)"
101	$(HIDE) ar rvs $(MTCP_LIB_DIR)/$(MTCP_LIB) $(OBJS)
102
103$(OBJS): %.o: %.c Makefile
104	$(MSG) "   CC $<"
105	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -c $< -o $@
106$(DEPS): .%.d: %.c Makefile
107	@mkdir -p .bpf
108	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -MM $(CFLAGS) $< > $@
109
110-include $(DEPS)
111
112clean: clean-library
113	rm -f *.o *~ core
114	rm -rf .*.d tags .bpf
115
116clean-library:
117	rm -f $(MTCP_LIB_DIR)/*
118
119tags:
120	find -name '*.c' -or -name '*.h' | xargs ctags
121