Skip to content

Commit 9477c49

Browse files
committed
auto merge of #10965 : alexcrichton/rust/libgreen, r=brson
This pull request extracts all scheduling functionality from libstd, moving it into its own separate crates. The new libnative and libgreen will be the new way in which 1:1 and M:N scheduling is implemented. The standard library still requires an interface to the runtime, however, (think of things like `std::comm` and `io::println`). The interface is now defined by the `Runtime` trait inside of `std::rt`. The booting process is now that libgreen defines the start lang-item and that's it. I want to extend this soon to have libnative also have a "start lang item" but also allow libgreen and libnative to be linked together in the same process. For now though, only libgreen can be used to start a program (unless you define the start lang item yourself). Again though, I want to change this soon, I just figured that this pull request is large enough as-is. This certainly wasn't a smooth transition, certain functionality has no equivalent in this new separation, and some functionality is now better enabled through this new system. I did my best to separate all of the commits by topic and keep things fairly bite-sized, although are indeed larger than others. As a note, this is currently rebased on top of my `std::comm` rewrite (or at least an old copy of it), but none of those commits need reviewing (that will all happen in another pull request).
2 parents d975060 + 6cad8f4 commit 9477c49

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+5810
-6352
lines changed

Makefile.in

+48-2
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,8 @@ CFG_LIBSYNTAX_$(1) :=$(call CFG_LIB_NAME_$(1),syntax)
235235
CFG_LIBRUSTPKG_$(1) :=$(call CFG_LIB_NAME_$(1),rustpkg)
236236
CFG_LIBRUSTDOC_$(1) :=$(call CFG_LIB_NAME_$(1),rustdoc)
237237
CFG_LIBRUSTUV_$(1) :=$(call CFG_LIB_NAME_$(1),rustuv)
238+
CFG_LIBGREEN_$(1) :=$(call CFG_LIB_NAME_$(1),green)
239+
CFG_LIBNATIVE_$(1) :=$(call CFG_LIB_NAME_$(1),native)
238240

239241
EXTRALIB_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),extra)
240242
STDLIB_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),std)
@@ -243,19 +245,25 @@ LIBSYNTAX_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),syntax)
243245
LIBRUSTPKG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustpkg)
244246
LIBRUSTDOC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc)
245247
LIBRUSTUV_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustuv)
248+
LIBGREEN_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),green)
249+
LIBNATIVE_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),native)
246250
EXTRALIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),extra)
247251
STDLIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),std)
248252
LIBRUSTC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustc)
249253
LIBSYNTAX_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),syntax)
250254
LIBRUSTPKG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustpkg)
251255
LIBRUSTDOC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc)
252256
LIBRUSTUV_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustuv)
257+
LIBGREEN_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),green)
258+
LIBNATIVE_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),native)
253259

254260
EXTRALIB_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,extra)
255261
STDLIB_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,std)
256262
LIBRUSTUV_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,rustuv)
257263
LIBSYNTAX_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,syntax)
258264
LIBRUSTC_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,rustc)
265+
LIBNATIVE_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,native)
266+
LIBGREEN_RGLOB_$(1) :=$(call CFG_RLIB_GLOB,green)
259267

260268
endef
261269

@@ -272,9 +280,15 @@ define CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT
272280
endef
273281

274282
# Same interface as above, but deletes rather than just listing the files.
283+
ifdef VERBOSE
275284
define REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT
276285
$(Q)MATCHES="$(filter-out %$(3),$(wildcard $(1)/$(2)))"; if [ -n "$$MATCHES" ] ; then echo "warning: removing previous" \'$(2)\' "libraries:" $$MATCHES; rm $$MATCHES ; fi
277286
endef
287+
else
288+
define REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT
289+
$(Q)MATCHES="$(filter-out %$(3),$(wildcard $(1)/$(2)))"; if [ -n "$$MATCHES" ] ; then rm $$MATCHES ; fi
290+
endef
291+
endif
278292

