xref: /dpdk/examples/dma/Makefile (revision bb4141db)
1*bb4141dbSKevin Laatz# SPDX-License-Identifier: BSD-3-Clause
2*bb4141dbSKevin Laatz# Copyright(c) 2019 Intel Corporation
3*bb4141dbSKevin Laatz
4*bb4141dbSKevin Laatz# binary name
5*bb4141dbSKevin LaatzAPP = dmafwd
6*bb4141dbSKevin Laatz
7*bb4141dbSKevin Laatz# all source are stored in SRCS-y
8*bb4141dbSKevin LaatzSRCS-y := dmafwd.c
9*bb4141dbSKevin Laatz
10*bb4141dbSKevin LaatzPKGCONF ?= pkg-config
11*bb4141dbSKevin Laatz
12*bb4141dbSKevin Laatz# Build using pkg-config variables if possible
13*bb4141dbSKevin Laatzifneq ($(shell $(PKGCONF) --exists libdpdk && echo 0),0)
14*bb4141dbSKevin Laatz$(error "no installation of DPDK found")
15*bb4141dbSKevin Laatzendif
16*bb4141dbSKevin Laatz
17*bb4141dbSKevin Laatzall: shared
18*bb4141dbSKevin Laatz.PHONY: shared static
19*bb4141dbSKevin Laatzshared: build/$(APP)-shared
20*bb4141dbSKevin Laatz	ln -sf $(APP)-shared build/$(APP)
21*bb4141dbSKevin Laatzstatic: build/$(APP)-static
22*bb4141dbSKevin Laatz	ln -sf $(APP)-static build/$(APP)
23*bb4141dbSKevin Laatz
24*bb4141dbSKevin LaatzPC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
25*bb4141dbSKevin LaatzCFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
26*bb4141dbSKevin LaatzLDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
27*bb4141dbSKevin LaatzLDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
28*bb4141dbSKevin Laatz
29*bb4141dbSKevin Laatzifeq ($(MAKECMDGOALS),static)
30*bb4141dbSKevin Laatz# check for broken pkg-config
31*bb4141dbSKevin Laatzifeq ($(shell echo $(LDFLAGS_STATIC) | grep 'whole-archive.*l:lib.*no-whole-archive'),)
32*bb4141dbSKevin Laatz$(warning "pkg-config output list does not contain drivers between 'whole-archive'/'no-whole-archive' flags.")
33*bb4141dbSKevin Laatz$(error "Cannot generate statically-linked binaries with this version of pkg-config")
34*bb4141dbSKevin Laatzendif
35*bb4141dbSKevin Laatzendif
36*bb4141dbSKevin Laatz
37*bb4141dbSKevin LaatzCFLAGS += -DALLOW_EXPERIMENTAL_API
38*bb4141dbSKevin Laatz
39*bb4141dbSKevin Laatzbuild/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
40*bb4141dbSKevin Laatz	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
41*bb4141dbSKevin Laatz
42*bb4141dbSKevin Laatzbuild/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
43*bb4141dbSKevin Laatz	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
44*bb4141dbSKevin Laatz
45*bb4141dbSKevin Laatzbuild:
46*bb4141dbSKevin Laatz	@mkdir -p $@
47*bb4141dbSKevin Laatz
48*bb4141dbSKevin Laatz.PHONY: clean
49*bb4141dbSKevin Laatzclean:
50*bb4141dbSKevin Laatz	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
51*bb4141dbSKevin Laatz	test -d build && rmdir -p build || true
52