Re: Why ./configure?

From: Mithaz (abinayshunyashynyaek_at_yahoo.com)
Date: 09/01/03


Date: Sun, 31 Aug 2003 20:32:26 -0500


"VBDis" <vbdis@aol.com> wrote in message
news:20030831211146.11891.00000383@mb-m11.aol.com...
> I'm not very well off these days, and my systems aren't either. Or can you
tell
> me why configure tells me "your compiler cannot create executable files"?
My
> gcc knows how to create executables, I know that my gcc can do so, only
> configure disagrees. And when I remove that obsolete test from the
configure
> script, everything works fine. But it was not easy to find the according
lines
> in configure, between those many thousand(!) other lines :-(
>
> But this is only one exceptionally ridiculous example, what nonsense is
done
> and produced by configure. In almost every tested GNU project configure
> prevents me from proceding, due to some condition which was not preseen by
the
> author of the configure script, maybe human or automake or any other tool.
>
> So my question to everybody is:
>
> Why is it impossible to distribute GNU projects with all the files, which
are
> required to compile and link the program? What's the special task of
configure,
> which can not be accomplished in any other way?
>
>
> IMO configure and many other parts of a project are obsolete. A project
can and
> should be shipped with immediately usable source files, regardless of the
> target platform and other conditions, which the author can not anticipate.
Even
> if this sounds incredible to you, please let me explain may thoughts, so
that
> you can point me to the places where my assumptions are wrong.
>
> Let's assume an dumb author, which only knows about his own system, so
that his
> project will build and work only on his specific system. Let's furthermore
> assume an guru, which can make that project build and work on a different
> system, which is unknown to the author. Obviously that guru can implement
his
> solution only, when he has access to all the files, which are required to
> compile and link the project. Consequently it's inacceptable if any
failure in
> the preceding step in the build process will result in missing source or
header
> files. Otherwise the whole project can not be considered to be portable,
if
> nobody but the original author can add support for other targets. Okay?
>
> Now let's wrap up the whole build process from the end, so that we can
find out
> what must and can be done in the preceding steps. In the last step the
linker
> creates a runnable program, with no unresolved external references. Having
> reached this step we have to face several conditions:
>
> - everything is fine - done! :-)
> - some library is missing - install and retry.
> - no such library is available - back up to the preceding step.
>
> The preceding step in this case is the compilation. Even if the library,
as
> used by the author, is not available on the target system, there may exist
a
> workaround. When such a workaround exists, then it can be added to the
source
> code, and the compiler has to be instructed by some condition (#define),
which
> of multiple solutions to choose on this special target system. But every
such
> workaround is not really restricted to a single target system, instead
it's
> applicable to every system on which the replacement library can be
installed.
> So the condition really has to reflect the state of the target system,
> resulting from the installation of some library. Such conditions need no
> complicated guessing by a stupid configuration tool, instead it's
sufficient to
> #define the according symbol when the library is installed. All what a
> configure tool or script can do is a check of the existing configuration
file,
> with appropriate messages when a required feature is not already
installed, and
> no workaround is known so far.
>
> This procedure also allows for cross-building projects, when every target
> system is represented by the target specific libraries (for the linker),
and
> the according configuration and header files (for the compiler). All these
> files can be kept in distinct target specific directories, as already in
use
> for gcc. Only that the informations in these directories now are not only
used
> by gcc, instead all target specific tools and scripts also reside there,
so
> that the whole build process only needs to know which of these directories
to
> use. Then also an equivalent of the current Makefile.am is sufficient for
> building every project, besides for very special cases like building OS
kernels
> and related modules or bootstrapping compilers.
>
>
> Now please tell me what's wrong with this simple model.
>
> DoDi

sorry, dont have a direct answer to your question, but want to make a point.

People who have had taken a class under prof Sol.. in UIC, like me, will
reiterate his words as explained in class :-

"Simple dosen't mean it's easy ; One problem has a very complicated solution
which few understand.
One takes that problem, investigates it, ponders, reasons, delibrates and
comes up with a solution which is simple.
The irony here is someone else comes and looks at the problem and declares,
'Ah, that's easy' "

I feel your pain. Wish C/C++ had a simple compile/link model as java. But
again have gotten used to carrying the burden of legacy.

--
AB


Relevant Pages

  • Re: Need your HELP: C in LINUX
    ... As for my editor preference, ... It has a built in function to compile the code using compiler specified in the configuration, but I don't even use that. ... Save your file from the editor, then type in the other window: "gcc file.c" - this is the simplest form of using gcc. ... It depends on what libraries you were using in Windows. ...
    (comp.lang.c)
  • Re: Nothing happens after freeing kernel memory
    ... different host libraries. ... but sometimes it won't compile through and leave me with some ... It builds binutils and a 'naked' gcc to start with. ... Some build systems also look at the CROSS or CROSS_COMPILE ...
    (comp.os.linux.embedded)
  • Re: 1] UNIX/LINUX Compilation 2] IDE
    ... headers, libraries, etc from the target linux system. ... Rebuilding GCC and BinUtils isn't really for the faint of heart. ... should be compatible with Linux ...
    (comp.os.msdos.djgpp)
  • Re: Forth Licensing Terms
    ... when you compile code using GCC you specify what libraries your code ... GCC is itself GPL but as no part of GCC is compiled into ... You may statically link against a LGPL library ...
    (comp.lang.forth)
  • Re: Compiler for 16-bit DOS
    ... I would like to use gnu gcc or other free compiler to compile my programs. ... As far as I can tell, recent gcc doesn't support DOS as target, and DJGPP a) targets i386 in protected mode and b) runs in DOS. ... Now if only I could get gcc to compile for 16-bit DOS, I could try it on my real target, the i186 system. ...
    (comp.os.msdos.programmer)