Global Symbols

I develop many of my packages in ways that "link" them or make them "benefit by" mutual interactions. I am finding that I am doing a great deal of head scratching each time to keep my code honest about what is/is not present during compile time and possibly also during run time. To greatly simplify this, I would like to be able to define globals that can be encoded during compile time in the same way as are such things as Macintosh or Windows. That basically means having something equal to ...

#def/G PackageTools

For my cases, my code would then be written to recognize PackageTools in this way ...

#ifdef PackageTools
    // do things that require PackageTools

Caveats in doing this within Independent Modules are understood -- I would not want an IM to depend on anything outside itself anyway. However, I would definitely want the #def/G statement to "push" the global out for recognition by all compile spaces (IMs and ProcGlobal).