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 38PROGDIR= ${TOPDIR}/tools/sbin 39 40HEADERS+= $(filter %.h,${SRCS}) 41OBJS+= $(patsubst %.c,%.o, $(filter %.c,${SRCS})) 42OBJS+= $(patsubst %.cc,%.o, $(filter %.cc,${SRCS})) 43 44ifeq ($(FF_DPDK),) 45 FF_DPDK=${TOPDIR}/dpdk/x86_64-native-linuxapp-gcc 46endif 47 48FF_PROG_CFLAGS:= -g -Wall -Werror -DFSTACK -std=gnu99 49FF_PROG_CFLAGS+= -I${TOPDIR}/lib -I${TOPDIR}/tools/compat 50FF_PROG_CFLAGS+= -include${TOPDIR}/tools/compat/compat.h 51FF_PROG_CFLAGS+= -I${TOPDIR}/tools/compat/include -D__BSD_VISIBLE 52FF_PROG_CFLAGS+= -include ${FF_DPDK}/include/rte_config.h 53FF_PROG_CFLAGS+= -I${FF_DPDK}/include 54 55FF_PROG_LIBS:= -L${TOPDIR}/tools/compat -Wl,--whole-archive,-lffcompat,--no-whole-archive 56FF_PROG_LIBS+= -L${FF_DPDK}/lib -Wl,--whole-archive,-ldpdk,--no-whole-archive 57FF_PROG_LIBS+= -Wl,--no-whole-archive -lrt -lm -ldl -lcrypto -lpthread -lnuma 58 59CFLAGS+= -Wno-unused-but-set-variable -Wno-unused-variable 60CFLAGS+= ${FF_PROG_CFLAGS} 61CXXFLAGS+= ${FF_PROG_CFLAGS} 62 63LIBS+= ${FF_PROG_LIBS} 64 65CFLAGS+= $(foreach n,${LIBADD},-I${TOPDIR}/tools/lib${n}) 66LIBS+= $(foreach n,${LIBADD},-L${TOPDIR}/tools/lib${n} -l${n}) 67 68CLEANFILES+= ${PROGDIR}/${PROG} ${OBJS} 69 70${PROG}: ${HEADERS} ${OBJS} 71ifdef PROG_CXX 72 ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${PROGDIR}/${PROG} ${OBJS} ${LIBS} 73else 74 ${CC} ${CFLAGS} ${LDFLAGS} -o ${PROGDIR}/${PROG} ${OBJS} ${LIBS} 75endif 76 77clean: 78 @rm -f ${CLEANFILES} 79 80all: ${PROG} 81