From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 797C3A04AA;
	Tue,  8 Sep 2020 00:08:07 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 343ED1C120;
	Tue,  8 Sep 2020 00:07:31 +0200 (CEST)
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com
 [66.111.4.25]) by dpdk.org (Postfix) with ESMTP id F30A61C10B
 for <dev@dpdk.org>; Tue,  8 Sep 2020 00:07:25 +0200 (CEST)
Received: from compute7.internal (compute7.nyi.internal [10.202.2.47])
 by mailout.nyi.internal (Postfix) with ESMTP id A4B405C0098;
 Mon,  7 Sep 2020 18:07:25 -0400 (EDT)
Received: from mailfrontend1 ([10.202.2.162])
 by compute7.internal (MEProxy); Mon, 07 Sep 2020 18:07:25 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h=
 from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding; s=fm2; bh=ABgn/ldkvIJWa
 swMNvOqsv69BO3dVZJ60xwnAURaRfg=; b=bXTBEQrLYd9GfxMPDmKmUntyAXykI
 ThUbx0MhAVClfU/86BuigRHKc+v+ag/8m/GGUyRqI34IFnJ8gyUEfwk4M14ih7Ca
 0kFD4H46SPxaqM+6Zw6pPu2T0RzxcCXCCadDjW+pQlLkuVuh9tgcdv9AFwryzY1u
 UdTHl4+krXxxHPtShzCSjS+nqpKbxHHpz/jSH7R1kjb6BXtPwvEHu/BULg3g0ZiH
 cVOaUT9lOOVO0XEU0RsL0Zq49hdgzeqBYeAijZa069nSZxOzB4hoveAsQYaRNeR3
 o3YFyi8UcE6VyC5nCyB8cIzYx5T3CAoSeOmVE0jvjH4a62vn2SL1QmsuA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:content-transfer-encoding:date:from
 :in-reply-to:message-id:mime-version:references:subject:to
 :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
 fm3; bh=ABgn/ldkvIJWaswMNvOqsv69BO3dVZJ60xwnAURaRfg=; b=T268b80O
 nnKrwUPI/Mwhk2T7IG6tWHtmz8mCNgPegxxohDu5j2VKQb4+DssA73x7maBUi2nC
 pjnNBK+lKHNMAJRx7MQo4z7tksszzOKLhZIk92apNJF0Wf8w/KmRYu4y4eD+i7Yn
 eQapzwuw4E40YI5c0du3+vIZBgG2UHkgJMXSVdjrzaBJHh1lsdSiF8hbrHbOOZwy
 xSmgt7vQ7DPS/PTlARqUzBe+KoaTvGyQNx3n1W2HJxUQ3UnHdSWeUnx+RxWuWpDB
 1WIaQhomNrFQzEB1kB8HSRzFGcYT349Af/MTDBqIfoNN+EFq6qN+UAto96bdYQNJ
 ym4nD7mukQeOXQ==
X-ME-Sender: <xms:Ha9WX3d2wqzPKbdFDnYxzrwUaNbAJcGDFOwr5xf_GL4QRWno2kf9Wg>
 <xme:Ha9WX9N25fR8LNZs6RW3JoGCR9EXOIXN0CUdsnXwCi9dGNhJzdhTnAwdZQ58rXIwv
 XOGDgNvpUOBuV6MiA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudehuddgtdefucetufdoteggodetrfdotf
 fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
 uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
 cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefvhhhomhgr
 shcuofhonhhjrghlohhnuceothhhohhmrghssehmohhnjhgrlhhonhdrnhgvtheqnecugg
 ftrfgrthhtvghrnhepueefgefgtedvkefgvdeuteduheevvdekffeufffghffhueektddt
 jefftedvgfeinecuffhomhgrihhnpehvrghrshdrmhhkpdgvgihtshhusgguihhrrdhmkh
 dpvgigthgrphhprdhmkhenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhs
 thgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmoh
 hnjhgrlhhonhdrnhgvth
X-ME-Proxy: <xmx:Ha9WXwiCWepJ_Rrc2O-_rbkbdX5IIhG8HkVdVn97GgLEnRhANCzy0w>
 <xmx:Ha9WX4_5MkcRuyvTW_HnNz_sUZQop9V_gRLImmNmiAvhbZq7TyPXog>
 <xmx:Ha9WXzuAAmvEq-dc4Nb_ETtMrTafldJXGf5lDcfbQ-75ibXBv4_VDg>
 <xmx:Ha9WX845SUMZsHBHKJU0nZXHFV1dlINQMSKibau5rPvVb_s-bSusOw>
Received: from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184])
 by mail.messagingengine.com (Postfix) with ESMTPA id C5B523280060;
 Mon,  7 Sep 2020 18:07:24 -0400 (EDT)
From: Thomas Monjalon <thomas@monjalon.net>
To: dev@dpdk.org
Cc: david.marchand@redhat.com, bruce.richardson@intel.com,
 ciara.power@intel.com, Kevin Laatz <kevin.laatz@intel.com>
Date: Tue,  8 Sep 2020 00:06:44 +0200
Message-Id: <20200907220711.437405-5-thomas@monjalon.net>
X-Mailer: git-send-email 2.28.0
In-Reply-To: <20200907220711.437405-1-thomas@monjalon.net>
References: <20200903152717.42095-1-ciara.power@intel.com>
 <20200907220711.437405-1-thomas@monjalon.net>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH v4 04/31] examples/server_node_efd: convert to
	pkg-config-based build
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

From: Kevin Laatz <kevin.laatz@intel.com>

