Skip to content

Commit 40624e3

Browse files
committed
Start splitting up Makefile.in
1 parent d887767 commit 40624e3

File tree

14 files changed

+1062
-1033
lines changed

14 files changed

+1062
-1033
lines changed

Makefile.in

Lines changed: 18 additions & 1033 deletions
Large diffs are not rendered by default.

mk/autodep.mk

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
######################################################################
2+
# Auto-dependency
3+
######################################################################
4+
5+
ML_DEPFILES := $(BOOT_MLS:%.ml=%.d)
6+
C_DEPFILES := $(RUNTIME_CS:%.cpp=%.d) $(RUSTLLVM_LIB_CS:%.cpp=%.d) \
7+
$(RUSTLLVM_OBJS_CS:%.cpp=%.d)
8+
9+
rt/%.d: rt/%.cpp $(MKFILES)
10+
@$(call E, dep: $@)
11+
$(Q)$(call CFG_DEPEND_C, $@ \
12+
$(subst $(S)src/,,$(patsubst %.cpp, %.o, $<)), \
13+
$(RUNTIME_INCS)) $< >[email protected]
14+
$(Q)$(CFG_PATH_MUNGE) [email protected]
15+
16+
17+
18+
rustllvm/%.d: rustllvm/%.cpp $(MKFILES)
19+
@$(call E, dep: $@)
20+
$(Q)$(call CFG_DEPEND_C, $@ \
21+
$(subst $(S)src/,,$(patsubst %.cpp, %.o, $<)), \
22+
$(CFG_LLVM_CXXFLAGS) $(RUSTLLVM_INCS)) $< >[email protected]
23+
$(Q)$(CFG_PATH_MUNGE) [email protected]
24+
25+
26+
27+
%.d: %.ml $(MKFILES)
28+
@$(call E, dep: $@)
29+
$(Q)ocamldep$(OPT) -slash $(BOOT_ML_DEP_INCS) $< >$@.tmp
30+
$(Q)$(CFG_PATH_MUNGE) $@.tmp
31+
$(Q)rm -f $@.tmp.bak
32+
$(Q)perl -i.bak -pe "s@$(S)src/@@go" $@.tmp
33+
$(Q)rm -f $@.tmp.bak
34+
$(Q)mv $@.tmp $@
35+
36+
%.d: %.mli $(MKFILES)
37+
@$(call E, dep: $@)
38+
$(Q)ocamldep$(OPT) -slash $(BOOT_ML_DEP_INCS) $< >$@.tmp
39+
$(Q)$(CFG_PATH_MUNGE) $@.tmp
40+
$(Q)rm -f $@.tmp.bak
41+
$(Q)perl -i.bak -pe "s@$(S)src/@@go" $@.tmp
42+
$(Q)rm -f $@.tmp.bak
43+
$(Q)mv $@.tmp $@
44+
45+
ifneq ($(MAKECMDGOALS),clean)
46+
-include $(ML_DEPFILES) $(C_DEPFILES)
47+
endif
48+
49+
RUSTBOOT_PROBE := $(wildcard boot/rustboot$(X))
50+
51+
ifneq ($(RUSTBOOT_PROBE),)
52+
CFG_INFO := $(info cfg: using built boot/rustboot$(X) for rust deps)
53+
CRATE_DEPFILES := $(subst $(S)src/,,$(ALL_TEST_CRATES:%.rc=%.d)) \
54+
boot/$(CFG_STDLIB).d \
55+
stage0/rustc$(X).d \
56+
stage0/$(CFG_STDLIB).d
57+
58+
boot/$(CFG_STDLIB).d: $(STDLIB_CRATE) $(STDLIB_INPUTS) \
59+
$(MKFILES) boot/rustboot$(X)
60+
@$(call E, dep: $@)
61+
$(BOOT) -o $(patsubst %.d,%$(X),$@) -shared -rdeps $< >[email protected]
62+
$(Q)$(CFG_PATH_MUNGE) [email protected]
63+
64+
65+
66+
stage0/rustc$(X).d: $(COMPILER_CRATE) $(COMPILER_INPUTS) \
67+
$(STDLIB_CRATE) $(MKFILES) boot/rustboot$(X)
68+
@$(call E, dep: $@)
69+
$(BOOT) -o $(patsubst %.d,%$(X),$@) -shared -rdeps $< >[email protected]
70+
$(Q)$(CFG_PATH_MUNGE) [email protected]
71+
72+
73+
74+
%.d: %.rc $(MKFILES) boot/rustboot$(X)
75+
@$(call E, dep: $@)
76+
$(BOOT) -o $(patsubst %.d,%$(X),$@) -rdeps $< >$@.tmp
77+
$(Q)$(CFG_PATH_MUNGE) $@.tmp
78+
$(Q)rm -f $@.tmp.bak
79+
$(Q)mv $@.tmp $@
80+
81+
ifneq ($(MAKECMDGOALS),clean)
82+
-include $(CRATE_DEPFILES)
83+
endif
84+
endif
85+
86+
depend: boot/rustboot$(X) $(CRATE_DEPFILES) $(ML_DEPFILES) $(C_DEPFILES)

