>> But they certainly should accept anything with __FooBSD__ or BSD >= mmm
>> or __FooBSD_version >= nnn. That would give 100-line ifdefs to support
>> 100 OS's. It's also useless for communicating what is different in
>> FooBSD.
>
>I don't disagree, I'm just saying that flatly including sys/param.h with
>no qualifiers means that it will be a fatal error on any machine that
>doesn't have a sys/param.h, so that's not acceptable.
The application authors should already have a way of handling the possible
nonexistence of sys/param.h, and it is unlikely to be the same as ours.
If not, then they should refuse to add anything involving sys/param.h.
>non-fatal in nature to systems without sys/param.h. The method I suggest
>above is messy, but (and _please_ correct me if I'm wrong) it has the sole
>benefit of being the only one I've seen that is non-fatal on systems that
>don't have a sys/param.h.
I forget what it is.
The only method that is (almost) guaranteed to work is a test involving
an identifier that is defined outside of the the application, perhaps in
bsd.ports.mk, e.g.,
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
This breaks if the identifier already has a different meaning to the
application (not likely) and is inconvenient if the application and/or
other supported targets already have a different spelling for the
identifier.
Bruce