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