Re: conditionally including

[ Available lists | Index of freebsd-hackers | Month of Feb 1997 | Week of 6 Feb 1997 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
Bruce Evans <bde@zeta.org.au>
Date
6 Feb 1997 20:27:02
Subject
Re: conditionally including <sys/param.h>
Message-ID
199702070423.PAA19335@godzilla.zeta.org.au


[ Hide this part ]
>> 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


Elapsed time: 0.110 seconds