Skip to content

Commit a8efa21

Browse files
committed
auto merge of #5014 : Kimundi/rust/incoming, r=graydon
This implements a rust tool similar to go's go tool. It acts as a central hub for the tools rustc, rustdoc, rustpkg, rusti, and also provides shortcuts for directly compiling and running a source file either as a normal or a test executable. Default usage message: ``` The rust tool is a convenience for managing rust source code. It acts as a shortcut for programs of the rust tool chain. Usage: rust <command> [arguments] The commands are: build compile rust source files run build a executable, and run it test build a test executable, and run it doc generate documentation from doc comments pkg download, build, install rust packages sketch run a rust interpreter help show detailed usage of a command Use "rust help <command>" for more information about a command. ```
2 parents 67ee95e + 702a6f7 commit a8efa21

File tree

9 files changed

+306
-7
lines changed

9 files changed

+306
-7
lines changed

Makefile.in

+7-1
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ CFG_LIBFUZZER :=$(call CFG_LIB_NAME,fuzzer)
134134
CFG_LIBRUSTPKG :=$(call CFG_LIB_NAME,rustpkg)
135135
CFG_LIBRUSTDOC :=$(call CFG_LIB_NAME,rustdoc)
136136
CFG_LIBRUSTI :=$(call CFG_LIB_NAME,rusti)
137+
CFG_LIBRUST :=$(call CFG_LIB_NAME,rust)
137138

138139
STDLIB_GLOB :=$(call CFG_LIB_GLOB,std)
139140
CORELIB_GLOB :=$(call CFG_LIB_GLOB,core)
@@ -143,6 +144,7 @@ LIBFUZZER_GLOB :=$(call CFG_LIB_GLOB,fuzzer)
143144
LIBRUSTPKG_GLOB :=$(call CFG_LIB_GLOB,rustpkg)
144145
LIBRUSTDOC_GLOB :=$(call CFG_LIB_GLOB,rustdoc)
145146
LIBRUSTI_GLOB :=$(call CFG_LIB_GLOB,rusti)
147+
LIBRUST_GLOB :=$(call CFG_LIB_GLOB,rust)
146148
STDLIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,std)
147149
CORELIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,core)
148150
LIBRUSTC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustc)
@@ -151,6 +153,7 @@ LIBFUZZER_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,fuzzer)
151153
LIBRUSTPKG_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustpkg)
152154
LIBRUSTDOC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustdoc)
153155
LIBRUSTI_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rusti)
156+
LIBRUST_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rust)
154157

155158
# version-string calculation
156159
CFG_GIT_DIR := $(CFG_SRC_DIR).git
@@ -374,18 +377,21 @@ CSREQ$(1)_T_$(2)_H_$(3) = \
374377
$$(HBIN$(1)_H_$(3))/rustpkg$$(X) \
375378
$$(HBIN$(1)_H_$(3))/rustdoc$$(X) \
376379
$$(HBIN$(1)_H_$(3))/rusti$$(X) \
380+
$$(HBIN$(1)_H_$(3))/rust$$(X) \
377381
$$(HLIB$(1)_H_$(3))/$$(CFG_LIBFUZZER) \
378382
$$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUSTPKG) \
379383
$$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUSTDOC) \
380384
$$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUSTI) \
385+
$$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUST) \
381386
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB) \
382387
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB) \
383388
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX) \
384389
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) \
385390
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBFUZZER) \
386391
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTPKG) \
387392
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTDOC) \
388-
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTI)
393+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTI) \
394+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUST)
389395

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

mk/clean.mk

+3
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ clean$(1)_H_$(2):
6868
$(Q)rm -f $$(HBIN$(1)_H_$(2))/serializer$(X)
6969
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rustdoc$(X)
7070
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rusti$(X)
71+
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X)
7172
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBFUZZER)
7273
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG)
7374
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC)
@@ -77,6 +78,7 @@ clean$(1)_H_$(2):
7778
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTC)
7879
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBSYNTAX)
7980
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTI)
81+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUST)
8082
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CORELIB_GLOB)
8183
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_GLOB)
8284
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTC_GLOB)
@@ -85,6 +87,7 @@ clean$(1)_H_$(2):
8587
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB)
8688
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB)
8789
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTI_GLOB)
90+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUST_GLOB)
8891
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM)
8992
$(Q)rm -f $$(HLIB$(1)_H_$(2))/libstd.rlib
9093

