1#
2# iASL compiler/disassembler
3#
4
5#
6# Note: This makefile is intended to be used from within the native
7# ACPICA directory structure, from under generate/unix. It specifically
8# places all object files in a generate/unix subdirectory, not within
9# the various ACPICA source directories. This prevents collisions
10# between different compilations of the same source file with different
11# compile options, and prevents pollution of the source code.
12#
13include ../Makefile.config
14FINAL_PROG = ../$(BINDIR)/iasl
15PROG = $(OBJDIR)/iasl
16
17#
18# Search paths for source files
19#
20vpath %.c \
21    $(ASL_COMPILER)\
22    $(ACPICA_DEBUGGER)\
23    $(ACPICA_DISASSEMBLER)\
24    $(ACPICA_DISPATCHER)\
25    $(ACPICA_EXECUTER)\
26    $(ACPICA_NAMESPACE)\
27    $(ACPICA_PARSER)\
28    $(ACPICA_TABLES)\
29    $(ACPICA_UTILITIES)\
30    $(ACPICA_COMMON)\
31    $(ACPICA_OSL)
32
33HEADERS = \
34    $(wildcard $(ASL_COMPILER)/*.h)\
35    $(OBJDIR)/aslcompiler.y.h\
36    $(OBJDIR)/dtcompilerparser.y.h\
37    $(OBJDIR)/dtparser.y.h\
38    $(OBJDIR)/prparser.y.h
39
40OBJECTS = \
41	$(OBJDIR)/aslcompilerlex.o\
42	$(OBJDIR)/aslcompilerparse.o\
43	$(OBJDIR)/dtcompilerparserlex.o\
44	$(OBJDIR)/dtcompilerparserparse.o\
45	$(OBJDIR)/dtparserlex.o\
46	$(OBJDIR)/dtparserparse.o\
47	$(OBJDIR)/prparserlex.o\
48	$(OBJDIR)/prparserparse.o\
49	$(OBJDIR)/acfileio.o\
50	$(OBJDIR)/adfile.o\
51	$(OBJDIR)/adisasm.o\
52	$(OBJDIR)/adwalk.o\
53	$(OBJDIR)/ahids.o\
54	$(OBJDIR)/ahpredef.o\
55	$(OBJDIR)/ahtable.o\
56	$(OBJDIR)/ahuuids.o\
57	$(OBJDIR)/aslallocate.o\
58	$(OBJDIR)/aslanalyze.o\
59	$(OBJDIR)/aslascii.o\
60	$(OBJDIR)/aslbtypes.o\
61	$(OBJDIR)/aslcache.o\
62	$(OBJDIR)/aslcodegen.o\
63	$(OBJDIR)/aslcompile.o\
64	$(OBJDIR)/asldebug.o\
65	$(OBJDIR)/aslerror.o\
66	$(OBJDIR)/aslexternal.o\
67	$(OBJDIR)/aslfiles.o\
68	$(OBJDIR)/aslfileio.o\
69	$(OBJDIR)/aslfold.o\
70	$(OBJDIR)/aslhelp.o\
71	$(OBJDIR)/aslhex.o\
72	$(OBJDIR)/asllength.o\
73	$(OBJDIR)/asllisting.o\
74	$(OBJDIR)/asllistsup.o\
75	$(OBJDIR)/aslload.o\
76	$(OBJDIR)/asllookup.o\
77	$(OBJDIR)/aslmain.o\
78	$(OBJDIR)/aslmap.o\
79	$(OBJDIR)/aslmapenter.o\
80	$(OBJDIR)/aslmapoutput.o\
81	$(OBJDIR)/aslmaputils.o\
82	$(OBJDIR)/aslmessages.o\
83	$(OBJDIR)/aslmethod.o\
84	$(OBJDIR)/aslnamesp.o\
85	$(OBJDIR)/asloffset.o\
86	$(OBJDIR)/aslopcodes.o\
87	$(OBJDIR)/asloperands.o\
88	$(OBJDIR)/aslopt.o\
89	$(OBJDIR)/asloptions.o\
90	$(OBJDIR)/aslparseop.o\
91	$(OBJDIR)/aslpredef.o\
92	$(OBJDIR)/aslprepkg.o\
93	$(OBJDIR)/aslprintf.o\
94	$(OBJDIR)/aslprune.o\
95	$(OBJDIR)/aslresource.o\
96	$(OBJDIR)/aslrestype1.o\
97	$(OBJDIR)/aslrestype1i.o\
98	$(OBJDIR)/aslrestype2.o\
99	$(OBJDIR)/aslrestype2d.o\
100	$(OBJDIR)/aslrestype2e.o\
101	$(OBJDIR)/aslrestype2q.o\
102	$(OBJDIR)/aslrestype2s.o\
103	$(OBJDIR)/aslrestype2w.o\
104	$(OBJDIR)/aslstartup.o\
105	$(OBJDIR)/aslstubs.o\
106	$(OBJDIR)/aslpld.o\
107	$(OBJDIR)/asltransform.o\
108	$(OBJDIR)/asltree.o\
109	$(OBJDIR)/aslutils.o\
110	$(OBJDIR)/asluuid.o\
111	$(OBJDIR)/aslwalks.o\
112	$(OBJDIR)/aslxref.o\
113	$(OBJDIR)/aslxrefout.o\
114	$(OBJDIR)/cvcompiler.o\
115	$(OBJDIR)/cvdisasm.o\
116	$(OBJDIR)/cvparser.o\
117	$(OBJDIR)/cmfsize.o\
118	$(OBJDIR)/dbfileio.o\
119	$(OBJDIR)/dmbuffer.o\
120	$(OBJDIR)/dmcstyle.o\
121	$(OBJDIR)/dmdeferred.o\
122	$(OBJDIR)/dmextern.o\
123	$(OBJDIR)/dmnames.o\
124	$(OBJDIR)/dmopcode.o\
125	$(OBJDIR)/dmresrc.o\
126	$(OBJDIR)/dmresrcl.o\
127	$(OBJDIR)/dmresrcl2.o\
128	$(OBJDIR)/dmresrcs.o\
129	$(OBJDIR)/dmrestag.o\
130	$(OBJDIR)/dmswitch.o\
131	$(OBJDIR)/dmtable.o\
132	$(OBJDIR)/dmtables.o\
133	$(OBJDIR)/dmtbdump.o\
134	$(OBJDIR)/dmtbdump1.o\
135	$(OBJDIR)/dmtbdump2.o\
136	$(OBJDIR)/dmtbdump3.o\
137	$(OBJDIR)/dmtbinfo.o\
138	$(OBJDIR)/dmtbinfo1.o\
139	$(OBJDIR)/dmtbinfo2.o\
140	$(OBJDIR)/dmtbinfo3.o\
141	$(OBJDIR)/dmutils.o\
142	$(OBJDIR)/dmwalk.o\
143	$(OBJDIR)/dsargs.o\
144	$(OBJDIR)/dscontrol.o\
145	$(OBJDIR)/dsfield.o\
146	$(OBJDIR)/dsobject.o\
147	$(OBJDIR)/dsopcode.o\
148	$(OBJDIR)/dspkginit.o\
149	$(OBJDIR)/dsutils.o\
150	$(OBJDIR)/dswexec.o\
151	$(OBJDIR)/dswload.o\
152	$(OBJDIR)/dswload2.o\
153	$(OBJDIR)/dswscope.o\
154	$(OBJDIR)/dswstate.o\
155	$(OBJDIR)/dtcompile.o\
156	$(OBJDIR)/dtexpress.o\
157	$(OBJDIR)/dtfield.o\
158	$(OBJDIR)/dtio.o\
159	$(OBJDIR)/dtsubtable.o\
160	$(OBJDIR)/dttable.o\
161	$(OBJDIR)/dttable1.o\
162	$(OBJDIR)/dttable2.o\
163	$(OBJDIR)/dttemplate.o\
164	$(OBJDIR)/dtutils.o\
165	$(OBJDIR)/exconcat.o\
166	$(OBJDIR)/exconvrt.o\
167	$(OBJDIR)/excreate.o\
168	$(OBJDIR)/exdump.o\
169	$(OBJDIR)/exmisc.o\
170	$(OBJDIR)/exmutex.o\
171	$(OBJDIR)/exnames.o\
172	$(OBJDIR)/exoparg1.o\
173	$(OBJDIR)/exoparg2.o\
174	$(OBJDIR)/exoparg3.o\
175	$(OBJDIR)/exoparg6.o\
176	$(OBJDIR)/exprep.o\
177	$(OBJDIR)/exregion.o\
178	$(OBJDIR)/exresnte.o\
179	$(OBJDIR)/exresolv.o\
180	$(OBJDIR)/exresop.o\
181	$(OBJDIR)/exstore.o\
182	$(OBJDIR)/exstoren.o\
183	$(OBJDIR)/exstorob.o\
184	$(OBJDIR)/exsystem.o\
185	$(OBJDIR)/exutils.o\
186	$(OBJDIR)/getopt.o\
187	$(OBJDIR)/nsaccess.o\
188	$(OBJDIR)/nsalloc.o\
189	$(OBJDIR)/nsdump.o\
190	$(OBJDIR)/nsnames.o\
191	$(OBJDIR)/nsobject.o\
192	$(OBJDIR)/nsparse.o\
193	$(OBJDIR)/nssearch.o\
194	$(OBJDIR)/nsutils.o\
195	$(OBJDIR)/nswalk.o\
196	$(OBJDIR)/nsxfobj.o\
197	$(OBJDIR)/osunixxf.o\
198	$(OBJDIR)/prexpress.o\
199	$(OBJDIR)/prmacros.o\
200	$(OBJDIR)/prscan.o\
201	$(OBJDIR)/prutils.o\
202	$(OBJDIR)/psargs.o\
203	$(OBJDIR)/psloop.o\
204	$(OBJDIR)/psobject.o\
205	$(OBJDIR)/psopcode.o\
206	$(OBJDIR)/psopinfo.o\
207	$(OBJDIR)/psparse.o\
208	$(OBJDIR)/psscope.o\
209	$(OBJDIR)/pstree.o\
210	$(OBJDIR)/psutils.o\
211	$(OBJDIR)/pswalk.o\
212	$(OBJDIR)/tbdata.o\
213	$(OBJDIR)/tbfadt.o\
214	$(OBJDIR)/tbinstal.o\
215	$(OBJDIR)/tbprint.o\
216	$(OBJDIR)/tbutils.o\
217	$(OBJDIR)/tbxface.o\
218	$(OBJDIR)/tbxfload.o\
219	$(OBJDIR)/utaddress.o\
220	$(OBJDIR)/utalloc.o\
221	$(OBJDIR)/utascii.o\
222	$(OBJDIR)/utbuffer.o\
223	$(OBJDIR)/utcache.o\
224	$(OBJDIR)/utcksum.o\
225	$(OBJDIR)/utcopy.o\
226	$(OBJDIR)/utdebug.o\
227	$(OBJDIR)/utdecode.o\
228	$(OBJDIR)/utdelete.o\
229	$(OBJDIR)/uterror.o\
230	$(OBJDIR)/utexcep.o\
231	$(OBJDIR)/utglobal.o\
232	$(OBJDIR)/uthex.o\
233	$(OBJDIR)/utinit.o\
234	$(OBJDIR)/utlock.o\
235	$(OBJDIR)/utmath.o\
236	$(OBJDIR)/utmisc.o\
237	$(OBJDIR)/utmutex.o\
238	$(OBJDIR)/utnonansi.o\
239	$(OBJDIR)/utobject.o\
240	$(OBJDIR)/utownerid.o\
241	$(OBJDIR)/utpredef.o\
242	$(OBJDIR)/utresdecode.o\
243	$(OBJDIR)/utresrc.o\
244	$(OBJDIR)/utstate.o\
245	$(OBJDIR)/utstrtoul64.o\
246	$(OBJDIR)/utstrsuppt.o\
247	$(OBJDIR)/utstring.o\
248	$(OBJDIR)/utuuid.o\
249	$(OBJDIR)/utxface.o\
250	$(OBJDIR)/utxferror.o
251
252INTERMEDIATES = \
253	$(OBJDIR)/aslcompiler.y\
254	$(OBJDIR)/aslcompilerlex.c\
255	$(OBJDIR)/aslcompilerparse.c\
256	$(OBJDIR)/dtparserlex.c\
257	$(OBJDIR)/dtparserparse.c\
258	$(OBJDIR)/dtcompilerparserlex.c\
259	$(OBJDIR)/dtcompilerparserparse.c\
260	$(OBJDIR)/prparserlex.c\
261	$(OBJDIR)/prparserparse.c
262
263MISC = \
264	$(OBJDIR)/aslcompiler.y.h\
265	$(OBJDIR)/dtcompilerparser.y.h\
266	$(OBJDIR)/dtparser.y.h\
267	$(OBJDIR)/prparser.y.h
268
269ASL_PARSER = \
270	$(ASL_COMPILER)/aslcstyle.y\
271	$(ASL_COMPILER)/aslhelpers.y\
272	$(ASL_COMPILER)/aslparser.y\
273	$(ASL_COMPILER)/aslprimaries.y\
274	$(ASL_COMPILER)/aslresources.y\
275	$(ASL_COMPILER)/aslrules.y\
276	$(ASL_COMPILER)/aslsupport.y\
277	$(ASL_COMPILER)/asltokens.y\
278	$(ASL_COMPILER)/asltypes.y
279
280ASL_LEXER = \
281	$(ASL_COMPILER)/aslcompiler.l\
282	$(ASL_COMPILER)/aslsupport.l\
283	$(OBJDIR)/aslcompiler.y.h
284
285
286#
287# Flags specific to iASL compiler
288#
289CFLAGS += \
290    -DACPI_ASL_COMPILER\
291    -I$(ASL_COMPILER)\
292    -I$(OBJDIR)
293
294ifeq ($(NOWERROR),TRUE)
295WERROR_FLAGS=
296else
297WERROR_FLAGS=-Werror
298endif
299
300#
301# Common Rules
302#
303include ../Makefile.rules
304
305#
306# Function to safely execute yacc:
307# Generate the output files to a temporary directory,
308# move the file to $(OBJDIR), and discard the directory.
309#
310safe_yacc = \
311	_d=`mktemp -d $(OBJDIR)/$(1).XXXXXX` &&\
312	cd $$_d &&\
313	$(YACC) $(YFLAGS) -v -d -p$(1) "$(abspath $(2))" &&\
314	cd - > /dev/null;\
315	mv $$_d/y.tab$(suffix $(3)) $(3);\
316	_r=$$?;\
317	rm -fr $$_d;\
318	exit $$_r
319
320#
321# Macro processing for iASL .y files
322#
323$(OBJDIR)/aslcompiler.y :      $(ASL_PARSER)
324	@echo "- " $(MACROPROC) "          Preprocess main iASL parser"
325	@$(MACROPROC) $(MFLAGS) $(ASL_COMPILER)/aslparser.y > $@
326
327#
328# Parser and Lexer - intermediate C files
329#
330$(OBJDIR)/aslcompilerlex.c :   $(ASL_LEXER)
331	@echo "- " $(LEX) "        "$<
332	@$(LEX) $(LFLAGS) -PAslCompiler -o$@ $(ASL_COMPILER)/aslcompiler.l
333
334$(OBJDIR)/aslcompilerparse.c $(OBJDIR)/aslcompiler.y.h : $(OBJDIR)/aslcompiler.y
335	@echo "- " $(YACC) "       "$<
336	@$(call safe_yacc,AslCompiler,$<,$@)
337
338$(OBJDIR)/dtcompilerparserlex.c :      $(ASL_COMPILER)/dtcompilerparser.l $(OBJDIR)/dtcompilerparser.y.h
339	@echo "- " $(LEX) "        "$<
340	@$(LEX) $(DLFLAGS) -PDtCompilerParser -o$@ $<
341
342$(OBJDIR)/dtcompilerparserparse.c $(OBJDIR)/dtcompilerparser.y.h :       $(ASL_COMPILER)/dtcompilerparser.y
343	@echo "- " $(YACC) "       "$<
344	@$(call safe_yacc,DtCompilerParser,$<,$@)
345
346$(OBJDIR)/dtparserlex.c :      $(ASL_COMPILER)/dtparser.l $(OBJDIR)/dtparser.y.h
347	@echo "- " $(LEX) "        "$<
348	@$(LEX) $(DLFLAGS) -PDtParser -o$@ $<
349
350$(OBJDIR)/dtparserparse.c $(OBJDIR)/dtparser.y.h :       $(ASL_COMPILER)/dtparser.y
351	@echo "- " $(YACC) "       "$<
352	@$(call safe_yacc,DtParser,$<,$@)
353
354$(OBJDIR)/prparserlex.c :      $(ASL_COMPILER)/prparser.l $(OBJDIR)/prparser.y.h
355	@echo "- " $(LEX) "        "$<
356	@$(LEX) $(LFLAGS) -PPrParser -o$@ $<
357
358$(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h :       $(ASL_COMPILER)/prparser.y
359	@echo "- " $(YACC) "       "$<
360	@$(call safe_yacc,PrParser,$<,$@)
361
362#
363# Parsers and Lexers - final object files
364#
365# Cannot use the common compile warning flags since the C files are created
366# by the utilities above and they are not necessarily ANSI C, etc.
367#
368$(OBJDIR)/aslcompilerlex.o :   $(OBJDIR)/aslcompilerlex.c
369	@echo "- " "Intermediate" $<
370	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
371
372$(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c
373	@echo "- " "Intermediate" $<
374	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
375
376$(OBJDIR)/dtcompilerparserlex.o :      $(OBJDIR)/dtcompilerparserlex.c
377	@echo "- " "Intermediate" $<
378	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
379
380$(OBJDIR)/dtcompilerparserparse.o :    $(OBJDIR)/dtcompilerparserparse.c
381	@echo "- " "Intermediate" $<
382	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
383
384$(OBJDIR)/dtparserlex.o :      $(OBJDIR)/dtparserlex.c
385	@echo "- " "Intermediate" $<
386	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
387
388$(OBJDIR)/dtparserparse.o :    $(OBJDIR)/dtparserparse.c
389	@echo "- " "Intermediate" $<
390	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
391
392$(OBJDIR)/prparserlex.o :      $(OBJDIR)/prparserlex.c
393	@echo "- " "Intermediate" $<
394	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
395
396$(OBJDIR)/prparserparse.o :    $(OBJDIR)/prparserparse.c
397	@echo "- " "Intermediate" $<
398	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
399