mk/boot.mk

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
######################################################################
2+
# Bootstrap compiler variables and rules
3+
######################################################################
4+
5+
ifdef CFG_BOOT_PROFILE
6+
$(info cfg: forcing native bootstrap compiler (CFG_BOOT_PROFILE))
7+
CFG_BOOT_NATIVE := 1
8+
CFG_OCAMLOPT_PROFILE_FLAGS := -p
9+
endif
10+
11+
ifdef CFG_BOOT_DEBUG
12+
$(info cfg: forcing bytecode bootstrap compiler (CFG_BOOT_DEBUG))
13+
CFG_BOOT_NATIVE :=
14+
endif
15+
16+
ifdef CFG_BOOT_NATIVE
17+
$(info cfg: building native bootstrap compiler)
18+
else
19+
$(info cfg: building bytecode bootstrap compiler)
20+
endif
21+
22+
GENERATED := boot/fe/lexer.ml boot/version.ml
23+
24+
25+
# We must list them in link order.
26+
# Nobody calculates the link-order DAG automatically, sadly.
27+
28+
BOOT_MLS := \
29+
$(addsuffix .ml, \
30+
boot/version \
31+
$(addprefix boot/util/, fmt common bits) \
32+
$(addprefix boot/driver/, session) \
33+
$(addprefix boot/fe/, ast token lexer parser \
34+
extfmt pexp item cexp fuzz) \
35+
$(addprefix boot/be/, asm il abi) \
36+
$(addprefix boot/me/, walk semant resolve alias \
37+
simplify type dead layer typestate \
38+
loop layout transutil trans dwarf) \
39+
$(addprefix boot/be/, x86 ra pe elf macho) \
40+
$(addprefix boot/driver/, lib glue main)) \
41+
42+
BOOT_CMOS := $(BOOT_MLS:.ml=.cmo)
43+
BOOT_CMXS := $(BOOT_MLS:.ml=.cmx)
44+
BOOT_OBJS := $(BOOT_MLS:.ml=.o)
45+
BOOT_CMIS := $(BOOT_MLS:.ml=.cmi)
46+
47+
BS := $(S)src/boot
48+
49+
BOOT_ML_DEP_INCS := -I $(BS)/fe -I $(BS)/me \
50+
-I $(BS)/be -I $(BS)/driver \
51+
-I $(BS)/util -I boot
52+
53+
BOOT_ML_INCS := -I boot/fe -I boot/me \
54+
-I boot/be -I boot/driver \
55+
-I boot/util -I boot
56+
57+
BOOT_ML_LIBS := unix.cma nums.cma bigarray.cma
58+
BOOT_ML_NATIVE_LIBS := unix.cmxa nums.cmxa bigarray.cmxa
59+
BOOT_OCAMLC_FLAGS := -g $(BOOT_ML_INCS) -w Ael -warn-error Ael
60+
BOOT_OCAMLOPT_FLAGS := -g $(BOOT_ML_INCS) -w Ael -warn-error Ael
61+
62+
ifdef CFG_FLEXLINK
63+
BOOT_OCAMLOPT_FLAGS += -cclib -L/usr/lib
64+
endif
65+
66+
BOOT := $(Q)OCAMLRUNPARAM="b1" boot/rustboot$(X) $(CFG_BOOT_FLAGS) -L stage0
67+
68+
69+
ifdef CFG_BOOT_NATIVE
70+
boot/rustboot$(X): $(BOOT_CMXS) $(MKFILES)
71+
@$(call E, link: $@)
72+
$(Q)ocamlopt$(OPT) -o $@ $(BOOT_OCAMLOPT_FLAGS) $(BOOT_ML_NATIVE_LIBS) \
73+
$(BOOT_CMXS)
74+
else
75+
boot/rustboot$(X): $(BOOT_CMOS) $(MKFILES)
76+
@$(call E, link: $@)
77+
$(Q)ocamlc$(OPT) -o $@ $(BOOT_OCAMLC_FLAGS) $(BOOT_ML_LIBS) $(BOOT_CMOS)
78+
endif
79+
80+
boot/version.ml: $(MKFILES)
81+
@$(call E, git: $@)
82+
$(Q)(cd $(S) && git log -1 \
83+
--pretty=format:'let version = "prerelease (%h %ci)";;') >$@ || exit 1
84+
85+
%.cmo: %.ml $(MKFILES)
86+
@$(call E, compile: $@)
87+
$(Q)ocamlc$(OPT) -c -o $@ $(BOOT_OCAMLC_FLAGS) $<
88+
89+
%.cmo: %.cmi $(MKFILES)
90+
91+
%.cmx %.o: %.ml $(MKFILES)
92+
@$(call E, compile: $@)
93+
$(Q)ocamlopt$(OPT) -c -o $@ $(BOOT_OCAMLOPT_FLAGS) $<
94+
95+
%.ml: %.mll $(MKFILES)
96+
@$(call E, lex-gen: $@)
97+
$(Q)ocamllex$(OPT) -q -o $@ $<
98+

