153289f6aSNate Lawson 253289f6aSNate Lawson /****************************************************************************** 353289f6aSNate Lawson * 453289f6aSNate Lawson * Module Name: aslmain - compiler main and utilities 553289f6aSNate Lawson * 653289f6aSNate Lawson *****************************************************************************/ 753289f6aSNate Lawson 853289f6aSNate Lawson /****************************************************************************** 953289f6aSNate Lawson * 1053289f6aSNate Lawson * 1. Copyright Notice 1153289f6aSNate Lawson * 129a179dd8SJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp. 1353289f6aSNate Lawson * All rights reserved. 1453289f6aSNate Lawson * 1553289f6aSNate Lawson * 2. License 1653289f6aSNate Lawson * 1753289f6aSNate Lawson * 2.1. This is your license from Intel Corp. under its intellectual property 1853289f6aSNate Lawson * rights. You may have additional license terms from the party that provided 1953289f6aSNate Lawson * you this software, covering your right to use that party's intellectual 2053289f6aSNate Lawson * property rights. 2153289f6aSNate Lawson * 2253289f6aSNate Lawson * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 2353289f6aSNate Lawson * copy of the source code appearing in this file ("Covered Code") an 2453289f6aSNate Lawson * irrevocable, perpetual, worldwide license under Intel's copyrights in the 2553289f6aSNate Lawson * base code distributed originally by Intel ("Original Intel Code") to copy, 2653289f6aSNate Lawson * make derivatives, distribute, use and display any portion of the Covered 2753289f6aSNate Lawson * Code in any form, with the right to sublicense such rights; and 2853289f6aSNate Lawson * 2953289f6aSNate Lawson * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 3053289f6aSNate Lawson * license (with the right to sublicense), under only those claims of Intel 3153289f6aSNate Lawson * patents that are infringed by the Original Intel Code, to make, use, sell, 3253289f6aSNate Lawson * offer to sell, and import the Covered Code and derivative works thereof 3353289f6aSNate Lawson * solely to the minimum extent necessary to exercise the above copyright 3453289f6aSNate Lawson * license, and in no event shall the patent license extend to any additions 3553289f6aSNate Lawson * to or modifications of the Original Intel Code. No other license or right 3653289f6aSNate Lawson * is granted directly or by implication, estoppel or otherwise; 3753289f6aSNate Lawson * 3853289f6aSNate Lawson * The above copyright and patent license is granted only if the following 3953289f6aSNate Lawson * conditions are met: 4053289f6aSNate Lawson * 4153289f6aSNate Lawson * 3. Conditions 4253289f6aSNate Lawson * 4353289f6aSNate Lawson * 3.1. Redistribution of Source with Rights to Further Distribute Source. 4453289f6aSNate Lawson * Redistribution of source code of any substantial portion of the Covered 4553289f6aSNate Lawson * Code or modification with rights to further distribute source must include 4653289f6aSNate Lawson * the above Copyright Notice, the above License, this list of Conditions, 4753289f6aSNate Lawson * and the following Disclaimer and Export Compliance provision. In addition, 4853289f6aSNate Lawson * Licensee must cause all Covered Code to which Licensee contributes to 4953289f6aSNate Lawson * contain a file documenting the changes Licensee made to create that Covered 5053289f6aSNate Lawson * Code and the date of any change. Licensee must include in that file the 5153289f6aSNate Lawson * documentation of any changes made by any predecessor Licensee. Licensee 5253289f6aSNate Lawson * must include a prominent statement that the modification is derived, 5353289f6aSNate Lawson * directly or indirectly, from Original Intel Code. 5453289f6aSNate Lawson * 5553289f6aSNate Lawson * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 5653289f6aSNate Lawson * Redistribution of source code of any substantial portion of the Covered 5753289f6aSNate Lawson * Code or modification without rights to further distribute source must 5853289f6aSNate Lawson * include the following Disclaimer and Export Compliance provision in the 5953289f6aSNate Lawson * documentation and/or other materials provided with distribution. In 6053289f6aSNate Lawson * addition, Licensee may not authorize further sublicense of source of any 6153289f6aSNate Lawson * portion of the Covered Code, and must include terms to the effect that the 6253289f6aSNate Lawson * license from Licensee to its licensee is limited to the intellectual 6353289f6aSNate Lawson * property embodied in the software Licensee provides to its licensee, and 6453289f6aSNate Lawson * not to intellectual property embodied in modifications its licensee may 6553289f6aSNate Lawson * make. 6653289f6aSNate Lawson * 6753289f6aSNate Lawson * 3.3. Redistribution of Executable. Redistribution in executable form of any 6853289f6aSNate Lawson * substantial portion of the Covered Code or modification must reproduce the 6953289f6aSNate Lawson * above Copyright Notice, and the following Disclaimer and Export Compliance 7053289f6aSNate Lawson * provision in the documentation and/or other materials provided with the 7153289f6aSNate Lawson * distribution. 7253289f6aSNate Lawson * 7353289f6aSNate Lawson * 3.4. Intel retains all right, title, and interest in and to the Original 7453289f6aSNate Lawson * Intel Code. 7553289f6aSNate Lawson * 7653289f6aSNate Lawson * 3.5. Neither the name Intel nor any other trademark owned or controlled by 7753289f6aSNate Lawson * Intel shall be used in advertising or otherwise to promote the sale, use or 7853289f6aSNate Lawson * other dealings in products derived from or relating to the Covered Code 7953289f6aSNate Lawson * without prior written authorization from Intel. 8053289f6aSNate Lawson * 8153289f6aSNate Lawson * 4. Disclaimer and Export Compliance 8253289f6aSNate Lawson * 8353289f6aSNate Lawson * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 8453289f6aSNate Lawson * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 8553289f6aSNate Lawson * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 8653289f6aSNate Lawson * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 8753289f6aSNate Lawson * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 8853289f6aSNate Lawson * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 8953289f6aSNate Lawson * PARTICULAR PURPOSE. 9053289f6aSNate Lawson * 9153289f6aSNate Lawson * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 9253289f6aSNate Lawson * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 9353289f6aSNate Lawson * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 9453289f6aSNate Lawson * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 9553289f6aSNate Lawson * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 9653289f6aSNate Lawson * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 9753289f6aSNate Lawson * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 9853289f6aSNate Lawson * LIMITED REMEDY. 9953289f6aSNate Lawson * 10053289f6aSNate Lawson * 4.3. Licensee shall not export, either directly or indirectly, any of this 10153289f6aSNate Lawson * software or system incorporating such software without first obtaining any 10253289f6aSNate Lawson * required license or other approval from the U. S. Department of Commerce or 10353289f6aSNate Lawson * any other agency or department of the United States Government. In the 10453289f6aSNate Lawson * event Licensee exports any such software from the United States or 10553289f6aSNate Lawson * re-exports any such software from a foreign destination, Licensee shall 10653289f6aSNate Lawson * ensure that the distribution and export/re-export of the software is in 10753289f6aSNate Lawson * compliance with all laws, regulations, orders, or other restrictions of the 10853289f6aSNate Lawson * U.S. Export Administration Regulations. Licensee agrees that neither it nor 10953289f6aSNate Lawson * any of its subsidiaries will export/re-export any technical data, process, 11053289f6aSNate Lawson * software, or service, directly or indirectly, to any country for which the 11153289f6aSNate Lawson * United States government or any agency thereof requires an export license, 11253289f6aSNate Lawson * other governmental approval, or letter of assurance, without first obtaining 11353289f6aSNate Lawson * such license, approval or letter. 11453289f6aSNate Lawson * 11553289f6aSNate Lawson *****************************************************************************/ 11653289f6aSNate Lawson 11753289f6aSNate Lawson 11853289f6aSNate Lawson #define _DECLARE_GLOBALS 11953289f6aSNate Lawson 120ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h> 121ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acapps.h> 12253289f6aSNate Lawson 12353289f6aSNate Lawson #ifdef _DEBUG 12453289f6aSNate Lawson #include <crtdbg.h> 12553289f6aSNate Lawson #endif 12653289f6aSNate Lawson 12753289f6aSNate Lawson #define _COMPONENT ACPI_COMPILER 12853289f6aSNate Lawson ACPI_MODULE_NAME ("aslmain") 12953289f6aSNate Lawson 130fba7fc7eSJung-uk Kim /* Local prototypes */ 131fba7fc7eSJung-uk Kim 132fba7fc7eSJung-uk Kim static void 133fba7fc7eSJung-uk Kim Options ( 134fba7fc7eSJung-uk Kim void); 135fba7fc7eSJung-uk Kim 136fba7fc7eSJung-uk Kim static void 137fba7fc7eSJung-uk Kim HelpMessage ( 138fba7fc7eSJung-uk Kim void); 139fba7fc7eSJung-uk Kim 140fba7fc7eSJung-uk Kim static void 141fba7fc7eSJung-uk Kim Usage ( 142fba7fc7eSJung-uk Kim void); 143fba7fc7eSJung-uk Kim 144fba7fc7eSJung-uk Kim static void 145fba7fc7eSJung-uk Kim AslInitialize ( 146fba7fc7eSJung-uk Kim void); 147fba7fc7eSJung-uk Kim 148a9f12690SJung-uk Kim static int 149fba7fc7eSJung-uk Kim AslCommandLine ( 150fba7fc7eSJung-uk Kim int argc, 151fba7fc7eSJung-uk Kim char **argv); 152fba7fc7eSJung-uk Kim 153d6dd1baeSJung-uk Kim static int 154d6dd1baeSJung-uk Kim AslDoOptions ( 155d6dd1baeSJung-uk Kim int argc, 156d6dd1baeSJung-uk Kim char **argv, 157d6dd1baeSJung-uk Kim BOOLEAN IsResponseFile); 158d6dd1baeSJung-uk Kim 159d6dd1baeSJung-uk Kim static void 160d6dd1baeSJung-uk Kim AslMergeOptionTokens ( 161d6dd1baeSJung-uk Kim char *InBuffer, 162d6dd1baeSJung-uk Kim char *OutBuffer); 163d6dd1baeSJung-uk Kim 164d6dd1baeSJung-uk Kim static int 165d6dd1baeSJung-uk Kim AslDoResponseFile ( 166d6dd1baeSJung-uk Kim char *Filename); 167d6dd1baeSJung-uk Kim 168d6dd1baeSJung-uk Kim 169d6dd1baeSJung-uk Kim #define ASL_TOKEN_SEPARATORS " \t\n" 170d6dd1baeSJung-uk Kim #define ASL_SUPPORTED_OPTIONS "@:2b:cd^e:fgh^i^I:l^o:p:r:s:t:v:w:x:" 171d6dd1baeSJung-uk Kim 17253289f6aSNate Lawson 17353289f6aSNate Lawson /******************************************************************************* 17453289f6aSNate Lawson * 17553289f6aSNate Lawson * FUNCTION: Options 17653289f6aSNate Lawson * 17753289f6aSNate Lawson * PARAMETERS: None 17853289f6aSNate Lawson * 17953289f6aSNate Lawson * RETURN: None 18053289f6aSNate Lawson * 18153289f6aSNate Lawson * DESCRIPTION: Display option help message 18253289f6aSNate Lawson * 18353289f6aSNate Lawson ******************************************************************************/ 18453289f6aSNate Lawson 185fba7fc7eSJung-uk Kim static void 18653289f6aSNate Lawson Options ( 18753289f6aSNate Lawson void) 18853289f6aSNate Lawson { 18953289f6aSNate Lawson 190d6dd1baeSJung-uk Kim printf ("Global:\n"); 191d6dd1baeSJung-uk Kim printf (" -@<file> Specify command file\n"); 192d6dd1baeSJung-uk Kim printf (" -I<dir> Specify additional include directory\n"); 193d6dd1baeSJung-uk Kim 194d6dd1baeSJung-uk Kim printf ("\nGeneral Output:\n"); 195a9f12690SJung-uk Kim printf (" -p<prefix> Specify path/filename prefix for all output files\n"); 196a9f12690SJung-uk Kim printf (" -va Disable all errors and warnings (summary only)\n"); 19753289f6aSNate Lawson printf (" -vi Less verbose errors and warnings for use with IDEs\n"); 19853289f6aSNate Lawson printf (" -vo Enable optimization comments\n"); 19953289f6aSNate Lawson printf (" -vr Disable remarks\n"); 20053289f6aSNate Lawson printf (" -vs Disable signon\n"); 2011a39cfb0SJung-uk Kim printf (" -w<1|2|3> Set warning reporting level\n"); 20253289f6aSNate Lawson 203c8466860SMark Santcroos printf ("\nAML Output Files:\n"); 20453289f6aSNate Lawson printf (" -s<a|c> Create AML in assembler or C source file (*.asm or *.c)\n"); 20553289f6aSNate Lawson printf (" -i<a|c> Create assembler or C include file (*.inc or *.h)\n"); 20653289f6aSNate Lawson printf (" -t<a|c> Create AML in assembler or C hex table (*.hex)\n"); 20753289f6aSNate Lawson 208c8466860SMark Santcroos printf ("\nAML Code Generation:\n"); 20953289f6aSNate Lawson printf (" -oa Disable all optimizations (compatibility mode)\n"); 21053289f6aSNate Lawson printf (" -of Disable constant folding\n"); 21153289f6aSNate Lawson printf (" -oi Disable integer optimization to Zero/One/Ones\n"); 21253289f6aSNate Lawson printf (" -on Disable named reference string optimization\n"); 213c8466860SMark Santcroos printf (" -r<Revision> Override table header Revision (1-255)\n"); 21453289f6aSNate Lawson 21553289f6aSNate Lawson printf ("\nListings:\n"); 21653289f6aSNate Lawson printf (" -l Create mixed listing file (ASL source and AML) (*.lst)\n"); 21753289f6aSNate Lawson printf (" -ln Create namespace file (*.nsp)\n"); 21853289f6aSNate Lawson printf (" -ls Create combined source file (expanded includes) (*.src)\n"); 21953289f6aSNate Lawson 22053289f6aSNate Lawson printf ("\nAML Disassembler:\n"); 2211a39cfb0SJung-uk Kim printf (" -d [file] Disassemble or decode binary ACPI table to file (*.dsl)\n"); 22253289f6aSNate Lawson printf (" -dc [file] Disassemble AML and immediately compile it\n"); 22353289f6aSNate Lawson printf (" (Obtain DSDT from current system if no input file)\n"); 224a9f12690SJung-uk Kim printf (" -e [f1,f2] Include ACPI table(s) for external symbol resolution\n"); 225fba7fc7eSJung-uk Kim printf (" -2 Emit ACPI 2.0 compatible ASL code\n"); 22653289f6aSNate Lawson printf (" -g Get ACPI tables and write to files (*.dat)\n"); 22753289f6aSNate Lawson 22853289f6aSNate Lawson printf ("\nHelp:\n"); 22953289f6aSNate Lawson printf (" -h Additional help and compiler debug options\n"); 23053289f6aSNate Lawson printf (" -hc Display operators allowed in constant expressions\n"); 23153289f6aSNate Lawson printf (" -hr Display ACPI reserved method names\n"); 23253289f6aSNate Lawson } 23353289f6aSNate Lawson 23453289f6aSNate Lawson 23553289f6aSNate Lawson /******************************************************************************* 23653289f6aSNate Lawson * 237fba7fc7eSJung-uk Kim * FUNCTION: HelpMessage 23853289f6aSNate Lawson * 23953289f6aSNate Lawson * PARAMETERS: None 24053289f6aSNate Lawson * 24153289f6aSNate Lawson * RETURN: None 24253289f6aSNate Lawson * 24353289f6aSNate Lawson * DESCRIPTION: Display help message 24453289f6aSNate Lawson * 24553289f6aSNate Lawson ******************************************************************************/ 24653289f6aSNate Lawson 247fba7fc7eSJung-uk Kim static void 24853289f6aSNate Lawson HelpMessage ( 24953289f6aSNate Lawson void) 25053289f6aSNate Lawson { 25153289f6aSNate Lawson 25253289f6aSNate Lawson printf ("AML output filename generation:\n"); 25353289f6aSNate Lawson printf (" Output filenames are generated by appending an extension to a common\n"); 25453289f6aSNate Lawson printf (" filename prefix. The filename prefix is obtained via one of the\n"); 25553289f6aSNate Lawson printf (" following methods (in priority order):\n"); 25653289f6aSNate Lawson printf (" 1) The -p option specifies the prefix\n"); 25753289f6aSNate Lawson printf (" 2) The prefix of the AMLFileName in the ASL Definition Block\n"); 25853289f6aSNate Lawson printf (" 3) The prefix of the input filename\n"); 25953289f6aSNate Lawson printf ("\n"); 26053289f6aSNate Lawson 26153289f6aSNate Lawson Options (); 26253289f6aSNate Lawson 2631a39cfb0SJung-uk Kim printf ("\nCompiler/Disassembler Debug Options:\n"); 26453289f6aSNate Lawson printf (" -b<p|t|b> Create compiler debug/trace file (*.txt)\n"); 26553289f6aSNate Lawson printf (" Types: Parse/Tree/Both\n"); 26653289f6aSNate Lawson printf (" -f Ignore errors, force creation of AML output file(s)\n"); 26753289f6aSNate Lawson printf (" -c Parse only, no output generation\n"); 26853289f6aSNate Lawson printf (" -ot Display compile times\n"); 26953289f6aSNate Lawson printf (" -x<level> Set debug level for trace output\n"); 27053289f6aSNate Lawson } 27153289f6aSNate Lawson 27253289f6aSNate Lawson 27353289f6aSNate Lawson /******************************************************************************* 27453289f6aSNate Lawson * 27553289f6aSNate Lawson * FUNCTION: Usage 27653289f6aSNate Lawson * 27753289f6aSNate Lawson * PARAMETERS: None 27853289f6aSNate Lawson * 27953289f6aSNate Lawson * RETURN: None 28053289f6aSNate Lawson * 28153289f6aSNate Lawson * DESCRIPTION: Display usage and option message 28253289f6aSNate Lawson * 28353289f6aSNate Lawson ******************************************************************************/ 28453289f6aSNate Lawson 285fba7fc7eSJung-uk Kim static void 28653289f6aSNate Lawson Usage ( 28753289f6aSNate Lawson void) 28853289f6aSNate Lawson { 28953289f6aSNate Lawson 290a9f12690SJung-uk Kim printf ("Usage: %s [Options] [Files]\n\n", CompilerName); 29153289f6aSNate Lawson Options (); 29253289f6aSNate Lawson } 29353289f6aSNate Lawson 29453289f6aSNate Lawson 29553289f6aSNate Lawson /******************************************************************************* 29653289f6aSNate Lawson * 29753289f6aSNate Lawson * FUNCTION: AslInitialize 29853289f6aSNate Lawson * 29953289f6aSNate Lawson * PARAMETERS: None 30053289f6aSNate Lawson * 30153289f6aSNate Lawson * RETURN: None 30253289f6aSNate Lawson * 30353289f6aSNate Lawson * DESCRIPTION: Initialize compiler globals 30453289f6aSNate Lawson * 30553289f6aSNate Lawson ******************************************************************************/ 30653289f6aSNate Lawson 307fba7fc7eSJung-uk Kim static void 308fba7fc7eSJung-uk Kim AslInitialize ( 309fba7fc7eSJung-uk Kim void) 31053289f6aSNate Lawson { 31153289f6aSNate Lawson UINT32 i; 31253289f6aSNate Lawson 31353289f6aSNate Lawson 31453289f6aSNate Lawson #ifdef _DEBUG 31553289f6aSNate Lawson _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(0)); 31653289f6aSNate Lawson #endif 31753289f6aSNate Lawson 31853289f6aSNate Lawson AcpiDbgLevel = 0; 31953289f6aSNate Lawson 32053289f6aSNate Lawson for (i = 0; i < ASL_NUM_FILES; i++) 32153289f6aSNate Lawson { 32253289f6aSNate Lawson Gbl_Files[i].Handle = NULL; 32353289f6aSNate Lawson Gbl_Files[i].Filename = NULL; 32453289f6aSNate Lawson } 32553289f6aSNate Lawson 32653289f6aSNate Lawson Gbl_Files[ASL_FILE_STDOUT].Handle = stdout; 32753289f6aSNate Lawson Gbl_Files[ASL_FILE_STDOUT].Filename = "STDOUT"; 32853289f6aSNate Lawson 32953289f6aSNate Lawson Gbl_Files[ASL_FILE_STDERR].Handle = stderr; 33053289f6aSNate Lawson Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR"; 33153289f6aSNate Lawson } 33253289f6aSNate Lawson 33353289f6aSNate Lawson 33453289f6aSNate Lawson /******************************************************************************* 33553289f6aSNate Lawson * 336d6dd1baeSJung-uk Kim * FUNCTION: AslMergeOptionTokens 33753289f6aSNate Lawson * 338d6dd1baeSJung-uk Kim * PARAMETERS: InBuffer - Input containing an option string 339d6dd1baeSJung-uk Kim * OutBuffer - Merged output buffer 34053289f6aSNate Lawson * 34153289f6aSNate Lawson * RETURN: None 34253289f6aSNate Lawson * 343d6dd1baeSJung-uk Kim * DESCRIPTION: Remove all whitespace from an option string. 344d6dd1baeSJung-uk Kim * 345d6dd1baeSJung-uk Kim ******************************************************************************/ 346d6dd1baeSJung-uk Kim 347d6dd1baeSJung-uk Kim static void 348d6dd1baeSJung-uk Kim AslMergeOptionTokens ( 349d6dd1baeSJung-uk Kim char *InBuffer, 350d6dd1baeSJung-uk Kim char *OutBuffer) 351d6dd1baeSJung-uk Kim { 352d6dd1baeSJung-uk Kim char *Token; 353d6dd1baeSJung-uk Kim 354d6dd1baeSJung-uk Kim 355d6dd1baeSJung-uk Kim *OutBuffer = 0; 356d6dd1baeSJung-uk Kim 357d6dd1baeSJung-uk Kim Token = strtok (InBuffer, ASL_TOKEN_SEPARATORS); 358d6dd1baeSJung-uk Kim while (Token) 359d6dd1baeSJung-uk Kim { 360d6dd1baeSJung-uk Kim strcat (OutBuffer, Token); 361d6dd1baeSJung-uk Kim Token = strtok (NULL, ASL_TOKEN_SEPARATORS); 362d6dd1baeSJung-uk Kim } 363d6dd1baeSJung-uk Kim } 364d6dd1baeSJung-uk Kim 365d6dd1baeSJung-uk Kim 366d6dd1baeSJung-uk Kim /******************************************************************************* 367d6dd1baeSJung-uk Kim * 368d6dd1baeSJung-uk Kim * FUNCTION: AslDoResponseFile 369d6dd1baeSJung-uk Kim * 370d6dd1baeSJung-uk Kim * PARAMETERS: Filename - Name of the response file 371d6dd1baeSJung-uk Kim * 372d6dd1baeSJung-uk Kim * RETURN: Status 373d6dd1baeSJung-uk Kim * 374d6dd1baeSJung-uk Kim * DESCRIPTION: Open a response file and process all options within. 37553289f6aSNate Lawson * 37653289f6aSNate Lawson ******************************************************************************/ 37753289f6aSNate Lawson 378a9f12690SJung-uk Kim static int 379d6dd1baeSJung-uk Kim AslDoResponseFile ( 380d6dd1baeSJung-uk Kim char *Filename) 38153289f6aSNate Lawson { 382d6dd1baeSJung-uk Kim char *argv = StringBuffer2; 383d6dd1baeSJung-uk Kim FILE *ResponseFile; 384d6dd1baeSJung-uk Kim int OptStatus = 0; 385d6dd1baeSJung-uk Kim int Opterr; 386d6dd1baeSJung-uk Kim int Optind; 387d6dd1baeSJung-uk Kim 388d6dd1baeSJung-uk Kim 389d6dd1baeSJung-uk Kim ResponseFile = fopen (Filename, "r"); 390d6dd1baeSJung-uk Kim if (!ResponseFile) 391d6dd1baeSJung-uk Kim { 392d6dd1baeSJung-uk Kim printf ("Could not open command file %s, %s\n", 393d6dd1baeSJung-uk Kim Filename, strerror (errno)); 394d6dd1baeSJung-uk Kim return -1; 395d6dd1baeSJung-uk Kim } 396d6dd1baeSJung-uk Kim 397d6dd1baeSJung-uk Kim /* Must save the current GetOpt globals */ 398d6dd1baeSJung-uk Kim 399d6dd1baeSJung-uk Kim Opterr = AcpiGbl_Opterr; 400d6dd1baeSJung-uk Kim Optind = AcpiGbl_Optind; 401d6dd1baeSJung-uk Kim 402d6dd1baeSJung-uk Kim /* 403d6dd1baeSJung-uk Kim * Process all lines in the response file. There must be one complete 404d6dd1baeSJung-uk Kim * option per line 405d6dd1baeSJung-uk Kim */ 406d6dd1baeSJung-uk Kim while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile)) 407d6dd1baeSJung-uk Kim { 408d6dd1baeSJung-uk Kim /* Compress all tokens, allowing us to use a single argv entry */ 409d6dd1baeSJung-uk Kim 410d6dd1baeSJung-uk Kim AslMergeOptionTokens (StringBuffer, StringBuffer2); 411d6dd1baeSJung-uk Kim 412d6dd1baeSJung-uk Kim /* Process the option */ 413d6dd1baeSJung-uk Kim 414d6dd1baeSJung-uk Kim AcpiGbl_Opterr = 0; 415d6dd1baeSJung-uk Kim AcpiGbl_Optind = 0; 416d6dd1baeSJung-uk Kim 417d6dd1baeSJung-uk Kim OptStatus = AslDoOptions (1, &argv, TRUE); 418d6dd1baeSJung-uk Kim if (OptStatus) 419d6dd1baeSJung-uk Kim { 420d6dd1baeSJung-uk Kim printf ("Invalid option in command file %s: %s\n", 421d6dd1baeSJung-uk Kim Filename, StringBuffer); 422d6dd1baeSJung-uk Kim break; 423d6dd1baeSJung-uk Kim } 424d6dd1baeSJung-uk Kim } 425d6dd1baeSJung-uk Kim 426d6dd1baeSJung-uk Kim /* Restore the GetOpt globals */ 427d6dd1baeSJung-uk Kim 428d6dd1baeSJung-uk Kim AcpiGbl_Opterr = Opterr; 429d6dd1baeSJung-uk Kim AcpiGbl_Optind = Optind; 430d6dd1baeSJung-uk Kim 431d6dd1baeSJung-uk Kim fclose (ResponseFile); 432d6dd1baeSJung-uk Kim return (OptStatus); 433d6dd1baeSJung-uk Kim } 434d6dd1baeSJung-uk Kim 435d6dd1baeSJung-uk Kim 436d6dd1baeSJung-uk Kim /******************************************************************************* 437d6dd1baeSJung-uk Kim * 438d6dd1baeSJung-uk Kim * FUNCTION: AslDoOptions 439d6dd1baeSJung-uk Kim * 440d6dd1baeSJung-uk Kim * PARAMETERS: argc/argv - Standard argc/argv 441d6dd1baeSJung-uk Kim * IsResponseFile - TRUE if executing a response file. 442d6dd1baeSJung-uk Kim * 443d6dd1baeSJung-uk Kim * RETURN: Status 444d6dd1baeSJung-uk Kim * 445d6dd1baeSJung-uk Kim * DESCRIPTION: Command line option processing 446d6dd1baeSJung-uk Kim * 447d6dd1baeSJung-uk Kim ******************************************************************************/ 448d6dd1baeSJung-uk Kim 449d6dd1baeSJung-uk Kim static int 450d6dd1baeSJung-uk Kim AslDoOptions ( 451d6dd1baeSJung-uk Kim int argc, 452d6dd1baeSJung-uk Kim char **argv, 453d6dd1baeSJung-uk Kim BOOLEAN IsResponseFile) 454d6dd1baeSJung-uk Kim { 455a9f12690SJung-uk Kim int j; 45653289f6aSNate Lawson 45753289f6aSNate Lawson 45853289f6aSNate Lawson /* Get the command line options */ 45953289f6aSNate Lawson 460d6dd1baeSJung-uk Kim while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j) 46153289f6aSNate Lawson { 462d6dd1baeSJung-uk Kim case '@': /* Begin a response file */ 463d6dd1baeSJung-uk Kim 464d6dd1baeSJung-uk Kim if (IsResponseFile) 465d6dd1baeSJung-uk Kim { 466d6dd1baeSJung-uk Kim printf ("Nested command files are not supported\n"); 467d6dd1baeSJung-uk Kim return -1; 468d6dd1baeSJung-uk Kim } 469d6dd1baeSJung-uk Kim 470d6dd1baeSJung-uk Kim if (AslDoResponseFile (AcpiGbl_Optarg)) 471d6dd1baeSJung-uk Kim { 472d6dd1baeSJung-uk Kim return -1; 473d6dd1baeSJung-uk Kim } 474d6dd1baeSJung-uk Kim break; 475d6dd1baeSJung-uk Kim 476d6dd1baeSJung-uk Kim 477fba7fc7eSJung-uk Kim case '2': 478d6dd1baeSJung-uk Kim 479fba7fc7eSJung-uk Kim Gbl_Acpi2 = TRUE; 480fba7fc7eSJung-uk Kim break; 481fba7fc7eSJung-uk Kim 482fba7fc7eSJung-uk Kim 48353289f6aSNate Lawson case 'b': 48453289f6aSNate Lawson 48553289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 48653289f6aSNate Lawson { 48753289f6aSNate Lawson case 'b': 48853289f6aSNate Lawson AslCompilerdebug = 1; /* same as yydebug */ 48953289f6aSNate Lawson break; 49053289f6aSNate Lawson 49153289f6aSNate Lawson case 'p': 49253289f6aSNate Lawson AslCompilerdebug = 1; /* same as yydebug */ 49353289f6aSNate Lawson break; 49453289f6aSNate Lawson 49553289f6aSNate Lawson case 't': 49653289f6aSNate Lawson break; 49753289f6aSNate Lawson 49853289f6aSNate Lawson default: 49953289f6aSNate Lawson printf ("Unknown option: -b%s\n", AcpiGbl_Optarg); 500d6dd1baeSJung-uk Kim return (-1); 50153289f6aSNate Lawson } 50253289f6aSNate Lawson 50353289f6aSNate Lawson /* Produce debug output file */ 50453289f6aSNate Lawson 50553289f6aSNate Lawson Gbl_DebugFlag = TRUE; 50653289f6aSNate Lawson break; 50753289f6aSNate Lawson 50853289f6aSNate Lawson 50953289f6aSNate Lawson case 'c': 51053289f6aSNate Lawson 51153289f6aSNate Lawson /* Parse only */ 51253289f6aSNate Lawson 51353289f6aSNate Lawson Gbl_ParseOnlyFlag = TRUE; 51453289f6aSNate Lawson break; 51553289f6aSNate Lawson 51653289f6aSNate Lawson 51753289f6aSNate Lawson case 'd': 51853289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 51953289f6aSNate Lawson { 52053289f6aSNate Lawson case '^': 521a9f12690SJung-uk Kim Gbl_DoCompile = FALSE; 52253289f6aSNate Lawson break; 52353289f6aSNate Lawson 52453289f6aSNate Lawson case 'c': 52553289f6aSNate Lawson break; 52653289f6aSNate Lawson 52753289f6aSNate Lawson default: 52853289f6aSNate Lawson printf ("Unknown option: -d%s\n", AcpiGbl_Optarg); 529d6dd1baeSJung-uk Kim return (-1); 53053289f6aSNate Lawson } 53153289f6aSNate Lawson 53253289f6aSNate Lawson Gbl_DisasmFlag = TRUE; 53353289f6aSNate Lawson break; 53453289f6aSNate Lawson 53553289f6aSNate Lawson 53653289f6aSNate Lawson case 'e': 5371a39cfb0SJung-uk Kim Gbl_ExternalFilename = AcpiGbl_Optarg; 53853289f6aSNate Lawson break; 53953289f6aSNate Lawson 54053289f6aSNate Lawson 54153289f6aSNate Lawson case 'f': 54253289f6aSNate Lawson 54353289f6aSNate Lawson /* Ignore errors and force creation of aml file */ 54453289f6aSNate Lawson 54553289f6aSNate Lawson Gbl_IgnoreErrors = TRUE; 54653289f6aSNate Lawson break; 54753289f6aSNate Lawson 54853289f6aSNate Lawson 54953289f6aSNate Lawson case 'g': 55053289f6aSNate Lawson 55153289f6aSNate Lawson /* Get all ACPI tables */ 55253289f6aSNate Lawson 55353289f6aSNate Lawson Gbl_GetAllTables = TRUE; 554a9f12690SJung-uk Kim Gbl_DoCompile = FALSE; 55553289f6aSNate Lawson break; 55653289f6aSNate Lawson 55753289f6aSNate Lawson 55853289f6aSNate Lawson case 'h': 55953289f6aSNate Lawson 56053289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 56153289f6aSNate Lawson { 56253289f6aSNate Lawson case '^': 56353289f6aSNate Lawson HelpMessage (); 56453289f6aSNate Lawson exit (0); 56553289f6aSNate Lawson 56653289f6aSNate Lawson case 'c': 56753289f6aSNate Lawson UtDisplayConstantOpcodes (); 56853289f6aSNate Lawson exit (0); 56953289f6aSNate Lawson 57053289f6aSNate Lawson case 'r': 57153289f6aSNate Lawson /* reserved names */ 57253289f6aSNate Lawson 573ca3cf4faSJung-uk Kim ApDisplayReservedNames (); 57453289f6aSNate Lawson exit (0); 57553289f6aSNate Lawson 57653289f6aSNate Lawson default: 57753289f6aSNate Lawson printf ("Unknown option: -h%s\n", AcpiGbl_Optarg); 578d6dd1baeSJung-uk Kim return (-1); 57953289f6aSNate Lawson } 58053289f6aSNate Lawson break; 58153289f6aSNate Lawson 58253289f6aSNate Lawson 583d6dd1baeSJung-uk Kim case 'I': /* Add an include file search directory */ 584d6dd1baeSJung-uk Kim 585d6dd1baeSJung-uk Kim FlAddIncludeDirectory (AcpiGbl_Optarg); 586d6dd1baeSJung-uk Kim break; 587d6dd1baeSJung-uk Kim 588d6dd1baeSJung-uk Kim 58953289f6aSNate Lawson case 'i': 59053289f6aSNate Lawson 59153289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 59253289f6aSNate Lawson { 59353289f6aSNate Lawson case 'a': 59453289f6aSNate Lawson 59553289f6aSNate Lawson /* Produce assembly code include file */ 59653289f6aSNate Lawson 59753289f6aSNate Lawson Gbl_AsmIncludeOutputFlag = TRUE; 59853289f6aSNate Lawson break; 59953289f6aSNate Lawson 60053289f6aSNate Lawson case 'c': 60153289f6aSNate Lawson 60253289f6aSNate Lawson /* Produce C include file */ 60353289f6aSNate Lawson 60453289f6aSNate Lawson Gbl_C_IncludeOutputFlag = TRUE; 60553289f6aSNate Lawson break; 60653289f6aSNate Lawson 60753289f6aSNate Lawson default: 60853289f6aSNate Lawson printf ("Unknown option: -s%s\n", AcpiGbl_Optarg); 609d6dd1baeSJung-uk Kim return (-1); 61053289f6aSNate Lawson } 61153289f6aSNate Lawson break; 61253289f6aSNate Lawson 61353289f6aSNate Lawson 61453289f6aSNate Lawson case 'l': 61553289f6aSNate Lawson 61653289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 61753289f6aSNate Lawson { 61853289f6aSNate Lawson case '^': 61953289f6aSNate Lawson /* Produce listing file (Mixed source/aml) */ 62053289f6aSNate Lawson 62153289f6aSNate Lawson Gbl_ListingFlag = TRUE; 62253289f6aSNate Lawson break; 62353289f6aSNate Lawson 62453289f6aSNate Lawson case 'n': 62553289f6aSNate Lawson /* Produce namespace file */ 62653289f6aSNate Lawson 62753289f6aSNate Lawson Gbl_NsOutputFlag = TRUE; 62853289f6aSNate Lawson break; 62953289f6aSNate Lawson 63053289f6aSNate Lawson case 's': 63153289f6aSNate Lawson /* Produce combined source file */ 63253289f6aSNate Lawson 63353289f6aSNate Lawson Gbl_SourceOutputFlag = TRUE; 63453289f6aSNate Lawson break; 63553289f6aSNate Lawson 63653289f6aSNate Lawson default: 63753289f6aSNate Lawson printf ("Unknown option: -l%s\n", AcpiGbl_Optarg); 638d6dd1baeSJung-uk Kim return (-1); 63953289f6aSNate Lawson } 64053289f6aSNate Lawson break; 64153289f6aSNate Lawson 64253289f6aSNate Lawson 64353289f6aSNate Lawson case 'o': 64453289f6aSNate Lawson 64553289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 64653289f6aSNate Lawson { 64753289f6aSNate Lawson case 'a': 64853289f6aSNate Lawson 64953289f6aSNate Lawson /* Disable all optimizations */ 65053289f6aSNate Lawson 65153289f6aSNate Lawson Gbl_FoldConstants = FALSE; 65253289f6aSNate Lawson Gbl_IntegerOptimizationFlag = FALSE; 65353289f6aSNate Lawson Gbl_ReferenceOptimizationFlag = FALSE; 65453289f6aSNate Lawson break; 65553289f6aSNate Lawson 65653289f6aSNate Lawson case 'f': 65753289f6aSNate Lawson 65853289f6aSNate Lawson /* Disable folding on "normal" expressions */ 65953289f6aSNate Lawson 66053289f6aSNate Lawson Gbl_FoldConstants = FALSE; 66153289f6aSNate Lawson break; 66253289f6aSNate Lawson 66353289f6aSNate Lawson case 'i': 66453289f6aSNate Lawson 66553289f6aSNate Lawson /* Disable integer optimization to constants */ 66653289f6aSNate Lawson 66753289f6aSNate Lawson Gbl_IntegerOptimizationFlag = FALSE; 66853289f6aSNate Lawson break; 66953289f6aSNate Lawson 67053289f6aSNate Lawson case 'n': 67153289f6aSNate Lawson 67253289f6aSNate Lawson /* Disable named reference optimization */ 67353289f6aSNate Lawson 67453289f6aSNate Lawson Gbl_ReferenceOptimizationFlag = FALSE; 67553289f6aSNate Lawson break; 67653289f6aSNate Lawson 67753289f6aSNate Lawson case 't': 67853289f6aSNate Lawson 67953289f6aSNate Lawson /* Display compile time(s) */ 68053289f6aSNate Lawson 68153289f6aSNate Lawson Gbl_CompileTimesFlag = TRUE; 68253289f6aSNate Lawson break; 68353289f6aSNate Lawson 68453289f6aSNate Lawson default: 68553289f6aSNate Lawson printf ("Unknown option: -c%s\n", AcpiGbl_Optarg); 686d6dd1baeSJung-uk Kim return (-1); 68753289f6aSNate Lawson } 68853289f6aSNate Lawson break; 68953289f6aSNate Lawson 69053289f6aSNate Lawson 69153289f6aSNate Lawson case 'p': 69253289f6aSNate Lawson 69353289f6aSNate Lawson /* Override default AML output filename */ 69453289f6aSNate Lawson 69553289f6aSNate Lawson Gbl_OutputFilenamePrefix = AcpiGbl_Optarg; 69653289f6aSNate Lawson Gbl_UseDefaultAmlFilename = FALSE; 69753289f6aSNate Lawson break; 69853289f6aSNate Lawson 69953289f6aSNate Lawson 70053289f6aSNate Lawson case 'r': 701c8466860SMark Santcroos Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0); 70253289f6aSNate Lawson break; 70353289f6aSNate Lawson 70453289f6aSNate Lawson 70553289f6aSNate Lawson case 's': 70653289f6aSNate Lawson 70753289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 70853289f6aSNate Lawson { 70953289f6aSNate Lawson case 'a': 71053289f6aSNate Lawson 71153289f6aSNate Lawson /* Produce assembly code output file */ 71253289f6aSNate Lawson 71353289f6aSNate Lawson Gbl_AsmOutputFlag = TRUE; 71453289f6aSNate Lawson break; 71553289f6aSNate Lawson 71653289f6aSNate Lawson case 'c': 71753289f6aSNate Lawson 71853289f6aSNate Lawson /* Produce C hex output file */ 71953289f6aSNate Lawson 72053289f6aSNate Lawson Gbl_C_OutputFlag = TRUE; 72153289f6aSNate Lawson break; 72253289f6aSNate Lawson 72353289f6aSNate Lawson default: 72453289f6aSNate Lawson printf ("Unknown option: -s%s\n", AcpiGbl_Optarg); 725d6dd1baeSJung-uk Kim return (-1); 72653289f6aSNate Lawson } 72753289f6aSNate Lawson break; 72853289f6aSNate Lawson 72953289f6aSNate Lawson 73053289f6aSNate Lawson case 't': 73153289f6aSNate Lawson 73253289f6aSNate Lawson /* Produce hex table output file */ 73353289f6aSNate Lawson 73453289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 73553289f6aSNate Lawson { 73653289f6aSNate Lawson case 'a': 73753289f6aSNate Lawson Gbl_HexOutputFlag = HEX_OUTPUT_ASM; 73853289f6aSNate Lawson break; 73953289f6aSNate Lawson 74053289f6aSNate Lawson case 'c': 74153289f6aSNate Lawson Gbl_HexOutputFlag = HEX_OUTPUT_C; 74253289f6aSNate Lawson break; 74353289f6aSNate Lawson 74453289f6aSNate Lawson default: 74553289f6aSNate Lawson printf ("Unknown option: -t%s\n", AcpiGbl_Optarg); 746d6dd1baeSJung-uk Kim return (-1); 74753289f6aSNate Lawson } 74853289f6aSNate Lawson break; 74953289f6aSNate Lawson 75053289f6aSNate Lawson 75153289f6aSNate Lawson case 'v': 75253289f6aSNate Lawson 75353289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 75453289f6aSNate Lawson { 755a9f12690SJung-uk Kim case 'a': 756a9f12690SJung-uk Kim /* Disable All error/warning messages */ 757a9f12690SJung-uk Kim 758a9f12690SJung-uk Kim Gbl_NoErrors = TRUE; 759a9f12690SJung-uk Kim break; 760a9f12690SJung-uk Kim 76153289f6aSNate Lawson case 'i': 76253289f6aSNate Lawson /* Less verbose error messages */ 76353289f6aSNate Lawson 76453289f6aSNate Lawson Gbl_VerboseErrors = FALSE; 76553289f6aSNate Lawson break; 76653289f6aSNate Lawson 76753289f6aSNate Lawson case 'o': 76853289f6aSNate Lawson Gbl_DisplayOptimizations = TRUE; 76953289f6aSNate Lawson break; 77053289f6aSNate Lawson 77153289f6aSNate Lawson case 'r': 77253289f6aSNate Lawson Gbl_DisplayRemarks = FALSE; 77353289f6aSNate Lawson break; 77453289f6aSNate Lawson 77553289f6aSNate Lawson case 's': 776a9f12690SJung-uk Kim Gbl_DoSignon = FALSE; 77753289f6aSNate Lawson break; 77853289f6aSNate Lawson 77953289f6aSNate Lawson default: 78053289f6aSNate Lawson printf ("Unknown option: -v%s\n", AcpiGbl_Optarg); 781d6dd1baeSJung-uk Kim return (-1); 78253289f6aSNate Lawson } 78353289f6aSNate Lawson break; 78453289f6aSNate Lawson 78553289f6aSNate Lawson 7861a39cfb0SJung-uk Kim case 'w': /* Set warning levels */ 7871a39cfb0SJung-uk Kim 7881a39cfb0SJung-uk Kim switch (AcpiGbl_Optarg[0]) 7891a39cfb0SJung-uk Kim { 7901a39cfb0SJung-uk Kim case '1': 7911a39cfb0SJung-uk Kim Gbl_WarningLevel = ASL_WARNING; 7921a39cfb0SJung-uk Kim break; 7931a39cfb0SJung-uk Kim 7941a39cfb0SJung-uk Kim case '2': 7951a39cfb0SJung-uk Kim Gbl_WarningLevel = ASL_WARNING2; 7961a39cfb0SJung-uk Kim break; 7971a39cfb0SJung-uk Kim 7981a39cfb0SJung-uk Kim case '3': 7991a39cfb0SJung-uk Kim Gbl_WarningLevel = ASL_WARNING3; 8001a39cfb0SJung-uk Kim break; 8011a39cfb0SJung-uk Kim 8021a39cfb0SJung-uk Kim default: 8031a39cfb0SJung-uk Kim printf ("Unknown option: -w%s\n", AcpiGbl_Optarg); 804d6dd1baeSJung-uk Kim return (-1); 8051a39cfb0SJung-uk Kim } 8061a39cfb0SJung-uk Kim break; 8071a39cfb0SJung-uk Kim 8081a39cfb0SJung-uk Kim 80953289f6aSNate Lawson case 'x': 81053289f6aSNate Lawson 81153289f6aSNate Lawson AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16); 81253289f6aSNate Lawson break; 81353289f6aSNate Lawson 81453289f6aSNate Lawson 81553289f6aSNate Lawson default: 81653289f6aSNate Lawson 817d6dd1baeSJung-uk Kim return (-1); 81853289f6aSNate Lawson } 81953289f6aSNate Lawson 820d6dd1baeSJung-uk Kim return (0); 821d6dd1baeSJung-uk Kim } 822d6dd1baeSJung-uk Kim 823d6dd1baeSJung-uk Kim 824d6dd1baeSJung-uk Kim /******************************************************************************* 825d6dd1baeSJung-uk Kim * 826d6dd1baeSJung-uk Kim * FUNCTION: AslCommandLine 827d6dd1baeSJung-uk Kim * 828d6dd1baeSJung-uk Kim * PARAMETERS: argc/argv 829d6dd1baeSJung-uk Kim * 830d6dd1baeSJung-uk Kim * RETURN: Last argv index 831d6dd1baeSJung-uk Kim * 832d6dd1baeSJung-uk Kim * DESCRIPTION: Command line processing 833d6dd1baeSJung-uk Kim * 834d6dd1baeSJung-uk Kim ******************************************************************************/ 835d6dd1baeSJung-uk Kim 836d6dd1baeSJung-uk Kim static int 837d6dd1baeSJung-uk Kim AslCommandLine ( 838d6dd1baeSJung-uk Kim int argc, 839d6dd1baeSJung-uk Kim char **argv) 840d6dd1baeSJung-uk Kim { 841d6dd1baeSJung-uk Kim int BadCommandLine = 0; 842d6dd1baeSJung-uk Kim 843d6dd1baeSJung-uk Kim 844d6dd1baeSJung-uk Kim /* Minimum command line contains at least the command and an input file */ 845d6dd1baeSJung-uk Kim 846d6dd1baeSJung-uk Kim if (argc < 2) 847d6dd1baeSJung-uk Kim { 848d6dd1baeSJung-uk Kim AslCompilerSignon (ASL_FILE_STDOUT); 849d6dd1baeSJung-uk Kim Usage (); 850d6dd1baeSJung-uk Kim exit (1); 851d6dd1baeSJung-uk Kim } 852d6dd1baeSJung-uk Kim 853d6dd1baeSJung-uk Kim /* Process all command line options */ 854d6dd1baeSJung-uk Kim 855d6dd1baeSJung-uk Kim BadCommandLine = AslDoOptions (argc, argv, FALSE); 856d6dd1baeSJung-uk Kim 85753289f6aSNate Lawson /* Next parameter must be the input filename */ 85853289f6aSNate Lawson 859a9f12690SJung-uk Kim if (!argv[AcpiGbl_Optind] && 860fba7fc7eSJung-uk Kim !Gbl_DisasmFlag && 861fba7fc7eSJung-uk Kim !Gbl_GetAllTables) 86253289f6aSNate Lawson { 86353289f6aSNate Lawson printf ("Missing input filename\n"); 86453289f6aSNate Lawson BadCommandLine = TRUE; 86553289f6aSNate Lawson } 86653289f6aSNate Lawson 867a9f12690SJung-uk Kim if (Gbl_DoSignon) 86853289f6aSNate Lawson { 86953289f6aSNate Lawson AslCompilerSignon (ASL_FILE_STDOUT); 87053289f6aSNate Lawson } 87153289f6aSNate Lawson 87253289f6aSNate Lawson /* Abort if anything went wrong on the command line */ 87353289f6aSNate Lawson 87453289f6aSNate Lawson if (BadCommandLine) 87553289f6aSNate Lawson { 87653289f6aSNate Lawson printf ("\n"); 87753289f6aSNate Lawson Usage (); 87853289f6aSNate Lawson exit (1); 87953289f6aSNate Lawson } 88053289f6aSNate Lawson 881a9f12690SJung-uk Kim return (AcpiGbl_Optind); 88253289f6aSNate Lawson } 88353289f6aSNate Lawson 88453289f6aSNate Lawson 88553289f6aSNate Lawson /******************************************************************************* 88653289f6aSNate Lawson * 88753289f6aSNate Lawson * FUNCTION: main 88853289f6aSNate Lawson * 88953289f6aSNate Lawson * PARAMETERS: Standard argc/argv 89053289f6aSNate Lawson * 89153289f6aSNate Lawson * RETURN: Program termination code 89253289f6aSNate Lawson * 89353289f6aSNate Lawson * DESCRIPTION: C main routine for the Asl Compiler. Handle command line 894a9f12690SJung-uk Kim * options and begin the compile for each file on the command line 89553289f6aSNate Lawson * 89653289f6aSNate Lawson ******************************************************************************/ 89753289f6aSNate Lawson 89853289f6aSNate Lawson int ACPI_SYSTEM_XFACE 89953289f6aSNate Lawson main ( 90053289f6aSNate Lawson int argc, 90153289f6aSNate Lawson char **argv) 90253289f6aSNate Lawson { 90353289f6aSNate Lawson ACPI_STATUS Status; 904a9f12690SJung-uk Kim int Index; 90553289f6aSNate Lawson 90653289f6aSNate Lawson 907fba7fc7eSJung-uk Kim #ifdef _DEBUG 908fba7fc7eSJung-uk Kim _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF | 909fba7fc7eSJung-uk Kim _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG)); 910fba7fc7eSJung-uk Kim #endif 911fba7fc7eSJung-uk Kim 91253289f6aSNate Lawson /* Init and command line */ 91353289f6aSNate Lawson 91453289f6aSNate Lawson AslInitialize (); 915a9f12690SJung-uk Kim Index = AslCommandLine (argc, argv); 91653289f6aSNate Lawson 917a9f12690SJung-uk Kim /* Options that have no additional parameters or pathnames */ 918a9f12690SJung-uk Kim 919a9f12690SJung-uk Kim if (Gbl_GetAllTables) 920a9f12690SJung-uk Kim { 921a9f12690SJung-uk Kim Status = AslDoOneFile (NULL); 922fba7fc7eSJung-uk Kim if (ACPI_FAILURE (Status)) 923fba7fc7eSJung-uk Kim { 924a9f12690SJung-uk Kim return (-1); 925a9f12690SJung-uk Kim } 926a9f12690SJung-uk Kim return (0); 927fba7fc7eSJung-uk Kim } 92853289f6aSNate Lawson 929a9f12690SJung-uk Kim /* Process each pathname/filename in the list, with possible wildcards */ 930a9f12690SJung-uk Kim 931a9f12690SJung-uk Kim while (argv[Index]) 93253289f6aSNate Lawson { 933a9f12690SJung-uk Kim Status = AslDoOnePathname (argv[Index]); 93453289f6aSNate Lawson if (ACPI_FAILURE (Status)) 93553289f6aSNate Lawson { 936a9f12690SJung-uk Kim return (-1); 93753289f6aSNate Lawson } 93853289f6aSNate Lawson 939a9f12690SJung-uk Kim Index++; 94053289f6aSNate Lawson } 94153289f6aSNate Lawson 94253289f6aSNate Lawson return (0); 94353289f6aSNate Lawson } 94453289f6aSNate Lawson 94553289f6aSNate Lawson 946