12
12
# For consistency it might be desirable for stageN to be an exact
13
13
# mirror of the installation directory structure.
14
14
15
+ # Installation macros.
16
+ # For INSTALL,
17
+ # $(1) is the source dirctory
18
+ # $(2) is the destination directory
19
+ # $(3) is the filename/libname-glob
20
+ ifdef VERBOSE
21
+ INSTALL = install -m755 $(1 ) /$(3 ) $(DESTDIR )$(2 ) /$(3 )
22
+ else
23
+ INSTALL = $(Q )$(call E, install: $(DESTDIR )$(2 ) /$(3 ) ) && install -m755 $(1 ) /$(3 ) $(DESTDIR )$(2 ) /$(3 )
24
+ endif
25
+
26
+ # For MK_INSTALL_DIR
27
+ # $(1) is the directory to create
28
+ MK_INSTALL_DIR = (umask 022 && mkdir -p $(DESTDIR )$(1 ) )
29
+
30
+ # For INSTALL_LIB,
31
+ # Target-specific $(LIB_SOURCE_DIR) is the source directory
32
+ # Target-specific $(LIB_DESTIN_DIR) is the destination directory
33
+ # $(1) is the filename/libname-glob
34
+ ifdef VERBOSE
35
+ DO_INSTALL_LIB = install -m644 ` ls -drt1 $( LIB_SOURCE_DIR) /$( 1) | tail -1 ` $(DESTDIR )$(LIB_DESTIN_DIR ) /
36
+ else
37
+ DO_INSTALL_LIB = $(Q )$(call E, install_lib: $(DESTDIR )$(LIB_DESTIN_DIR ) /$(1 ) ) && \
38
+ install -m644 ` ls -drt1 $( LIB_SOURCE_DIR) /$( 1) | tail -1 ` $(DESTDIR )$(LIB_DESTIN_DIR ) /
39
+ endif
40
+
41
+ # Target-specific $(LIB_SOURCE_DIR) is the source directory
42
+ # Target-specific $(LIB_DESTIN_DIR) is the destination directory
43
+ # $(1) is the filename/libname-glob
44
+ define INSTALL_LIB
45
+ $(if $(filter-out 1,$(words $(wildcard $(LIB_SOURCE_DIR ) /$(1 ) ) ) ) , \
46
+ $(error Aborting install because more than one library matching \
47
+ $(1 ) is present in build tree $(LIB_SOURCE_DIR ) : \
48
+ $(wildcard $(LIB_SOURCE_DIR ) /$(1 ) ) ) )
49
+ $(Q ) LIB_NAME="$(notdir $(lastword $(wildcard $(LIB_SOURCE_DIR ) /$(1 ) ) ) ) "; \
50
+ MATCHES="$(filter-out % $(notdir $(lastword $(wildcard $(LIB_SOURCE_DIR ) /$(1 ) ) ) ) ,\
51
+ $(wildcard $(LIB_DESTIN_DIR ) /$(1 ) ) ) "; \
52
+ if [ -n "$$MATCHES" ]; then \
53
+ echo "warning: one or libraries matching Rust library '$(1 ) '" && \
54
+ echo " (other than '$$LIB_NAME' itself) already present" && \
55
+ echo " at destination $(LIB_DESTIN_DIR ) :" && \
56
+ echo $$MATCHES ; \
57
+ fi
58
+ $(call DO_INSTALL_LIB,$(1 ) )
59
+ endef
60
+
15
61
# The stage we install from
16
62
ISTAGE = 2
17
63
18
- install : PREPARE_HOST=$(CFG_BUILD )
19
- install : PREPARE_TARGETS=$(CFG_TARGET )
20
- install : PREPARE_STAGE=$(ISTAGE )
21
- install : PREPARE_DIR_CMD=$(DEFAULT_PREPARE_DIR_CMD )
22
- install : PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD )
23
- install : PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD )
24
- install : PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD )
25
- install : PREPARE_SOURCE_DIR=$(PREPARE_HOST ) /stage$(PREPARE_STAGE )
26
- install : PREPARE_SOURCE_BIN_DIR=$(PREPARE_SOURCE_DIR ) /bin
27
- install : PREPARE_SOURCE_LIB_DIR=$(PREPARE_SOURCE_DIR ) /$(CFG_LIBDIR_RELATIVE )
28
- install : PREPARE_SOURCE_MAN_DIR=$(S ) /man
29
- install : PREPARE_DEST_BIN_DIR=$(DESTDIR )$(CFG_PREFIX ) /bin
30
- install : PREPARE_DEST_LIB_DIR=$(DESTDIR )$(CFG_LIBDIR )
31
- install : PREPARE_DEST_MAN_DIR=$(DESTDIR )$(CFG_MANDIR ) /man1
32
- install : prepare-everything
33
-
34
-
35
- # Uninstall code
36
-
37
64
PREFIX_ROOT = $(CFG_PREFIX )
38
65
PREFIX_BIN = $(PREFIX_ROOT ) /bin
39
66
PREFIX_LIB = $(CFG_LIBDIR )
40
67
41
- INSTALL_TOOLS := $(PREPARE_TOOLS )
68
+ INSTALL_TOOLS := $(filter-out compiletest, $(TOOLS ) )
69
+
70
+ define INSTALL_PREPARE_N
71
+ # $(1) is the target triple
72
+ # $(2) is the host triple
73
+
74
+ # T{B,L} == Target {Bin, Lib} for stage ${ISTAGE}
75
+ TB$(1 )$(2 ) = $$(TBIN$$(ISTAGE ) _T_$(1 ) _H_$(2 ) )
76
+ TL$(1 )$(2 ) = $$(TLIB$$(ISTAGE ) _T_$(1 ) _H_$(2 ) )
77
+
78
+ # PT{R,B,L} == Prefix Target {Root, Bin, Lib}
79
+ PTR$(1 )$(2 ) = $$(PREFIX_LIB ) /$(CFG_RUSTLIBDIR ) /$(1 )
80
+ PTB$(1 )$(2 ) = $$(PTR$(1 )$(2 ) ) /bin
81
+ PTL$(1 )$(2 ) = $$(PTR$(1 )$(2 ) ) /lib
82
+
83
+ endef
84
+
85
+ $(foreach target,$(CFG_TARGET), \
86
+ $(eval $(call INSTALL_PREPARE_N,$(target),$(CFG_BUILD))))
87
+
88
+ define INSTALL_TARGET_N
89
+ install-target-$(1 ) -host-$(2 ) : LIB_SOURCE_DIR=$$(TL$(1 )$(2 ) )
90
+ install-target-$(1 ) -host-$(2 ) : LIB_DESTIN_DIR=$$(PTL$(1 )$(2 ) )
91
+ install-target-$(1 ) -host-$(2 ) : \
92
+ $$(TSREQ$$(ISTAGE ) _T_$(1 ) _H_$(2 ) ) \
93
+ $$(SREQ$$(ISTAGE ) _T_$(1 ) _H_$(2 ) )
94
+ $$(Q )$$(call MK_INSTALL_DIR,$$(PTL$(1 )$(2 ) ) )
95
+ $$(Q )$$(foreach crate,$$(TARGET_CRATES ) ,\
96
+ $$(call INSTALL_LIB,$$(call CFG_LIB_GLOB_$(1 ) ,$$(crate ) ) ) ;\
97
+ $$(call INSTALL_LIB,$$(call CFG_RLIB_GLOB,$$(crate ) ) ) ;)
98
+ $$(Q )$$(call INSTALL_LIB,libmorestack.a)
99
+ $$(Q )$$(call INSTALL_LIB,libcompiler-rt.a)
100
+
101
+ endef
102
+
103
+ define INSTALL_HOST_N
104
+
105
+ install-target-$(1 ) -host-$(2 ) : LIB_SOURCE_DIR=$$(TL$(1 )$(2 ) )
106
+ install-target-$(1 ) -host-$(2 ) : LIB_DESTIN_DIR=$$(PTL$(1 )$(2 ) )
107
+ install-target-$(1 ) -host-$(2 ) : $$(CSREQ$$(ISTAGE ) _T_$(1 ) _H_$(2 ) )
108
+ $$(Q )$$(call MK_INSTALL_DIR,$$(PTL$(1 )$(2 ) ) )
109
+ $$(Q )$$(foreach crate,$$(CRATES ) ,\
110
+ $$(call INSTALL_LIB,$$(call CFG_LIB_GLOB_$(1 ) ,$$(crate ) ) ) ;)
111
+ $$(Q )$$(foreach crate,$$(TARGET_CRATES ) ,\
112
+ $$(call INSTALL_LIB,$$(call CFG_RLIB_GLOB,$$(crate ) ) ) ;)
113
+ $$(Q )$$(call INSTALL_LIB,libmorestack.a)
114
+ $$(Q )$$(call INSTALL_LIB,libcompiler-rt.a)
115
+ endef
116
+
117
+ $(foreach target,$(CFG_TARGET), \
118
+ $(if $(findstring $(target), $(CFG_BUILD)), \
119
+ $(eval $(call INSTALL_HOST_N,$(target),$(CFG_BUILD))), \
120
+ $(eval $(call INSTALL_TARGET_N,$(target),$(CFG_BUILD)))))
121
+
122
+ INSTALL_TARGET_RULES = $(foreach target,$(CFG_TARGET ) , \
123
+ install-target-$(target ) -host-$(CFG_BUILD ) )
124
+
125
+ install : all install-host install-targets
42
126
43
127
# Shorthand for build/stageN/bin
44
128
HB = $(HBIN$(ISTAGE ) _H_$(CFG_BUILD ) )
@@ -50,6 +134,39 @@ PHB = $(PREFIX_BIN)
50
134
# Shorthand for the prefix bin directory
51
135
PHL = $(PREFIX_LIB )
52
136
137
+ install-host% : LIB_SOURCE_DIR=$(HL )
138
+ install-host% : LIB_DESTIN_DIR=$(PHL )
139
+ install-host : \
140
+ install-host-prep \
141
+ $(foreach tool,$(INSTALL_TOOLS ) ,install-host-tool-$(tool ) )
142
+
143
+ install-host-prep : $(CSREQ$(ISTAGE ) _T_$(CFG_BUILD ) _H_$(CFG_BUILD ) )
144
+ $(Q )$(call MK_INSTALL_DIR,$(PREFIX_BIN ) )
145
+ $(Q )$(call MK_INSTALL_DIR,$(PREFIX_LIB ) )
146
+ $(Q )$(call MK_INSTALL_DIR,$(CFG_MANDIR ) /man1)
147
+
148
+ define INSTALL_HOST_TOOL
149
+ install-host-tool-$(1 ) : \
150
+ $$(foreach dep,$$(TOOL_DEPS_$(1 ) ) ,install-host-lib-$$(dep ) ) \
151
+ $$(CSREQ$$(ISTAGE ) _T_$$(CFG_BUILD ) _H_$$(CFG_BUILD ) )
152
+ $$(Q )$$(call INSTALL,$$(HB2 ) ,$$(PHB ) ,$(1 )$$(X_$$(CFG_BUILD ) ) )
153
+ $$(Q )$$(call INSTALL,$$(S ) /man,$$(CFG_MANDIR ) /man1,$(1 ) .1)
154
+ endef
155
+
156
+ $(foreach tool,$(INSTALL_TOOLS),$(eval $(call INSTALL_HOST_TOOL,$(tool))))
157
+
158
+ define INSTALL_HOST_LIB
159
+ install-host-lib-$(1 ) : \
160
+ $$(foreach dep,$$(RUST_DEPS_$(1 ) ) ,install-host-lib-$$(dep ) ) \
161
+ $$(CSREQ$$(ISTAGE ) _T_$$(CFG_BUILD ) _H_$$(CFG_BUILD ) )
162
+ $$(Q )$$(call INSTALL_LIB,$$(call CFG_LIB_GLOB_$$(CFG_BUILD ) ,$(1 ) ) )
163
+ endef
164
+
165
+ $(foreach lib,$(CRATES),$(eval $(call INSTALL_HOST_LIB,$(lib))))
166
+
167
+ install-targets : $(INSTALL_TARGET_RULES )
168
+
169
+
53
170
HOST_LIB_FROM_HL_GLOB = \
54
171
$(patsubst $(HL ) /% ,$(PHL ) /% ,$(wildcard $(HL ) /$(1 ) ) )
55
172
@@ -71,10 +188,6 @@ endef
71
188
72
189
$(foreach lib,$(CRATES),$(eval $(call UNINSTALL_LIB,$(lib))))
73
190
74
-
75
- # Android runtime setup
76
- # FIXME: This probably belongs somewhere else
77
-
78
191
# target platform specific variables
79
192
# for arm-linux-androidabi
80
193
define DEF_ADB_DEVICE_STATUS
0 commit comments