From mboxrd@z Thu Jan 1 00:00:00 1970 From: Panu Matilainen Subject: Re: [PATCH] mk: fix underlinking issues of most librte libraries Date: Tue, 24 May 2016 12:56:59 +0300 Message-ID: <78bbf74c-9621-9094-a280-76ed9fc88393@redhat.com> References: <1463763022-6673-1-git-send-email-christian.ehrhardt@canonical.com> <7920424.umDpp4ukym@xps13> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: Thomas Monjalon , Christian Ehrhardt Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id E69F35953 for ; Tue, 24 May 2016 11:57:01 +0200 (CEST) In-Reply-To: <7920424.umDpp4ukym@xps13> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 05/20/2016 08:08 PM, Thomas Monjalon wrote: > 2016-05-20 18:50, Christian Ehrhardt: >> The individual libraries have various cross dependencies. >> This is already refelcted in the DEPDIR dependency, but not yet in >> proper DT_NEEDED flags in the .so's. >> This adds the -l flags so that is properly stored in the .so's ELF >> headers. > > Why not filling LDLIBS by parsing DEPDIRS-y in rte.lib.mk? > A fair question :) The thought has passed my mind too, but I thought it'd be too messy with differing library vs directory names and other exceptions. But in reality manually maintained separate LDLIBS is only going to get out of sync sooner or later, and turns out its not that bad anyway: diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk index b420280..88b4e98 100644 --- a/mk/rte.lib.mk +++ b/mk/rte.lib.mk @@ -77,6 +77,12 @@ else _CPU_LDFLAGS := $(CPU_LDFLAGS) endif +# Translate DEPDIRS-y into LDLIBS +IGNORE_DEPS = -lrte_eal/% -lrte_net -lrte_compat +_LDDIRS = $(subst librte_ether,libethdev,$(DEPDIRS-y)) +_LDDEPS = $(subst lib/lib,-l,$(_LDDIRS)) +LDLIBS += $(filter-out $(IGNORE_DEPS), $(_LDDEPS)) + O_TO_A = $(AR) crDs $(LIB) $(OBJS-y) O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)"," AR $(@)") I'm also sure somebody more familiar with gmake could improve it, but it seems to work quite fine here. I'll wait a bit to see if there are other suggestions before sending it as a proper patch. - Panu -