1include $(ERL_TOP)/make/target.mk
2include $(ERL_TOP)/make/$(TARGET)/otp.mk
3
4# ----------------------------------------------------
5# Target Specs
6# ----------------------------------------------------
7
8MODULES= \
9	andor_SUITE \
10	apply_SUITE \
11	beam_block_SUITE \
12	beam_validator_SUITE \
13	beam_disasm_SUITE \
14	beam_except_SUITE \
15	beam_jump_SUITE \
16	beam_reorder_SUITE \
17	beam_ssa_SUITE \
18	beam_type_SUITE \
19	beam_types_SUITE \
20	beam_utils_SUITE \
21	bif_SUITE \
22	bs_bincomp_SUITE \
23	bs_bit_binaries_SUITE \
24	bs_construct_SUITE \
25	bs_match_SUITE \
26	bs_size_expr_SUITE \
27	bs_utf_SUITE \
28	core_alias_SUITE \
29	core_fold_SUITE \
30	compile_SUITE \
31	compilation_SUITE \
32	core_SUITE \
33	error_SUITE \
34	float_SUITE \
35	fun_SUITE \
36	guard_SUITE \
37	inline_SUITE \
38	lc_SUITE \
39	map_SUITE \
40	match_SUITE \
41	misc_SUITE \
42	overridden_bif_SUITE \
43	random_code_SUITE \
44	receive_SUITE \
45	record_SUITE \
46	regressions_SUITE \
47	trycatch_SUITE \
48	warnings_SUITE \
49	z_SUITE \
50	test_lib
51
52NO_OPT= \
53	andor \
54	apply \
55	beam_block \
56	beam_except \
57	beam_jump \
58	beam_reorder \
59	beam_ssa \
60	beam_type \
61	beam_utils \
62	bif \
63	bs_construct \
64	bs_bincomp \
65        bs_match \
66        bs_size_expr \
67	bs_utf \
68	core_fold \
69	float \
70	fun \
71	guard \
72	lc \
73	map \
74	match \
75	misc \
76	overridden_bif \
77	receive \
78	record \
79	trycatch
80
81INLINE= \
82	andor \
83	apply \
84	beam_block \
85	beam_ssa \
86	beam_utils \
87	bif \
88	bs_bincomp \
89	bs_bit_binaries \
90	bs_construct \
91        bs_match \
92        bs_size_expr \
93	bs_utf \
94	core_fold \
95	float \
96	fun \
97	guard \
98	lc \
99	map \
100	match \
101	misc \
102	overridden_bif \
103	receive \
104	record
105
106R21= \
107        bs_construct \
108        bs_match \
109        fun
110
111DIALYZER = bs_match
112
113CORE_MODULES = \
114	lfe_andor_SUITE \
115	lfe_guard_SUITE
116
117NO_MOD_OPT = $(NO_OPT)
118
119NO_SSA_OPT = $(NO_OPT)
120
121NO_TYPE_OPT = $(NO_OPT)
122
123NO_OPT_MODULES= $(NO_OPT:%=%_no_opt_SUITE)
124NO_OPT_ERL_FILES= $(NO_OPT_MODULES:%=%.erl)
125POST_OPT_MODULES= $(NO_OPT:%=%_post_opt_SUITE)
126POST_OPT_ERL_FILES= $(POST_OPT_MODULES:%=%.erl)
127NO_CORE_OPT_MODULES= $(NO_OPT:%=%_no_copt_SUITE)
128NO_CORE_OPT_ERL_FILES= $(NO_CORE_OPT_MODULES:%=%.erl)
129INLINE_MODULES= $(INLINE:%=%_inline_SUITE)
130INLINE_ERL_FILES= $(INLINE_MODULES:%=%.erl)
131R21_MODULES= $(R21:%=%_r21_SUITE)
132R21_ERL_FILES= $(R21_MODULES:%=%.erl)
133NO_MOD_OPT_MODULES= $(NO_MOD_OPT:%=%_no_module_opt_SUITE)
134NO_MOD_OPT_ERL_FILES= $(NO_MOD_OPT_MODULES:%=%.erl)
135NO_SSA_OPT_MODULES= $(NO_SSA_OPT:%=%_no_ssa_opt_SUITE)
136NO_SSA_OPT_ERL_FILES= $(NO_SSA_OPT_MODULES:%=%.erl)
137NO_TYPE_OPT_MODULES= $(NO_TYPE_OPT:%=%_no_type_opt_SUITE)
138NO_TYPE_OPT_ERL_FILES= $(NO_TYPE_OPT_MODULES:%=%.erl)
139DIALYZER_MODULES= $(DIALYZER:%=%_dialyzer_SUITE)
140DIALYZER_ERL_FILES= $(DIALYZER_MODULES:%=%.erl)
141
142ERL_FILES= $(MODULES:%=%.erl)
143CORE_FILES= $(CORE_MODULES:%=%.core)
144ERL_DUMMY_FILES= $(CORE_MODULES:%=%.erl)
145
146##TARGET_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR))
147##INSTALL_PROGS= $(TARGET_FILES)
148
149EMAKEFILE=Emakefile
150
151# ----------------------------------------------------
152# Release directory specification
153# ----------------------------------------------------
154RELSYSDIR = $(RELEASE_PATH)/compiler_test
155
156# ----------------------------------------------------
157# FLAGS
158# ----------------------------------------------------
159
160ERL_MAKE_FLAGS +=
161ERL_COMPILE_FLAGS += +clint +clint0 +ssalint
162
163EBIN = .
164
165# ----------------------------------------------------
166# Targets
167# ----------------------------------------------------
168
169DISABLE_SSA_OPT = +no_bool_opt +no_share_opt +no_bsm_opt +no_fun_opt +no_ssa_opt +no_recv_opt
170
171make_emakefile: $(NO_OPT_ERL_FILES) $(POST_OPT_ERL_FILES) $(NO_SSA_OPT_ERL_FILES) \
172  $(NO_CORE_OPT_ERL_FILES) $(INLINE_ERL_FILES) $(R21_ERL_FILES) \
173  $(NO_MOD_OPT_ERL_FILES) $(NO_TYPE_OPT_ERL_FILES) \
174  $(DIALYZER_ERL_FILES)
175	$(ERL_TOP)/make/make_emakefile $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) \
176	  > $(EMAKEFILE)
177	$(ERL_TOP)/make/make_emakefile +no_copt $(DISABLE_SSA_OPT) +no_postopt \
178	  $(ERL_COMPILE_FLAGS) -o$(EBIN) $(NO_OPT_MODULES) >> $(EMAKEFILE)
179	$(ERL_TOP)/make/make_emakefile $(DISABLE_SSA_OPT) $(ERL_COMPILE_FLAGS) \
180	  -o$(EBIN) $(NO_SSA_OPT_MODULES) >> $(EMAKEFILE)
181	$(ERL_TOP)/make/make_emakefile +no_copt $(DISABLE_SSA_OPT) $(ERL_COMPILE_FLAGS) \
182	  -o$(EBIN) $(POST_OPT_MODULES) >> $(EMAKEFILE)
183	$(ERL_TOP)/make/make_emakefile +no_copt $(ERL_COMPILE_FLAGS) \
184	  -o$(EBIN) $(NO_CORE_OPT_MODULES) >> $(EMAKEFILE)
185	$(ERL_TOP)/make/make_emakefile +inline $(ERL_COMPILE_FLAGS) \
186	  -o$(EBIN) $(INLINE_MODULES) >> $(EMAKEFILE)
187	$(ERL_TOP)/make/make_emakefile +r21 $(ERL_COMPILE_FLAGS) \
188	  -o$(EBIN) $(R21_MODULES) >> $(EMAKEFILE)
189	$(ERL_TOP)/make/make_emakefile +no_module_opt $(ERL_COMPILE_FLAGS) \
190	  -o$(EBIN) $(NO_MOD_OPT_MODULES) >> $(EMAKEFILE)
191	$(ERL_TOP)/make/make_emakefile +from_core $(ERL_COMPILE_FLAGS) \
192	  -o$(EBIN) $(CORE_MODULES) >> $(EMAKEFILE)
193	$(ERL_TOP)/make/make_emakefile +no_type_opt $(ERL_COMPILE_FLAGS) \
194	  -o$(EBIN) $(NO_TYPE_OPT_MODULES) >> $(EMAKEFILE)
195	$(ERL_TOP)/make/make_emakefile +dialyzer $(ERL_COMPILE_FLAGS) \
196	  -o$(EBIN) $(DIALYZER_MODULES) >> $(EMAKEFILE)
197
198tests debug opt: make_emakefile
199	erl $(ERL_MAKE_FLAGS) -make
200
201clean:
202	rm -f $(EMAKEFILE)
203	rm -f $(TARGET_FILES)
204	rm -f core
205
206docs:
207
208# ----------------------------------------------------
209# Special targets
210# ----------------------------------------------------
211
212%_no_opt_SUITE.erl: %_SUITE.erl
213	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
214
215%_no_ssa_opt_SUITE.erl: %_SUITE.erl
216	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
217
218%_post_opt_SUITE.erl: %_SUITE.erl
219	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
220
221%_no_copt_SUITE.erl: %_SUITE.erl
222	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
223
224%_inline_SUITE.erl: %_SUITE.erl
225	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
226
227%_r21_SUITE.erl: %_SUITE.erl
228	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
229
230%_no_module_opt_SUITE.erl: %_SUITE.erl
231	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
232
233%_no_type_opt_SUITE.erl: %_SUITE.erl
234	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
235
236%_dialyzer_SUITE.erl: %_SUITE.erl
237	sed -e 's;-module($(basename $<));-module($(basename $@));' $< > $@
238
239# ----------------------------------------------------
240# Release Target
241# ----------------------------------------------------
242include $(ERL_TOP)/make/otp_release_targets.mk
243
244release_spec: opt
245
246release_tests_spec: make_emakefile
247	$(INSTALL_DIR) "$(RELSYSDIR)"
248	$(INSTALL_DATA) compiler.spec compiler.cover \
249		$(EMAKEFILE) $(ERL_FILES) "$(RELSYSDIR)"
250	$(INSTALL_DATA) $(NO_OPT_ERL_FILES) $(POST_OPT_ERL_FILES) \
251		$(INLINE_ERL_FILES) $(R21_ERL_FILES) \
252		$(NO_CORE_OPT_ERL_FILES) \
253		$(NO_MOD_OPT_ERL_FILES) \
254		$(NO_SSA_OPT_ERL_FILES) \
255	        $(NO_TYPE_OPT_ERL_FILES) \
256	        $(DIALYZER_ERL_FILES) "$(RELSYSDIR)"
257	$(INSTALL_DATA) $(CORE_FILES) "$(RELSYSDIR)"
258	for file in $(ERL_DUMMY_FILES); do \
259	    module=`basename $$file .erl`; \
260	    echo "-module($$module). %% dummy .erl file" >$$file; \
261        done
262	$(INSTALL_DATA) $(ERL_DUMMY_FILES) "$(RELSYSDIR)"
263	rm $(ERL_DUMMY_FILES)
264	chmod -R u+w "$(RELSYSDIR)"
265	@tar cf - *_SUITE_data property_test | (cd "$(RELSYSDIR)"; tar xf -)
266
267release_docs_spec:
268