279293
# We use a different strategy for LIST_ALL_OLD_GLOB_MATCHES_EXCEPT
280294
# than in the macros above because it needs the result of running the
@@ -319,6 +333,22 @@ LIBRUSTUV_CRATE := $(S)src/librustuv/lib.rs
319333
LIBRUSTUV_INPUTS := $(wildcard $(addprefix $(S)src/librustuv/, \
320334
*.rs */*.rs))
321335

336+
######################################################################
337+
# Green threading library variables
338+
######################################################################
339+
340+
LIBGREEN_CRATE := $(S)src/libgreen/lib.rs
341+
LIBGREEN_INPUTS := $(wildcard $(addprefix $(S)src/libgreen/, \
342+
*.rs */*.rs))
343+
344+
######################################################################
345+
# Native threading library variables
346+
######################################################################
347+
348+
LIBNATIVE_CRATE := $(S)src/libnative/lib.rs
349+
LIBNATIVE_INPUTS := $(wildcard $(addprefix $(S)src/libnative/, \
350+
*.rs */*.rs))
351+
322352
######################################################################
323353
# rustc crate variables
324354
######################################################################
@@ -430,6 +460,16 @@ HLIBRUSTUV_DEFAULT$(1)_H_$(3) = \
430460
TLIBRUSTUV_DEFAULT$(1)_T_$(2)_H_$(3) = \
431461
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2))
432462

463+
HLIBGREEN_DEFAULT$(1)_H_$(3) = \
464+
$$(HLIB$(1)_H_$(3))/$(CFG_LIBGREEN_$(3))
465+
TLIBGREEN_DEFAULT$(1)_T_$(2)_H_$(3) = \
466+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBGREEN_$(2))
467+
468+
HLIBNATIVE_DEFAULT$(1)_H_$(3) = \
469+
$$(HLIB$(1)_H_$(3))/$(CFG_LIBNATIVE_$(3))
470+
TLIBNATIVE_DEFAULT$(1)_T_$(2)_H_$(3) = \
471+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBNATIVE_$(2))
472+
433473
# Preqrequisites for using the stageN compiler
434474
ifeq ($(1),0)
435475
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
@@ -441,6 +481,8 @@ HSREQ$(1)_H_$(3) = \
441481
$$(HLIBSYNTAX_DEFAULT$(1)_H_$(3)) \
442482
$$(HLIBRUSTC_DEFAULT$(1)_H_$(3)) \
443483
$$(HLIBRUSTUV_DEFAULT$(1)_H_$(3)) \
484+
$$(HLIBGREEN_DEFAULT$(1)_H_$(3)) \
485+
$$(HLIBNATIVE_DEFAULT$(1)_H_$(3)) \
444486
$$(MKFILE_DEPS)
445487
endif
446488

@@ -455,7 +497,9 @@ SREQ$(1)_T_$(2)_H_$(3) = \
455497
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
456498
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \
457499
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2)) \
458-
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2))
500+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2)) \
501+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBGREEN_$(2)) \
502+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBNATIVE_$(2))
459503

460504
# Prerequisites for a working stageN compiler and libraries, for a specific target
461505
CSREQ$(1)_T_$(2)_H_$(3) = \
@@ -470,7 +514,9 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
470514
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) \
471515
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) \
472516
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) \
473-
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2))
517+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2)) \
518+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBGREEN_$(2)) \
519+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBNATIVE_$(2))
474520

475521
ifeq ($(1),0)
476522
# Don't run the the stage0 compiler under valgrind - that ship has sailed

mk/clean.mk

+12
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ clean$(1)_H_$(2):
9090
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB_$(2))
9191
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_EXTRALIB_$(2))
9292
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTUV_$(2))
93+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBNATIVE_$(2))
94+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBGREEN_$(2))
9395
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTC_$(2))
9496
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBSYNTAX_$(2))
9597
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_GLOB_$(2))
@@ -98,6 +100,10 @@ clean$(1)_H_$(2):
98100
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(EXTRALIB_RGLOB_$(2))
99101
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTUV_GLOB_$(2))
100102
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTUV_RGLOB_$(2))
103+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBNATIVE_GLOB_$(2))
104+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBNATIVE_RGLOB_$(2))
105+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBGREEN_GLOB_$(2))
106+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBGREEN_RGLOB_$(2))
101107
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTC_GLOB_$(2))
102108
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB_$(2))
103109
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB_$(2))
@@ -124,6 +130,8 @@ clean$(1)_T_$(2)_H_$(3):
124130
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2))
125131
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2))
126132
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2))
133+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBGREEN_$(2))
134+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBNATIVE_$(2))
127135
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2))
128136
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(2))
129137
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_GLOB_$(2))
@@ -132,6 +140,10 @@ clean$(1)_T_$(2)_H_$(3):
132140
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(EXTRALIB_RGLOB_$(2))
133141
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTUV_GLOB_$(2))
134142
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTUV_RGLOB_$(2))
143+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBNATIVE_GLOB_$(2))
144+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBNATIVE_RGLOB_$(2))
145+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBGREEN_GLOB_$(2))
146+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBGREEN_RGLOB_$(2))
135147
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_GLOB_$(2))
136148
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_RGLOB_$(2))
137149
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB_$(2))

mk/dist.mk

+3
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ PKG_FILES := \
3535
libextra \
3636
libstd \
3737
libsyntax \
38+
librustuv \
39+
libgreen \
40+
libnative \
3841
rt \
3942
librustdoc \
4043
rustllvm \

mk/host.mk

+33-15
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,14 @@ define CP_HOST_STAGE_N
2525

2626
$$(HBIN$(2)_H_$(4))/rustc$$(X_$(4)): \
2727
$$(TBIN$(1)_T_$(4)_H_$(3))/rustc$$(X_$(4)) \
28-
$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
2928
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \
30-
$$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
31-
$$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
32-
$$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
33-
$$(HLIBRUSTC_DEFAULT$(2)_H_$(4)) \
34-
$$(HLIBSYNTAX_DEFAULT$(2)_H_$(4)) \
3529
| $$(HBIN$(2)_H_$(4))/
3630
@$$(call E, cp: $$@)
3731
$$(Q)cp $$< $$@
3832

3933
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)): \
4034
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
4135
$$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)) \
42-
$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
43-
$$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
44-
$$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
45-
$$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
4636
| $$(HLIB$(2)_H_$(4))/
4737

4838
@$$(call E, cp: $$@)
@@ -55,10 +45,11 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)): \
5545

5646
$$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)): \
5747
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(4)) \
58-
$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
5948
$$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
6049
$$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
6150
$$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
51+
$$(HLIBGREEN_DEFAULT$(2)_H_$(4)) \
52+
$$(HLIBNATIVE_DEFAULT$(2)_H_$(4)) \
6253
| $$(HLIB$(2)_H_$(4))/
6354
@$$(call E, cp: $$@)
6455
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBSYNTAX_GLOB_$(4)),$$(notdir $$@))
@@ -76,7 +67,6 @@ $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)): \
7667

7768
$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \
7869
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \
79-
$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
8070
| $$(HLIB$(2)_H_$(4))/
8171
@$$(call E, cp: $$@)
8272
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
@@ -98,8 +88,7 @@ $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \
9888

9989
$$(HLIB$(2)_H_$(4))/$(CFG_EXTRALIB_$(4)): \
10090
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \
101-
$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
102-
$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
91+
$$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
10392
| $$(HLIB$(2)_H_$(4))/
10493
@$$(call E, cp: $$@)
10594
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
@@ -115,7 +104,6 @@ $$(HLIB$(2)_H_$(4))/$(CFG_EXTRALIB_$(4)): \
115104
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTUV_$(4)): \
116105
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTUV_$(4)) \
117106
$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
118-
$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
119107
| $$(HLIB$(2)_H_$(4))/
120108
@$$(call E, cp: $$@)
121109
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
@@ -128,6 +116,36 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTUV_$(4)): \
128116
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
129117
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_RGLOB_$(4)),$$(notdir $$@))
130118

119+
$$(HLIB$(2)_H_$(4))/$(CFG_LIBGREEN_$(4)): \
120+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBGREEN_$(4)) \
121+
$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
122+
| $$(HLIB$(2)_H_$(4))/
123+
@$$(call E, cp: $$@)
124+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_GLOB_$(4)),$$(notdir $$@))
125+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_RGLOB_$(4)),$$(notdir $$@))
126+
$$(Q)cp $$< $$@
127+
$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBGREEN_GLOB_$(4)) \
128+
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBGREEN_RGLOB_$(4))) \
129+
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBGREEN_DSYM_GLOB_$(4))) \
130+
$$(HLIB$(2)_H_$(4))
131+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_GLOB_$(4)),$$(notdir $$@))
132+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_RGLOB_$(4)),$$(notdir $$@))
133+
134+
$$(HLIB$(2)_H_$(4))/$(CFG_LIBNATIVE_$(4)): \
135+
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBNATIVE_$(4)) \
136+
$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
137+
| $$(HLIB$(2)_H_$(4))/
138+
@$$(call E, cp: $$@)
139+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_GLOB_$(4)),$$(notdir $$@))
140+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_RGLOB_$(4)),$$(notdir $$@))
141+
$$(Q)cp $$< $$@
142+
$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBNATIVE_GLOB_$(4)) \
143+
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBNATIVE_RGLOB_$(4))) \
144+
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBNATIVE_DSYM_GLOB_$(4))) \
145+
$$(HLIB$(2)_H_$(4))
146+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_GLOB_$(4)),$$(notdir $$@))
147+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_RGLOB_$(4)),$$(notdir $$@))
148+
131149
$$(HBIN$(2)_H_$(4))/:
132150
mkdir -p $$@
133151

mk/install.mk

+15
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ install-target-$(1)-host-$(2): $$(TSREQ$$(ISTAGE)_T_$(1)_H_$(2)) $$(SREQ$$(ISTAG
9494
$$(Q)$$(call INSTALL_LIB,$$(EXTRALIB_RGLOB_$(1)))
9595
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTUV_GLOB_$(1)))
9696
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTUV_RGLOB_$(1)))
97+
$$(Q)$$(call INSTALL_LIB,$$(LIBGREEN_GLOB_$(1)))
98+
$$(Q)$$(call INSTALL_LIB,$$(LIBGREEN_RGLOB_$(1)))
99+
$$(Q)$$(call INSTALL_LIB,$$(LIBNATIVE_GLOB_$(1)))
100+
$$(Q)$$(call INSTALL_LIB,$$(LIBNATIVE_RGLOB_$(1)))
97101
$$(Q)$$(call INSTALL_LIB,libmorestack.a)
98102

99103
endef
@@ -109,6 +113,10 @@ install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2))
109113
$$(Q)$$(call INSTALL_LIB,$$(EXTRALIB_RGLOB_$(1)))
110114
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTUV_GLOB_$(1)))
111115
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTUV_RGLOB_$(1)))
116+
$$(Q)$$(call INSTALL_LIB,$$(LIBGREEN_GLOB_$(1)))
117+
$$(Q)$$(call INSTALL_LIB,$$(LIBGREEN_RGLOB_$(1)))
118+
$$(Q)$$(call INSTALL_LIB,$$(LIBNATIVE_GLOB_$(1)))
119+
$$(Q)$$(call INSTALL_LIB,$$(LIBNATIVE_RGLOB_$(1)))
112120
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTC_GLOB_$(1)))
113121
$$(Q)$$(call INSTALL_LIB,$$(LIBSYNTAX_GLOB_$(1)))
114122
$$(Q)$$(call INSTALL_LIB,$$(LIBRUSTPKG_GLOB_$(1)))
@@ -149,6 +157,7 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_)_H_$(CFG_BUILD_))
149157
$(Q)$(call INSTALL_LIB,$(STDLIB_GLOB_$(CFG_BUILD)))
150158
$(Q)$(call INSTALL_LIB,$(EXTRALIB_GLOB_$(CFG_BUILD)))
151159
$(Q)$(call INSTALL_LIB,$(LIBRUSTUV_GLOB_$(CFG_BUILD)))
160+
$(Q)$(call INSTALL_LIB,$(LIBGREEN_GLOB_$(CFG_BUILD)))
152161
$(Q)$(call INSTALL_LIB,$(LIBRUSTC_GLOB_$(CFG_BUILD)))
153162
$(Q)$(call INSTALL_LIB,$(LIBSYNTAX_GLOB_$(CFG_BUILD)))
154163
$(Q)$(call INSTALL_LIB,$(LIBRUSTPKG_GLOB_$(CFG_BUILD)))
@@ -174,6 +183,10 @@ uninstall:
174183
$(call HOST_LIB_FROM_HL_GLOB,$(EXTRALIB_RGLOB_$(CFG_BUILD))) \
175184
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTUV_GLOB_$(CFG_BUILD))) \
176185
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTUV_RGLOB_$(CFG_BUILD))) \
186+
$(call HOST_LIB_FROM_HL_GLOB,$(LIBGREEN_GLOB_$(CFG_BUILD))) \
187+
$(call HOST_LIB_FROM_HL_GLOB,$(LIBGREEN_RGLOB_$(CFG_BUILD))) \
188+
$(call HOST_LIB_FROM_HL_GLOB,$(LIBNATIVE_GLOB_$(CFG_BUILD))) \
189+
$(call HOST_LIB_FROM_HL_GLOB,$(LIBNATIVE_RGLOB_$(CFG_BUILD))) \
177190
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTC_GLOB_$(CFG_BUILD))) \
178191
$(call HOST_LIB_FROM_HL_GLOB,$(LIBSYNTAX_GLOB_$(CFG_BUILD))) \
179192
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTPKG_GLOB_$(CFG_BUILD))) \
@@ -237,6 +250,7 @@ install-runtime-target-$(1)-host-$(2): $$(TSREQ$$(ISTAGE)_T_$(1)_H_$(2)) $$(SREQ
237250
$(Q)$(call ADB_PUSH,$$(TL$(1)$(2))/$$(STDLIB_GLOB_$(1)),$(CFG_RUNTIME_PUSH_DIR))
238251
$(Q)$(call ADB_PUSH,$$(TL$(1)$(2))/$$(EXTRALIB_GLOB_$(1)),$(CFG_RUNTIME_PUSH_DIR))
239252
$(Q)$(call ADB_PUSH,$$(TL$(1)$(2))/$$(LIBRUSTUV_GLOB_$(1)),$(CFG_RUNTIME_PUSH_DIR))
253+
$(Q)$(call ADB_PUSH,$$(TL$(1)$(2))/$$(LIBGREEN_GLOB_$(1)),$(CFG_RUNTIME_PUSH_DIR))
240254
endef
241255

242256
define INSTALL_RUNTIME_TARGET_CLEANUP_N
@@ -245,6 +259,7 @@ install-runtime-target-$(1)-cleanup:
245259
$(Q)$(call ADB_SHELL,rm,$(CFG_RUNTIME_PUSH_DIR)/$(STDLIB_GLOB_$(1)))
246260
$(Q)$(call ADB_SHELL,rm,$(CFG_RUNTIME_PUSH_DIR)/$(EXTRALIB_GLOB_$(1)))
247261
$(Q)$(call ADB_SHELL,rm,$(CFG_RUNTIME_PUSH_DIR)/$(LIBRUSTUV_GLOB_$(1)))
262+
$(Q)$(call ADB_SHELL,rm,$(CFG_RUNTIME_PUSH_DIR)/$(LIBGREEN_GLOB_$(1)))
248263
endef
249264

250265
$(eval $(call INSTALL_RUNTIME_TARGET_N,arm-linux-androideabi,$(CFG_BUILD)))

mk/target.mk

+28-6
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,37 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2)): \
9494
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(2)),$$(notdir $$@))
9595
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_RGLOB_$(2)),$$(notdir $$@))
9696

97+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBGREEN_$(2)): \
98+
$$(LIBGREEN_CRATE) $$(LIBGREEN_INPUTS) \
99+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \
100+
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
101+
| $$(TLIB$(1)_T_$(2)_H_$(3))/
102+
@$$(call E, compile_and_link: $$@)
103+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_GLOB_$(2)),$$(notdir $$@))
104+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_RGLOB_$(2)),$$(notdir $$@))
105+
$$(STAGE$(1)_T_$(2)_H_$(3)) $$(WFLAGS_ST$(1)) \
106+
--out-dir $$(@D) $$< && touch $$@
107+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_GLOB_$(2)),$$(notdir $$@))
108+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_RGLOB_$(2)),$$(notdir $$@))
109+
110+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBNATIVE_$(2)): \
111+
$$(LIBNATIVE_CRATE) $$(LIBNATIVE_INPUTS) \
112+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \
113+
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
114+
| $$(TLIB$(1)_T_$(2)_H_$(3))/
115+
@$$(call E, compile_and_link: $$@)
116+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_GLOB_$(2)),$$(notdir $$@))
117+
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_RGLOB_$(2)),$$(notdir $$@))
118+
$$(STAGE$(1)_T_$(2)_H_$(3)) $$(WFLAGS_ST$(1)) \
119+
--out-dir $$(@D) $$< && touch $$@
120+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_GLOB_$(2)),$$(notdir $$@))
121+
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_RGLOB_$(2)),$$(notdir $$@))
122+
97123
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)): \
98124
$$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \
99125
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
100126
$$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) \
101127
$$(TEXTRALIB_DEFAULT$(1)_T_$(2)_H_$(3)) \
102-
$$(TLIBRUSTUV_DEFAULT$(1)_T_$(2)_H_$(3)) \
103128
| $$(TLIB$(1)_T_$(2)_H_$(3))/
104129
@$$(call E, compile_and_link: $$@)
105130
$$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBSYNTAX_GLOB_$(2)),$$(notdir $$@))
@@ -135,16 +160,13 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)): \
135160
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(2)),$$(notdir $$@))
136161
$$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_RGLOB_$(2)),$$(notdir $$@))
137162

138-
# NOTE: after the next snapshot remove these '-L' flags
139163
$$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X_$(3)): \
140164
$$(DRIVER_CRATE) \
141-
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
165+
$$(SREQ$(1)_T_$(2)_H_$(3)) \
142166
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) \
143167
| $$(TBIN$(1)_T_$(2)_H_$(3))/
144168
@$$(call E, compile_and_link: $$@)
145-
$$(STAGE$(1)_T_$(2)_H_$(3)) --cfg rustc -o $$@ $$< \
146-
-L $$(UV_SUPPORT_DIR_$(2)) \
147-
-L $$(dir $$(LIBUV_LIB_$(2)))
169+
$$(STAGE$(1)_T_$(2)_H_$(3)) --cfg rustc -o $$@ $$<
148170
ifdef CFG_ENABLE_PAX_FLAGS
149171
@$$(call E, apply PaX flags: $$@)
150172
@"$(CFG_PAXCTL)" -cm "$$@"

0 commit comments

Comments
 (0)