xref: /dpdk/examples/l2fwd-event/Makefile (revision 11e02702)
14ff45798SPavan Nikhilesh# SPDX-License-Identifier: BSD-3-Clause
24ff45798SPavan Nikhilesh# Copyright(C) 2019 Marvell International Ltd.
34ff45798SPavan Nikhilesh#
44ff45798SPavan Nikhilesh
54ff45798SPavan Nikhilesh# binary name
64ff45798SPavan NikhileshAPP = l2fwd-event
74ff45798SPavan Nikhilesh
84ff45798SPavan Nikhilesh# all source are stored in SRCS-y
94ff45798SPavan NikhileshSRCS-y := main.c
104ff45798SPavan NikhileshSRCS-y += l2fwd_poll.c
111b2143aaSPavan NikhileshSRCS-y += l2fwd_event.c
124ff45798SPavan NikhileshSRCS-y += l2fwd_common.c
1369de9488SSunil Kumar KoriSRCS-y += l2fwd_event_generic.c
1469de9488SSunil Kumar KoriSRCS-y += l2fwd_event_internal_port.c
154ff45798SPavan Nikhilesh
16*11e02702SJerin JacobPKGCONF ?= pkg-config
17*11e02702SJerin Jacob
184ff45798SPavan Nikhilesh# Build using pkg-config variables if possible
19*11e02702SJerin Jacobifneq ($(shell $(PKGCONF) --exists libdpdk && echo 0),0)
20fda34680SCiara Power$(error "no installation of DPDK found")
21fda34680SCiara Powerendif
224ff45798SPavan Nikhilesh
234ff45798SPavan Nikhileshall: shared
244ff45798SPavan Nikhilesh.PHONY: shared static
254ff45798SPavan Nikhileshshared: build/$(APP)-shared
264ff45798SPavan Nikhilesh	ln -sf $(APP)-shared build/$(APP)
274ff45798SPavan Nikhileshstatic: build/$(APP)-static
284ff45798SPavan Nikhilesh	ln -sf $(APP)-static build/$(APP)
294ff45798SPavan Nikhilesh
3069b1bb49SBruce RichardsonPC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
314ff45798SPavan NikhileshCFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
324ff45798SPavan NikhileshLDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
338549295dSBruce RichardsonLDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
344ff45798SPavan Nikhilesh
355a196330SBruce Richardsonifeq ($(MAKECMDGOALS),static)
365a196330SBruce Richardson# check for broken pkg-config
375a196330SBruce Richardsonifeq ($(shell echo $(LDFLAGS_STATIC) | grep 'whole-archive.*l:lib.*no-whole-archive'),)
385a196330SBruce Richardson$(warning "pkg-config output list does not contain drivers between 'whole-archive'/'no-whole-archive' flags.")
395a196330SBruce Richardson$(error "Cannot generate statically-linked binaries with this version of pkg-config")
405a196330SBruce Richardsonendif
415a196330SBruce Richardsonendif
425a196330SBruce Richardson
43bc8e3247SDavid MarchandCFLAGS += -DALLOW_EXPERIMENTAL_API
44bc8e3247SDavid Marchand
454ff45798SPavan Nikhileshbuild/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
464ff45798SPavan Nikhilesh	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
474ff45798SPavan Nikhilesh
484ff45798SPavan Nikhileshbuild/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
494ff45798SPavan Nikhilesh	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
504ff45798SPavan Nikhilesh
514ff45798SPavan Nikhileshbuild:
524ff45798SPavan Nikhilesh	@mkdir -p $@
534ff45798SPavan Nikhilesh
544ff45798SPavan Nikhilesh.PHONY: clean
554ff45798SPavan Nikhileshclean:
564ff45798SPavan Nikhilesh	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
574ff45798SPavan Nikhilesh	test -d build && rmdir -p build || true
58