Contents of /tags/mkinitrd-6_1_0/klibc/scripts/Kbuild.install
Parent Directory | Revision Log
Revision 820 -
(show annotations)
(download)
Fri Apr 24 19:09:57 2009 UTC (15 years, 5 months ago) by niro
File size: 3944 byte(s)
Fri Apr 24 19:09:57 2009 UTC (15 years, 5 months ago) by niro
File size: 3944 byte(s)
tagged 'mkinitrd-6_1_0'
1 | # |
2 | # Install klibc |
3 | # |
4 | # File is logically seperated in two pieces. |
5 | # First piece is used when during a recursive descend of the klibc tree |
6 | # and second piece is used to do the final steps in the install |
7 | # If KLIBC_INSTALL is defined it tells us we are descending and we |
8 | # use first piece of the file. |
9 | |
10 | # This indicates the location of the final version of the shared library. |
11 | # THIS MUST BE AN ABSOLUTE PATH WITH NO FINAL SLASH. |
12 | # Leave this empty to make it the root. |
13 | # |
14 | SHLIBDIR = /lib |
15 | |
16 | # First rule |
17 | .PHONY: __install install-rule |
18 | __install: |
19 | |
20 | # Install commands |
21 | install-data := install -m 644 |
22 | install-lib := install -m 755 |
23 | install-bin := install -m 755 |
24 | |
25 | # Install command |
26 | quiet_cmd_install = INSTALL $(install-y) |
27 | cmd_install = $(install-bin) $(install-y) \ |
28 | $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)bin |
29 | |
30 | ifeq ($(KLIBC_INSTALL),1) |
31 | # First part - we are descending.. |
32 | |
33 | # Reset variables (to get right type of assingment) |
34 | subdir- := |
35 | |
36 | # Include Kbuild file |
37 | include $(srctree)/scripts/Kbuild.include |
38 | include $(srctree)/$(obj)/Kbuild |
39 | |
40 | # Directories to visit |
41 | # First find directories specified in lib-?, static-y and shared-y |
42 | find-dir = $(patsubst %/,%,$(filter %/, $(1))) |
43 | |
44 | __subdir := $(call find-dir, $(lib-)) |
45 | __subdir += $(call find-dir, $(lib-y)) |
46 | |
47 | __subdir += $(foreach e, $(static-y), $(call find-dir, $(e))) |
48 | __subdir += $(foreach e, $(shared-y), $(call find-dir, $(e))) |
49 | |
50 | # Use subdir- in Kbuild file to tell kbuild to visit a specific dir |
51 | subdir- += $(__subdir) |
52 | |
53 | # Remove duplicates and add prefix |
54 | subdir- := $(addprefix $(obj)/,$(sort $(subdir-))) |
55 | |
56 | # Files to install |
57 | install-y := $(strip $(addprefix $(obj)/, $(install-y))) |
58 | |
59 | __install: $(subdir-) install-rule |
60 | ifneq ($(install-y),) |
61 | $(call cmd,install) |
62 | else |
63 | @: |
64 | endif |
65 | |
66 | # Descending |
67 | .PHONY: $(subdir-) |
68 | $(subdir-): |
69 | $(Q)$(MAKE) KLIBC_INSTALL=1 \ |
70 | -f $(srctree)/scripts/Kbuild.install obj=$@ |
71 | |
72 | # If quiet is set, only print short version of command |
73 | cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) |
74 | |
75 | |
76 | else |
77 | ########################################################################## |
78 | # This is the first time this file is invoked, so kick off the |
79 | # install process. |
80 | # First we descend all sub-directories to let them do their install. |
81 | # Second we do the final install steps. |
82 | |
83 | # Do actual install as a three steps approach |
84 | # 1) Create directories, install headers and man pages |
85 | # 2) Tell that we now install binaries |
86 | # 3) Install binaries by descending |
87 | .PHONY: header footer descend |
88 | header: |
89 | $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)" |
90 | $(Q)mkdir -p $(INSTALLROOT)$(bindir) |
91 | $(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1 |
92 | $(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR) |
93 | $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR) |
94 | $(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include |
95 | $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include |
96 | $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib |
97 | $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin |
98 | $(Q)set -e ; for d in linux asm asm-$(KLIBCARCH) asm-generic $(ASMKLIBCARCH); do \ |
99 | for r in $(KLIBCKERNELSRC)/include $(KLIBCKERNELOBJ)/include \ |
100 | $(KLIBCKERNELOBJ)/include2 ; do \ |
101 | [ ! -d $$r/$$d ] && continue; \ |
102 | mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)include/$$d ; \ |
103 | cp -rfL $$r/$$d/. \ |
104 | $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \ |
105 | done ; \ |
106 | done |
107 | $(Q)cd $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include && ln -sf asm-$(KLIBCARCH) asm |
108 | $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/. |
109 | $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1 |
110 | $(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir) |
111 | |
112 | footer: header |
113 | $(Q)echo " INSTALL binaries to $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)bin" |
114 | |
115 | descend: footer |
116 | $(Q)$(MAKE) KLIBC_INSTALL=1 \ |
117 | -f $(srctree)/scripts/Kbuild.install obj=$(obj) |
118 | |
119 | __install: descend |
120 | @: |
121 | endif |