mk/clean.mk

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
######################################################################
2+
# Cleanup
3+
######################################################################
4+
5+
.PHONY: clean
6+
7+
tidy:
8+
@$(call E, check: formatting)
9+
$(Q)echo \
10+
$(filter-out $(GENERATED) $(addprefix $(S)src/, $(GENERATED)) \
11+
$(addprefix $(S)src/, $(RUSTLLVM_LIB_CS) $(RUSTLLVM_OBJS_CS) \
12+
$(RUSTLLVM_HDR) $(PKG_3RDPARTY)) \
13+
$(S)src/etc/%, $(PKG_FILES)) \
14+
| xargs -n 10 python $(S)src/etc/tidy.py
15+
16+
clean:
17+
@$(call E, cleaning)
18+
$(Q)rm -f $(RUNTIME_OBJS) $(RUNTIME_DEF)
19+
$(Q)rm -f $(RUSTLLVM_LIB_OBJS) $(RUSTLLVM_OBJS_OBJS) $(RUSTLLVM_DEF)
20+
$(Q)rm -f $(BOOT_CMOS) $(BOOT_CMIS) $(BOOT_CMXS) $(BOOT_OBJS)
21+
$(Q)rm -f $(ML_DEPFILES) $(C_DEPFILES) $(CRATE_DEPFILES)
22+
$(Q)rm -f $(ML_DEPFILES:%.d=%.d.tmp)
23+
$(Q)rm -f $(C_DEPFILES:%.d=%.d.tmp)
24+
$(Q)rm -f $(CRATE_DEPFILES:%.d=%.d.tmp)
25+
$(Q)rm -f $(GENERATED)
26+
$(Q)rm -f boot/rustboot$(X) boot/$(CFG_STDLIB)
27+
$(Q)rm -f stage0/rustc$(X) stage0/$(CFG_STDLIB)
28+
$(Q)rm -f stage1/rustc$(X) stage1/$(CFG_STDLIB) stage1/glue*
29+
$(Q)rm -f stage2/rustc$(X) stage2/$(CFG_STDLIB) stage2/glue*
30+
$(Q)rm -f stage3/rustc$(X) stage3/$(CFG_STDLIB) stage3/glue*
31+
$(Q)rm -f rustllvm/$(CFG_RUSTLLVM) rustllvm/rustllvmbits.a
32+
$(Q)rm -f rt/$(CFG_RUNTIME)
33+
$(Q)rm -Rf $(PKG_NAME)-*.tar.gz dist
34+
$(Q)rm -f $(foreach ext,cmx cmi cmo cma bc o a d exe,\
35+
$(wildcard boot/*/*.$(ext) boot/*/*/*.$(ext)))
36+
$(Q)rm -f $(foreach ext,o a d bc s exe,$(wildcard stage*/*.$(ext)))
37+
$(Q)rm -Rf $(foreach ext,out out.tmp \
38+
boot$(X) stage0$(X) stage1$(X) stage2$(X) \
39+
bc o s exe dSYM, \
40+
$(wildcard test/*/*.$(ext) test/bench/*/*.$(ext)))
41+
$(Q)rm -Rf $(foreach ext, \
42+
aux cp fn ky log pdf html pg toc tp vr cps, \
43+
$(wildcard doc/*.$(ext)))
44+
$(Q)rm -Rf doc/version.texi

mk/dist.mk

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
######################################################################
2+
# Distribution
3+
######################################################################
4+
5+
PKG_NAME := rust
6+
PKG_VER = $(shell date +"%Y-%m-%d")-snap
7+
PKG_DIR = $(PKG_NAME)-$(PKG_VER)
8+
PKG_TAR = $(PKG_DIR).tar.gz
9+
10+
PKG_3RDPARTY := rt/valgrind.h rt/memcheck.h \
11+
rt/isaac/rand.h rt/isaac/standard.h \
12+
rt/uthash/uthash.h rt/uthash/utlist.h \
13+
rt/bigint/bigint.h rt/bigint/bigint_int.cpp \
14+
rt/bigint/bigint_ext.cpp rt/bigint/low_primes.h
15+
16+
PKG_FILES = \
17+
$(wildcard $(S)src/etc/*.*) \
18+
$(S)LICENSE.txt $(S)README \
19+
$(S)configure $(S)Makefile.in \
20+
$(addprefix $(S)src/, \
21+
README boot/README comp/README \
22+
$(filter-out $(GENERATED), $(BOOT_MLS)) \
23+
$(RUNTIME_CS) $(RUNTIME_HDR) \
24+
$(RUSTLLVM_LIB_CS) $(RUSTLLVM_OBJS_CS) \
25+
$(RUSTLLVM_HDR) \
26+
$(PKG_3RDPARTY)) \
27+
$(GENERATED) \
28+
$(S)src/boot/fe/lexer.ml \
29+
$(COMPILER_INPUTS) \
30+
$(STDLIB_INPUTS) \
31+
$(ALL_TEST_INPUTS) \
32+
$(GENERATED)
33+
34+
dist: $(PKG_TAR)
35+
36+
$(PKG_TAR): $(GENERATED)
37+
@$(call E, making dist dir)
38+
$(Q)rm -Rf dist
39+
$(Q)mkdir -p dist/$(PKG_DIR)
40+
$(Q)tar -c $(PKG_FILES) | tar -x -C dist/$(PKG_DIR)
41+
$(Q)tar -czf $(PKG_TAR) -C dist $(PKG_DIR)
42+
$(Q)rm -Rf dist
43+
44+
distcheck: $(PKG_TAR)
45+
$(Q)rm -Rf dist
46+
$(Q)mkdir -p dist
47+
@$(call E, unpacking $(PKG_TAR) in dist/$(PKG_DIR))
48+
$(Q)cd dist && tar -xzf ../$(PKG_TAR)
49+
@$(call E, configuring in dist/$(PKG_DIR)-build)
50+
$(Q)mkdir -p dist/$(PKG_DIR)-build
51+
$(Q)cd dist/$(PKG_DIR)-build && ../$(PKG_DIR)/configure
52+
@$(call E, making 'check' in dist/$(PKG_DIR)-build)
53+
$(Q)make -C dist/$(PKG_DIR)-build check
54+
@$(call E, making 'clean' in dist/$(PKG_DIR)-build)
55+
$(Q)make -C dist/$(PKG_DIR)-build clean
56+
$(Q)rm -Rf dist
57+
@echo
58+
@echo -----------------------------------------------
59+
@echo $(PKG_TAR) ready for distribution
60+
@echo -----------------------------------------------
61+
62+

mk/docs.mk

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
######################################################################
2+
# Doc variables and rules
3+
######################################################################
4+
5+
doc/version.texi: $(MKFILES) rust.texi
6+
(cd $(S) && git log -1 \
7+
--pretty=format:'@macro gitversion%n%h %ci%n@end macro%n') >$@
8+
9+
doc/%.pdf: %.texi doc/version.texi
10+
texi2pdf -I doc -o $@ --clean $<
11+
12+
doc/%.html: %.texi doc/version.texi
13+
makeinfo -I doc --html --ifhtml --force --no-split --output=$@ $<
14+
15+
docsnap: doc/rust.pdf
16+
mv $< doc/rust-$(shell date +"%Y-%m-%d")-snap.pdf

0 commit comments

Comments
 (0)