mk/dist.mk

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ PKG_FILES := \
2727
driver \
2828
librustpkg \
2929
librusti \
30+
librust \
3031
librustc \
3132
compiletest \
3233
etc \

mk/install.mk

+8
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2))
6060
$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTDOC_GLOB))
6161
$$(Q)$$(call INSTALL_LIB, \
6262
$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTI_GLOB))
63+
$$(Q)$$(call INSTALL_LIB, \
64+
$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUST_GLOB))
6365
$$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),libmorestack.a)
6466

6567
endef
@@ -90,15 +92,18 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_HOST_TRIPLE)_H_$(CFG_HOST_TRIPLE))
9092
$(Q)$(call INSTALL,$(HB2),$(PHB),rustpkg$(X))
9193
$(Q)$(call INSTALL,$(HB2),$(PHB),rustdoc$(X))
9294
$(Q)$(call INSTALL,$(HB2),$(PHB),rusti$(X))
95+
$(Q)$(call INSTALL,$(HB2),$(PHB),rust$(X))
9396
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTC))
9497
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTPKG))
9598
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC))
9699
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTI))
100+
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUST))
97101
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(CORELIB_GLOB))
98102
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(STDLIB_GLOB))
99103
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUSTC_GLOB))
100104
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBSYNTAX_GLOB))
101105
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUSTI_GLOB))
106+
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUST_GLOB))
102107
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME))
103108
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUSTLLVM))
104109
$(Q)$(call INSTALL,$(S)/man, \
@@ -114,12 +119,14 @@ uninstall:
114119
$(Q)rm -f $(PHB)/rustc$(X)
115120
$(Q)rm -f $(PHB)/rustpkg$(X)
116121
$(Q)rm -f $(PHB)/rusti$(X)
122+
$(Q)rm -f $(PHB)/rust$(X)
117123
$(Q)rm -f $(PHB)/rustdoc$(X)
118124
$(Q)rm -f $(PHL)/$(CFG_RUSTLLVM)
119125
$(Q)rm -f $(PHL)/$(CFG_LIBRUSTPKG)
120126
$(Q)rm -f $(PHL)/$(CFG_LIBRUSTC)
121127
$(Q)rm -f $(PHL)/$(CFG_LIBRUSTDOC)
122128
$(Q)rm -f $(PHL)/$(CFG_LIBRUSTI)
129+
$(Q)rm -f $(PHL)/$(CFG_LIBRUST)
123130
$(Q)rm -f $(PHL)/$(CFG_RUNTIME)
124131
$(Q)for i in \
125132
$(call HOST_LIB_FROM_HL_GLOB,$(CORELIB_GLOB)) \
@@ -129,6 +136,7 @@ uninstall:
129136
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTPKG_GLOB)) \
130137
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTDOC_GLOB)) \
131138
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTI_GLOB)) \
139+
$(call HOST_LIB_FROM_HL_GLOB,$(LIBRUST_GLOB)) \
132140
; \
133141
do rm -f $$i ; \
134142
done

