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+= -Wno-unused-but-set-variable -Wno-unused-variable 59CFLAGS+= ${FF_PROG_CFLAGS} 60CXXFLAGS+= ${FF_PROG_CFLAGS} 61 62LIBS+= ${FF_PROG_LIBS} 63 64CFLAGS+= $(foreach n,${LIBADD},-I${TOPDIR}/tools/lib${n}) 65LIBS+= $(foreach n,${LIBADD},-L${TOPDIR}/tools/lib${n} -l${n}) 66 67CLEANFILES+= ${PROG} ${OBJS} 68 69${PROG}: ${HEADERS} ${OBJS} 70ifdef PROG_CXX 71 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LIBS} 72else 73 ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LIBS} 74endif 75 76clean: 77 @rm -f ${CLEANFILES} 78 79all: ${PROG} 80