Skip to content

Commit 6c79d78

Browse files
Daniel Pattersoncatamorphism
Daniel Patterson
authored andcommitted
library-ifying of tools - turning cargo, rustdoc, fuzzer, into libraries, as per #3543
1 parent 563aa0b commit 6c79d78

Some content is hidden

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

45 files changed

+112
-22
lines changed

Makefile.in

+9
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,24 @@ CFG_CORELIB :=$(call CFG_LIB_NAME,core)
120120
CFG_STDLIB :=$(call CFG_LIB_NAME,std)
121121
CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc)
122122
CFG_LIBSYNTAX :=$(call CFG_LIB_NAME,syntax)
123+
CFG_LIBFUZZER :=$(call CFG_LIB_NAME,fuzzer)
124+
CFG_LIBCARGO :=$(call CFG_LIB_NAME,cargo)
125+
CFG_LIBRUSTDOC :=$(call CFG_LIB_NAME,rustdoc)
123126

124127
STDLIB_GLOB :=$(call CFG_LIB_GLOB,std)
125128
CORELIB_GLOB :=$(call CFG_LIB_GLOB,core)
126129
LIBRUSTC_GLOB :=$(call CFG_LIB_GLOB,rustc)
127130
LIBSYNTAX_GLOB :=$(call CFG_LIB_GLOB,syntax)
131+
LIBFUZZER_GLOB :=$(call CFG_LIB_GLOB,fuzzer)
132+
LIBCARGO_GLOB :=$(call CFG_LIB_GLOB,cargo)
133+
LIBRUSTDOC_GLOB :=$(call CFG_LIB_GLOB,rustdoc)
128134
STDLIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,std)
129135
CORELIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,core)
130136
LIBRUSTC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustc)
131137
LIBSYNTAX_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,syntax)
138+
LIBFUZZER_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,fuzzer)
139+
LIBCARGO_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,cargo)
140+
LIBRUSTDOC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustdoc)
132141

133142
# version-string calculation
134143
CFG_GIT_DIR := $(CFG_SRC_DIR).git

mk/clean.mk

+12
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ clean$(1)_H_$(2):
5757
$(Q)rm -f $$(HBIN$(1)_H_$(2))/cargo$(X)
5858
$(Q)rm -f $$(HBIN$(1)_H_$(2))/serializer$(X)
5959
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rustdoc$(X)
60+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBFUZZER)
61+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBCARGO)
62+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC)
6063
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME)
6164
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_CORELIB)
6265
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB)
@@ -66,6 +69,9 @@ clean$(1)_H_$(2):
6669
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_GLOB)
6770
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTC_GLOB)
6871
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB)
72+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBFUZZER_GLOB)
73+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBCARGO_GLOB)
74+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB)
6975
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM)
7076
$(Q)rm -f $$(HLIB$(1)_H_$(2))/libstd.rlib
7177

@@ -83,6 +89,9 @@ clean$(1)_T_$(2)_H_$(3):
8389
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/cargo$(X)
8490
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/serializer$(X)
8591
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustdoc$(X)
92+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER)
93+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBCARGO)
94+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC)
8695
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME)
8796
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB)
8897
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB)
@@ -92,6 +101,9 @@ clean$(1)_T_$(2)_H_$(3):
92101
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_GLOB)
93102
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_GLOB)
94103
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB)
104+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBFUZZER_GLOB)
105+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBCARGO_GLOB)
106+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB)
95107
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM)
96108
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libstd.rlib
97109
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a

mk/install.mk

