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