1# # Derived from FreeBSD src/share/mk/bsd.prog.mk 2# 3 4ifdef DEBUG_FLAGS 5CFLAGS+=${DEBUG_FLAGS} 6CXXFLAGS+=${DEBUG_FLAGS} 7endif 8 9ifdef NO_SHARED 10ifneq (${NO_SHARED},no) 11ifneq (${NO_SHARED},NO) 12LDFLAGS+= -static 13endif 14endif 15endif 16 17ifdef PROG_CXX 18PROG= ${PROG_CXX} 19endif 20 21ifndef PROG 22$(error PROG or PROG_CXX must be defined.) 23endif 24 25ifndef TOPDIR 26$(error TOPDIR must be defined.) 27endif 28 29ifneq ($(shell pkg-config --exists libdpdk && echo 0),0) 30$(error "no installation of DPDK found, maybe you shuld export environment variable `PKG_CONFIG_PATH`") 31endif 32 33ifndef SRCS 34ifdef PROG_CXX 35SRCS= ${PROG}.cc 36else 37SRCS= ${PROG}.c 38endif 39endif 40 41PROGDIR= ${TOPDIR}/tools/sbin 42 43HEADERS+= $(filter %.h,${SRCS}) 44OBJS+= $(patsubst %.c,%.o, $(filter %.c,${SRCS})) 45OBJS+= $(patsubst %.cc,%.o, $(filter %.cc,${SRCS})) 46 47PKGCONF ?= pkg-config 48 49FF_PROG_CFLAGS:= -g -Wall -Werror -DFSTACK -std=gnu99 $(shell $(PKGCONF) --cflags libdpdk) 50FF_PROG_CFLAGS+= -I${TOPDIR}/lib -I${TOPDIR}/tools/compat 51FF_PROG_CFLAGS+= -include${TOPDIR}/tools/compat/compat.h 52FF_PROG_CFLAGS+= -I${TOPDIR}/tools/compat/include -D__BSD_VISIBLE 53FF_PROG_CFLAGS+= -I${TOPDIR}/tools/libxo 54 55FF_PROG_LIBS:= -L${TOPDIR}/tools/compat -Wl,--whole-archive,-lffcompat,--no-whole-archive 56FF_PROG_LIBS+= $(shell $(PKGCONF) --static --libs libdpdk) 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 63CFLAGS+= $(foreach n,${LIBADD},-I${TOPDIR}/tools/lib${n}) 64LIBS+= $(foreach n,${LIBADD},-L${TOPDIR}/tools/lib${n} -l${n}) 65 66LIBS+= ${FF_PROG_LIBS} 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