NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: NetBSD macros
Am 14.12.2009 um 18:38 schrieb Sad Clouds:
I haven't used autoconf that much. I remember years ago I looked
into and I
found it too complex and time consuming to understand. I know a lot
of people
complain about autoconf for similar reasons. At the end of the day
nobody
wants to spend a lot of time learning m4 and trying to figure out
why autoconf
does this, but fails to do that, etc.
You don't have to learn much to use autoconf, but you have to
understand the philosophie of autoconf and how checks are done.
It would be naive to think that by simply running autoconf all your
problems
would be solved.
Exactly, they're only solved by autoconf if you do it right.
There are so many factors that affect how you structure your
code, when you try to support multiple operating systems. I doubt if
autoconf
will will always be able to figure it out for you. It's up to you to
read the
man pages and then make sure your code compiles and runs on those
operating
systems you're trying to support.
And this is where you're wrong: autoconf *DOES* allow you to make it
possible to make your app portable, even to systems you never even
tried. If you checked all the functions you use correctly, it will
just work. In fact, I often had success stories from strange systems
on strange CPUs for software that had a well-written configure.ac -
and nobody ever thought about these systems, but nevertheless did the
necessary checks. It's wrong to assume you just need to check those
things that are different between the OSes you're targetting. You also
need to check for what they have in common and if it behaves like you
expect!
For example, if you only support BSD, Linux and Solaris, then no
matter how
much autoconf you use, you cannot give assurance to people running
operating
systems like AIX or HP-UX that they will be able to compile your
code without
any problems. It's one of those things that you have to do manually.
I know software that has been developed for BSD/Linux/Solaris and runs
on AIX or HP-UX because it was well-written.
It's probably simpler just to look at operating system name and
version number
and use #ifdef. There will be some differences, but the major APIs
don't
chance that much.
You *DO* know that this will qucikly get 100 times longer than any
configure.ac file, right? Because if you only list all NetBSD versions
for a single feature, an autoconf check is already shorter - AND more
accurate. What if someone uses an older compiler with a newer libc?
The compiler won't know that it's running on a newer libc where newer
features are available. autoconf will.
--
Jonathan
Home |
Main Index |
Thread Index |
Old Index