forked from Mirrors/opensbi

The default install directory is not being removed correctly by
distclean make target due to recent changes. This patch fixes
distclean make target to fix default install directory removal.
Fixes: 82ae8e8fe2
("makefile: Do setup of the install target
more flexible")
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
464 lines
16 KiB
Makefile
464 lines
16 KiB
Makefile
#
|
|
# SPDX-License-Identifier: BSD-2-Clause
|
|
#
|
|
# Copyright (c) 2019 Western Digital Corporation or its affiliates.
|
|
#
|
|
# Authors:
|
|
# Anup Patel <anup.patel@wdc.com>
|
|
#
|
|
|
|
# Select Make Options:
|
|
# o Do not use make's built-in rules
|
|
# o Do not print "Entering directory ...";
|
|
MAKEFLAGS += -r --no-print-directory
|
|
|
|
# Readlink -f requires GNU readlink
|
|
ifeq ($(shell uname -s),Darwin)
|
|
READLINK ?= greadlink
|
|
else
|
|
READLINK ?= readlink
|
|
endif
|
|
|
|
# Find out source, build, and install directories
|
|
src_dir=$(CURDIR)
|
|
ifdef O
|
|
build_dir=$(shell $(READLINK) -f $(O))
|
|
else
|
|
build_dir=$(CURDIR)/build
|
|
endif
|
|
ifeq ($(build_dir),$(CURDIR))
|
|
$(error Build directory is same as source directory.)
|
|
endif
|
|
install_root_dir_default=$(CURDIR)/install
|
|
ifdef I
|
|
install_root_dir=$(shell $(READLINK) -f $(I))
|
|
else
|
|
install_root_dir=$(install_root_dir_default)/usr
|
|
endif
|
|
ifeq ($(install_root_dir),$(CURDIR))
|
|
$(error Install root directory is same as source directory.)
|
|
endif
|
|
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))
|
|
ifdef PLATFORM
|
|
platform_parent_dir=$(platform_dir_path)
|
|
else
|
|
PLATFORM=$(shell basename $(platform_dir_path))
|
|
platform_parent_dir=$(subst $(PLATFORM),,$(platform_dir_path))
|
|
endif
|
|
else
|
|
platform_parent_dir=$(src_dir)/platform
|
|
endif
|
|
|
|
# Check if verbosity is ON for build process
|
|
CMD_PREFIX_DEFAULT := @
|
|
ifeq ($(V), 1)
|
|
CMD_PREFIX :=
|
|
else
|
|
CMD_PREFIX := $(CMD_PREFIX_DEFAULT)
|
|
endif
|
|
|
|
# Setup path of directories
|
|
export platform_subdir=$(PLATFORM)
|
|
export platform_src_dir=$(platform_parent_dir)/$(platform_subdir)
|
|
export platform_build_dir=$(build_dir)/platform/$(platform_subdir)
|
|
export include_dir=$(CURDIR)/include
|
|
export libsbi_dir=$(CURDIR)/lib/sbi
|
|
export libsbiutils_dir=$(CURDIR)/lib/utils
|
|
export firmware_dir=$(CURDIR)/firmware
|
|
|
|
# Find library version
|
|
OPENSBI_VERSION_MAJOR=`grep "define OPENSBI_VERSION_MAJOR" $(include_dir)/sbi/sbi_version.h | sed 's/.*MAJOR.*\([0-9][0-9]*\)/\1/'`
|
|
OPENSBI_VERSION_MINOR=`grep "define OPENSBI_VERSION_MINOR" $(include_dir)/sbi/sbi_version.h | sed 's/.*MINOR.*\([0-9][0-9]*\)/\1/'`
|
|
OPENSBI_VERSION_GIT=$(shell if [ -d $(src_dir)/.git ]; then git describe 2> /dev/null; fi)
|
|
|
|
# Setup compilation commands
|
|
ifdef CROSS_COMPILE
|
|
CC = $(CROSS_COMPILE)gcc
|
|
CPP = $(CROSS_COMPILE)cpp
|
|
AR = $(CROSS_COMPILE)ar
|
|
LD = $(CROSS_COMPILE)ld
|
|
OBJCOPY = $(CROSS_COMPILE)objcopy
|
|
else
|
|
CC ?= gcc
|
|
CPP ?= cpp
|
|
AR ?= ar
|
|
LD ?= ld
|
|
OBJCOPY ?= objcopy
|
|
endif
|
|
AS = $(CC)
|
|
DTC = dtc
|
|
|
|
# Guess the compillers xlen
|
|
OPENSBI_CC_XLEN := $(shell TMP=`$(CC) -dumpmachine | sed 's/riscv\([0-9][0-9]\).*/\1/'`; echo $${TMP})
|
|
|
|
# Setup platform XLEN
|
|
ifndef PLATFORM_RISCV_XLEN
|
|
ifeq ($(OPENSBI_CC_XLEN), 32)
|
|
PLATFORM_RISCV_XLEN = 32
|
|
else
|
|
PLATFORM_RISCV_XLEN = 64
|
|
endif
|
|
endif
|
|
|
|
# Setup list of objects.mk files
|
|
ifdef PLATFORM
|
|
platform-object-mks=$(shell if [ -d $(platform_src_dir)/ ]; then find $(platform_src_dir) -iname "objects.mk" | sort -r; fi)
|
|
endif
|
|
libsbi-object-mks=$(shell if [ -d $(libsbi_dir) ]; then find $(libsbi_dir) -iname "objects.mk" | sort -r; fi)
|
|
libsbiutils-object-mks=$(shell if [ -d $(libsbiutils_dir) ]; then find $(libsbiutils_dir) -iname "objects.mk" | sort -r; fi)
|
|
firmware-object-mks=$(shell if [ -d $(firmware_dir) ]; then find $(firmware_dir) -iname "objects.mk" | sort -r; fi)
|
|
|
|
# Include platform specifig config.mk
|
|
ifdef PLATFORM
|
|
include $(platform_src_dir)/config.mk
|
|
endif
|
|
|
|
# Include all object.mk files
|
|
ifdef PLATFORM
|
|
include $(platform-object-mks)
|
|
endif
|
|
include $(libsbi-object-mks)
|
|
include $(libsbiutils-object-mks)
|
|
include $(firmware-object-mks)
|
|
|
|
# Setup list of objects
|
|
libsbi-objs-path-y=$(foreach obj,$(libsbi-objs-y),$(build_dir)/lib/sbi/$(obj))
|
|
libsbiutils-objs-path-y=$(foreach obj,$(libsbiutils-objs-y),$(build_dir)/lib/utils/$(obj))
|
|
ifdef PLATFORM
|
|
platform-objs-path-y=$(foreach obj,$(platform-objs-y),$(platform_build_dir)/$(obj))
|
|
platform-dtb-path-y=$(foreach obj,$(platform-dtb-y),$(platform_build_dir)/$(obj))
|
|
firmware-bins-path-y=$(foreach bin,$(firmware-bins-y),$(platform_build_dir)/firmware/$(bin))
|
|
endif
|
|
firmware-elfs-path-y=$(firmware-bins-path-y:.bin=.elf)
|
|
firmware-objs-path-y=$(firmware-bins-path-y:.bin=.o)
|
|
|
|
# Setup list of deps files for objects
|
|
deps-y=$(platform-objs-path-y:.o=.dep)
|
|
deps-y+=$(libsbi-objs-path-y:.o=.dep)
|
|
deps-y+=$(libsbiutils-objs-path-y:.o=.dep)
|
|
deps-y+=$(firmware-objs-path-y:.o=.dep)
|
|
|
|
# Setup platform ABI, ISA and Code Model
|
|
ifndef PLATFORM_RISCV_ABI
|
|
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
|
PLATFORM_RISCV_ABI = ilp$(PLATFORM_RISCV_XLEN)
|
|
else
|
|
PLATFORM_RISCV_ABI = lp$(PLATFORM_RISCV_XLEN)
|
|
endif
|
|
endif
|
|
ifndef PLATFORM_RISCV_ISA
|
|
PLATFORM_RISCV_ISA = rv$(PLATFORM_RISCV_XLEN)imafdc
|
|
endif
|
|
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)
|
|
ifneq ($(OPENSBI_VERSION_GIT),)
|
|
GENFLAGS += -DOPENSBI_VERSION_GIT="\"$(OPENSBI_VERSION_GIT)\""
|
|
endif
|
|
GENFLAGS += $(libsbiutils-genflags-y)
|
|
GENFLAGS += $(platform-genflags-y)
|
|
GENFLAGS += $(firmware-genflags-y)
|
|
|
|
CFLAGS = -g -Wall -Werror -ffreestanding -nostdlib -fno-strict-aliasing -O2
|
|
CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
|
CFLAGS += -mno-save-restore -mstrict-align
|
|
CFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
|
|
CFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
|
|
CFLAGS += $(GENFLAGS)
|
|
CFLAGS += $(platform-cflags-y)
|
|
CFLAGS += $(firmware-cflags-y)
|
|
CFLAGS += -fno-pie -no-pie
|
|
|
|
CPPFLAGS += $(GENFLAGS)
|
|
CPPFLAGS += $(platform-cppflags-y)
|
|
CPPFLAGS += $(firmware-cppflags-y)
|
|
|
|
ASFLAGS = -g -Wall -nostdlib -D__ASSEMBLY__
|
|
ASFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
|
ASFLAGS += -mno-save-restore -mstrict-align
|
|
ASFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
|
|
ASFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
|
|
ASFLAGS += $(GENFLAGS)
|
|
ASFLAGS += $(platform-asflags-y)
|
|
ASFLAGS += $(firmware-asflags-y)
|
|
|
|
ARFLAGS = rcs
|
|
|
|
ELFFLAGS += -Wl,--build-id=none -N -static-libgcc -lgcc
|
|
ELFFLAGS += $(platform-ldflags-y)
|
|
ELFFLAGS += $(firmware-ldflags-y)
|
|
|
|
MERGEFLAGS += -r
|
|
MERGEFLAGS += -b elf$(PLATFORM_RISCV_XLEN)-littleriscv
|
|
MERGEFLAGS += -m elf$(PLATFORM_RISCV_XLEN)lriscv
|
|
|
|
DTCFLAGS = -O dtb
|
|
|
|
# Setup functions for compilation
|
|
define dynamic_flags
|
|
-I$(shell dirname $(2)) -D__OBJNAME__=$(subst -,_,$(shell basename $(1) .o))
|
|
endef
|
|
merge_objs = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " MERGE $(subst $(build_dir)/,,$(1))"; \
|
|
$(LD) $(MERGEFLAGS) $(2) -o $(1)
|
|
merge_deps = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " MERGE-DEP $(subst $(build_dir)/,,$(1))"; \
|
|
cat $(2) > $(1)
|
|
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_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)/$(subst $(install_firmware_path),platform,$(3))@@'`; \
|
|
dest_file=$(1)"/"$(3)"/"`echo $$rel_file`; \
|
|
dest_dir=`dirname $$dest_file`; \
|
|
echo " INSTALL "$(3)"/"`echo $$rel_file`; \
|
|
mkdir -p $$dest_dir; \
|
|
cp -f $$file $$dest_file; \
|
|
done \
|
|
fi
|
|
inst_header_dir = $(CMD_PREFIX)mkdir -p $(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))"; \
|
|
$(CPP) $(CPPFLAGS) -x c $(2) | grep -v "\#" > $(1)
|
|
compile_cc_dep = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " CC-DEP $(subst $(build_dir)/,,$(1))"; \
|
|
printf %s `dirname $(1)`/ > $(1) && \
|
|
$(CC) $(CFLAGS) $(call dynamic_flags,$(1),$(2)) \
|
|
-MM $(2) >> $(1) || rm -f $(1)
|
|
compile_cc = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " CC $(subst $(build_dir)/,,$(1))"; \
|
|
$(CC) $(CFLAGS) $(call dynamic_flags,$(1),$(2)) -c $(2) -o $(1)
|
|
compile_as_dep = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " AS-DEP $(subst $(build_dir)/,,$(1))"; \
|
|
printf %s `dirname $(1)`/ > $(1) && \
|
|
$(AS) $(ASFLAGS) $(call dynamic_flags,$(1),$(2)) \
|
|
-MM $(2) >> $(1) || rm -f $(1)
|
|
compile_as = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " AS $(subst $(build_dir)/,,$(1))"; \
|
|
$(AS) $(ASFLAGS) $(call dynamic_flags,$(1),$(2)) -c $(2) -o $(1)
|
|
compile_elf = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " ELF $(subst $(build_dir)/,,$(1))"; \
|
|
$(CC) $(CFLAGS) $(3) $(ELFFLAGS) -Wl,-T$(2) -o $(1)
|
|
compile_ar = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " AR $(subst $(build_dir)/,,$(1))"; \
|
|
$(AR) $(ARFLAGS) $(1) $(2)
|
|
compile_objcopy = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " OBJCOPY $(subst $(build_dir)/,,$(1))"; \
|
|
$(OBJCOPY) -S -O binary $(2) $(1)
|
|
compile_dts = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
|
|
echo " DTC $(subst $(build_dir)/,,$(1))"; \
|
|
$(DTC) $(DTCFLAGS) -o $(1) $(2)
|
|
|
|
targets-y = $(build_dir)/lib/libsbi.a
|
|
targets-y += $(build_dir)/lib/libsbiutils.a
|
|
ifdef PLATFORM
|
|
targets-y += $(platform_build_dir)/lib/libplatsbi.a
|
|
targets-y += $(platform-dtb-path-y)
|
|
endif
|
|
targets-y += $(firmware-bins-path-y)
|
|
|
|
# Default rule "make" should always be first rule
|
|
.PHONY: all
|
|
all: $(targets-y)
|
|
|
|
# Preserve all intermediate files
|
|
.SECONDARY:
|
|
|
|
$(build_dir)/%.bin: $(build_dir)/%.elf
|
|
$(call compile_objcopy,$@,$<)
|
|
|
|
$(build_dir)/%.elf: $(build_dir)/%.o $(build_dir)/%.elf.ld $(platform_build_dir)/lib/libplatsbi.a
|
|
$(call compile_elf,$@,$@.ld,$< $(platform_build_dir)/lib/libplatsbi.a)
|
|
|
|
$(platform_build_dir)/%.ld: $(src_dir)/%.ldS
|
|
$(call compile_cpp,$@,$<)
|
|
|
|
$(build_dir)/lib/libsbi.a: $(libsbi-objs-path-y)
|
|
$(call compile_ar,$@,$^)
|
|
|
|
$(build_dir)/lib/libsbiutils.a: $(libsbi-objs-path-y) $(libsbiutils-objs-path-y)
|
|
$(call compile_ar,$@,$^)
|
|
|
|
$(platform_build_dir)/lib/libplatsbi.a: $(libsbi-objs-path-y) $(libsbiutils-objs-path-y) $(platform-objs-path-y)
|
|
$(call compile_ar,$@,$^)
|
|
|
|
$(build_dir)/%.dep: $(src_dir)/%.c
|
|
$(call compile_cc_dep,$@,$<)
|
|
|
|
$(build_dir)/%.o: $(src_dir)/%.c
|
|
$(call compile_cc,$@,$<)
|
|
|
|
$(build_dir)/%.dep: $(src_dir)/%.S
|
|
$(call compile_as_dep,$@,$<)
|
|
|
|
$(build_dir)/%.o: $(src_dir)/%.S
|
|
$(call compile_as,$@,$<)
|
|
|
|
$(platform_build_dir)/%.dep: $(platform_src_dir)/%.c
|
|
$(call compile_cc_dep,$@,$<)
|
|
|
|
$(platform_build_dir)/%.o: $(platform_src_dir)/%.c
|
|
$(call compile_cc,$@,$<)
|
|
|
|
$(platform_build_dir)/%.dep: $(platform_src_dir)/%.S
|
|
$(call compile_as_dep,$@,$<)
|
|
|
|
$(platform_build_dir)/%.o: $(platform_src_dir)/%.S
|
|
$(call compile_as,$@,$<)
|
|
|
|
$(platform_build_dir)/%.dep: $(src_dir)/%.c
|
|
$(call compile_cc_dep,$@,$<)
|
|
|
|
$(platform_build_dir)/%.o: $(src_dir)/%.c
|
|
$(call compile_cc,$@,$<)
|
|
|
|
$(platform_build_dir)/%.dep: $(src_dir)/%.S
|
|
$(call compile_as_dep,$@,$<)
|
|
|
|
$(platform_build_dir)/%.o: $(src_dir)/%.S
|
|
$(call compile_as,$@,$<)
|
|
|
|
$(build_dir)/%.dtb: $(src_dir)/%.dts
|
|
$(call compile_dts,$@,$<)
|
|
|
|
# Rule for "make docs"
|
|
$(build_dir)/docs/latex/refman.pdf: $(build_dir)/docs/latex/refman.tex
|
|
$(CMD_PREFIX)mkdir -p $(build_dir)/docs
|
|
$(CMD_PREFIX)$(MAKE) -C $(build_dir)/docs/latex
|
|
$(build_dir)/docs/latex/refman.tex: $(build_dir)/docs/doxygen.cfg
|
|
$(CMD_PREFIX)mkdir -p $(build_dir)/docs
|
|
$(CMD_PREFIX)doxygen $(build_dir)/docs/doxygen.cfg
|
|
$(build_dir)/docs/doxygen.cfg: $(src_dir)/docs/doxygen.cfg
|
|
$(CMD_PREFIX)mkdir -p $(build_dir)/docs
|
|
$(CMD_PREFIX)cat docs/doxygen.cfg | sed -e "s#@@SRC_DIR@@#$(src_dir)#" -e "s#@@BUILD_DIR@@#$(build_dir)#" -e "s#@@OPENSBI_MAJOR@@#$(OPENSBI_VERSION_MAJOR)#" -e "s#@@OPENSBI_MINOR@@#$(OPENSBI_VERSION_MINOR)#" > $(build_dir)/docs/doxygen.cfg
|
|
.PHONY: docs
|
|
docs: $(build_dir)/docs/latex/refman.pdf
|
|
|
|
# Dependency files should only be included after default Makefile rules
|
|
# They should not be included for any "xxxconfig" or "xxxclean" rule
|
|
all-deps-1 = $(if $(findstring config,$(MAKECMDGOALS)),,$(deps-y))
|
|
all-deps-2 = $(if $(findstring clean,$(MAKECMDGOALS)),,$(all-deps-1))
|
|
-include $(all-deps-2)
|
|
|
|
# Include external dependency of firmwares after default Makefile rules
|
|
include $(src_dir)/firmware/external_deps.mk
|
|
|
|
# Convenient "make run" command for emulated platforms
|
|
.PHONY: run
|
|
run: all
|
|
ifneq ($(platform-runcmd),)
|
|
$(platform-runcmd) $(RUN_ARGS)
|
|
else
|
|
ifdef PLATFORM
|
|
@echo "Platform $(PLATFORM) doesn't specify a run command"
|
|
@false
|
|
else
|
|
@echo Run command only available when targeting a platform
|
|
@false
|
|
endif
|
|
endif
|
|
|
|
install_targets-y = install_libsbi
|
|
install_targets-y += install_libsbiutils
|
|
ifdef PLATFORM
|
|
install_targets-y += install_libplatsbi
|
|
install_targets-y += install_firmwares
|
|
endif
|
|
|
|
# Rule for "make install"
|
|
.PHONY: install
|
|
install: $(install_targets-y)
|
|
|
|
.PHONY: install_libsbi
|
|
install_libsbi: $(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_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_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_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_root_dir)/$(install_docs_path)/refman.pdf,$(build_dir)/docs/latex/refman.pdf)
|
|
|
|
# Rule for "make clean"
|
|
.PHONY: clean
|
|
clean:
|
|
$(CMD_PREFIX)mkdir -p $(build_dir)
|
|
$(if $(V), @echo " RM $(build_dir)/*.o")
|
|
$(CMD_PREFIX)find $(build_dir) -type f -name "*.o" -exec rm -rf {} +
|
|
$(if $(V), @echo " RM $(build_dir)/*.a")
|
|
$(CMD_PREFIX)find $(build_dir) -type f -name "*.a" -exec rm -rf {} +
|
|
$(if $(V), @echo " RM $(build_dir)/*.elf")
|
|
$(CMD_PREFIX)find $(build_dir) -type f -name "*.elf" -exec rm -rf {} +
|
|
$(if $(V), @echo " RM $(build_dir)/*.bin")
|
|
$(CMD_PREFIX)find $(build_dir) -type f -name "*.bin" -exec rm -rf {} +
|
|
|
|
# Rule for "make distclean"
|
|
.PHONY: distclean
|
|
distclean: clean
|
|
$(CMD_PREFIX)mkdir -p $(build_dir)
|
|
$(if $(V), @echo " RM $(build_dir)/*.dep")
|
|
$(CMD_PREFIX)find $(build_dir) -type f -name "*.dep" -exec rm -rf {} +
|
|
ifeq ($(build_dir),$(CURDIR)/build)
|
|
$(if $(V), @echo " RM $(build_dir)")
|
|
$(CMD_PREFIX)rm -rf $(build_dir)
|
|
endif
|
|
ifeq ($(install_root_dir),$(install_root_dir_default)/usr)
|
|
$(if $(V), @echo " RM $(install_root_dir_default)")
|
|
$(CMD_PREFIX)rm -rf $(install_root_dir_default)
|
|
endif
|