This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Note the task TODO of splitting the linker from the compiler.
authorNicholas Clark <nick@ccl4.org>
Tue, 2 Sep 2008 14:16:13 +0000 (14:16 +0000)
committerNicholas Clark <nick@ccl4.org>
Tue, 2 Sep 2008 14:16:13 +0000 (14:16 +0000)
p4raw-id: //depot/perl@34240

pod/perltodo.pod

index c9a93c4..36f36bd 100644 (file)
@@ -329,6 +329,52 @@ file/directory copying back and forth.
 
 Make F<pod/roffitall> be updated by F<pod/buildtoc>.
 
+=head2 Split "linker" from "compiler"
+
+Right now, Configure probes for two commands, and sets two variables:
+
+=over 4
+
+=item * C<cc (cc.U)>
+
+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<cc> and F<gcc>.
+Fervent ANSI compilers may be called F<c89>.  AIX has F<xlc>.
+
+=item * ld (dlsrc.U)
+
+This variable indicates the program to be used to link
+libraries for dynamic loading.  On some systems, it is F<ld>.
+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<Makefile.SH>)
+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<Configure>, 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<link>, 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