That's really a compiler thing. On Windows (both for desktop and pocket pc) Microsoft's compilers support /FI (Name Forced Include File) option. To quote http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcce/htm/complref_11.asp:
"This option causes the preprocessor to process the specified header file. This option has the same effect as specifying the file with double quotes in an #include directive on the first line of every source file specified on the command line, in the CL environment variable, or in an command file. If you use multiple /FI options, files are included in the order they are processed by CL." So it'll be possible to craft a Makefile that will add "/FIconfig.h" to every compilation. On gcc "-include" seems to do the same (according to http://www.freeos.com/articles/3185/) so the same should be doable on Linux. Symbian, as far as I know, uses gcc as well (at least some versions of the SDK) so as long as the version of gcc that they use supports a similar option, it should work as well. Having said that, in general I'm wary of using tricks like this. C++ compilers don't seem to support them uniformly well. Some of the javascriptcore code depended on gcc-specific behaviour and required changes for visual c compatiblity. On Windows, for example, malloc() is thread-safe by default so unless there is a measurable speed gain in using the replacement, there's little value in using something else. -- kjk On 9/29/05, Maciej Stachowiak <[EMAIL PROTECTED]> wrote: > > Hi everyone, > > After recently changing to a threadsafe malloc, I'd like to use it > for all C++ allocations in WebCore/JavaScriptCore. Darin suggested a > neat trick for doing this, where we can do a private declaration of > operator new, so it won't affect outside C++ code: > > #if __GNUC__ > #define PRIVATE_INLINE __private_extern__ inline __attribute__ > ((always_inline)) > #else > #define PRIVATE_INLINE inline > #endif > > PRIVATE_INLINE void* operator new(size_t s) { return fastMalloc(s); } > PRIVATE_INLINE void operator delete(void* p) { fastFree(p); } > PRIVATE_INLINE void* operator new[](size_t s) { return fastMalloc(s); } > PRIVATE_INLINE void operator delete[](void* p) { fastFree(p); } > > > Note that the operator declarations are inline, so the header that > contains this must be included in every C++ implementation file (or > you could get new/delete mismatches which would lead to crashes or > random memory trashing). > > On Mac OS X, the easiest way to do this is to make sure these > definitions are included in the per-project prefix header. The Xcode > build system will tell gcc to make a precompiled header out of this, > and then automatically pass it as a prefix header to all gcc > invocations. I don't know if other build systems have anything > analogous. Another possible alternative is to make sure these > declarations go in config.h, and then force every source file to > include it. But that's a little ugly and furthermore hard to > maintain, since forgetting a config.h include will not lead to a > build failure but will cause incorrect code to be generated. > > > So does anyone have any experience here? I'd like the solution to > work at least on Linux, Windows and Symbian Series 60. > > Regards, > Maciej > > _______________________________________________ > webkit-dev mailing list > [email protected] > http://www.opendarwin.org/mailman/listinfo/webkit-dev > _______________________________________________ webkit-dev mailing list [email protected] http://www.opendarwin.org/mailman/listinfo/webkit-dev
