xref: /mOS-networking-stack/core/src/Makefile.in (revision 522d5c66)
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 -DNEWRB -DNEWPPEEK -fgnu89-inline
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
85ifeq ($(wildcard /usr/lib/libhugetlbfs.so),)
86else
87	GCC_OPT += -DHUGEPAGE
88endif
89
90### SOURCE CODE ###
91SRCS = core.c tcp_stream.c config.c api.c mos_api.c eventpoll.c socket.c pipe.c \
92	   tcp_util.c eth_in.c ip_in.c tcp.c tcp_in.c eth_out.c ip_out.c tcp_out.c \
93	   arp.c timer.c cpu.c util.c addr_pool.c fhash.c memory_mgt.c logger.c debug.c \
94	   tcp_rb_frag_queue.c tcp_ring_buffer.c tcp_send_buffer.c tcp_sb_queue.c tcp_stream_queue.c \
95	bpf/sf_bpf_filter.c bpf/sfbpf-int.c bpf/sf_gencode.c bpf/sf_grammar.c \
96	bpf/sf_nametoaddr.c bpf/sf_optimize.c bpf/sf_scanner.c \
97	event_callback.c tcp_rb.c icmp.c scalable_event.c key_value_store.c
98
99ifeq ($(ENABLE_DPDK), 1)
100SRCS += dpdk_module.c
101endif
102
103ifeq ($(ENABLE_PCAP), 1)
104SRCS += pcap_module.c
105endif
106
107ifeq ($(ENABLE_DPDKR), 1)
108SRCS += dpdkr_module.c
109endif
110
111ifeq ($(ENABLE_NETMAP), 1)
112SRCS += netmap_module.c
113endif
114
115OBJS = $(patsubst %.c,%.o,$(SRCS))
116DEPS = $(patsubst %.c,.%.d,$(SRCS))
117
118
119### GOALS ###
120default: $(OBJS)
121	mkdir -p $(MTCP_LIB_DIR)
122	$(MSG) "   AR $(MTCP_LIB)"
123	$(HIDE) ar rvs $(MTCP_LIB_DIR)/$(MTCP_LIB) $(OBJS)
124
125$(OBJS): %.o: %.c Makefile
126	$(MSG) "   CC $<"
127	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -c $< -o $@
128$(DEPS): .%.d: %.c Makefile
129	@mkdir -p .bpf
130	$(MSG) "   CC $<"
131	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -MM $(CFLAGS) $< > $@
132
133-include $(DEPS)
134
135clean: clean-library
136	rm -f *.o *~ core
137	rm -rf .*.d tags .bpf
138
139clean-library:
140	rm -f $(MTCP_LIB_DIR)/*
141
142tags:
143	find -name '*.c' -or -name '*.h' | xargs ctags
144