[dpdk-dev,v4,6/7] mk: Add rule for installing sdk files

Message ID 1444076406-30141-7-git-send-email-mario.alfredo.c.arevalo@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Mario Carrillo Oct. 5, 2015, 8:20 p.m. UTC
  Add hierarchy-file support to the DPDK makefiles, scripts,
examples, tools, config files and headers.

When invoking "make install-sdk" makefiles, scripts,
examples, tools, config files will be installed in:
$(DESTDIR)/$(SDK_DIR)
and headers will be installed in:
$(DESTDIR)/$(INCLUDE_DIR)

Where SDK_DIR=/usr/share/dpdk and INCLUDE_DIR=/usr/include/dpdk
by default.

You can overrite SDK_DIR and INCLUDE_DIR vars.
This hierarchy is based on:
http://www.freedesktop.org/software/systemd/man/file-hierarchy.html

Signed-off-by: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>
---
 mk/rte.sdkinstall.mk | 20 ++++++++++++++++++++
 mk/rte.sdkroot.mk    |  4 ++--
 2 files changed, 22 insertions(+), 2 deletions(-)
  

Comments

Olivier Matz Oct. 16, 2015, 7:31 p.m. UTC | #1
Hi Panu,

On 10/05/2015 10:20 PM, Mario Carrillo wrote:
> Add hierarchy-file support to the DPDK makefiles, scripts,
> examples, tools, config files and headers.
> 
> When invoking "make install-sdk" makefiles, scripts,
> examples, tools, config files will be installed in:
> $(DESTDIR)/$(SDK_DIR)
> and headers will be installed in:
> $(DESTDIR)/$(INCLUDE_DIR)
> 
> Where SDK_DIR=/usr/share/dpdk and INCLUDE_DIR=/usr/include/dpdk
> by default.
> 
> You can overrite SDK_DIR and INCLUDE_DIR vars.
> This hierarchy is based on:
> http://www.freedesktop.org/software/systemd/man/file-hierarchy.html
> 
> Signed-off-by: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>

I don't know if it's feasible, but I think it would be great here
to be able to install a SDK that is usable to build external
applications.

I mean, doing something like that:

  make install-sdk DESTDIR=/tmp/sdk
  cd /path/to/examples/helloworld
  make RTE_SDK=/tmp/sdk/usr/share/dpdk

Else, what is the purpose of installing the sdk?

Regards,
Olivier
  
Panu Matilainen Oct. 19, 2015, 2 p.m. UTC | #2
On 10/16/2015 10:31 PM, Olivier MATZ wrote:
> Hi Panu,
>
> On 10/05/2015 10:20 PM, Mario Carrillo wrote:
>> Add hierarchy-file support to the DPDK makefiles, scripts,
>> examples, tools, config files and headers.
>>
>> When invoking "make install-sdk" makefiles, scripts,
>> examples, tools, config files will be installed in:
>> $(DESTDIR)/$(SDK_DIR)
>> and headers will be installed in:
>> $(DESTDIR)/$(INCLUDE_DIR)
>>
>> Where SDK_DIR=/usr/share/dpdk and INCLUDE_DIR=/usr/include/dpdk
>> by default.
>>
>> You can overrite SDK_DIR and INCLUDE_DIR vars.
>> This hierarchy is based on:
>> http://www.freedesktop.org/software/systemd/man/file-hierarchy.html
>>
>> Signed-off-by: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>
>
> I don't know if it's feasible, but I think it would be great here
> to be able to install a SDK that is usable to build external
> applications.
>
> I mean, doing something like that:
>
>    make install-sdk DESTDIR=/tmp/sdk
>    cd /path/to/examples/helloworld
>    make RTE_SDK=/tmp/sdk/usr/share/dpdk
>
> Else, what is the purpose of installing the sdk?

Its possible (been there), it just needs some additional symlinks and 
such, at least for lib/ and include/. However at that point the contents 
become arch-dependent (due to the lib symlink) meaning it cannot go into 
/usr/share.

	- Panu -

> Regards,
> Olivier
>
  

Patch

diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
index d917329..3675c5a 100644
--- a/mk/rte.sdkinstall.mk
+++ b/mk/rte.sdkinstall.mk
@@ -45,6 +45,7 @@  ifneq (,$(wildcard $(BUILD_DIR)/build/.config))
 INCLUDE_DIR ?= /usr/include/dpdk
 BIN_DIR ?= /usr/bin
 DOC_DIR ?= /usr/share/doc/dpdk
+DATA_DIR ?= /usr/share/dpdk
 HSLINKS := $(wildcard $(RTE_OUTPUT)/include/*)
 BINARY_FILES := $(patsubst %.map,,$(wildcard $(RTE_OUTPUT)/app/*))
 NIC_FILES := $(wildcard $(BUILD_DIR)/tools/*.py)
@@ -162,6 +163,25 @@  install-doc:
 	echo installing: $$DOC; \
 	done
 #
+# install sdk files in /usr/share/dpdk by default
+# DATA_DIR can be overridden.
+#
+.PHONY: install-sdk
+install-sdk: install-headers
+	@echo ================== Installing sdk files
+	@[ -d $(DESTDIR)/$(DATA_DIR) ] || mkdir -p $(DESTDIR)/$(DATA_DIR); \
+	cp -rf $(BUILD_DIR)/mk $(DESTDIR)/$(DATA_DIR); \
+	echo installing: $(BUILD_DIR)/mk; \
+	cp -rf $(BUILD_DIR)/scripts $(DESTDIR)/$(DATA_DIR); \
+	echo installing: $(BUILD_DIR)/scripts; \
+	cp -rf $(BUILD_DIR)/examples $(DESTDIR)/$(DATA_DIR); \
+	echo installing: $(BUILD_DIR)/examples; \
+	cp -rf $(BUILD_DIR)/tools $(DESTDIR)/$(DATA_DIR); \
+	echo installing: $(BUILD_DIR)/scripts
+	@[ -d $(DESTDIR)/$(DATA_DIR)/config ] || mkdir -p $(DESTDIR)/$(DATA_DIR)/config; \
+	cp -f $(BUILD_DIR)/build/.config $(DESTDIR)/$(DATA_DIR)/config; \
+	echo installing: $(BUILD_DIR)/build/.config
+#
 # uninstall: remove all built sdk
 #
 UNINSTALL_TARGETS := $(addsuffix _uninstall,\
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 43f937e..6fac88a 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -98,9 +98,9 @@  testall:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktestall.mk $@
 
 .PHONY: install install-headers install-bin install-lib install-mod \
-install-doc uninstall
+install-doc install-sdk uninstall
 install install-headers install-bin install-lib install-mod install-doc \
-uninstall:
+install-sdk uninstall:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
 
 .PHONY: doc help