On Wed, May 30, 2007 at 10:58:29AM -0700, Jim Seymour wrote:
I have a desire to inject an "extern" statement into an include file
generated by one of our CDL files - so I added a "define_proc" block.
Worked like a champ - until the build got to the rule to create
"heapgeninc.tcl" out of heapgen.cpp.
This file is run through the preprocessor and the output is then fed to
Tcl. My "extern" statement is passed through the preprocessor intact,
so when it gets to Tcl, I get this error:
invalid command name "extern"
The same problem exists when the target.ld file is built. My "extern"
statement gets stuffed into that file, so ld fails with a "parse error".
I fixed both problems with a horrible kludge: adding a #define to
heapgen.cpp and then bracketing my extern with a #ifndef.
Could you turn this around. I think cpp is used to generate the linker
file, heapgeninc.tcl and it is used when compiling C and C++
code. However each invocation is for different languages.
Take a look at the output of:
gcc -v -E -dD empty.c
gcc -v -E -dD empty.cpp
and see if there is something defined when compiling real code which
is not defined when using CPP for building the .ld file etc. Then use
#ifdef so that the extern is only present for real code generation
compilation.