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