176404edcSAsim Jamshed 276404edcSAsim Jamshed.PHONY: clean 376404edcSAsim Jamshed 47245de1bSYoungGyounSHELL := /bin/bash 576404edcSAsim JamshedDISABLE_NUMA=@NONUMA@ 676404edcSAsim JamshedENABLE_DPDK=@DPDK@ 776404edcSAsim JamshedENABLE_PCAP=@PCAP@ 8522d5c66SAsim JamshedENABLE_NETMAP=@NETMAP@ 976404edcSAsim Jamshed 1076404edcSAsim Jamshed### TARGET ### 1176404edcSAsim JamshedMTCP_LIB_DIR=../lib 1276404edcSAsim JamshedMTCP_LIB=libmtcp.a 1376404edcSAsim Jamshed 1476404edcSAsim JamshedMTCP_HDR_DIR=../include 1576404edcSAsim JamshedMTCP_HDR = mtcp_api.h mos_api.h mtcp_epoll.h mtcp_util.h 1676404edcSAsim Jamshed 1776404edcSAsim Jamshed 1876404edcSAsim Jamshed### GCC ### 19b451c18dSAsim JamshedGCC = @CC@ 20a5e1a556SAsim JamshedGCC_OPT = -m64 -Wall -fPIC -DNEWEV -fgnu89-inline -Werror 2176404edcSAsim Jamshed 224cb4e140SAsim Jamshed#DBG_OPT = -DDBGMSG -DDBGFUNC -DSTREAM -DSTATE -DTSTAT -DAPP -DEPOLL 2376404edcSAsim Jamshed#DBG_OPT = -DDBGMSG -DDBGFUNC -DSTREAM -DSTATE 2476404edcSAsim Jamshed#DBG_OPT += -DPKTDUMP 2576404edcSAsim Jamshed#DBG_OPT += -DDUMP_STREAM 2676404edcSAsim Jamshed#GCC_OPT += -g -DNETSTAT -DINFO -DDBGERR -DDBGCERR 2776404edcSAsim JamshedGCC_OPT += -DNDEBUG -O3 -g -DNETSTAT -DINFO -DDBGERR -DDBGCERR 2876404edcSAsim JamshedGCC_OPT += $(DBG_OPT) 2976404edcSAsim Jamshed 3076404edcSAsim Jamshedifeq ($V,) # no echo 3176404edcSAsim Jamshed export MSG=@echo 3276404edcSAsim Jamshed export HIDE=@ 3376404edcSAsim Jamshedelse 3476404edcSAsim Jamshed export MSG=@\# 3576404edcSAsim Jamshed export HIDE= 3676404edcSAsim Jamshedendif 3776404edcSAsim Jamshed 3876404edcSAsim Jamshed### LIBRARIES AND INCLUDES ### 3976404edcSAsim JamshedINC_DIR=./include 4076404edcSAsim JamshedINC= -I$(INC_DIR) -I$(INC_DIR)/bpf 4176404edcSAsim Jamshed 4276404edcSAsim Jamshedifeq ($(shell uname), Darwin) 4376404edcSAsim JamshedGCC_OPT += -DDARWIN -Wno-deprecated -Dinline='' 4476404edcSAsim Jamshedendif 4576404edcSAsim Jamshed 4676404edcSAsim JamshedLIBS = -lpthread -lrt 4776404edcSAsim Jamshedifeq ($(DISABLE_NUMA), 1) 4876404edcSAsim JamshedGCC_OPT += -DDISABLE_NUMA 4976404edcSAsim JamshedLIBS += -lnuma 5076404edcSAsim Jamshedendif 5176404edcSAsim Jamshed 5276404edcSAsim Jamshedifeq ($(ENABLE_DPDK), 1) 5376404edcSAsim Jamshed# DPDK LIBRARY and HEADER 54d270d183SAsim JamshedDPDK_INC=$(RTE_SDK)/$(RTE_TARGET)/include 55d270d183SAsim JamshedDPDK_LIB=$(RTE_SDK)/$(RTE_TARGET)/lib/ 5676404edcSAsim Jamshed# CFLAGS for DPDK-related compilation 57d270d183SAsim Jamshedinclude $(RTE_SDK)/mk/rte.vars.mk 58d270d183SAsim JamshedINC += -DENABLE_DPDK -I${DPDK_INC} -include $(DPDK_INC)/rte_config.h 5976404edcSAsim JamshedLIBS += -export-dynamic -L$(DPDK_LIB) 6076404edcSAsim Jamshedendif 6176404edcSAsim Jamshed 6276404edcSAsim Jamshedifeq ($(ENABLE_PCAP), 1) 6376404edcSAsim Jamshed# PacketShader LIBRARY and HEADER 6476404edcSAsim JamshedGCC_OPT += -D__thread="" -DBE_RESILIENT_TO_PACKET_DROP 6576404edcSAsim JamshedINC += -DENABLE_PCAP 6676404edcSAsim JamshedLIBS += -lpcap 6776404edcSAsim Jamshedendif 6876404edcSAsim Jamshed 69522d5c66SAsim Jamshedifeq ($(ENABLE_NETMAP), 1) 70522d5c66SAsim JamshedINC += -DENABLE_NETMAP 71522d5c66SAsim Jamshedendif 72522d5c66SAsim Jamshed 7376404edcSAsim Jamshed### SOURCE CODE ### 7476404edcSAsim JamshedSRCS = core.c tcp_stream.c config.c api.c mos_api.c eventpoll.c socket.c pipe.c \ 7576404edcSAsim Jamshed tcp_util.c eth_in.c ip_in.c tcp.c tcp_in.c eth_out.c ip_out.c tcp_out.c \ 7676404edcSAsim Jamshed arp.c timer.c cpu.c util.c addr_pool.c fhash.c memory_mgt.c logger.c debug.c \ 773b6b9ba6SAsim Jamshed tcp_rb_frag_queue.c tcp_send_buffer.c tcp_sb_queue.c tcp_stream_queue.c \ 7876404edcSAsim Jamshed bpf/sf_bpf_filter.c bpf/sfbpf-int.c bpf/sf_gencode.c bpf/sf_grammar.c \ 7976404edcSAsim Jamshed bpf/sf_nametoaddr.c bpf/sf_optimize.c bpf/sf_scanner.c \ 8076404edcSAsim Jamshed event_callback.c tcp_rb.c icmp.c scalable_event.c key_value_store.c 8176404edcSAsim Jamshed 8276404edcSAsim Jamshedifeq ($(ENABLE_DPDK), 1) 8376404edcSAsim JamshedSRCS += dpdk_module.c 8476404edcSAsim Jamshedendif 8576404edcSAsim Jamshed 8676404edcSAsim Jamshedifeq ($(ENABLE_PCAP), 1) 8776404edcSAsim JamshedSRCS += pcap_module.c 8876404edcSAsim Jamshedendif 8976404edcSAsim Jamshed 90522d5c66SAsim Jamshedifeq ($(ENABLE_NETMAP), 1) 91522d5c66SAsim JamshedSRCS += netmap_module.c 92522d5c66SAsim Jamshedendif 93522d5c66SAsim Jamshed 9476404edcSAsim JamshedOBJS = $(patsubst %.c,%.o,$(SRCS)) 9576404edcSAsim JamshedDEPS = $(patsubst %.c,.%.d,$(SRCS)) 9676404edcSAsim Jamshed 9776404edcSAsim Jamshed 9876404edcSAsim Jamshed### GOALS ### 9976404edcSAsim Jamsheddefault: $(OBJS) 10076404edcSAsim Jamshed mkdir -p $(MTCP_LIB_DIR) 10176404edcSAsim Jamshed $(MSG) " AR $(MTCP_LIB)" 10276404edcSAsim Jamshed $(HIDE) ar rvs $(MTCP_LIB_DIR)/$(MTCP_LIB) $(OBJS) 10376404edcSAsim Jamshed 1047245de1bSYoungGyoun$(OBJS): %.o: %.c Makefile calcCPUs 10576404edcSAsim Jamshed $(MSG) " CC $<" 106d270d183SAsim Jamshed $(HIDE) $(GCC) $(GCC_OPT) $(INC) $(CFLAGS) -c $< -o $@ 10776404edcSAsim Jamshed$(DEPS): .%.d: %.c Makefile 10876404edcSAsim Jamshed @mkdir -p .bpf 10976404edcSAsim Jamshed $(HIDE) $(GCC) $(GCC_OPT) $(INC) -MM $(CFLAGS) $< > $@ 11076404edcSAsim Jamshed 1117245de1bSYoungGyouncalcCPUs: 1127245de1bSYoungGyoun $(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)) 1137245de1bSYoungGyoun 11476404edcSAsim Jamshed-include $(DEPS) 11576404edcSAsim Jamshed 11676404edcSAsim Jamshedclean: clean-library 11776404edcSAsim Jamshed rm -f *.o *~ core 11876404edcSAsim Jamshed rm -rf .*.d tags .bpf 11976404edcSAsim Jamshed 12076404edcSAsim Jamshedclean-library: 12176404edcSAsim Jamshed rm -f $(MTCP_LIB_DIR)/* 12276404edcSAsim Jamshed 12376404edcSAsim Jamshedtags: 12476404edcSAsim Jamshed find -name '*.c' -or -name '*.h' | xargs ctags 125