]> git.lizzy.rs Git - rust.git/blob - mk/clean.mk
93af331acfbd7e757731bfe8048c1c97bf83ebeb
[rust.git] / mk / clean.mk
1 # Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2 # file at the top-level directory of this distribution and at
3 # http://rust-lang.org/COPYRIGHT.
4 #
5 # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 # option. This file may not be copied, modified, or distributed
9 # except according to those terms.
10
11 ######################################################################
12 # Cleanup
13 ######################################################################
14
15 CLEAN_STAGE_RULES :=                                                    \
16  $(foreach stage, $(STAGES),                                            \
17   $(foreach host, $(CFG_HOST),                                          \
18    clean$(stage)_H_$(host)                                              \
19    $(foreach target, $(CFG_TARGET),                                     \
20     clean$(stage)_T_$(target)_H_$(host))))
21
22 CLEAN_STAGE_RULES := $(CLEAN_STAGE_RULES)                               \
23     $(foreach host, $(CFG_HOST), clean-generic-H-$(host))
24
25 CLEAN_STAGE_RULES := $(CLEAN_STAGE_RULES)                               \
26     $(foreach host, $(CFG_TARGET), clean-generic-T-$(host))
27
28 CLEAN_LLVM_RULES =                                                              \
29  $(foreach target, $(CFG_HOST),         \
30   clean-llvm$(target))
31
32 .PHONY: clean clean-all clean-misc clean-llvm
33
34 clean-all: clean clean-llvm
35
36 clean-llvm: $(CLEAN_LLVM_RULES)
37
38 clean: clean-misc $(CLEAN_STAGE_RULES)
39
40 clean-misc:
41         @$(call E, cleaning)
42         $(Q)rm -f $(RUNTIME_OBJS) $(RUNTIME_DEF)
43         $(Q)rm -f $(RUSTLLVM_LIB_OBJS) $(RUSTLLVM_OBJS_OBJS) $(RUSTLLVM_DEF)
44         $(Q)rm -Rf $(DOCS)
45         $(Q)rm -Rf $(GENERATED)
46         $(Q)rm -Rf tmp/*
47         $(Q)rm -Rf rust-stage0-*.tar.bz2 $(PKG_NAME)-*.tar.gz dist
48         $(Q)rm -Rf $(foreach ext, \
49                  html aux cp fn ky log pdf pg toc tp vr cps epub, \
50                  $(wildcard doc/*.$(ext)))
51         $(Q)find doc/std doc/extra -mindepth 1 | xargs rm -Rf
52         $(Q)rm -Rf doc/version.md
53         $(Q)rm -Rf $(foreach sub, index styles files search javascript, \
54                  $(wildcard doc/*/$(sub)))
55
56 define CLEAN_GENERIC
57
58 clean-generic-$(2)-$(1):
59         $(Q)find $(1)/rustllvm \
60                  $(1)/rt \
61                  $(1)/test \
62                  $(1)/stage* \
63          -name '*.[odasS]' -o \
64          -name '*.so' -o      \
65          -name '*.dylib' -o   \
66          -name '*.lib' -o     \
67          -name '*.dll' -o     \
68          -name '*.def' -o     \
69          -name '*.bc'         \
70          | xargs rm -f
71         $(Q)find $(1)\
72          -name '*.dSYM'       \
73          | xargs rm -Rf
74 endef
75
76 $(foreach host, $(CFG_HOST), $(eval $(call CLEAN_GENERIC,$(host),H)))
77 $(foreach targ, $(CFG_TARGET), $(eval $(call CLEAN_GENERIC,$(targ),T)))
78
79 define CLEAN_HOST_STAGE_N
80
81 clean$(1)_H_$(2):
82         $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustc$(X_$(2))
83         $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustpkg$(X_$(2))
84         $(Q)rm -f $$(HBIN$(1)_H_$(2))/serializer$(X_$(2))
85         $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustdoc$(X_$(2))
86         $(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X_$(2))
87         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG_$(2))
88         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC_$(2))
89         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME_$(2))
90         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB_$(2))
91         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_EXTRALIB_$(2))
92         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTUV_$(2))
93         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTC_$(2))
94         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBSYNTAX_$(2))
95         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_GLOB_$(2))
96         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_RGLOB_$(2))
97         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(EXTRALIB_GLOB_$(2))
98         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(EXTRALIB_RGLOB_$(2))
99         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTUV_GLOB_$(2))
100         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTUV_RGLOB_$(2))
101         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTC_GLOB_$(2))
102         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB_$(2))
103         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB_$(2))
104         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB_$(2))
105         $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM_$(2))
106
107 endef
108
109 $(foreach host, $(CFG_HOST), \
110  $(eval $(foreach stage, $(STAGES), \
111   $(eval $(call CLEAN_HOST_STAGE_N,$(stage),$(host))))))
112
113 define CLEAN_TARGET_STAGE_N
114
115 clean$(1)_T_$(2)_H_$(3):
116         $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustc$(X_$(2))
117         $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustpkg$(X_$(2))
118         $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/serializer$(X_$(2))
119         $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustdoc$(X_$(2))
120         $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rust$(X_$(2))
121         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2))
122         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2))
123         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2))
124         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2))
125         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2))
126         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTUV_$(2))
127         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2))
128         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(2))
129         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_GLOB_$(2))
130         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_RGLOB_$(2))
131         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(EXTRALIB_GLOB_$(2))
132         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(EXTRALIB_RGLOB_$(2))
133         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTUV_GLOB_$(2))
134         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTUV_RGLOB_$(2))
135         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_GLOB_$(2))
136         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_RGLOB_$(2))
137         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB_$(2))
138         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_RGLOB_$(2))
139         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB_$(2))
140         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB_$(2))
141         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(2))
142         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a
143         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/librun_pass_stage* # For unix
144         $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/run_pass_stage* # For windows
145 endef
146
147 $(foreach host, $(CFG_HOST), \
148  $(eval $(foreach target, $(CFG_TARGET), \
149   $(eval $(foreach stage, 0 1 2 3, \
150    $(eval $(call CLEAN_TARGET_STAGE_N,$(stage),$(target),$(host))))))))
151
152 define DEF_CLEAN_LLVM_HOST
153 ifeq ($(CFG_LLVM_ROOT),)
154 clean-llvm$(1):
155         $$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) clean
156 else
157 clean-llvm$(1): ;
158
159 endif
160 endef
161
162 $(foreach host, $(CFG_HOST), \
163  $(eval $(call DEF_CLEAN_LLVM_HOST,$(host))))