1# 2# Derived from FreeBSD src/share/mk/bsd.prog.mk 3# 4 5ifdef DEBUG_FLAGS 6CFLAGS+=${DEBUG_FLAGS} 7CXXFLAGS+=${DEBUG_FLAGS} 8endif 9 10ifdef NO_SHARED 11ifneq (${NO_SHARED},no) 12ifneq (${NO_SHARED},NO) 13LDFLAGS+= -static 14endif 15endif 16endif 17 18ifdef PROG_CXX 19PROG= ${PROG_CXX} 20endif 21 22ifndef PROG 23$(error PROG or PROG_CXX must be defined.) 24endif 25 26ifndef TOPDIR 27$(error TOPDIR must be defined.) 28endif 29 30ifndef SRCS 31ifdef PROG_CXX 32SRCS= ${PROG}.cc 33else 34SRCS= ${PROG}.c 35endif 36endif 37 38HEADERS+= $(filter %.h,${SRCS}) 39OBJS+= $(patsubst %.c,%.o, $(filter %.c,${SRCS})) 40OBJS+= $(patsubst %.cc,%.o, $(filter %.cc,${SRCS})) 41 42ifeq ($(FF_DPDK),) 43 FF_DPDK=${TOPDIR}/dpdk/x86_64-native-linuxapp-gcc 44endif 45 46FF_PROG_CFLAGS:= -g -Wall -Werror -DFSTACK -std=gnu99 47FF_PROG_CFLAGS+= -I${TOPDIR}/lib -I${TOPDIR}/tools/compat 48FF_PROG_CFLAGS+= -include${TOPDIR}/tools/compat/compat.h 49FF_PROG_CFLAGS+= -I${TOPDIR}/tools/compat/include -D__BSD_VISIBLE 50FF_PROG_CFLAGS+= -include ${FF_DPDK}/include/rte_config.h 51FF_PROG_CFLAGS+= -I${FF_DPDK}/include 52 53FF_PROG_LIBS:= -L${TOPDIR}/tools/compat -Wl,--whole-archive -lffcompat 54FF_PROG_LIBS+= -Wl,--no-whole-archive -L${FF_DPDK}/lib 55FF_PROG_LIBS+= -Wl,--whole-archive -lrte_eal -lrte_mempool -lrte_ring 56FF_PROG_LIBS+= -Wl,--no-whole-archive -lrt -lm -ldl -lcrypto -pthread 57 58CFLAGS+= ${FF_PROG_CFLAGS} 59CXXFLAGS+= ${FF_PROG_CFLAGS} 60 61LIBS+= ${FF_PROG_LIBS} 62 63CLEANFILES+= ${PROG} ${OBJS} 64 65${PROG}: ${HEADERS} ${OBJS} 66ifdef PROG_CXX 67 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LIBS} 68else 69 ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LIBS} 70endif 71 72clean: 73 @rm -f ${CLEANFILES} 74 75all: ${PROG} 76