1# 2# %CopyrightBegin% 3# 4# Copyright Ericsson AB 1996-2020. All Rights Reserved. 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17# 18# %CopyrightEnd% 19# 20 21ifdef BOOTSTRAP_COMPILER 22EGEN=$(BOOTSTRAP_COMPILER)/egen 23EBIN=$(BOOTSTRAP_COMPILER)/ebin 24else 25ifdef BOOTSTRAP 26EGEN=$(BOOTSTRAP_TOP)/lib/compiler/egen 27EBIN=$(BOOTSTRAP_TOP)/lib/compiler/ebin 28endif 29endif 30 31include $(ERL_TOP)/make/target.mk 32include $(ERL_TOP)/make/$(TARGET)/otp.mk 33 34# ---------------------------------------------------- 35# Application version 36# ---------------------------------------------------- 37include ../vsn.mk 38VSN=$(COMPILER_VSN) 39 40# ---------------------------------------------------- 41# Release directory specification 42# ---------------------------------------------------- 43RELSYSDIR = $(RELEASE_PATH)/lib/compiler-$(VSN) 44 45# ---------------------------------------------------- 46# Target Specs 47# ---------------------------------------------------- 48MODULES = \ 49 beam_a \ 50 beam_asm \ 51 beam_block \ 52 beam_call_types \ 53 beam_clean \ 54 beam_dict \ 55 beam_digraph \ 56 beam_disasm \ 57 beam_flatten \ 58 beam_jump \ 59 beam_listing \ 60 beam_opcodes \ 61 beam_peep \ 62 beam_ssa \ 63 beam_ssa_bc_size \ 64 beam_ssa_bool \ 65 beam_ssa_bsm \ 66 beam_ssa_codegen \ 67 beam_ssa_dead \ 68 beam_ssa_funs \ 69 beam_ssa_lint \ 70 beam_ssa_opt \ 71 beam_ssa_pp \ 72 beam_ssa_pre_codegen \ 73 beam_ssa_recv \ 74 beam_ssa_share \ 75 beam_ssa_throw \ 76 beam_ssa_type \ 77 beam_kernel_to_ssa \ 78 beam_trim \ 79 beam_types \ 80 beam_utils \ 81 beam_validator \ 82 beam_z \ 83 cerl \ 84 cerl_clauses \ 85 cerl_inline \ 86 cerl_trees \ 87 compile \ 88 core_lib \ 89 core_lint \ 90 core_parse \ 91 core_pp \ 92 core_scan \ 93 erl_bifs \ 94 rec_env \ 95 sys_core_alias \ 96 sys_core_bsm \ 97 sys_core_fold \ 98 sys_core_fold_lists \ 99 sys_core_inline \ 100 sys_core_prepare \ 101 sys_messages \ 102 sys_pre_attributes \ 103 v3_core \ 104 v3_kernel \ 105 v3_kernel_pp 106 107BEAM_H = $(wildcard ../priv/beam_h/*.h) 108 109HRL_FILES= \ 110 beam_disasm.hrl \ 111 beam_ssa_opt.hrl \ 112 beam_ssa.hrl \ 113 beam_types.hrl \ 114 core_parse.hrl \ 115 v3_kernel.hrl 116 117YRL_FILE = core_parse.yrl 118 119EXTRA_FILES= $(EGEN)/beam_opcodes.hrl 120 121ERL_FILES= $(MODULES:%=%.erl) 122INSTALL_FILES= $(MODULES:%=$(EBIN)/%.$(EMULATOR)) $(APP_TARGET) $(APPUP_TARGET) 123TARGET_FILES= $(INSTALL_FILES) 124 125APP_FILE= compiler.app 126APP_SRC= $(APP_FILE).src 127APP_TARGET= $(EBIN)/$(APP_FILE) 128 129APPUP_FILE= compiler.appup 130APPUP_SRC= $(APPUP_FILE).src 131APPUP_TARGET= $(EBIN)/$(APPUP_FILE) 132 133# ---------------------------------------------------- 134# FLAGS 135# ---------------------------------------------------- 136 137ERL_COMPILE_FLAGS += -Werror 138ERL_COMPILE_FLAGS += +inline +warn_unused_import \ 139 -I../../stdlib/include -I$(EGEN) -W +warn_missing_spec 140 141# ---------------------------------------------------- 142# Targets 143# ---------------------------------------------------- 144 145debug opt: $(TARGET_FILES) 146 147docs: 148 149clean: 150 rm -f $(TARGET_FILES) 151 rm -f $(EGEN)/beam_opcodes.erl $(EGEN)/beam_opcodes.hrl 152 rm -f $(EGEN)/core_parse.erl 153 rm -f core 154 155# ---------------------------------------------------- 156# Special Build Targets 157# ---------------------------------------------------- 158 159$(APP_TARGET): $(APP_SRC) ../vsn.mk 160 $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ 161 162$(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk 163 $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ 164 165$(EGEN)/beam_opcodes.erl $(EGEN)/beam_opcodes.hrl: genop.tab 166 $(gen_verbose)$(PERL) $(ERL_TOP)/erts/emulator/utils/beam_makeops -compiler -outdir $(EGEN) $< 167 168$(EBIN)/beam_asm.beam: $(ESRC)/beam_asm.erl $(EGEN)/beam_opcodes.hrl 169 $(V_ERLC) $(ERL_COMPILE_FLAGS) -DCOMPILER_VSN='"$(VSN)"' -o$(EBIN) $< 170 171$(EBIN)/cerl_inline.beam: $(ESRC)/cerl_inline.erl 172 $(V_ERLC) $(ERL_COMPILE_FLAGS) +nowarn_shadow_vars -o$(EBIN) $< 173 174# Inlining core_parse is slow and has no benefit. 175$(EBIN)/core_parse.beam: $(EGEN)/core_parse.erl 176 $(V_ERLC) $(subst +inline,,$(ERL_COMPILE_FLAGS)) -o$(EBIN) $< 177 178# ---------------------------------------------------- 179# Release Target 180# ---------------------------------------------------- 181include $(ERL_TOP)/make/otp_release_targets.mk 182 183release_spec: opt 184 $(INSTALL_DIR) "$(RELSYSDIR)/src" 185 $(INSTALL_DATA) $(ERL_FILES) $(HRL_FILES) $(EXTRA_FILES) \ 186 $(YRL_FILE) "$(RELSYSDIR)/src" 187 $(INSTALL_DIR) "$(RELSYSDIR)/ebin" 188 $(INSTALL_DATA) $(INSTALL_FILES) "$(RELSYSDIR)/ebin" 189 190release_docs_spec: 191 192# ---------------------------------------------------- 193# Dependencies -- alphabetically, please 194# ---------------------------------------------------- 195 196$(EBIN)/beam_call_types.beam: beam_types.hrl 197$(EBIN)/beam_disasm.beam: $(EGEN)/beam_opcodes.hrl beam_disasm.hrl 198$(EBIN)/beam_listing.beam: core_parse.hrl v3_kernel.hrl beam_ssa.hrl 199$(EBIN)/beam_kernel_to_ssa.beam: v3_kernel.hrl beam_ssa.hrl 200$(EBIN)/beam_ssa.beam: beam_ssa.hrl 201$(EBIN)/beam_ssa_bsm.beam: beam_ssa.hrl 202$(EBIN)/beam_ssa_codegen.beam: beam_ssa.hrl 203$(EBIN)/beam_ssa_dead.beam: beam_ssa.hrl 204$(EBIN)/beam_ssa_funs.beam: beam_ssa.hrl 205$(EBIN)/beam_ssa_lint.beam: beam_ssa.hrl 206$(EBIN)/beam_ssa_opt.beam: beam_ssa.hrl 207$(EBIN)/beam_ssa_pp.beam: beam_ssa.hrl 208$(EBIN)/beam_ssa_pre_codegen.beam: beam_ssa.hrl 209$(EBIN)/beam_ssa_recv.beam: beam_ssa.hrl 210$(EBIN)/beam_ssa_share.beam: beam_ssa.hrl 211$(EBIN)/beam_ssa_throw.beam: beam_ssa.hrl 212$(EBIN)/beam_ssa_type.beam: beam_ssa.hrl beam_types.hrl 213$(EBIN)/beam_types.beam: beam_types.hrl 214$(EBIN)/beam_validator.beam: beam_types.hrl 215$(EBIN)/cerl.beam: core_parse.hrl 216$(EBIN)/compile.beam: core_parse.hrl ../../stdlib/include/erl_compile.hrl 217$(EBIN)/core_lib.beam: core_parse.hrl 218$(EBIN)/core_lint.beam: core_parse.hrl 219$(EBIN)/core_parse.beam: core_parse.hrl $(EGEN)/core_parse.erl 220$(EBIN)/core_pp.beam: core_parse.hrl 221$(EBIN)/sys_core_alias.beam: core_parse.hrl 222$(EBIN)/sys_core_fold.beam: core_parse.hrl 223$(EBIN)/sys_core_fold_lists.beam: core_parse.hrl 224$(EBIN)/sys_core_inline.beam: core_parse.hrl 225$(EBIN)/v3_core.beam: core_parse.hrl 226$(EBIN)/v3_kernel.beam: core_parse.hrl v3_kernel.hrl 227$(EBIN)/v3_kernel_pp.beam: v3_kernel.hrl 228