62 lines
2.0 KiB
Plaintext
62 lines
2.0 KiB
Plaintext
"preparser" is a little tool to resolve special macros and conditional
|
|
preprocessor code in C files.
|
|
|
|
The special marcro and conditions are given in a control file.
|
|
|
|
The control file use the same syntax like the C preprocessor directives
|
|
"#define" and "#undef" plus a "#delete" command.
|
|
You can also use C-Comments in it.
|
|
Here are 2 implicit conditional defines in "preparser" for "#if 0"
|
|
and "#if 1" code segments.
|
|
|
|
Control file syntax:
|
|
|
|
#delete <item to delete>
|
|
#define <name> <value>
|
|
#undef <name>
|
|
|
|
<name> maybe also a function.
|
|
|
|
/* example control file */
|
|
#delete #include <linux/isdn_compat.h>
|
|
#define GET_USER get_user
|
|
#define PUT_USER put_user
|
|
#define idev_kfree_skb(a,b) dev_kfree_skb(a)
|
|
#define COMPAT_HAS_NEW_SYMTAB
|
|
#undef COMPAT_HAS_NEW_SETUP
|
|
/* end of example control file */
|
|
|
|
What does the Programm ?
|
|
1. It copies a input file into a output file (or stdout)
|
|
2. While copying it deletes all items given in #delete (exact string
|
|
matching).
|
|
3. While copying it resolve the marcros given in the control file.
|
|
4. It resolve any "#ifdef" "#ifndef" "#if" related to the marcros given in
|
|
the control file. Note: in the moment it don't calculate a value after
|
|
an "#if" directive, if here is a "#define" in the control file for
|
|
the string after "#if" and the value of that "#define" is empty, "#if" is
|
|
handled as false, if a value is given it is handled as true.
|
|
5. All items inside "strings" or C comments are not modified.
|
|
|
|
Usage
|
|
|
|
./preparser [options] <input file> [output file]
|
|
|
|
Valid options are:
|
|
|
|
-d increase debug level
|
|
-c,-C <controlfile> Use control file
|
|
-? Usage ; printout this information
|
|
|
|
|
|
"preparser" was written to write Linux portable Linux kernel code (portable
|
|
in the sense "portable between various kernel versions") and to remove
|
|
experimental code from C files. This avoid that contructs based on
|
|
KERNELVERSION are going into standard kernel.
|
|
|
|
|
|
Karsten Keil
|
|
keil@isdn4linux.de
|
|
|
|
PS: If you like to get the source, request it by mail.
|