summaryrefslogtreecommitdiffstats
path: root/source/tools/acpisrc
diff options
context:
space:
mode:
Diffstat (limited to 'source/tools/acpisrc')
-rw-r--r--source/tools/acpisrc/acpisrc.h9
-rw-r--r--source/tools/acpisrc/ascase.c9
-rw-r--r--source/tools/acpisrc/asconvrt.c9
-rw-r--r--source/tools/acpisrc/asfile.c11
-rw-r--r--source/tools/acpisrc/asmain.c14
-rw-r--r--source/tools/acpisrc/asremove.c78
-rw-r--r--source/tools/acpisrc/astable.c89
7 files changed, 211 insertions, 8 deletions
diff --git a/source/tools/acpisrc/acpisrc.h b/source/tools/acpisrc/acpisrc.h
index c1bd992..101083d 100644
--- a/source/tools/acpisrc/acpisrc.h
+++ b/source/tools/acpisrc/acpisrc.h
@@ -123,6 +123,7 @@ extern BOOLEAN Gbl_WidenDeclarations;
extern BOOLEAN Gbl_IgnoreLoneLineFeeds;
extern BOOLEAN Gbl_HasLoneLineFeeds;
extern BOOLEAN Gbl_Cleanup;
+extern BOOLEAN Gbl_IgnoreTranslationEscapes;
extern void *Gbl_StructDefs;
#define PARAM_LIST(pl) pl
@@ -177,6 +178,7 @@ typedef struct acpi_conversion_table
ACPI_IDENTIFIER_TABLE *SourceConditionalTable;
ACPI_IDENTIFIER_TABLE *SourceMacroTable;
ACPI_TYPED_IDENTIFIER_TABLE *SourceStructTable;
+ ACPI_IDENTIFIER_TABLE *SourceSpecialMacroTable;
UINT32 SourceFunctions;
ACPI_STRING_TABLE *HeaderStringTable;
@@ -184,6 +186,7 @@ typedef struct acpi_conversion_table
ACPI_IDENTIFIER_TABLE *HeaderConditionalTable;
ACPI_IDENTIFIER_TABLE *HeaderMacroTable;
ACPI_TYPED_IDENTIFIER_TABLE *HeaderStructTable;
+ ACPI_IDENTIFIER_TABLE *HeaderSpecialMacroTable;
UINT32 HeaderFunctions;
} ACPI_CONVERSION_TABLE;
@@ -196,6 +199,7 @@ extern ACPI_CONVERSION_TABLE CleanupConversionTable;
extern ACPI_CONVERSION_TABLE StatsConversionTable;
extern ACPI_CONVERSION_TABLE CustomConversionTable;
extern ACPI_CONVERSION_TABLE LicenseConversionTable;
+extern ACPI_CONVERSION_TABLE IndentConversionTable;
/* Prototypes */
@@ -282,6 +286,11 @@ AsRemoveEmptyBlocks (
char *Filename);
void
+AsCleanupSpecialMacro (
+ char *Buffer,
+ char *Keyword);
+
+void
AsCountSourceLines (
char *Buffer,
char *Filename);
diff --git a/source/tools/acpisrc/ascase.c b/source/tools/acpisrc/ascase.c
index ea669a8..919029a 100644
--- a/source/tools/acpisrc/ascase.c
+++ b/source/tools/acpisrc/ascase.c
@@ -92,7 +92,14 @@ AsLowerCaseString (
* Check for translation escape string -- means to ignore
* blocks of code while replacing
*/
- SubString2 = strstr (SubBuffer, AS_START_IGNORE);
+ if (Gbl_IgnoreTranslationEscapes)
+ {
+ SubString2 = NULL;
+ }
+ else
+ {
+ SubString2 = strstr (SubBuffer, AS_START_IGNORE);
+ }
if ((SubString2) &&
(SubString2 < SubString1))
diff --git a/source/tools/acpisrc/asconvrt.c b/source/tools/acpisrc/asconvrt.c
index 0f2da2b..76db871 100644
--- a/source/tools/acpisrc/asconvrt.c
+++ b/source/tools/acpisrc/asconvrt.c
@@ -525,7 +525,14 @@ AsReplaceString (
* Check for translation escape string -- means to ignore
* blocks of code while replacing
*/
- SubString2 = strstr (SubBuffer, AS_START_IGNORE);
+ if (Gbl_IgnoreTranslationEscapes)
+ {
+ SubString2 = NULL;
+ }
+ else
+ {
+ SubString2 = strstr (SubBuffer, AS_START_IGNORE);
+ }
if ((SubString2) &&
(SubString2 < SubString1))
diff --git a/source/tools/acpisrc/asfile.c b/source/tools/acpisrc/asfile.c
index d691582..e28a4cf 100644
--- a/source/tools/acpisrc/asfile.c
+++ b/source/tools/acpisrc/asfile.c
@@ -307,6 +307,7 @@ AsConvertFile (
ACPI_IDENTIFIER_TABLE *LineTable;
ACPI_IDENTIFIER_TABLE *MacroTable;
ACPI_TYPED_IDENTIFIER_TABLE *StructTable;
+ ACPI_IDENTIFIER_TABLE *SpecialMacroTable;
switch (FileType)
@@ -319,6 +320,7 @@ AsConvertFile (
ConditionalTable = ConversionTable->SourceConditionalTable;
MacroTable = ConversionTable->SourceMacroTable;
StructTable = ConversionTable->SourceStructTable;
+ SpecialMacroTable = ConversionTable->SourceSpecialMacroTable;
break;
case FILE_TYPE_HEADER:
@@ -329,6 +331,7 @@ AsConvertFile (
ConditionalTable = ConversionTable->HeaderConditionalTable;
MacroTable = ConversionTable->HeaderMacroTable;
StructTable = ConversionTable->HeaderStructTable;
+ SpecialMacroTable = ConversionTable->HeaderSpecialMacroTable;
break;
default:
@@ -401,6 +404,14 @@ AsConvertFile (
}
}
+ if (SpecialMacroTable)
+ {
+ for (i = 0; SpecialMacroTable[i].Identifier; i++)
+ {
+ AsCleanupSpecialMacro (FileBuffer, SpecialMacroTable[i].Identifier);
+ }
+ }
+
/* Process the function table */
for (i = 0; i < 32; i++)
diff --git a/source/tools/acpisrc/asmain.c b/source/tools/acpisrc/asmain.c
index e34eff0..9ce25a5 100644
--- a/source/tools/acpisrc/asmain.c
+++ b/source/tools/acpisrc/asmain.c
@@ -97,9 +97,10 @@ BOOLEAN Gbl_WidenDeclarations = FALSE;
BOOLEAN Gbl_IgnoreLoneLineFeeds = FALSE;
BOOLEAN Gbl_HasLoneLineFeeds = FALSE;
BOOLEAN Gbl_Cleanup = FALSE;
+BOOLEAN Gbl_IgnoreTranslationEscapes = FALSE;
#define AS_UTILITY_NAME "ACPI Source Code Conversion Utility"
-#define AS_SUPPORTED_OPTIONS "cdhlqsuv^y"
+#define AS_SUPPORTED_OPTIONS "cdhilqsuv^y"
/******************************************************************************
@@ -292,6 +293,7 @@ AsDisplayUsage (
ACPI_OPTION ("-c", "Generate cleaned version of the source");
ACPI_OPTION ("-h", "Insert dual-license header into all modules");
+ ACPI_OPTION ("-i", "Cleanup macro indentation");
ACPI_OPTION ("-l", "Generate Linux version of the source");
ACPI_OPTION ("-u", "Generate Custom source translation");
@@ -364,6 +366,16 @@ main (
ConversionTable = &LicenseConversionTable;
break;
+ case 'i':
+
+ /* Cleanup wrong indent result */
+
+ printf ("Cleaning up macro indentation\n");
+ ConversionTable = &IndentConversionTable;
+ Gbl_IgnoreLoneLineFeeds = TRUE;
+ Gbl_IgnoreTranslationEscapes = TRUE;
+ break;
+
case 's':
/* Statistics only */
diff --git a/source/tools/acpisrc/asremove.c b/source/tools/acpisrc/asremove.c
index fded3fd..37b167b 100644
--- a/source/tools/acpisrc/asremove.c
+++ b/source/tools/acpisrc/asremove.c
@@ -173,7 +173,14 @@ AsRemoveConditionalCompile (
* Check for translation escape string -- means to ignore
* blocks of code while replacing
*/
- Comment = strstr (SubString, AS_START_IGNORE);
+ if (Gbl_IgnoreTranslationEscapes)
+ {
+ Comment = NULL;
+ }
+ else
+ {
+ Comment = strstr (SubString, AS_START_IGNORE);
+ }
if ((Comment) &&
(Comment < SubBuffer))
@@ -611,3 +618,72 @@ AsRemoveDebugMacros (
AsReplaceString ("return_acpi_status", "return", REPLACE_WHOLE_WORD, Buffer);
AsReplaceString ("return_VALUE", "return", REPLACE_WHOLE_WORD, Buffer);
}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: AsCleanupSpecialMacro
+ *
+ * DESCRIPTION: For special macro invocations (invoked without ";" at the end
+ * of the lines), do the following:
+ * 1. Remove spaces appended by indent at the beginning of lines.
+ * 2. Add an empty line between two special macro invocations.
+ *
+ ******************************************************************************/
+
+void
+AsCleanupSpecialMacro (
+ char *Buffer,
+ char *Keyword)
+{
+ char *SubString;
+ char *SubBuffer;
+ char *LastNonSpace;
+
+
+ SubBuffer = Buffer;
+ SubString = Buffer;
+
+ while (SubString)
+ {
+ SubString = strstr (SubBuffer, Keyword);
+
+ if (SubString)
+ {
+ /* Find start of the line */
+
+ SubBuffer = SubString;
+ while (*(SubBuffer - 1) == ' ')
+ {
+ SubBuffer--;
+ }
+
+ if (*(SubBuffer - 1) == '\n')
+ {
+ /* Find last non-space character */
+
+ LastNonSpace = SubBuffer - 1;
+ while (isspace ((int) *LastNonSpace))
+ {
+ LastNonSpace--;
+ }
+
+ if (*LastNonSpace != '\\')
+ {
+ /* Remove the extra spaces */
+
+ SubString = AsRemoveData (SubBuffer, SubString);
+
+ /* Enforce an empty line between the invocations */
+
+ if (*(SubBuffer - 2) == ')')
+ {
+ AsInsertData (SubBuffer, "\n", 1);
+ }
+ }
+ }
+
+ SubBuffer = SubString + strlen (Keyword);
+ }
+ }
+}
diff --git a/source/tools/acpisrc/astable.c b/source/tools/acpisrc/astable.c
index d382523..081767b 100644
--- a/source/tools/acpisrc/astable.c
+++ b/source/tools/acpisrc/astable.c
@@ -168,10 +168,6 @@ ACPI_STRING_TABLE LinuxDataTypes[] = {
{"INT16", "s16", REPLACE_WHOLE_WORD},
{"INT8", "s8", REPLACE_WHOLE_WORD},
- /* Include file paths */
-
- {"\"acpi.h\"", "<acpi/acpi.h>", REPLACE_WHOLE_WORD},
-
{NULL, NULL, 0}
};
@@ -694,6 +690,44 @@ ACPI_IDENTIFIER_TABLE LinuxConditionalIdentifiers[] = {
{NULL}
};
+
+ACPI_STRING_TABLE LinuxSpecialStrings[] = {
+
+ /* Include file paths */
+
+ {"\"acpi.h\"", "<acpi/acpi.h>", REPLACE_WHOLE_WORD},
+ {"\"acpiosxf.h\"", "<acpi/acpiosxf.h>", REPLACE_WHOLE_WORD},
+ {"\"acpixf.h\"", "<acpi/acpixf.h>", REPLACE_WHOLE_WORD},
+ {"\"acbuffer.h\"", "<acpi/acbuffer.h>", REPLACE_WHOLE_WORD},
+ {"\"acconfig.h\"", "<acpi/acconfig.h>", REPLACE_WHOLE_WORD},
+ {"\"acexcep.h\"", "<acpi/acexcep.h>", REPLACE_WHOLE_WORD},
+ {"\"acnames.h\"", "<acpi/acnames.h>", REPLACE_WHOLE_WORD},
+ {"\"acoutput.h\"", "<acpi/acoutput.h>", REPLACE_WHOLE_WORD},
+ {"\"acrestyp.h\"", "<acpi/acrestyp.h>", REPLACE_WHOLE_WORD},
+ {"\"actbl.h\"", "<acpi/actbl.h>", REPLACE_WHOLE_WORD},
+ {"\"actbl1.h\"", "<acpi/actbl1.h>", REPLACE_WHOLE_WORD},
+ {"\"actbl2.h\"", "<acpi/actbl2.h>", REPLACE_WHOLE_WORD},
+ {"\"actbl3.h\"", "<acpi/actbl3.h>", REPLACE_WHOLE_WORD},
+ {"\"actypes.h\"", "<acpi/actypes.h>", REPLACE_WHOLE_WORD},
+ {"\"platform/acenv.h\"", "<acpi/platform/acenv.h>", REPLACE_WHOLE_WORD},
+ {"\"acgcc.h\"", "<acpi/platform/acgcc.h>", REPLACE_WHOLE_WORD},
+ {"\"aclinux.h\"", "<acpi/platform/aclinux.h>", REPLACE_WHOLE_WORD},
+
+ {NULL, NULL, 0}
+};
+
+
+ACPI_IDENTIFIER_TABLE LinuxSpecialMacros[] = {
+
+ {"ACPI_EXPORT_SYMBOL"},
+ {"ACPI_EXPORT_SYMBOL_INIT"},
+ {"ACPI_HW_DEPENDENT_RETURN_OK"},
+ {"ACPI_HW_DEPENDENT_RETURN_STATUS"},
+ {"ACPI_HW_DEPENDENT_RETURN_VOID"},
+ {NULL}
+};
+
+
ACPI_CONVERSION_TABLE LinuxConversionTable = {
DualLicenseHeader,
@@ -708,6 +742,7 @@ ACPI_CONVERSION_TABLE LinuxConversionTable = {
NULL,
LinuxEliminateMacros,
AcpiIdentifiers,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_CHECK_BRACES | CVT_TRIM_LINES | CVT_BRACES_ON_SAME_LINE |
CVT_MIXED_CASE_TO_UNDERSCORES | CVT_LOWER_CASE_IDENTIFIERS |
@@ -721,6 +756,7 @@ ACPI_CONVERSION_TABLE LinuxConversionTable = {
LinuxConditionalIdentifiers,
NULL,
AcpiIdentifiers,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_TRIM_LINES | CVT_MIXED_CASE_TO_UNDERSCORES |
CVT_LOWER_CASE_IDENTIFIERS | CVT_TRIM_WHITESPACE |
@@ -746,6 +782,7 @@ ACPI_CONVERSION_TABLE CleanupConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_CHECK_BRACES | CVT_TRIM_LINES | CVT_TRIM_WHITESPACE),
@@ -756,6 +793,7 @@ ACPI_CONVERSION_TABLE CleanupConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_TRIM_LINES | CVT_TRIM_WHITESPACE),
};
@@ -774,6 +812,7 @@ ACPI_CONVERSION_TABLE StatsConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_COUNT_SHORTMULTILINE_COMMENTS),
@@ -784,6 +823,7 @@ ACPI_CONVERSION_TABLE StatsConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_COUNT_SHORTMULTILINE_COMMENTS),
};
@@ -808,6 +848,7 @@ ACPI_CONVERSION_TABLE LicenseConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_COUNT_SHORTMULTILINE_COMMENTS),
@@ -818,6 +859,7 @@ ACPI_CONVERSION_TABLE LicenseConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_COUNT_SHORTMULTILINE_COMMENTS),
};
@@ -897,6 +939,7 @@ ACPI_CONVERSION_TABLE CustomConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_TRIM_LINES | CVT_TRIM_WHITESPACE),
@@ -907,6 +950,44 @@ ACPI_CONVERSION_TABLE CustomConversionTable = {
NULL,
NULL,
NULL,
+ NULL,
+ (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
+ CVT_TRIM_LINES | CVT_TRIM_WHITESPACE),
+};
+
+
+/******************************************************************************
+ *
+ * Indentation result fixup table
+ *
+ ******************************************************************************/
+
+ACPI_CONVERSION_TABLE IndentConversionTable = {
+
+ NULL,
+ FLG_NO_CARRIAGE_RETURNS,
+
+ NULL,
+
+ /* C source files */
+
+ LinuxSpecialStrings,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ LinuxSpecialMacros,
+ (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
+ CVT_TRIM_LINES | CVT_TRIM_WHITESPACE),
+
+ /* C header files */
+
+ LinuxSpecialStrings,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ LinuxSpecialMacros,
(CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES |
CVT_TRIM_LINES | CVT_TRIM_WHITESPACE),
};
OpenPOWER on IntegriCloud