As maintainer of fedora-gnat-project-common I sometimes work on RPM macros for use in Ada packages. Every time I define a new macro I have trouble deciding whether its name should begin with an underscore or not. I know that there is some technical difference but I've never quite understood what practical difference it makes.
I've been trying to imitate macros with a similar function, so I defined _GNAT_project_dir with a leading underscore in analogy with _libdir and others. Macros containing command line flags for build tools I've defined without a leading underscore in analogy with optflags, but then there are _smp_mflags and the hardening macros which have the underscore, and __global_cflags and __global_ldflags even have two leading underscores.
Could someone explain what difference a leading underscore makes and give some guidance on when I should use it?
Is a double leading underscore functionally different from a single one, or is that just some kind of naming convention?
Björn Persson