From: Nicholas Clark Date: Tue, 2 Sep 2008 14:16:13 +0000 (+0000) Subject: Note the task TODO of splitting the linker from the compiler. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=98fca0e8e75e558070559599425adf50018c09ba;p=p5sagit%2Fp5-mst-13.2.git Note the task TODO of splitting the linker from the compiler. p4raw-id: //depot/perl@34240 --- diff --git a/pod/perltodo.pod b/pod/perltodo.pod index c9a93c4..36f36bd 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -329,6 +329,52 @@ file/directory copying back and forth. Make F be updated by F. +=head2 Split "linker" from "compiler" + +Right now, Configure probes for two commands, and sets two variables: + +=over 4 + +=item * C + +This variable holds the name of a command to execute a C compiler which +can resolve multiple global references that happen to have the same +name. Usual values are F and F. +Fervent ANSI compilers may be called F. AIX has F. + +=item * ld (dlsrc.U) + +This variable indicates the program to be used to link +libraries for dynamic loading. On some systems, it is F. +On ELF systems, it should be C<$cc>. Mostly, we'll try to respect +the hint file setting. + +=back + +There is an implicit historical assumption, probably from Perl 1, that C<$cc> +is also the correct command for linking object files together to make an +executable. This may be true on Unix, but it's not true on other platforms, +and there are a maze of work arounds in other places (such as F) +to cope with this. + +Ideally, we should create a new variable to hold the name of the executable +linker program, probe for it in F, and centralise all the special +case logic there or in hints files. + +A small bikeshed issue remains - what to call it, given that C<$ld> is already +taken (arguably for the wrong thing) and C<$link> could be confused with the +Unix command line executable of the same name, which does something completely +different. Andy Dougherty makes the counter argument "In parrot, I tried to +call the command used to link object files and libraries into an executable +F, since that's what my vaguely-remembered DOS and VMS experience +suggested. I don't think any real confusion has ensued, so it's probably a +reasonable name for perl5 to use." + +"Alas, I've always worried that introducing it would make things worse, +since now the module building utilities would have to look for +C<$Config{link}> and institute a fall-back plan if it weren't found." + + =head1 Tasks that need a little C knowledge These tasks would need a little C knowledge, but don't need any specific