mk/pp.mk

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ else
1919
$(S)src/test/*/*/*.rs) \
2020
$(wildcard $(S)src/fuzzer/*.rs) \
2121
$(wildcard $(S)src/rustpkg/*.rs) \
22-
$(wildcard $(S)src/rusti/*.rs)
22+
$(wildcard $(S)src/rusti/*.rs) \
23+
$(wildcard $(S)src/rust/*.rs)
2324

2425
PP_INPUTS_FILTERED = $(shell echo $(PP_INPUTS) | xargs grep -L \
2526
"no-reformat\|xfail-pretty\|xfail-test")

mk/tests.mk

+11-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
######################################################################
1515

1616
# The names of crates that must be tested
17-
TEST_CRATES = core std syntax rustc rustdoc rusti rustpkg
17+
TEST_CRATES = core std syntax rustc rustdoc rusti rust rustpkg
1818

1919
# Markdown files under doc/ that should have their code extracted and run
2020
DOC_TEST_NAMES = tutorial tutorial-ffi tutorial-macros tutorial-borrowed-ptr tutorial-tasks rust
@@ -241,6 +241,12 @@ $(3)/test/rustitest.stage$(1)-$(2)$$(X): \
241241
@$$(call E, compile_and_link: $$@)
242242
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
243243

244+
$(3)/test/rusttest.stage$(1)-$(2)$$(X): \
245+
$$(RUST_LIB) $$(RUST_INPUTS) \
246+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC)
247+
@$$(call E, compile_and_link: $$@)
248+
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
249+
244250
$(3)/test/rustdoctest.stage$(1)-$(2)$$(X): \
245251
$$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \
246252
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC)
@@ -464,20 +470,20 @@ $(foreach host,$(CFG_TARGET_TRIPLES), \
464470

465471
define DEF_RUN_DOC_TEST
466472

467-
DOC_TEST_ARGS$(1)-T-$(2)-H-$(3)-$(4) := \
473+
DOC_TEST_ARGS$(1)-T-$(2)-H-$(3)-doc-$(4) := \
468474
$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3)) \
469475
--src-base $(3)/test/doc-$(4)/ \
470476
--build-base $(3)/test/doc-$(4)/ \
471477
--mode run-pass
472478

473-
check-stage$(1)-T-$(2)-H-$(3)-doc-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4))
479+
check-stage$(1)-T-$(2)-H-$(3)-doc-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4))
474480

475-
$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \
481+
$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): \
476482
$$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \
477483
doc-$(4)-extract$(3)
478484
@$$(call E, run doc-$(4): $$<)
479485
$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
480-
$$(DOC_TEST_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \
486+
$$(DOC_TEST_ARGS$(1)-T-$(2)-H-$(3)-doc-$(4)) \
481487
--logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),doc-$(4)) \
482488
&& touch $$@
483489

mk/tools.mk

+36
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ RUSTDOC_INPUTS := $(wildcard $(S)src/librustdoc/*.rs)
3030
RUSTI_LIB := $(S)src/librusti/rusti.rc
3131
RUSTI_INPUTS := $(wildcard $(S)src/librusti/*.rs)
3232

33+
# Rust, the convenience tool
34+
RUST_LIB := $(S)src/librust/rust.rc
35+
RUST_INPUTS := $(wildcard $(S)src/librust/*.rs)
36+
3337
# FIXME: These are only built for the host arch. Eventually we'll
3438
# have tools that need to built for other targets.
3539
define TOOLS_STAGE_N_TARGET
@@ -102,6 +106,21 @@ $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X): \
102106
@$$(call E, compile_and_link: $$@)
103107
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$<
104108

109+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUST): \
110+
$$(RUST_LIB) $$(RUST_INPUTS) \
111+
$$(TSREQ$(1)_T_$(4)_H_$(3)) \
112+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \
113+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
114+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
115+
@$$(call E, compile_and_link: $$@)
116+
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
117+
118+
$$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X): \
119+
$$(DRIVER_CRATE) \
120+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUST)
121+
@$$(call E, compile_and_link: $$@)
122+
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rust -o $$@ $$<
123+
105124
endef
106125

107126
define TOOLS_STAGE_N_HOST
@@ -185,6 +204,23 @@ $$(HBIN$(2)_H_$(4))/rusti$$(X): \
185204
@$$(call E, cp: $$@)
186205
$$(Q)cp $$< $$@
187206

207+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUST): \
208+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUST) \
209+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \
210+
$$(HSREQ$(2)_H_$(4))
211+
@$$(call E, cp: $$@)
212+
$$(Q)cp $$< $$@
213+
$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB) \
214+
$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)) \
215+
$$(HLIB$(2)_H_$(4))
216+
217+
$$(HBIN$(2)_H_$(4))/rust$$(X): \
218+
$$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X) \
219+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUST) \
220+
$$(HSREQ$(2)_H_$(4))
221+
@$$(call E, cp: $$@)
222+
$$(Q)cp $$< $$@
223+
188224
endef
189225

190226
$(foreach host,$(CFG_TARGET_TRIPLES), \

src/driver/driver.rs

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ extern mod this(name = "rustdoc", vers = "0.6");
2323
#[cfg(rusti)]
2424
extern mod this(name = "rusti", vers = "0.6");
2525

26+
#[cfg(rust)]
27+
extern mod this(name = "rust", vers = "0.6");
28+
2629
#[cfg(rustc)]
2730
extern mod this(name = "rustc", vers = "0.6");
2831

0 commit comments

Comments
 (0)