+7
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,12 @@ install-host: $(SREQ$(ISTAGE)_T_$(CFG_HOST_TRIPLE)_H_$(CFG_HOST_TRIPLE))
7171
$(Q)mkdir -p $(PREFIX_LIB)
7272
$(Q)mkdir -p $(PREFIX_ROOT)/share/man/man1
7373
$(Q)$(call INSTALL,$(HB2),$(PHB),rustc$(X))
74+
$(Q)$(call INSTALL,$(HB2),$(PHB),fuzzer$(X))
75+
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBFUZZER))
7476
$(Q)$(call INSTALL,$(HB2),$(PHB),cargo$(X))
77+
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBCARGO))
7578
$(Q)$(call INSTALL,$(HB2),$(PHB),rustdoc$(X))
79+
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC))
7680
$(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME))
7781
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(CORELIB_GLOB))
7882
$(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(STDLIB_GLOB))
@@ -93,6 +97,9 @@ uninstall:
9397
$(Q)rm -f $(PHB)/cargo$(X)
9498
$(Q)rm -f $(PHB)/rustdoc$(X)
9599
$(Q)rm -f $(PHL)/$(CFG_RUSTLLVM)
100+
$(Q)rm -f $(PHL)/$(CFG_FUZZER)
101+
$(Q)rm -f $(PHL)/$(CFG_CARGO)
102+
$(Q)rm -f $(PHL)/$(CFG_RUSTDOC)
96103
$(Q)rm -f $(PHL)/$(CFG_RUNTIME)
97104
$(Q)for i in \
98105
$(call HOST_LIB_FROM_HL_GLOB,$(CORELIB_GLOB)) \

mk/target.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM): \
2525
$$(Q)cp $$< $$@
2626

2727
$$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X): \
28-
$$(RUSTC_INPUTS) \
28+
$$(RUSTC_INPUTS) \
2929
$$(TLIBRUSTC_DEFAULT$(1)_T_$(2)_H_$(3))
3030
@$$(call E, compile_and_link: $$@)
3131
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$<

mk/tools.mk

+61-18
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,55 @@
11
# Rules for non-core tools built with the compiler, both for target
22
# and host architectures
33

4-
FUZZER_CRATE := $(S)src/fuzzer/fuzzer.rc
5-
FUZZER_INPUTS := $(wildcard $(addprefix $(S)src/fuzzer/, *.rs))
4+
TOOL_DRIVER := $(S)src/driver/driver.rs
5+
6+
FUZZER_LIB := $(S)src/libfuzzer/fuzzer.rc
7+
FUZZER_INPUTS := $(wildcard $(addprefix $(S)src/libfuzzer/, *.rs))
68