Remove references to the old make build system and use pkg-config for
building these examples.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 examples/server_node_efd/Makefile        | 18 +++-----
 examples/server_node_efd/node/Makefile   | 46 ++++++++++++++------
 examples/server_node_efd/server/Makefile | 53 +++++++++++++++---------
 3 files changed, 73 insertions(+), 44 deletions(-)

diff --git a/examples/server_node_efd/Makefile b/examples/server_node_efd/Makefile
index cc2ea8b566..e4a4a94a79 100644
--- a/examples/server_node_efd/Makefile
+++ b/examples/server_node_efd/Makefile
@@ -1,16 +1,10 @@
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2016-2017 Intel Corporation
+# Copyright(c) 2016-2020 Intel Corporation
 
-ifeq ($(RTE_SDK),)
-$(error "Please define RTE_SDK environment variable")
-endif
+subdirs := node server
 
-# Default target, detect a build directory, by looking for a path with a .config
-RTE_TARGET ?= $(notdir $(abspath $(dir $(firstword $(wildcard $(RTE_SDK)/*/.config)))))
+.PHONY: all static shared clean $(subdirs)
+all static shared clean: $(subdirs)
 
-include $(RTE_SDK)/mk/rte.vars.mk
-
-DIRS-$(CONFIG_RTE_EXEC_ENV_LINUX) += server
-DIRS-$(CONFIG_RTE_EXEC_ENV_LINUX) += node
-
-include $(RTE_SDK)/mk/rte.extsubdir.mk
+$(subdirs):
+	$(MAKE) -C $@ $(MAKECMDGOALS)
diff --git a/examples/server_node_efd/node/Makefile b/examples/server_node_efd/node/Makefile
index ecc551e1d6..a4efef42dc 100644
--- a/examples/server_node_efd/node/Makefile
+++ b/examples/server_node_efd/node/Makefile
@@ -1,12 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2016-2017 Intel Corporation
-
-ifeq ($(RTE_SDK),)
-$(error "Please define RTE_SDK environment variable")
-endif
-
-# Default target, can be overridden by command line or environment
-include $(RTE_SDK)/mk/rte.vars.mk
+# Copyright(c) 2016-2020 Intel Corporation
 
 # binary name
 APP = node
@@ -14,8 +7,37 @@ APP = node
 # all source are stored in SRCS-y
 SRCS-y := node.c
 
-CFLAGS += $(WERROR_FLAGS) -O3
-CFLAGS += -I$(SRCDIR)/../shared
-CFLAGS += -DALLOW_EXPERIMENTAL_API
+CFLAGS += -I../shared
 
-include $(RTE_SDK)/mk/rte.extapp.mk
+# Build using pkg-config variables if possible
+ifneq ($(shell pkg-config --exists libdpdk && echo 0),0)
+$(error "no installation of DPDK found")
+endif
+
+all: shared
+.PHONY: shared static
+shared: build/$(APP)-shared
+	ln -sf $(APP)-shared build/$(APP)
+static: build/$(APP)-static
+	ln -sf $(APP)-static build/$(APP)
+
+PKGCONF ?= pkg-config
+
+PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
+CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
+LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
+LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
+
+build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
+	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
+
+build/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
+	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
+
+build:
+	@mkdir -p $@
+
+.PHONY: clean
+clean:
+	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
+	test -d build && rmdir -p build || true
diff --git a/examples/server_node_efd/server/Makefile b/examples/server_node_efd/server/Makefile
index acbd12ae23..106e1abd74 100644
--- a/examples/server_node_efd/server/Makefile
+++ b/examples/server_node_efd/server/Makefile
@@ -1,19 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2016-2017 Intel Corporation
-
-ifeq ($(RTE_SDK),)
-$(error "Please define RTE_SDK environment variable")
-endif
-
-# Default target, detect a build directory, by looking for a path with a .config
-RTE_TARGET ?= $(notdir $(abspath $(dir $(firstword $(wildcard $(RTE_SDK)/*/.config)))))
-
-include $(RTE_SDK)/mk/rte.vars.mk
-
-ifneq ($(CONFIG_RTE_EXEC_ENV_LINUX),y)
-$(error This application can only operate in a linux environment, \
-please change the definition of the RTE_TARGET environment variable)
-endif
+# Copyright(c) 2016-2020 Intel Corporation
 
 # binary name
 APP = server
@@ -21,10 +7,37 @@ APP = server
 # all source are stored in SRCS-y
 SRCS-y := main.c init.c args.c
 
-INC := $(sort $(wildcard *.h))
+CFLAGS += -I../shared
 
-CFLAGS += $(WERROR_FLAGS) -O3
-CFLAGS += -I$(SRCDIR)/../shared
-CFLAGS += -DALLOW_EXPERIMENTAL_API
+# Build using pkg-config variables if possible
+ifneq ($(shell pkg-config --exists libdpdk && echo 0),0)
+$(error "no installation of DPDK found")
+endif
 
-include $(RTE_SDK)/mk/rte.extapp.mk
+all: shared
+.PHONY: shared static
+shared: build/$(APP)-shared
+	ln -sf $(APP)-shared build/$(APP)
+static: build/$(APP)-static
+	ln -sf $(APP)-static build/$(APP)
+
+PKGCONF ?= pkg-config
+
+PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
+CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
+LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
+LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
+
+build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
+	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
+
+build/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
+	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
+
+build:
+	@mkdir -p $@
+
+.PHONY: clean
+clean:
+	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
+	test -d build && rmdir -p build || true
-- 
2.28.0