@@ -21,7 +21,7 @@ GIT_TAG = $(strip $(shell head="$(call GIT_REVISION)"; git tag --points-at $$hea
2121SOURCE_DATE_EPOCH_PATH = lib/elixir/tmp/ebin_reproducible
2222SOURCE_DATE_EPOCH_FILE = $(SOURCE_DATE_EPOCH_PATH ) /SOURCE_DATE_EPOCH
2323
24- .PHONY : install compile erlang elixir unicode app build_plt clean_plt dialyze test check_reproducible clean clean_residual_files format install_man clean_man docs Docs.zip Precompiled.zip zips
24+ .PHONY : install install_man build_plt clean_plt dialyze test check_reproducible clean clean_elixir clean_man format docs Docs.zip Precompiled.zip zips
2525.NOTPARALLEL :
2626
2727# ==> Functions
@@ -65,39 +65,42 @@ endef
6565# ==> Compilation tasks
6666
6767APP := lib/elixir/ebin/elixir.app
68+ EEX := lib/eex/ebin/Elixir.EEx.beam
69+ ELIXIR := lib/elixir/ebin/elixir.beam
6870PARSER := lib/elixir/src/elixir_parser.erl
6971KERNEL := lib/elixir/ebin/Elixir.Kernel.beam
7072UNICODE := lib/elixir/ebin/Elixir.String.Unicode.beam
7173
7274default : compile
7375
74- compile : erlang $( APP ) elixir
76+ compile : erlang elixir
7577
76- erlang : $(PARSER )
78+ erlang : $(ELIXIR )
79+ $(ELIXIR ) : $(PARSER ) lib/elixir/src/*
7780 $(Q ) if [ ! -f $( APP) ]; then $( call CHECK_ERLANG_RELEASE) ; fi
7881 $(Q ) cd lib/elixir && mkdir -p ebin && $(ERL_MAKE )
82+ $(Q ) $(GENERATE_APP ) $(VERSION )
7983
8084$(PARSER ) : lib/elixir/src/elixir_parser.yrl
8185 $(Q ) erlc -o $@ +' {verbose,true}' +' {report,true}' $<
8286
8387# Since Mix depends on EEx and EEx depends on Mix,
8488# we first compile EEx without the .app file,
8589# then Mix, and then compile EEx fully
86- elixir : stdlib lib/eex/ebin/Elixir.EEx.beam mix ex_unit logger eex iex
90+ elixir : stdlib $(EEX ) mix ex_unit logger eex iex
91+ stdlib : $(KERNEL ) $(UNICODE ) $(APP )
8792
88- stdlib : lib/elixir/lib/* .ex lib/elixir/lib/* /* .ex lib/elixir/lib/* /* /* .ex VERSION
93+ $( KERNEL ) : lib/elixir/src/ * lib/elixir/lib/* .ex lib/elixir/lib/* /* .ex lib/elixir/lib/* /* /* .ex VERSION
8994 $(Q ) if [ ! -f $( KERNEL) ]; then \
9095 echo " ==> bootstrap (compile)" ; \
9196 $(ERL ) -s elixir_compiler bootstrap -s erlang halt; \
97+ " $( MAKE) " unicode; \
9298 fi
93- $(Q ) " $( MAKE) " unicode
9499 @ echo " ==> elixir (compile)" ;
95100 $(Q ) cd lib/elixir && ../../$(ELIXIRC ) " lib/**/*.ex" -o ebin;
96- $(Q ) " $( MAKE) " app
97101
98- app : $(APP )
99102$(APP ) : lib/elixir/src/elixir.app.src lib/elixir/ebin VERSION $(GENERATE_APP )
100- $(Q ) $(GENERATE_APP ) $< $@ $ (VERSION )
103+ $(Q ) $(GENERATE_APP ) $(VERSION )
101104
102105unicode : $(UNICODE )
103106$(UNICODE ) : lib/elixir/unicode/*
@@ -143,6 +146,7 @@ check_reproducible: compile
143146 $(Q ) mv lib/iex/ebin/* lib/iex/tmp/ebin_reproducible/
144147 $(Q ) mv lib/logger/ebin/* lib/logger/tmp/ebin_reproducible/
145148 $(Q ) mv lib/mix/ebin/* lib/mix/tmp/ebin_reproducible/
149+ $(Q ) rm -rf lib/* /ebin
146150 SOURCE_DATE_EPOCH=$(call READ_SOURCE_DATE_EPOCH) " $( MAKE) " compile
147151 $(Q ) echo " Diffing..."
148152 $(Q ) bin/elixir lib/elixir/scripts/diff.exs lib/elixir/ebin/ lib/elixir/tmp/ebin_reproducible/
@@ -153,16 +157,10 @@ check_reproducible: compile
153157 $(Q ) bin/elixir lib/elixir/scripts/diff.exs lib/mix/ebin/ lib/mix/tmp/ebin_reproducible/
154158 $(Q ) echo " Builds are reproducible"
155159
156- clean :
160+ clean : clean_man
157161 rm -rf ebin
158162 rm -rf lib/* /ebin
159163 rm -rf $(PARSER )
160- $(Q ) " $( MAKE) " clean_residual_files
161-
162- clean_elixir :
163- $(Q ) rm -f lib/* /ebin/Elixir.* .beam
164-
165- clean_residual_files :
166164 rm -rf lib/* /_build/
167165 rm -rf lib/* /tmp/
168166 rm -rf lib/elixir/test/ebin/
@@ -172,7 +170,9 @@ clean_residual_files:
172170 rm -rf lib/mix/test/fixtures/git_sparse_repo/
173171 rm -rf lib/mix/test/fixtures/archive/ebin/
174172 rm -f erl_crash.dump
175- $(Q ) " $( MAKE) " clean_man
173+
174+ clean_elixir :
175+ $(Q ) rm -f lib/* /ebin/Elixir.* .beam
176176
177177# ==> Documentation tasks
178178
0 commit comments