On Fri, 14 Sep 2007, James Keenan via RT wrote: > This thread and RT ticket (41168) have been under way since Jan 03 2007 > and I'm afraid that the discussion is collapsing under its own weight. > May I make an attempt at summarizing the issues? Let's proceed from the > outermost inwards.
[skipping to the relevant issue for this ticket] > 3. Let's assume that we grant inter::progs more importance than other > configuration steps. How should the absence of a working C-compiler be > detected and reported? Configure should try to compile and run a simple program. It should check that the program ran, produced the desired output, and returned a 'success' exit status. If all those things don't check out, Configure should present a message that tells the user precisely what was attempted and what went wrong. Configure should probably offer to abort at that point. For comparison, here's what perl5's Configure does: If the user specifies a non-existent C compiler (e.g. with Configure -Dcc=NOcc) the following message is generated: Configure: NOcc: not found You need to find a working C compiler. Either (purchase and) install the C compiler supplied by your OS vendor, or for a free C compiler try http://gcc.gnu.org/ I cannot continue any further, aborting. That's not too specific, but doesn't appear to cause too much confusion either. A more common occurrence (based on the mails I get) is to have a compiler, but to have it not work as Configure expects for some reason or another. After setting all the flags and libraries, Configure performs a sanity check. It tries to compile and run a simple program. It checks both the return value and the printed output. (Under at least one release of the SFIO library, sfio's configuration script caused confusion between exit() and _exit() with the net result that the program compiled fine, ran, and exited with a return value of 0, but didn't actually print anything. Accordingly, perl5's Configure tests both the output and the exit status.) If this test fails, the following information is printed: (here I passed in a bad library with sh Configure -Dlibs=-lnosuch Checking your choice of C compiler and flags for coherency... I've tried to compile and run the following simple program: #include <stdio.h> int main() { printf("Ok\n"); return(0); } I used the command: cc -o try -O -I/usr/local/include -L/usr/ccs/lib -L/opt/SUNWspro/SC4.2/lib -L/usr/local/lib try.c -lnosuch ./try and I got the following output: ld: fatal: library -lnosuch: not found ld: fatal: File processing errors. No output written to try I can't compile the test program. (The supplied flags or libraries might be incorrect.) You have a BIG problem. Shall I abort Configure [y] Ok. Stopping Configure. This error message tells the user precisely what happened and gives enough information for the user to easily reproduce (and, I hope, fix) the problem. -- Andy Dougherty [EMAIL PROTECTED]