1*d4a07e70Sfengbojiang# # Derived from FreeBSD src/share/mk/bsd.prog.mk 27abd0fb2Slogwang# 37abd0fb2Slogwang 47abd0fb2Slogwangifdef DEBUG_FLAGS 57abd0fb2SlogwangCFLAGS+=${DEBUG_FLAGS} 67abd0fb2SlogwangCXXFLAGS+=${DEBUG_FLAGS} 77abd0fb2Slogwangendif 87abd0fb2Slogwang 97abd0fb2Slogwangifdef NO_SHARED 107abd0fb2Slogwangifneq (${NO_SHARED},no) 117abd0fb2Slogwangifneq (${NO_SHARED},NO) 127abd0fb2SlogwangLDFLAGS+= -static 137abd0fb2Slogwangendif 147abd0fb2Slogwangendif 157abd0fb2Slogwangendif 167abd0fb2Slogwang 177abd0fb2Slogwangifdef PROG_CXX 187abd0fb2SlogwangPROG= ${PROG_CXX} 197abd0fb2Slogwangendif 207abd0fb2Slogwang 217abd0fb2Slogwangifndef PROG 227abd0fb2Slogwang$(error PROG or PROG_CXX must be defined.) 237abd0fb2Slogwangendif 247abd0fb2Slogwang 257abd0fb2Slogwangifndef TOPDIR 267abd0fb2Slogwang$(error TOPDIR must be defined.) 277abd0fb2Slogwangendif 287abd0fb2Slogwang 298d76b62eSfengbojiangifneq ($(shell pkg-config --exists libdpdk && echo 0),0) 308d76b62eSfengbojiang$(error "no installation of DPDK found, maybe you shuld export environment variable `PKG_CONFIG_PATH`") 318d76b62eSfengbojiangendif 328d76b62eSfengbojiang 337abd0fb2Slogwangifndef SRCS 347abd0fb2Slogwangifdef PROG_CXX 357abd0fb2SlogwangSRCS= ${PROG}.cc 367abd0fb2Slogwangelse 377abd0fb2SlogwangSRCS= ${PROG}.c 387abd0fb2Slogwangendif 397abd0fb2Slogwangendif 407abd0fb2Slogwang 4165a9b498SfengbojiangPROGDIR= ${TOPDIR}/tools/sbin 4265a9b498Sfengbojiang 43144c6bcdSlogwangHEADERS+= $(filter %.h,${SRCS}) 44144c6bcdSlogwangOBJS+= $(patsubst %.c,%.o, $(filter %.c,${SRCS})) 45144c6bcdSlogwangOBJS+= $(patsubst %.cc,%.o, $(filter %.cc,${SRCS})) 467abd0fb2Slogwang 478d76b62eSfengbojiangPKGCONF ?= pkg-config 487abd0fb2Slogwang 498d76b62eSfengbojiangFF_PROG_CFLAGS:= -g -Wall -Werror -DFSTACK -std=gnu99 $(shell $(PKGCONF) --cflags libdpdk) 50df6ad731SlogwangFF_PROG_CFLAGS+= -I${TOPDIR}/lib -I${TOPDIR}/tools/compat 511eaf0ac3SlogwangFF_PROG_CFLAGS+= -include${TOPDIR}/tools/compat/compat.h 52df6ad731SlogwangFF_PROG_CFLAGS+= -I${TOPDIR}/tools/compat/include -D__BSD_VISIBLE 53*d4a07e70SfengbojiangFF_PROG_CFLAGS+= -I${TOPDIR}/tools/libxo 547abd0fb2Slogwang 552bfe3f2eSlogwangFF_PROG_LIBS:= -L${TOPDIR}/tools/compat -Wl,--whole-archive,-lffcompat,--no-whole-archive 568d76b62eSfengbojiangFF_PROG_LIBS+= $(shell $(PKGCONF) --static --libs libdpdk) 572bfe3f2eSlogwangFF_PROG_LIBS+= -Wl,--no-whole-archive -lrt -lm -ldl -lcrypto -lpthread -lnuma 587abd0fb2Slogwang 59127dd473Swhl739CFLAGS+= -Wno-unused-but-set-variable -Wno-unused-variable 607abd0fb2SlogwangCFLAGS+= ${FF_PROG_CFLAGS} 617abd0fb2SlogwangCXXFLAGS+= ${FF_PROG_CFLAGS} 627abd0fb2Slogwang 633b2bd0f6SlogwangCFLAGS+= $(foreach n,${LIBADD},-I${TOPDIR}/tools/lib${n}) 643b2bd0f6SlogwangLIBS+= $(foreach n,${LIBADD},-L${TOPDIR}/tools/lib${n} -l${n}) 653b2bd0f6Slogwang 668d76b62eSfengbojiangLIBS+= ${FF_PROG_LIBS} 678d76b62eSfengbojiang 6865a9b498SfengbojiangCLEANFILES+= ${PROGDIR}/${PROG} ${OBJS} 69144c6bcdSlogwang 70144c6bcdSlogwang${PROG}: ${HEADERS} ${OBJS} 717abd0fb2Slogwangifdef PROG_CXX 7265a9b498Sfengbojiang ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${PROGDIR}/${PROG} ${OBJS} ${LIBS} 737abd0fb2Slogwangelse 7465a9b498Sfengbojiang ${CC} ${CFLAGS} ${LDFLAGS} -o ${PROGDIR}/${PROG} ${OBJS} ${LIBS} 757abd0fb2Slogwangendif 767abd0fb2Slogwang 777abd0fb2Slogwangclean: 78144c6bcdSlogwang @rm -f ${CLEANFILES} 797abd0fb2Slogwang 807abd0fb2Slogwangall: ${PROG} 81