diff options
author | Nikita Ermakov <coffe92@gmail.com> | 2020-03-08 01:31:02 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2020-03-08 10:05:45 +0530 |
commit | 82ae8e8fe2a3234a4cec90ec880ec5509cbaa79f (patch) | |
tree | d583abaccc4548428f052597210ed81b7539df67 /Makefile | |
parent | 6704216732e528ac99109b8bad401e60c68d6c22 (diff) |
makefile: Do setup of the install target more flexible
- Add possibility to setup include, libs, firmware and docs paths.
- Change the default installation paths for include, libs, firmware
and docs to meet FHS [1].
[1] https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
Signed-off-by: Nikita Ermakov <coffe92@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 67 |
1 files changed, 47 insertions, 20 deletions
@@ -30,15 +30,15 @@ ifeq ($(build_dir),$(CURDIR)) $(error Build directory is same as source directory.) endif ifdef I - install_dir=$(shell $(READLINK) -f $(I)) + install_root_dir=$(shell $(READLINK) -f $(I)) else - install_dir=$(CURDIR)/install + install_root_dir=$(CURDIR)/install/usr endif -ifeq ($(install_dir),$(CURDIR)) -$(error Install directory is same as source directory.) +ifeq ($(install_root_dir),$(CURDIR)) +$(error Install root directory is same as source directory.) endif -ifeq ($(install_dir),$(build_dir)) -$(error Install directory is same as build directory.) +ifeq ($(install_root_dir),$(build_dir)) +$(error Install root directory is same as build directory.) endif ifdef PLATFORM_DIR platform_dir_path=$(shell $(READLINK) -f $(PLATFORM_DIR)) @@ -156,6 +156,33 @@ ifndef PLATFORM_RISCV_CODE_MODEL PLATFORM_RISCV_CODE_MODEL = medany endif +# Setup install directories +ifdef INSTALL_INCLUDE_PATH + install_include_path=$(INSTALL_INCLUDE_PATH) +else + install_include_path=include +endif +ifdef INSTALL_LIB_PATH + install_lib_path=$(INSTALL_LIB_PATH) +else + ifneq ($(origin INSTALL_LIB_SUBDIR), undefined) + install_lib_subdir=$(INSTALL_LIB_SUBDIR) + else + install_lib_subdir=$(PLATFORM_RISCV_ABI) + endif + install_lib_path=lib$(subst 32,,$(PLATFORM_RISCV_XLEN))/$(install_lib_subdir) +endif +ifdef INSTALL_FIRMWARE_PATH + install_firmware_path=$(INSTALL_FIRMWARE_PATH) +else + install_firmware_path=share/opensbi/$(PLATFORM_RISCV_ABI) +endif +ifdef INSTALL_DOCS_PATH + install_docs_path=$(INSTALL_DOCS_PATH) +else + install_docs_path=share/opensbi/docs +endif + # Setup compilation commands flags GENFLAGS = -I$(platform_src_dir)/include GENFLAGS += -I$(include_dir) @@ -215,12 +242,12 @@ copy_file = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \ echo " COPY $(subst $(build_dir)/,,$(1))"; \ cp -f $(2) $(1) inst_file = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \ - echo " INSTALL $(subst $(install_dir)/,,$(1))"; \ + echo " INSTALL $(subst $(install_root_dir)/,,$(1))"; \ cp -f $(2) $(1) inst_file_list = $(CMD_PREFIX)if [ ! -z "$(4)" ]; then \ mkdir -p $(1)/$(3); \ for file in $(4) ; do \ - rel_file=`echo $$file | sed -e 's@$(2)/$(3)/@@'`; \ + rel_file=`echo $$file | sed -e 's@$(2)/$(subst $(install_firmware_path),platform,$(3))@@'`; \ dest_file=$(1)"/"$(3)"/"`echo $$rel_file`; \ dest_dir=`dirname $$dest_file`; \ echo " INSTALL "$(3)"/"`echo $$rel_file`; \ @@ -229,7 +256,7 @@ inst_file_list = $(CMD_PREFIX)if [ ! -z "$(4)" ]; then \ done \ fi inst_header_dir = $(CMD_PREFIX)mkdir -p $(1); \ - echo " INSTALL $(subst $(install_dir)/,,$(1))"; \ + echo " INSTALL $(subst $(install_root_dir)/,,$(1))"; \ cp -rf $(2) $(1) compile_cpp = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \ echo " CPP $(subst $(build_dir)/,,$(1))"; \ @@ -385,26 +412,26 @@ install: $(install_targets-y) .PHONY: install_libsbi install_libsbi: $(build_dir)/lib/libsbi.a - $(call inst_header_dir,$(install_dir)/include,$(include_dir)/sbi) - $(call inst_file,$(install_dir)/lib/libsbi.a,$(build_dir)/lib/libsbi.a) + $(call inst_header_dir,$(install_root_dir)/$(install_include_path),$(include_dir)/sbi) + $(call inst_file,$(install_root_dir)/$(install_lib_path)/libsbi.a,$(build_dir)/lib/libsbi.a) .PHONY: install_libsbiutils install_libsbiutils: $(build_dir)/lib/libsbiutils.a - $(call inst_header_dir,$(install_dir)/include,$(include_dir)/sbi_utils) - $(call inst_file,$(install_dir)/lib/libsbiutils.a,$(build_dir)/lib/libsbiutils.a) + $(call inst_header_dir,$(install_root_dir)/$(install_include_path),$(include_dir)/sbi_utils) + $(call inst_file,$(install_root_dir)/$(install_lib_path)/libsbiutils.a,$(build_dir)/lib/libsbiutils.a) .PHONY: install_libplatsbi install_libplatsbi: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(build_dir)/lib/libsbiutils.a - $(call inst_file,$(install_dir)/platform/$(platform_subdir)/lib/libplatsbi.a,$(platform_build_dir)/lib/libplatsbi.a) + $(call inst_file,$(install_root_dir)/$(install_lib_path)/opensbi/$(platform_subdir)/lib/libplatsbi.a,$(platform_build_dir)/lib/libplatsbi.a) .PHONY: install_firmwares install_firmwares: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(build_dir)/lib/libsbiutils.a $(firmware-bins-path-y) - $(call inst_file_list,$(install_dir),$(build_dir),platform/$(platform_subdir)/firmware,$(firmware-elfs-path-y)) - $(call inst_file_list,$(install_dir),$(build_dir),platform/$(platform_subdir)/firmware,$(firmware-bins-path-y)) + $(call inst_file_list,$(install_root_dir),$(build_dir),$(install_firmware_path)/$(platform_subdir)/firmware,$(firmware-elfs-path-y)) + $(call inst_file_list,$(install_root_dir),$(build_dir),$(install_firmware_path)/$(platform_subdir)/firmware,$(firmware-bins-path-y)) .PHONY: install_docs install_docs: $(build_dir)/docs/latex/refman.pdf - $(call inst_file,$(install_dir)/docs/refman.pdf,$(build_dir)/docs/latex/refman.pdf) + $(call inst_file,$(install_root_dir)/$(install_docs_path)/refman.pdf,$(build_dir)/docs/latex/refman.pdf) # Rule for "make clean" .PHONY: clean @@ -429,7 +456,7 @@ ifeq ($(build_dir),$(CURDIR)/build) $(if $(V), @echo " RM $(build_dir)") $(CMD_PREFIX)rm -rf $(build_dir) endif -ifeq ($(install_dir),$(CURDIR)/install) - $(if $(V), @echo " RM $(install_dir)") - $(CMD_PREFIX)rm -rf $(install_dir) +ifeq ($(install_root_dir),$(CURDIR)/install) + $(if $(V), @echo " RM $(install_root_dir)") + $(CMD_PREFIX)rm -rf $(install_root_dir) endif |