xref: /f-stack/tools/prog.mk (revision 8cf1d457)
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+= ${FF_PROG_CFLAGS}
59CXXFLAGS+= ${FF_PROG_CFLAGS}
60
61LIBS+= ${FF_PROG_LIBS}
62
63CLEANFILES+= ${PROG} ${OBJS}
64
65${PROG}: ${HEADERS} ${OBJS}
66ifdef PROG_CXX
67	${CXX} ${CXXFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LIBS}
68else
69	${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS} ${LIBS}
70endif
71
72clean:
73	@rm -f ${CLEANFILES}
74
75all: ${PROG}
76