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