79
# The test runner that runs the cfail/rfail/rpass and bench tests
810
COMPILETEST_CRATE := $(S)src/compiletest/compiletest.rc
911
COMPILETEST_INPUTS := $(wildcard $(S)src/compiletest/*rs)
1012

1113
# Cargo, the package manager
12-
CARGO_CRATE := $(S)src/cargo/cargo.rc
14+
CARGO_LIB := $(S)src/libcargo/cargo.rc
1315
CARGO_INPUTS := $(wildcard $(S)src/cargo/*rs)
1416

1517
# Rustdoc, the documentation tool
16-
RUSTDOC_CRATE := $(S)src/rustdoc/rustdoc.rc
18+
RUSTDOC_LIB := $(S)src/librustdoc/rustdoc.rc
1719
RUSTDOC_INPUTS := $(wildcard $(S)src/rustdoc/*.rs)
1820

1921
# FIXME: These are only built for the host arch. Eventually we'll
2022
# have tools that need to built for other targets.
2123
define TOOLS_STAGE_N
2224

23-
$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X): \
24-
$$(FUZZER_CRATE) $$(FUZZER_INPUTS) \
25+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER): \
26+
$$(FUZZER_LIB) $$(FUZZER_INPUTS) \
2527
$$(TSREQ$(1)_T_$(4)_H_$(3)) \
2628
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \
2729
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
2830
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
2931
@$$(call E, compile_and_link: $$@)
30-
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
32+
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
33+
34+
$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X): \
35+
$$(TOOL_DRIVER) \
36+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER)
37+
@$$(call E, compile_and_link: $$@)
38+
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg fuzzer -o $$@ $$<
3139

3240
# Promote the stageN target to stageN+1 host
3341
# FIXME: Shouldn't need to depend on host/librustc.so once
3442
# rpath is working
43+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBFUZZER): \
44+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER) \
45+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \
46+
$$(HSREQ$(2)_H_$(4))
47+
@$$(call E, cp: $$@)
48+
$$(Q)cp $$< $$@
49+
3550
$$(HBIN$(2)_H_$(4))/fuzzer$$(X): \
3651
$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X) \
37-
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \
52+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBFUZZER) \
3853
$$(HSREQ$(2)_H_$(4))
3954
@$$(call E, cp: $$@)
4055
$$(Q)cp $$< $$@
@@ -53,32 +68,60 @@ $$(HBIN$(2)_H_$(4))/compiletest$$(X): \
5368
@$$(call E, cp: $$@)
5469
$$(Q)cp $$< $$@
5570

56-
$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X): \
57-
$$(CARGO_CRATE) $$(CARGO_INPUTS) \
71+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO): \
72+
$$(CARGO_LIB) $$(CARGO_INPUTS) \
5873
$$(TSREQ$(1)_T_$(4)_H_$(3)) \
59-
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \
60-
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
74+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \
75+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
6176
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
6277
@$$(call E, compile_and_link: $$@)
63-
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
78+
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
79+
80+
$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X): \
81+
$$(TOOL_DRIVER) \
82+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO)
83+
@$$(call E, compile_and_link: $$@)
84+
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg cargo -o $$@ $$<
85+
86+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBCARGO): \
87+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO) \
88+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \
89+
$$(HSREQ$(2)_H_$(4))
90+
@$$(call E, cp: $$@)
91+
$$(Q)cp $$< $$@
6492

6593
$$(HBIN$(2)_H_$(4))/cargo$$(X): \
6694
$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X) \
95+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBCARGO) \
6796
$$(HSREQ$(2)_H_$(4))
6897
@$$(call E, cp: $$@)
6998
$$(Q)cp $$< $$@
7099

71-
$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X): \
72-
$$(RUSTDOC_CRATE) $$(RUSTDOC_INPUTS) \
100+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC): \
101+
$$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \
73102
$$(TSREQ$(1)_T_$(4)_H_$(3)) \
74-
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \
75-
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
103+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \
104+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
76105
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
77106
@$$(call E, compile_and_link: $$@)
78-
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
107+
$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
108+
109+
$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X): \
110+
$$(TOOL_DRIVER) \
111+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC)
112+
@$$(call E, compile_and_link: $$@)
113+
$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$<
114+
115+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC): \
116+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC) \
117+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \
118+
$$(HSREQ$(2)_H_$(4))
119+
@$$(call E, cp: $$@)
120+
$$(Q)cp $$< $$@
79121

80122
$$(HBIN$(2)_H_$(4))/rustdoc$$(X): \
81123
$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X) \
124+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC) \
82125
$$(HSREQ$(2)_H_$(4))
83126
@$$(call E, cp: $$@)
84127
$$(Q)cp $$< $$@

src/driver/driver.rs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#[no_core];
2+
extern mod core(vers = "0.5");
3+
4+
#[cfg(cargo)]
5+
extern mod self(name = "cargo", vers = "0.5");
6+
7+
#[cfg(fuzzer)]
8+
extern mod self(name = "fuzzer", vers = "0.5");
9+
10+
#[cfg(rustdoc)]
11+
extern mod self(name = "rustdoc", vers = "0.5");
12+
13+
fn main() { self::main() }

src/cargo/cargo.rc renamed to src/libcargo/cargo.rc

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
uuid = "9ff87a04-8fed-4295-9ff8-f99bb802650b",
1515
url = "https://github.com/mozilla/rust/tree/master/src/cargo")];
1616

17-
#[crate_type = "bin"];
17+
#[crate_type = "lib"];
1818

1919
#[no_core];
2020
#[legacy_exports];
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/fuzzer/fuzzer.rc renamed to src/libfuzzer/fuzzer.rc

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
// -*- rust -*-
22

3-
#[crate_type = "bin"];
3+
#[link(name = "fuzzer",
4+
vers = "0.5",
5+
uuid = "d6418797-2736-4833-bd82-d3c684b7c1b0",
6+
url = "https://github.com/mozilla/rust/tree/master/src/libfuzzer")];
47

8+
#[comment = "The Rust fuzzer library"];
9+
#[license = "MIT"];
10+
#[crate_type = "lib"];
511
#[no_core];
612

713
#[legacy_modes];
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/rustdoc/rustdoc.rc renamed to src/librustdoc/rustdoc.rc

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
#[comment = "The Rust documentation generator"];
99
#[license = "MIT"];
10-
#[crate_type = "bin"];
10+
#[crate_type = "lib"];
1111

1212
#[no_core];
1313
#[legacy_modes];
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)