xref: /dpdk/examples/server_node_efd/efd_node/Makefile (revision 7faf4bd32566446fa0815eef743523ce6a95a355)
1*7faf4bd3SDavid Marchand# SPDX-License-Identifier: BSD-3-Clause
2*7faf4bd3SDavid Marchand# Copyright(c) 2016-2020 Intel Corporation
3*7faf4bd3SDavid Marchand
4*7faf4bd3SDavid Marchand# binary name
5*7faf4bd3SDavid MarchandAPP = node
6*7faf4bd3SDavid Marchand
7*7faf4bd3SDavid Marchand# all source are stored in SRCS-y
8*7faf4bd3SDavid MarchandSRCS-y := node.c
9*7faf4bd3SDavid Marchand
10*7faf4bd3SDavid MarchandCFLAGS += -I../shared
11*7faf4bd3SDavid Marchand
12*7faf4bd3SDavid MarchandPKGCONF ?= pkg-config
13*7faf4bd3SDavid Marchand
14*7faf4bd3SDavid Marchand# Build using pkg-config variables if possible
15*7faf4bd3SDavid Marchandifneq ($(shell $(PKGCONF) --exists libdpdk && echo 0),0)
16*7faf4bd3SDavid Marchand$(error "no installation of DPDK found")
17*7faf4bd3SDavid Marchandendif
18*7faf4bd3SDavid Marchand
19*7faf4bd3SDavid Marchandall: shared
20*7faf4bd3SDavid Marchand.PHONY: shared static
21*7faf4bd3SDavid Marchandshared: build/$(APP)-shared
22*7faf4bd3SDavid Marchand	ln -sf $(APP)-shared build/$(APP)
23*7faf4bd3SDavid Marchandstatic: build/$(APP)-static
24*7faf4bd3SDavid Marchand	ln -sf $(APP)-static build/$(APP)
25*7faf4bd3SDavid Marchand
26*7faf4bd3SDavid MarchandPC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
27*7faf4bd3SDavid MarchandCFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
28*7faf4bd3SDavid MarchandLDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
29*7faf4bd3SDavid MarchandLDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
30*7faf4bd3SDavid Marchand
31*7faf4bd3SDavid Marchandifeq ($(MAKECMDGOALS),static)
32*7faf4bd3SDavid Marchand# check for broken pkg-config
33*7faf4bd3SDavid Marchandifeq ($(shell echo $(LDFLAGS_STATIC) | grep 'whole-archive.*l:lib.*no-whole-archive'),)
34*7faf4bd3SDavid Marchand$(warning "pkg-config output list does not contain drivers between 'whole-archive'/'no-whole-archive' flags.")
35*7faf4bd3SDavid Marchand$(error "Cannot generate statically-linked binaries with this version of pkg-config")
36*7faf4bd3SDavid Marchandendif
37*7faf4bd3SDavid Marchandendif
38*7faf4bd3SDavid Marchand
39*7faf4bd3SDavid MarchandCFLAGS += -DALLOW_EXPERIMENTAL_API
40*7faf4bd3SDavid Marchand
41*7faf4bd3SDavid Marchandbuild/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
42*7faf4bd3SDavid Marchand	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
43*7faf4bd3SDavid Marchand
44*7faf4bd3SDavid Marchandbuild/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
45*7faf4bd3SDavid Marchand	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
46*7faf4bd3SDavid Marchand
47*7faf4bd3SDavid Marchandbuild:
48*7faf4bd3SDavid Marchand	@mkdir -p $@
49*7faf4bd3SDavid Marchand
50*7faf4bd3SDavid Marchand.PHONY: clean
51*7faf4bd3SDavid Marchandclean:
52*7faf4bd3SDavid Marchand	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
53*7faf4bd3SDavid Marchand	test -d build && rmdir -p build || true
54