1#
2# %CopyrightBegin%
3#
4# Copyright Ericsson AB 1997-2016. 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#
21# Copyright (C) 1997, Ericsson Telecommunications
22# Author: Kenneth Lundin
23#
24include $(ERL_TOP)/make/target.mk
25include $(ERL_TOP)/make/$(TARGET)/otp.mk
26
27# ----------------------------------------------------
28# Application version
29# ----------------------------------------------------
30include ../vsn.mk
31VSN=$(ASN1_VSN)
32
33# ----------------------------------------------------
34# Release directory specification
35# ----------------------------------------------------
36RELSYSDIR = $(RELEASE_PATH)/lib/asn1-$(VSN)
37
38
39
40
41#
42# Common Macros
43#
44
45EBIN = ../ebin
46
47EVAL_CT_MODULES = asn1ct_eval_ext
48
49CT_MODULES= \
50	asn1ct \
51	asn1ct_check \
52	asn1_db \
53	asn1ct_pretty_format \
54	asn1ct_func \
55	asn1ct_gen \
56	asn1ct_gen_check \
57	asn1ct_gen_per \
58	asn1ct_name \
59	asn1ct_constructed_per \
60	asn1ct_constructed_ber_bin_v2 \
61	asn1ct_gen_ber_bin_v2 \
62	asn1ct_imm \
63	asn1ct_rtt \
64	asn1ct_value \
65	asn1ct_tok \
66	asn1ct_parser2 \
67	asn1ct_table \
68	$(EVAL_CT_MODULES)
69
70RT_MODULES= \
71	asn1rt_nif
72
73MODULES= $(CT_MODULES) $(RT_MODULES)
74
75ERL_FILES = $(MODULES:%=%.erl)
76
77TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
78
79GENERATED_PARSER = $(PARSER_MODULE:%=%.erl)
80
81# internal hrl file
82HRL_FILES = asn1_records.hrl
83
84APP_FILE = asn1.app
85APPUP_FILE = asn1.appup
86
87APP_SRC = $(APP_FILE).src
88APP_TARGET = $(EBIN)/$(APP_FILE)
89
90APPUP_SRC = $(APPUP_FILE).src
91APPUP_TARGET = $(EBIN)/$(APPUP_FILE)
92
93EXAMPLES = \
94	../examples/P-Record.asn
95
96# ----------------------------------------------------
97# FLAGS
98# ----------------------------------------------------
99
100ifeq ($(USE_ASN1_HIPE),true)
101ERL_COMPILE_FLAGS += +native
102endif
103
104ERL_COMPILE_FLAGS += \
105	-I$(ERL_TOP)/lib/stdlib \
106	-Werror
107
108YRL_FLAGS =
109
110# ----------------------------------------------------
111# Targets
112# ----------------------------------------------------
113
114debug opt: $(TARGET_FILES) $(APP_TARGET) $(APPUP_TARGET)
115
116
117clean:
118	rm -f $(TARGET_FILES) $(APP_TARGET) $(APPUP_TARGET) $(GENERATED_PARSER)
119	rm -f core *~
120
121docs:
122
123
124info:
125	@echo "PARSER_SRC: $(PARSER_SRC)"
126	@echo "INSTALL_DATA: $(INSTALL_DATA)"
127# ----------------------------------------------------
128# Special Build Targets
129# ----------------------------------------------------
130
131$(EBIN)/asn1ct.$(EMULATOR):asn1ct.erl
132	 $(V_ERLC) -b$(EMULATOR) -o$(EBIN) $(ERL_COMPILE_FLAGS) -Dvsn=\"$(VSN)\" $<
133
134$(EBIN)/asn1ct_func.$(EMULATOR): asn1ct_func.erl
135	 $(V_ERLC) -o$(EBIN) $(ERL_COMPILE_FLAGS) -I../rt_templates $<
136
137asn1ct_eval_%.erl: asn1ct_eval_%.funcs
138	$(gen_verbose)erl -pa $(EBIN) -noshell -noinput \
139	   -run prepare_templates gen_asn1ct_eval $<
140
141$(APP_TARGET): $(APP_SRC) ../vsn.mk
142	$(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@
143
144$(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk
145	$(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@
146
147
148# ----------------------------------------------------
149# Release Target
150# ----------------------------------------------------
151include $(ERL_TOP)/make/otp_release_targets.mk
152
153release_spec: opt
154	$(INSTALL_DIR) "$(RELSYSDIR)/ebin"
155	$(INSTALL_DATA) $(TARGET_FILES) $(APP_TARGET) $(APPUP_TARGET) "$(RELSYSDIR)/ebin"
156	$(INSTALL_DIR) "$(RELSYSDIR)/src"
157	$(INSTALL_DATA)  $(ERL_FILES) $(HRL_FILES) $(APP_SRC) $(APPUP_SRC) "$(RELSYSDIR)/src"
158	$(INSTALL_DIR) "$(RELSYSDIR)/examples"
159	$(INSTALL_DATA) $(EXAMPLES) "$(RELSYSDIR)/examples"
160
161# there are no include files to be used by the user
162#$(INSTALL_DIR) "$(RELSYSDIR)/include"
163#$(INSTALL_DATA) $(HRL_FILES) "$(RELSYSDIR)/include"
164
165release_docs_spec:
166
167#
168# Run-time library template files.
169#
170
171RT_TEMPLATES = asn1rtt_check \
172	       asn1rtt_ext \
173	       asn1rtt_per_common \
174               asn1rtt_real_common \
175	       asn1rtt_ber \
176	       asn1rtt_per \
177	       asn1rtt_uper
178
179RT_TEMPLATES_ERL = $(RT_TEMPLATES:%=%.erl)
180RT_TEMPLATES_TARGET = $(RT_TEMPLATES:%=%.$(EMULATOR))
181
182asn1ct_rtt.erl: prepare_templates.$(EMULATOR) $(RT_TEMPLATES_TARGET)
183	$(gen_verbose)erl -noshell -noinput -run prepare_templates gen_asn1ct_rtt \
184           $(RT_TEMPLATES_TARGET)
185
186prepare_templates.$(EMULATOR): prepare_templates.erl
187	$(V_ERLC) prepare_templates.erl
188
189asn1rtt_%.$(EMULATOR): asn1rtt_%.erl
190	$(V_ERLC) +debug_info $<
191
192$(EVAL_CT_MODULES:%=%.erl): prepare_templates.$(EMULATOR) \
193			    $(EBIN)/asn1ct_rtt.$(EMULATOR)
194
195#
196# Dependencies
197#
198
199$(EBIN)/asn1_app.beam: asn1_app.erl
200$(EBIN)/asn1_db.beam: asn1_db.erl
201$(EBIN)/asn1ct.beam: asn1ct.erl asn1_records.hrl
202$(EBIN)/asn1ct_check.beam: asn1ct_check.erl asn1_records.hrl
203$(EBIN)/asn1ct_constructed_ber_bin_v2.beam: asn1ct_constructed_ber_bin_v2.erl \
204  asn1_records.hrl
205$(EBIN)/asn1ct_constructed_per.beam: asn1ct_constructed_per.erl asn1_records.hrl
206$(EBIN)/asn1ct_func.beam: asn1ct_func.erl
207$(EBIN)/asn1ct_gen.beam: asn1ct_gen.erl asn1_records.hrl
208$(EBIN)/asn1ct_gen_ber_bin_v2.beam: asn1ct_gen_ber_bin_v2.erl asn1_records.hrl
209$(EBIN)/asn1ct_gen_check.beam: asn1_records.hrl
210$(EBIN)/asn1ct_gen_per.beam: asn1ct_gen_per.erl asn1_records.hrl
211$(EBIN)/asn1ct_gen_per_rt2ct.beam: asn1ct_gen_per_rt2ct.erl asn1_records.hrl
212$(EBIN)/asn1ct_imm.beam: asn1ct_imm.erl
213$(EBIN)/asn1ct_name.beam: asn1ct_name.erl
214$(EBIN)/asn1ct_parser2.beam: asn1ct_parser2.erl asn1_records.hrl
215$(EBIN)/asn1ct_pretty_format.beam: asn1ct_pretty_format.erl
216$(EBIN)/asn1ct_table.beam: asn1ct_table.erl
217$(EBIN)/asn1ct_tok.beam: asn1ct_tok.erl
218$(EBIN)/asn1ct_value.beam: asn1ct_value.erl asn1_records.hrl
219$(EBIN)/asn1rt.beam: asn1rt.erl
220$(EBIN)/asn1rt_ber_bin.beam: asn1rt_ber_bin.erl asn1_records.hrl
221$(EBIN)/asn1rt_ber_bin_v2.beam: asn1rt_ber_bin_v2.erl
222$(EBIN)/asn1rt_check.beam: asn1rt_check.erl
223$(EBIN)/asn1rt_nif.beam: asn1rt_nif.erl
224$(EBIN)/asn1rt_per_bin_rt2ct.beam: asn1rt_per_bin_rt2ct.erl asn1_records.hrl
225$(EBIN)/asn1rt_uper_bin.beam: asn1rt_uper_bin.erl asn1_records.hrl
226