| # | |
| # Install klibc | |
| # | |
| # File is logically seperated in two pieces. | |
| # First piece is used when during a recursive descend of the klibc tree | |
| # and second piece is used to do the final steps in the install | |
| # If KLIBC_INSTALL is defined it tells us we are descending and we | |
| # use first piece of the file. | |
| # This indicates the location of the final version of the shared library. | |
| # THIS MUST BE AN ABSOLUTE PATH WITH NO FINAL SLASH. | |
| # Leave this empty to make it the root. | |
| # | |
| SHLIBDIR = /lib | |
| # First rule | |
| .PHONY: __install install-rule | |
| __install: | |
| # Install commands | |
| install-data := install -m 644 | |
| install-lib := install -m 755 | |
| install-bin := install -m 755 | |
| # Install command | |
| quiet_cmd_install = INSTALL $(install-y) | |
| cmd_install = $(install-bin) $(install-y) \ | |
| $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)bin | |
| ifeq ($(KLIBC_INSTALL),1) | |
| # First part - we are descending.. | |
| # Reset variables (to get right type of assingment) | |
| subdir- := | |
| # Include Kbuild file | |
| include $(srctree)/scripts/Kbuild.include | |
| include $(srctree)/$(obj)/Kbuild | |
| # Directories to visit | |
| # First find directories specified in lib-?, static-y and shared-y | |
| find-dir = $(patsubst %/,%,$(filter %/, $(1))) | |
| __subdir := $(call find-dir, $(lib-)) | |
| __subdir += $(call find-dir, $(lib-y)) | |
| __subdir += $(foreach e, $(static-y), $(call find-dir, $(e))) | |
| __subdir += $(foreach e, $(shared-y), $(call find-dir, $(e))) | |
| # Use subdir- in Kbuild file to tell kbuild to visit a specific dir | |
| subdir- += $(__subdir) | |
| # Remove duplicates and add prefix | |
| subdir- := $(addprefix $(obj)/,$(sort $(subdir-))) | |
| # Files to install | |
| install-y := $(strip $(addprefix $(obj)/, $(install-y))) | |
| __install: $(subdir-) install-rule | |
| ifneq ($(install-y),) | |
| $(call cmd,install) | |
| else | |
| @: | |
| endif | |
| # Descending | |
| .PHONY: $(subdir-) | |
| $(subdir-): | |
| $(Q)$(MAKE) KLIBC_INSTALL=1 \ | |
| -f $(srctree)/scripts/Kbuild.install obj=$@ | |
| # If quiet is set, only print short version of command | |
| cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) | |
| else | |
| ########################################################################## | |
| # This is the first time this file is invoked, so kick off the | |
| # install process. | |
| # First we descend all sub-directories to let them do their install. | |
| # Second we do the final install steps. | |
| # Do actual install as a three steps approach | |
| # 1) Create directories, install headers and man pages | |
| # 2) Tell that we now install binaries | |
| # 3) Install binaries by descending | |
| .PHONY: header footer descend | |
| header: | |
| $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)" | |
| $(Q)mkdir -p $(INSTALLROOT)$(bindir) | |
| $(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1 | |
| $(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR) | |
| $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR) | |
| $(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include | |
| $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include | |
| $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib | |
| $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin | |
| $(Q)$(MAKE) -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install | |
| $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/. | |
| $(Q)chmod -R a+rX $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include | |
| $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1 | |
| $(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir) | |
| footer: header | |
| $(Q)echo " INSTALL binaries to $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)bin" | |
| descend: footer | |
| $(Q)$(MAKE) KLIBC_INSTALL=1 \ | |
| -f $(srctree)/scripts/Kbuild.install obj=$(obj) | |
| __install: descend | |
| @: | |
| endif |