xref: /mOS-networking-stack/core/src/Makefile.in (revision 7245de1b)
1
2.PHONY: clean
3
4SHELL := /bin/bash
5DISABLE_NUMA=@NONUMA@
6ENABLE_DPDK=@DPDK@
7ENABLE_PCAP=@PCAP@
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 = @CC@
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
73### SOURCE CODE ###
74SRCS = core.c tcp_stream.c config.c api.c mos_api.c eventpoll.c socket.c pipe.c \
75	   tcp_util.c eth_in.c ip_in.c tcp.c tcp_in.c eth_out.c ip_out.c tcp_out.c \
76	   arp.c timer.c cpu.c util.c addr_pool.c fhash.c memory_mgt.c logger.c debug.c \
77	   tcp_rb_frag_queue.c tcp_send_buffer.c tcp_sb_queue.c tcp_stream_queue.c \
78	bpf/sf_bpf_filter.c bpf/sfbpf-int.c bpf/sf_gencode.c bpf/sf_grammar.c \
79	bpf/sf_nametoaddr.c bpf/sf_optimize.c bpf/sf_scanner.c \
80	event_callback.c tcp_rb.c icmp.c scalable_event.c key_value_store.c
81
82ifeq ($(ENABLE_DPDK), 1)
83SRCS += dpdk_module.c
84endif
85
86ifeq ($(ENABLE_PCAP), 1)
87SRCS += pcap_module.c
88endif
89
90ifeq ($(ENABLE_NETMAP), 1)
91SRCS += netmap_module.c
92endif
93
94OBJS = $(patsubst %.c,%.o,$(SRCS))
95DEPS = $(patsubst %.c,.%.d,$(SRCS))
96
97
98### GOALS ###
99default: $(OBJS)
100	mkdir -p $(MTCP_LIB_DIR)
101	$(MSG) "   AR $(MTCP_LIB)"
102	$(HIDE) ar rvs $(MTCP_LIB_DIR)/$(MTCP_LIB) $(OBJS)
103
104$(OBJS): %.o: %.c Makefile calcCPUs
105	$(MSG) "   CC $<"
106	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -c $< -o $@
107$(DEPS): .%.d: %.c Makefile
108	@mkdir -p .bpf
109	$(HIDE) $(GCC) $(GCC_OPT) $(INC) -MM $(CFLAGS) $< > $@
110
111calcCPUs:
112	$(eval export GCC_OPT := $(GCC_OPT) -DMAX_CPUS=$(shell let cpus=`lscpu | grep "Core(s) per socket" | awk '{print \$$4}'`*`lscpu | grep "Socket(s)" | awk '{print \$$2}'`; echo $$cpus))
113
114-include $(DEPS)
115
116clean: clean-library
117	rm -f *.o *~ core
118	rm -rf .*.d tags .bpf
119
120clean-library:
121	rm -f $(MTCP_LIB_DIR)/*
122
123tags:
124	find -name '*.c' -or -name '*.h' | xargs ctags
125