xref: /mOS-networking-stack/core/src/Makefile.in (revision 76404edc)
1
2.PHONY: clean
3
4DISABLE_NUMA=@NONUMA@
5ENABLE_DPDK=@DPDK@
6ENABLE_PSIO=@PSIO@
7ENABLE_PCAP=@PCAP@
8ENABLE_DPDKR=@DPDKR@
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_PSIO), 1)
63# PacketShader LIBRARY and HEADER
64PS_DIR=../../../io_engine/io_engine-2.0.38.2
65LIB_DIR = -L$(PS_DIR)/lib
66INC += -DENABLE_PSIO -I$(PS_DIR)/include
67LIBS += -lps
68endif
69
70ifeq ($(ENABLE_PCAP), 1)
71# PacketShader LIBRARY and HEADER
72GCC_OPT += -D__thread="" -DBE_RESILIENT_TO_PACKET_DROP
73INC += -DENABLE_PCAP
74LIBS += -lpcap
75endif
76
77ifeq ($(ENABLE_DPDKR), 1)
78## DPDK RING (VIRTUAL PORT)
79DPDK_INC=../../../ovs-l7/dpdk-2.0.0/x86_64-native-linuxapp-gcc/include
80DPDK_LIB=../../../ovs-l7/dpdk-2.0.0/x86_64-native-linuxapp-gcc/lib
81# CFLAGS for DPDK-related compilation
82#DPDK_MACHINE_FLAGS = $(shell cat $(DPDK_INC)/cflags.txt)
83INC += -DENABLE_DPDKR ${DPDK_MACHINE_FLAGS} -I${DPDK_INC} -include $(DPDK_INC)/rte_config.h
84INC += -I../../../ovs-l7/ovs -I/usr/include # dpdkr
85INC += -mssse3 # dpdkr
86LIBS += -export-dynamic -L$(DPDK_LIB)
87endif
88
89ifeq ($(wildcard /usr/lib/libhugetlbfs.so),)
90else
91	GCC_OPT += -DHUGEPAGE
92endif
93
94### SOURCE CODE ###
95SRCS = core.c tcp_stream.c config.c api.c mos_api.c eventpoll.c socket.c pipe.c \
96	   tcp_util.c eth_in.c ip_in.c tcp.c tcp_in.c eth_out.c ip_out.c tcp_out.c \
97	   arp.c timer.c cpu.c util.c addr_pool.c fhash.c memory_mgt.c logger.c debug.c \
98	   tcp_rb_frag_queue.c tcp_ring_buffer.c tcp_send_buffer.c tcp_sb_queue.c tcp_stream_queue.c \
99	bpf/sf_bpf_filter.c bpf/sfbpf-int.c bpf/sf_gencode.c bpf/sf_grammar.c \
100	bpf/sf_nametoaddr.c bpf/sf_optimize.c bpf/sf_scanner.c \
101	event_callback.c tcp_rb.c icmp.c scalable_event.c key_value_store.c
102
103ifeq ($(ENABLE_DPDK), 1)
104SRCS += dpdk_module.c
105endif
106
107ifeq ($(ENABLE_PSIO), 1)
108SRCS += psio_module.c
109endif
110
111ifeq ($(ENABLE_PCAP), 1)
112SRCS += pcap_module.c
113endif
114
115ifeq ($(ENABLE_DPDKR), 1)
116SRCS += dpdkr_module.c
117endif
118
119OBJS = $(patsubst %.c,%.o,$(SRCS))
120DEPS = $(patsubst %.c,.%.d,$(SRCS))
121
122
123### GOALS ###
124default: $(OBJS)
125	mkdir -p $(MTCP_LIB_DIR)
126	$(MSG) "   AR $(MTCP_LIB)"
127	$(HIDE) ar rvs $(MTCP_LIB_DIR)/$(MTCP_LIB) $(OBJS)
128
129$(OBJS): %.o: %.c Makefile
130	$(MSG) "   CC $<"
131	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -c $< -o $@
132$(DEPS): .%.d: %.c Makefile
133	@mkdir -p .bpf
134	$(MSG) "   CC $<"
135	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -MM $(CFLAGS) $< > $@
136
137-include $(DEPS)
138
139clean: clean-library
140	rm -f *.o *~ core
141	rm -rf .*.d tags .bpf
142
143clean-library:
144	rm -f $(MTCP_LIB_DIR)/*
145
146tags:
147	find -name '*.c' -or -name '*.h' | xargs ctags
148