xref: /f-stack/tools/prog.mk (revision d4a07e70)
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