On Tue, 29 Oct 2002, Andy Dougherty wrote:

> Here's my proposal for stage one:  This patch is intended to define
> explicitly what the different compiler and linker commands and flags
> are, what they are supposed to mean, and how they are to be used.
> 
> Does this set of variables look sufficient for everyone, and are the
> definitions clear?  If so, the next step is to put the appropriate values
> in the hints files and re-work Configure and the Makefiles to use them
> consistently.

Of course it helps to include the patch :-(.

diff -r -u parrot-orig/config/init/data.pl parrot-andy/config/init/data.pl
--- parrot-orig/config/init/data.pl     Thu Sep 12 10:39:22 2002
+++ parrot-andy/config/init/data.pl     Tue Oct 29 11:44:55 2002
@@ -22,42 +22,70 @@
 
     # Compiler -- used to turn .c files into object files.
     # (Usually cc or cl, or something like that.)
+    # Compile C source files with
+    #    $cc $ccflags $cc_inc $cc_debug $cc_warn $cc_c file.c
+    # If you want this object file to be part of a shared library,
+    # then you need to compile instead with
+    #    $cc $ccflags $cc_inc $cc_debug $cc_warn $cc_dlflags $cc_c file.c
+    # Assume the compiler will put the object file in file$o.
+    # These Unix-ish defaults should be overridden by hints files
+    # as necessary for Win32, VMS, and other non-Unix systems.
     cc            => $Config{cc},
     ccflags       => $Config{ccflags},
+    cc_c          => '-c'       # Empty for VMS.
+    cc_inc       => "-I./include",  # How to pick up parrot includes.
+    cc_debug      => '-g',
+    cc_warn       => '',
+    cc_dlflags    => $Config{cccdlflags}, # Flags necessary to compile
+                               # this file for use in a shared library.
+    cc_o_out      => '-o ',     # cc object output file.  Don't use this; 
+                               # it's not portable.
+    cc_exe_out    => '-o ',     # cc executable output file.  Don't use this.
+                               # Use $link to create executables.
+    cc_ldflags    => '',        # prefix for ldflags (necessary for Win32) 
+                               # Huh?  This isn't used anywhere.
+                               # Don't use this.  I don't know what
+                               # it means.
 
     # Linker, used to link object files (plus libraries) into
     # an executable.  It is usually $cc on Unix-ish systems.
     # VMS and Win32 might use "Link". 
     # Perl5's Configure doesn't distinguish linking from loading, so
     # make a reasonable guess at defaults.
+    # Create an executable with
+    #  $link $linkflags $link_debug ${link_out}file${exe} file${o} $libs
+    # If you have multiple object files, VMS needs to have them
+    # separated by commas, like this:  (and all on one line)
+    #  $link $linkflags $link_debug ${link_out}file${exe} \
+    #          file1${o},file2${o} $libs
     link          => $Config{cc},
     linkflags     => $Config{ldflags},
+    link_debug    => '',
+    link_out      => '-o ',    # linker output file.  Keep the trailing
+                               # space for Unix-like linkers.
 
     # ld:  Tool used to build dynamically loadable libraries.  Often
     # $cc on Unix-ish systems, but apparently sometimes it's ld.
+    # The exact usage has not been determined yet.
     ld            => $Config{ld},
     ldflags       => $Config{ldflags},
+    ld_out        => '-o ',    # ld output file.  Keep the trailing
+                               # space for Unix-like linkers.
+    ld_debug      => '',        # include debug info in executable
+    ld_shared     => $Config{lddlflags},  # Any flags specifically
+                                # needed to instruct ld to create
+                               # a shared libary.
+    ld_shared_flags=> '',      # What is this, exactly?  For GNU ld, it was
+                               # '-Wl,-soname,libparrot$(SO)'
     
     libs          => $Config{libs},
     
-    cc_inc       => "-I./include",
-    cc_debug      => '-g',
-    link_debug    => '',
-    cc_warn       => '',
     o             => '.o',                # object files extension
-    so            => '.so',               # dynamic link library or shared object 
extension
+    so            => '.so',               # dynamic link library or 
+                                         # shared object extension
     a             => '.a',                # library or archive extension
     exe           => $Config{_exe},       # executable files extension
-    cc_o_out      => '-o ',               # cc object output file
-    cc_exe_out    => '-o ',               # cc executable output file (different on 
Win32)
-    
-    cc_ldflags    => '',                  # prefix for ldflags (necessary for Win32)
     
-    ld_out        => '-o ',               # ld output file
-    ld_debug      => '',                  # include debug info in executable
-    ld_shared     => $Config{lddlflags}, 
-    ld_shared_flags=> '', # What is this, exactly?  For GNU ld, it was
-    # '-Wl,-soname,libparrot$(SO)'
 
     # should we have a dependancy upon arc to generate .a's?
     blib_lib_libparrot_a => 'blib/lib/libparrot$(A)',

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to