Nick,

I'll try to take a look at all of this patch today. Quick questions -
why is:

+src/install_config.o                              [main]lib

being added to MANIFEST.generated?

-J

On Fri, Dec 23, 2005 at 06:25:44PM +0000, Nick Glencross wrote:
> Index: debian/libparrot.install
> ===================================================================
> --- debian/libparrot.install  (revision 10631)
> +++ debian/libparrot.install  (working copy)
> @@ -1 +1 @@
> -usr/lib/blib/lib/libparrot.so.* usr/lib
> +usr/lib/libparrot.so.* usr/lib
> Index: debian/rules
> ===================================================================
> --- debian/rules      (revision 10631)
> +++ debian/rules      (working copy)
> @@ -23,7 +23,7 @@
>  
>  build-stamp: configure-stamp 
>       dh_testdir
> -     $(MAKE) world_shared
> +     $(MAKE) installable
>       pod2man --section=1 --release="Debian Project" --center="Debian 
> GNU/Linux manual" docs/running.pod debian/parrot.1
>       pod2man --section=1 --release="Debian Project" --center="Debian 
> GNU/Linux manual" parrot-config.imc debian/parrot-config.imc.1
>       pod2man --section=1 --release="Debian Project" --center="Debian 
> GNU/Linux manual" src/pdump.c debian/pdump.1
> @@ -50,11 +50,11 @@
>       dh_installdirs -plibparrot-dev usr/share/lintian/overrides
>       $(MAKE) install PREFIX=$(CURDIR)/debian/tmp/usr
>       dh_install --sourcedir=$(CURDIR)/debian/tmp --list-missing
> -     install -m755 $(CURDIR)/debian/tmp/usr/bin/pdump_shared 
> $(CURDIR)/debian/parrot/usr/bin/pdump
> -     install -m755 $(CURDIR)/debian/tmp/usr/bin/pdb_shared 
> $(CURDIR)/debian/parrot/usr/bin/parrot-debugger
> -     install -m755 $(CURDIR)/debian/tmp/usr/bin/pbc_info_shared 
> $(CURDIR)/debian/parrot/usr/bin/pbc_info
> -     install -m755 $(CURDIR)/debian/tmp/usr/bin/pbc_merge_shared 
> $(CURDIR)/debian/parrot/usr/bin/pbc_merge
> -     install -m755 $(CURDIR)/debian/tmp/usr/bin/disassemble_shared 
> $(CURDIR)/debian/parrot/usr/bin/disassemble
> +     install -m755 $(CURDIR)/debian/tmp/usr/bin/installable_pdump 
> $(CURDIR)/debian/parrot/usr/bin/pdump
> +     install -m755 $(CURDIR)/debian/tmp/usr/bin/installable_pdb 
> $(CURDIR)/debian/parrot/usr/bin/parrot-debugger
> +     install -m755 $(CURDIR)/debian/tmp/usr/bin/installable_pbc_info 
> $(CURDIR)/debian/parrot/usr/bin/pbc_info
> +     install -m755 $(CURDIR)/debian/tmp/usr/bin/installable_pbc_merge 
> $(CURDIR)/debian/parrot/usr/bin/pbc_merge
> +     install -m755 $(CURDIR)/debian/tmp/usr/bin/installable_disassemble 
> $(CURDIR)/debian/parrot/usr/bin/disassemble
>       install -m644 debian/libparrot-dev.lintian-overrides 
> $(CURDIR)/debian/libparrot-dev/usr/share/lintian/overrides/libparrot-dev
>  
>  # Build architecture-independent files here.
> Index: tools/dev/install_files.pl
> ===================================================================
> --- tools/dev/install_files.pl        (revision 10631)
> +++ tools/dev/install_files.pl        (working copy)
> @@ -110,12 +110,12 @@
>  
>  
> ################################################################################
>  
> -use File::Basename qw(dirname);
>  use File::Copy;
>  use File::Spec;
>  use strict;
>  use lib 'lib';
>  use Parrot::Config;
> +use File::Basename qw(dirname basename);
>  
>  my $exe = $PConfig{'exe'};
>  
> @@ -172,7 +172,7 @@
>      $meta{$_} = 1 for (keys %meta); # Laziness
>  
>      if ($meta{lib}) {
> -        $dest = File::Spec->catdir($options{libdir}, $dest);
> +        $dest = File::Spec->catdir($options{libdir}, basename ($dest));
>      } elsif ($meta{bin}) {
>       $dest =~ s/^installable_//;     # parrot with different config
>          $dest = File::Spec->catdir($options{bindir}, $dest);
> Index: lib/Parrot/Test.pm
> ===================================================================
> --- lib/Parrot/Test.pm        (revision 10631)
> +++ lib/Parrot/Test.pm        (working copy)
> @@ -575,18 +575,8 @@
>              print SOURCE $source;
>              close SOURCE;
>  
> -            (my $libparrot_root = $PConfig{blib_lib_libparrot_a}) =~ 
> s/\$\(A\)//;
> -            my $libparrot_dynamic = $libparrot_root.$PConfig{share_ext};
> +            my $libparrot="$PConfig{link_rpath_blib}-L$PConfig{blib_dir} 
> -lparrot";
>  
> -            my $libparrot;
> -
> -            # use shared library version if available
> -            if( -e $libparrot_dynamic ) {
> -                $libparrot = '-Lblib/lib -lparrot';
> -            } else {
> -                $libparrot = $libparrot_root.$PConfig{a};
> -            }
> -
>              my $iculibs = "";
>              if ($PConfig{'has_icu'}) {
>                  $iculibs = $PConfig{icu_shared};
> Index: MANIFEST
> ===================================================================
> --- MANIFEST  (revision 10631)
> +++ MANIFEST  (working copy)
> @@ -252,6 +252,7 @@
>  config/inter/encoding.pm                          []
>  config/inter/exp.pm                               []
>  config/inter/lex.pm                               []
> +config/inter/libparrot.pm                         []
>  config/inter/make.pm                              []
>  config/inter/ops.pm                               []
>  config/inter/pmc.pm                               []
> Index: Configure.pl
> ===================================================================
> --- Configure.pl      (revision 10631)
> +++ Configure.pl      (working copy)
> @@ -398,6 +398,7 @@
>      auto::msvc
>      init::optimize
>      inter::shlibs
> +    inter::libparrot
>      inter::charset
>      inter::encoding
>      inter::types
> @@ -453,11 +454,27 @@
>  
>  # tell users what to do next
>  my $make = $conf->data->get('make');
> +my $blib_dir = $conf->data->get ('blib_dir');
> +my $link_rpath_blib = $conf->data->get ('link_rpath_blib');
> +my $libparrot_is_shared = $conf->data->get ('libparrot_is_shared');
>  
> +my $shared_warning = "";
> +
> +if ($libparrot_is_shared && $link_rpath_blib eq '')
> +{
> +    $shared_warning =<<"END"
> +
> +NOTE: During the build I will create a shared library in `$blib_dir',
> +but I will not be able to automatically make executables locate it,
> +so you will need to add this directory to LD_LIBRARY_PATH, SH_LIBS
> +or you PATH (depending on your platform) to locate it during building.
> +END
> +}
> +
>  print <<"END";
>  
>  Okay, we're done!
> -
> +$shared_warning
>  You can now use `$make' to build your Parrot. After that,
>  you can use `$make test' to run the test suite.
>  
> Index: MANIFEST.generated
> ===================================================================
> --- MANIFEST.generated        (revision 10631)
> +++ MANIFEST.generated        (working copy)
> @@ -1,16 +1,13 @@
> -disassemble                                       [main]bin
> -disassemble_shared                                [main]bin
>  installable_parrot                                [main]bin
> -pdump                                             [main]bin
> -pdump_shared                                      [main]bin
> -pdb                                               [main]bin
> -pdb_shared                                        [main]bin
> -pbc_info                                          [main]bin
> -pbc_info_shared                                   [main]bin
> -pbc_merge                                         [main]bin
> -pbc_merge_shared                                  [main]bin
> +installable_disassemble                           [main]bin
> +installable_pdump                                 [main]bin
> +installable_pdb                                   [main]bin
> +installable_pbc_info                              [main]bin
> +installable_pbc_merge                             [main]bin
>  blib/lib/libparrot.a                              [main]lib
> +blib/lib/libparrot.so                             [main]lib
>  blib/lib/libparrot.so.0.4.0                       [main]lib
> +src/install_config.o                              [main]lib
>  docs/ops/bit.pod                                  [main]doc
>  docs/ops/cmp.pod                                  [main]doc
>  docs/ops/core.pod                                 [main]doc
> Index: config/inter/libparrot.pm
> ===================================================================
> --- config/inter/libparrot.pm (revision 0)
> +++ config/inter/libparrot.pm (revision 0)
> @@ -0,0 +1,56 @@
> +# Copyright: 2005 The Perl Foundation.  All Rights Reserved.
> +# $Id: libparrot.pm $
> +
> +=head1 NAME
> +
> +config/inter/libparrot.pm - Determines build information for libparrot
> +
> +=head1 DESCRIPTION
> +
> +libparrot is the library containing the parrot VM. This configuration
> +step determines whether it should be build static or shared.
> +
> +=cut
> +
> +package inter::libparrot;
> +
> +use strict;
> +use vars qw($description $result @args);
> +
> +use base qw(Parrot::Configure::Step::Base);
> +
> +use Parrot::Configure::Step ':inter';
> +
> +$description = 'Determine if libparrot should be a shared library...';
> +
> [EMAIL PROTECTED] = qw(ask libparrot_is_shared);
> +
> +sub runstep {
> +    my ($self, $conf) = @_;
> +
> +    my ($libparrot_is_shared) = $conf->options->get ('libparrot_is_shared');
> +
> +    $libparrot_is_shared =
> +     integrate($conf->data->get('libparrot_is_shared'),
> +               $libparrot_is_shared);
> +
> +    if ($conf->options->get ('ask'))
> +    {
> +     $libparrot_is_shared=
> +         prompt("\nShould libparrot be built as a shared library?",
> +                $libparrot_is_shared ? 'y' : 'n');
> +
> +     $libparrot_is_shared = lc($libparrot_is_shared) eq 'y';
> +    }
> +
> +    $conf->data->set
> +     (libparrot_is_shared => $libparrot_is_shared,
> +      
> +      libparrot => $libparrot_is_shared
> +      ? '$(LIBPARROT_SHARED)'
> +      : '$(LIBPARROT_STATIC)');
> +
> +    $result = $libparrot_is_shared ? 'yes' : 'no';
> +}
> +
> +1;
> Index: config/init/defaults.pm
> ===================================================================
> --- config/init/defaults.pm   (revision 10631)
> +++ config/init/defaults.pm   (working copy)
> @@ -75,6 +75,10 @@
>          # allow dynamic libraries to access the binary's symbols
>          link_dynamic  => $Config{ccdlflags}, # e.g. -Wl,-E on HP-UX
>  
> +        # sets the shared library search path on an executable
> +        # e.g. -Wl,-rpath=XXX on Linux/-Wl,+b -Wl,XXX on HP-UX
> +        link_rpath_blib => '',
> +
>          # ld: Tool used to build shared libraries and dynamically loadable
>          # modules. Often $cc on Unix-ish systems, but apparently sometimes
>          # it's ld.
> @@ -85,7 +89,11 @@
>          # libraries and modules that can be dynamically loaded.  Flags to 
> tell
>          # ld to build a shared library, e.g.  -shared for GNU ld.
>          ld_share_flags => $Config{lddlflags},
> -    
> +
> +     # sets internal shared library name for libparrot versioning
> +     # e.g. -Wl,-soname on Linux/+h on HP-UX linker
> +     ld_libparrot_soname => '',
> +   
>          # These relate to building of dynclasses.
>          cc_building_dynclass_flag => '',
>      
> @@ -100,7 +108,7 @@
>  
>          cc_inc         => "-I./include",
>          cc_debug      => '-g',
> -        link_debug    => '',
> +        link_debug    => '',   # Note:non-GNU linkers generally don't accept 
> -g
>  
>          o             => $Config{_o},         # object files extension
>          share_ext     => ".$Config{so}",      # shared library extension
> @@ -120,19 +128,30 @@
>          # include debug info in executable
>          ld_debug      => '',
>  
> -        # should we have a dependancy upon arc to generate .a's?
> -        blib_lib_libparrot_a => 'blib/lib/libparrot$(A)',
> +        # Library build directory
> +     blib_dir      => 'blib/lib',
>  
> +        # libparrot library names
> +        libparrot_static => 'libparrot$(A)',
> +        libparrot_shared => 'libparrot$(SHARE_EXT)',
> +
> +     # If this is set it will be linked to libparrot_shared,
> +        # which is useful for versioning (see hints/)
> +     libparrot_shared_alias => '',
> +
> +     # default behaviour for building libparrot static or shared
> +        libparrot_is_shared => '0',
> +
>          perl          => $^X,
>          test_prog     => 'parrot',
>          rm_f          => '$(PERL) -MExtUtils::Command -e rm_f',
>          rm_rf         => '$(PERL) -MExtUtils::Command -e rm_rf',
> +        mkdir         => '$(PERL) -MExtUtils::Command -e mkpath',
>          ar            => $Config{ar},
>          ar_flags      => 'cr',
>          ar_out        => '',                  # for Win32
>          ar_extra      => '',                  # for Borland C
>          ranlib        => $Config{ranlib},
> -        rpath         => '-Wl,-rpath=',
>          make          => $Config{make},
>          make_set_make => $Config{make_set_make},
>          make_and      => '&&',
> Index: config/init/hints/hpux.pm
> ===================================================================
> --- config/init/hints/hpux.pm (revision 10631)
> +++ config/init/hints/hpux.pm (working copy)
> @@ -13,8 +13,61 @@
>          $libs .= ' -lpthread';
>      }
>  
> +    
> +   # It is possible to have various permutations of compiler and linker on
> +   # HP-UX:
> +   #
> +   #   * The bundled (K&R) compiler/linker, which won't ever build parrot
> +   #   * The commercial (c89) compiler and HP linker
> +   #   * gcc with the HP linker
> +   #   * gcc with the GNU linker
> +   #
> +   # Ever though we may have gcc, we need to know which linker is being used
> +   #
> +   # Note: The only configuration currently available to me is gcc with the
> +   #       HP linker 
> +
> +    my $cc_shared      = $conf->data->get('cc_shared');
> +    my $ld_share_flags = $conf->data->get('ld_share_flags');
> +
> +    my ($link_rpath_blib, $ld_libparrot_soname);
> +
> +    if ($ld_share_flags eq '-b')
> +    {
> +     # HP linker
> +
> +     $link_rpath_blib = '-Wl,+s -Wl,+b -Wl,' .
> +         $conf->data->get('build_dir') . 
> +         $conf->data->get('slash') . 
> +         $conf->data->get('blib_dir') . ' ';
> +    
> +     $ld_libparrot_soname = '+h libparrot$(SHARE_EXT).$(SOVERSION) ';
> +    }
> +    else
> +    {
> +     # GNU linker (based on Linux)
> +     
> +     $link_rpath_blib =
> +         '-Wl,-rpath=' .
> +         $conf->data->get('build_dir') . 
> +         $conf->data->get('slash') . 
> +         $conf->data->get('blib_dir') . ' ';
> +
> +     $ld_libparrot_soname   = 
> '-Wl,-soname=libparrot$(SHARE_EXT).$(SOVERSION) ';
> +    }
> +
>      $conf->data->set(
>          libs => $libs,
> +
> +
> +        libparrot_is_shared    => 1,
> +        libparrot_shared       => 'libparrot$(SHARE_EXT).$(SOVERSION)',
> +        libparrot_shared_alias => 'libparrot$(SHARE_EXT)',
> +
> +        link_rpath_blib        => $link_rpath_blib,
> +
> +        ld_libparrot_soname    => $ld_libparrot_soname,
> +
>      );
>  }
>  
> Index: config/init/hints/linux.pm
> ===================================================================
> --- config/init/hints/linux.pm        (revision 10631)
> +++ config/init/hints/linux.pm        (working copy)
> @@ -48,6 +48,18 @@
>          i_lib_pthread  => 1,               # XXX fake a header entry
>          linkflags      => $linkflags,
>          link           => $link,
> +
> +        libparrot_is_shared   => 1,
> +        libparrot_shared      => 'libparrot$(SHARE_EXT).$(SOVERSION)',
> +        libparrot_shared_alias=> 'libparrot$(SHARE_EXT)',
> +
> +        ld_libparrot_soname   => 
> '-Wl,-soname=libparrot$(SHARE_EXT).$(SOVERSION) ',
> +
> +        link_rpath_blib =>
> +                  '-Wl,-rpath=' .
> +                  $conf->data->get('build_dir') . 
> +                  $conf->data->get('slash') . 
> +                  $conf->data->get('blib_dir') . ' ',
>      );
>  
>      if ((split('-', $Config{archname}))[0] eq 'ia64') {
> Index: config/init/hints/mswin32.pm
> ===================================================================
> --- config/init/hints/mswin32.pm      (revision 10631)
> +++ config/init/hints/mswin32.pm      (working copy)
> @@ -51,12 +51,15 @@
>              ld_load_flags  => '-dll -def:libparrot.def',
>              ld_out     => '-out:',
>              ldflags    => '-nologo -nodefaultlib',
> -            blib_lib_libparrot_a => 'blib/lib/libparrot_s$(A)',
>              ar_flags   => '',
>              ar_out     => '-out:',
>              slash      => '\\',
> +            blib_dir   => 'blib\\lib',
>              ccflags    => $ccflags,
> -            ccwarn     => ''
> +            ccwarn     => '',
> +
> +            libparrot_static => 'blib/lib/libparrot_s$(A)',
> +            libparrot_shared => 'blib/lib/libparrot_s$(SHARE_EXT)',
>          );
>          # 'link' needs to be link.exe, not cl.exe.
>          # This makes 'link' and 'ld' the same.
> @@ -98,13 +101,17 @@
>              ld_load_flags   => '-dll -def:libparrot.def',
>              ld_out     => '-out:',
>              ldflags    => '-nologo -nodefaultlib',
> -            blib_lib_libparrot_a => 'blib/lib/libparrot_s$(A)',
>              ar         => 'xilib',
>              ar_flags   => '',
>              ar_out     => '-out:',
>              slash      => '\\',
> +            blib_dir   => 'blib\\lib',
>              ccflags    => $ccflags,
> -            ccwarn     => ''
> +            ccwarn     => '',
> +
> +            libparrot_static => 'blib/lib/libparrot_s$(A)',
> +            libparrot_shared => 'blib/lib/libparrot_s$(SHARE_EXT)',
> +
>          );
>          # 'link' needs to be xilink.exe, not icl.exe.
>          # This makes 'link' and 'ld' the same.
> @@ -146,9 +153,11 @@
>              ar_out => '',
>              ar_extra => '/au',
>              slash => '\\',
> +            blib_dir   => 'blib\\lib',
>              make_and => "\n\t",
>  
> -            blib_lib_libparrot_a => 'blib\lib\libparrot.lib',
> +            libparrot_static => 'libparrot.lib',
> +            libparrot_shared => 'libparrot$(SHARE_EXT)',
>          );
>      }
>      elsif( $is_mingw ) {
> @@ -170,6 +179,7 @@
>                  ncilib_link_extra => 'src/libnci_test.def',
>                  o => '.o',
>                  slash => '\\',
> +                blib_dir   => 'blib\\lib',
>              );
>              if ($conf->data->get(qw(optimize)) eq "1") {
>                  $conf->data->set(
> Index: config/gen/makefiles/root.in
> ===================================================================
> --- config/gen/makefiles/root.in      (revision 10631)
> +++ config/gen/makefiles/root.in      (working copy)
> @@ -89,8 +89,7 @@
>  TOUCH      = $(PERL) -MExtUtils::Command -e touch
>  YACC       = ${yacc}
>  LEX        = ${lex}
> -# do not die when dir already exits
> -MKDIR      = $(PERL) -e ${PQ}-d or mkdir $$_,0777 or die foreach @ARGV${PQ}
> +MKDIR      = $(PERL) -MExtUtils::Command -e mkpath
>  CC         = ${cc}
>  CC_INC     = ${cc_inc}
>  C_LIBS     = ${libs}
> @@ -457,19 +456,30 @@
>  # Executables
>  PARROT            = $(CUR_DIR)/${test_prog}$(EXE)
>  MINIPARROT        = $(CUR_DIR)/miniparrot$(EXE)
> -INSTALLABLEPARROT = $(CUR_DIR)/installable_parrot$(EXE)
> -PARROT_SO         = $(CUR_DIR)/${test_prog}_so$(EXE)
>  DIS               = $(CUR_DIR)/disassemble$(EXE)
>  PDUMP             = $(CUR_DIR)/pdump$(EXE)
>  PINFO             = $(CUR_DIR)/pbc_info$(EXE)
>  PBCMERGE          = $(CUR_DIR)/pbc_merge$(EXE)
>  PDB               = $(CUR_DIR)/pdb$(EXE)
>  
> -# libs
> -LIBPARROT         = ${blib_lib_libparrot_a}
> -#CONDITIONED_LINE(has_icu):ICU_SHARED      = ${icu_shared}
> -ALL_PARROT_LIBS   = $(LIBPARROT) $(ICU_SHARED) $(C_LIBS)
> +# Installable executables
> +INSTALLABLEPARROT   = $(CUR_DIR)/installable_parrot$(EXE)
> +INSTALLABLEDIS      = $(CUR_DIR)/installable_disassemble$(EXE)
> +INSTALLABLEPDUMP    = $(CUR_DIR)/installable_pdump$(EXE)
> +INSTALLABLEPINFO    = $(CUR_DIR)/installable_pbc_info$(EXE)
> +INSTALLABLEPBCMERGE = $(CUR_DIR)/installable_pbc_merge$(EXE)
> +INSTALLABLEPDB      = $(CUR_DIR)/installable_pdb$(EXE)
>  
> +# Libraries
> +LIBPARROT_STATIC  = ${blib_dir}${slash}${libparrot_static}
> +LIBPARROT_SHARED  = ${blib_dir}${slash}${libparrot_shared}
> +
> +# This line controls whether a static or shared library is built
> +LIBPARROT         = ${libparrot}
> +
> +#CONDITIONED_LINE(has_icu):ICU_SHARED  = ${icu_shared}
> +ALL_PARROT_LIBS   = -L${blib_dir} -lparrot $(ICU_SHARED) $(C_LIBS)
> +
>  # dynamic extensions
>  DYNEXT_DIR        = runtime/parrot/dynext
>  LIBNCI_TEST_SO    = $(DYNEXT_DIR)/libnci_test$(LOAD_EXT)
> @@ -583,11 +593,9 @@
>       @echo "  all:               'parrot' and the documentation."
>       @echo "                     This is the default."
>       @echo ""
> -     @echo "  shared:            'parrot', dynamically linked"
> -     @echo "  all_shared:        'parrot', dynamically linked and the 
> documentation"
> -     @echo ""
>       @echo "  world:             'all' and 'parrot_utils'."
> -     @echo "  world_shared:      'all_shared' and 'parrot_utils_shared'"
> +     @echo "  installable:       same as 'world', but targets for 
> installation"
> +
>       @echo ""
>       @echo "  parrot_utils:      $(PDUMP), $(DIS), $(PINFO), $(PDB) and 
> $(PBCMERGE)"
>       @echo "  $(PDUMP):             Parrot Dumper"
> @@ -596,7 +604,6 @@
>       @echo "  $(PDB):               Parrot Debugger"
>       @echo "  $(PBCMERGE):         Parrot Debugger"
>       @echo ""
> -     @echo "  parrot_utils_shared: same as parrot_utils, but linked against 
> a shared libparrot"
>       @echo ""
>       @echo "Installation:"
>       @echo "  install:           Install under '/usr/local/parrot' on Unix 
> systems"
> @@ -673,11 +680,10 @@
>  
>  world : all parrot_utils
>  
> -world_shared: all_shared parrot_utils_shared
> -
>  parrot_utils : $(PDUMP) $(DIS) $(PINFO) $(PDB) $(PBCMERGE)
> -parrot_utils_shared : $(PDUMP)_shared $(DIS)_shared $(PINFO)_shared 
> $(PDB)_shared $(PBCMERGE)_shared
>  
> +installable : all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) 
> $(INSTALLABLEPINFO) $(INSTALLABLEPDB) $(INSTALLABLEPBCMERGE)
> +
>  flags_dummy :
>       @echo Compiling with:
>       @$(PERL) tools/dev/cc_flags.pl $(CUR_DIR)/CFLAGS echo $(CC) $(CFLAGS) 
> -I$(@D) ${cc_o_out} xx$(O) -c xx.c
> @@ -695,20 +701,21 @@
>  $(PARROT) : $(IMCC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
>       lib/Parrot/OpLib/core.pm $(SRC_DIR)/parrot_config$(O) \
>       $(MINIPARROT) ${parrot_exe_def}
> -     $(LINK) ${ld_out}$(PARROT) $(LINKFLAGS) $(LINK_DYNAMIC) 
> ${ld_parrot_exe_def} \
> -     $(IMCC_DIR)/main$(O) $(ALL_PARROT_LIBS) $(SRC_DIR)/parrot_config$(O)
> +     $(LINK) ${ld_out}$@ $(LINKFLAGS) $(LINK_DYNAMIC) ${ld_parrot_exe_def} \
> +     $(IMCC_DIR)/main$(O) ${link_rpath_blib}$(ALL_PARROT_LIBS) \
> +        $(SRC_DIR)/parrot_config$(O)
>  #
>  # TODO build the real miniparrot
>  #
>  $(MINIPARROT) : $(IMCC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
>       lib/Parrot/OpLib/core.pm $(SRC_DIR)/null_config$(O)
> -     $(LINK) ${ld_out}$(MINIPARROT) $(LINKFLAGS) $(IMCC_DIR)/main$(O) \
> -     $(ALL_PARROT_LIBS) $(SRC_DIR)/null_config$(O)
> +     $(LINK) ${ld_out}$@ $(LINKFLAGS) $(IMCC_DIR)/main$(O) \
> +     ${link_rpath_blib}$(ALL_PARROT_LIBS) $(SRC_DIR)/null_config$(O)
>  
>  $(INSTALLABLEPARROT) : $(IMCC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
>       lib/Parrot/OpLib/core.pm $(SRC_DIR)/install_config$(O) \
>       $(PARROT)
> -     $(LINK) ${ld_out}$(INSTALLABLEPARROT) $(LINKFLAGS) \
> +     $(LINK) ${ld_out}$@ $(LINKFLAGS) \
>       $(IMCC_DIR)/main$(O) \
>       $(ALL_PARROT_LIBS) $(SRC_DIR)/install_config$(O)
>  
> @@ -747,40 +754,27 @@
>  check_source : $(GENERAL_H_FILES)
>       $(PERL) tools/dev/check_source_standards.pl all_source
>  
> -###############################################################################
> -#
> -# Shared Library Targets:
> -#
> -###############################################################################
> -
> -shared : $(GEN_HEADERS) blib/lib/libparrot$(SHARE_EXT).$(SOVERSION) 
> $(LIBPARROT) $(INSTALLABLEPARROT)
> -     $(LINK) ${ld_out}$(INSTALLABLEPARROT) $(LINKFLAGS) $(IMCC_DIR)/main$(O) 
> -Lblib/lib -lparrot $(ICU_SHARED) $(C_LIBS)
> -
> -all_shared : all shared
> -
> -static : $(GEN_HEADERS) $(LIBPARROT)
> -
>  # XXX changes don't always propagate into libparrot
>  # e.g. when I change debug:fataly to xfataly, nm still shows the old symbol
>  # and parrot builds fine (except for the unproto warning
>  # so always delete the lib -leo
>  
> -$(LIBPARROT) : $(O_FILES)
> +$(LIBPARROT_STATIC) : $(O_FILES)
>       $(RM_F) $@
> -     $(MKDIR) blib blib/lib
> +     $(MKDIR) ${blib_dir}
> +     $(RM_F) $(LIBPARROT_STATIC) $(LIBPARROT_SHARED)
>       $(AR_CR) ${ar_out}$@ ${ar_extra} $(O_FILES)
>       $(RANLIB) $@
>  
> -blib/lib/libparrot$(SHARE_EXT).$(SOVERSION) : $(O_FILES) 
> $(SRC_DIR)/install_config$(O)
> -     $(MKDIR) blib blib/lib
> -     $(LD) -Wl,-soname=libparrot$(SHARE_EXT).$(SOVERSION) $(LD_SHARE_FLAGS) 
> $(LDFLAGS) ${ld_out}blib/lib/libparrot$(SHARE_EXT).$(SOVERSION) $(O_FILES) 
> $(SRC_DIR)/install_config$(O) $(C_LIBS) $(ICU_SHARED)) 
> -     cp blib/lib/libparrot$(SHARE_EXT).$(SOVERSION) 
> blib/lib/libparrot$(SHARE_EXT)
>  
> -$(PARROT_SO) : $(IMCC_DIR)/main$(O) blib/lib/libparrot$(SHARE_EXT) 
> lib/Parrot/OpLib/core.pm
> -     $(LINK) $(LINKFLAGS) ${ld_out}$(PARROT) $(IMCC_DIR)/main$(O) \
> -     $(SRC_DIR)/parrot_config$(O) -Lblib/lib -lparrot \
> -     $(C_LIBS) $(ICU_SHARED)
> +$(LIBPARROT_SHARED) : $(O_FILES)
> +     $(MKDIR) ${blib_dir}
> +     $(RM_F) $(LIBPARROT_STATIC) $(LIBPARROT_SHARED)
> +     $(LD) $(LD_SHARE_FLAGS) $(LDFLAGS) ${ld_out}$@ \
> +     ${ld_libparrot_soname}$(O_FILES) $(C_LIBS) $(ICU_SHARED)
> +#CONDITIONED_LINE(libparrot_shared_alias):   ( cd ${blib_dir} ; ln -sf 
> ${libparrot_shared} ${libparrot_shared_alias} )
>  
> +
>  #
>  # Parrot Debugger
>  #
> @@ -788,15 +782,16 @@
>  $(SRC_DIR)/pdb$(O) : $(GENERAL_H_FILES)
>  
>  $(PDB) : $(SRC_DIR)/pdb$(O) $(LIBPARROT)
> -     $(LINK) ${ld_out}$(PDB) \
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pdb$(O) \
>       $(SRC_DIR)/null_config$(O) \
> -     $(LINKFLAGS) $(ALL_PARROT_LIBS)
> +     $(LINKFLAGS) ${link_rpath_blib}$(ALL_PARROT_LIBS)
>  
> -$(PDB)_shared : $(SRC_DIR)/pdb$(O) 
> blib/lib/libparrot$(SHARE_EXT).$(SOVERSION)
> -     $(LINK) ${ld_out}$(PDB)_shared \
> +$(INSTALLABLEPDB) : $(SRC_DIR)/pdb$(O) $(LIBPARROT)
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pdb$(O) \
> -     $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
> +     $(SRC_DIR)/install_config$(O) \
> +     $(LINKFLAGS) $(ALL_PARROT_LIBS)
>  
>  #
>  # Parrot Disassembler
> @@ -805,61 +800,66 @@
>  $(SRC_DIR)/disassemble$(O) : $(GENERAL_H_FILES)
>  
>  $(DIS) : $(SRC_DIR)/disassemble$(O) $(LIBPARROT)
> -     $(LINK) ${ld_out}$(DIS) \
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/disassemble$(O) \
>       $(SRC_DIR)/null_config$(O) \
> -     $(LINKFLAGS) $(ALL_PARROT_LIBS)
> +     $(LINKFLAGS) ${link_rpath_blib}$(ALL_PARROT_LIBS)
>  
> -$(DIS)_shared : $(SRC_DIR)/disassemble$(O) 
> blib/lib/libparrot$(SHARE_EXT).$(SOVERSION)
> -     $(LINK) ${ld_out}$(DIS)_shared \
> +$(INSTALLABLEDIS) : $(SRC_DIR)/disassemble$(O) $(LIBPARROT)
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/disassemble$(O) \
> -     $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
> +     $(SRC_DIR)/install_config$(O) \
> +     $(LINKFLAGS) $(ALL_PARROT_LIBS)
>  
>  #
>  # Parrot Dump
>  #
>  
>  $(PDUMP) : $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) $(LIBPARROT)
> -     $(LINK) ${ld_out}$(PDUMP) \
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pdump$(O) \
>       $(SRC_DIR)/null_config$(O) \
> -     $(SRC_DIR)/packdump$(O) $(LINKFLAGS) $(ALL_PARROT_LIBS)
> +     $(SRC_DIR)/packdump$(O) $(LINKFLAGS) 
> ${link_rpath_blib}$(ALL_PARROT_LIBS)
>  
> -$(PDUMP)_shared : $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) 
> blib/lib/libparrot$(SHARE_EXT).$(SOVERSION)
> -     $(LINK) ${ld_out}$(PDUMP)_shared \
> +$(INSTALLABLEPDUMP) : $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) 
> $(LIBPARROT)
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pdump$(O) \
> -     $(SRC_DIR)/packdump$(O) \
> -     $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
> +     $(SRC_DIR)/install_config$(O) \
> +     $(SRC_DIR)/packdump$(O) $(LINKFLAGS) $(ALL_PARROT_LIBS)
>  
>  
>  # pbc_info
>  $(PINFO) : $(SRC_DIR)/pbc_info$(O) $(LIBPARROT)
> -     $(LINK) ${ld_out}$(PINFO) \
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pbc_info$(O) \
>       $(SRC_DIR)/null_config$(O) \
> -     $(LINKFLAGS) $(ALL_PARROT_LIBS)
> +     $(LINKFLAGS) ${link_rpath_blib}$(ALL_PARROT_LIBS)
>  
> -$(PINFO)_shared : $(SRC_DIR)/pbc_info$(O) 
> blib/lib/libparrot$(SHARE_EXT).$(SOVERSION)
> -     $(LINK) ${ld_out}$(PINFO)_shared \
> +$(INSTALLABLEPINFO) : $(SRC_DIR)/pbc_info$(O) $(LIBPARROT)
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pbc_info$(O) \
> -     $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
> +     $(SRC_DIR)/install_config$(O) \
> +     $(LINKFLAGS) $(ALL_PARROT_LIBS)
>  
>  #
>  # Parrot Bytecode File Merger
>  #
>  
>  $(PBCMERGE) : $(SRC_DIR)/pbc_merge$(O) $(LIBPARROT) 
> $(SRC_DIR)/parrot_config$(O)
> -     $(LINK) ${ld_out}$(PBCMERGE) \
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pbc_merge$(O) \
>       $(SRC_DIR)/parrot_config$(O) \
> -     $(LINKFLAGS) $(LINK_DYNAMIC) $(ALL_PARROT_LIBS)
> +     $(LINKFLAGS) $(LINK_DYNAMIC) ${link_rpath_blib}$(ALL_PARROT_LIBS)
>  
> -$(PBCMERGE)_shared : $(SRC_DIR)/pbc_merge$(O) 
> blib/lib/libparrot$(SHARE_EXT).$(SOVERSION)
> -     $(LINK) ${ld_out}$(PBCMERGE)_shared \
> +
> +$(INSTALLABLEPBCMERGE) : $(SRC_DIR)/pbc_merge$(O) $(LIBPARROT)
> +     $(LINK) ${ld_out}$@ \
>       $(SRC_DIR)/pbc_merge$(O) \
> -     $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
> +     $(SRC_DIR)/install_config$(O) \
> +     $(LINKFLAGS) $(ALL_PARROT_LIBS)
>  
>  
> +
>  
> ###############################################################################
>  #
>  # Other Dependencies and Build Rules:
> @@ -1417,18 +1417,25 @@
>               $(PARROT) \
>               $(MINIPARROT) \
>               $(INSTALLABLEPARROT) \
> +             $(INSTALLABLEDIS) \
> +             $(INSTALLABLEPDUMP) \
> +             $(INSTALLABLEPINFO) \
> +             $(INSTALLABLEPBCMERGE) \
> +             $(INSTALLABLEPDB) \
>               $(IMCC_DIR)/main$(O) \
> -             $(PDUMP) $(PDUMP)_shared $(SRC_DIR)/pdump$(O) 
> $(SRC_DIR)/packdump$(O) \
> -             $(SRC_DIR)/pbc_info$(O) $(PINFO)_shared $(PINFO) \
> -             $(PDB) $(PDB)_shared $(SRC_DIR)/pdb$(O) \
> -             $(PBCMERGE) $(PBCMERGE)_shared $(SRC_DIR)/pbc_merge$(O) \
> -             $(DIS) $(DIS)_shared $(SRC_DIR)/disassemble$(O) \
> +             $(PDUMP) $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) \
> +             $(SRC_DIR)/pbc_info$(O) $(PINFO) \
> +             $(PDB) $(SRC_DIR)/pdb$(O) \
> +             $(PBCMERGE) $(SRC_DIR)/pbc_merge$(O) \
> +             $(DIS) $(SRC_DIR)/disassemble$(O) \
>               $(SRC_DIR)/null_config$(O) \
>               $(SRC_DIR)/parrot_config$(O) \
>               $(SRC_DIR)/install_config$(O) \
>               install_config.fpmc \
>               $(LIBNCI_TEST_SO) \
> -             $(LIBPARROT)
> +#CONDITIONED_LINE(libparrot_shared_alias):            
> ${blib_dir}${slash}${libparrot_shared_alias} \
> +             $(LIBPARROT_STATIC) \
> +             $(LIBPARROT_SHARED)
>       $(PERL) tools/build/c2str.pl --init
>       $(RM_F) \
>               $(INC_DIR)/string_private_cstring.h \
> @@ -1559,7 +1566,7 @@
>  #
>  
> ###############################################################################
>  
> -install : $(INSTALLABLEPARROT)
> +install : installable
>       $(PERL) tools/dev/install_files.pl \
>       --buildprefix=$(BUILDPREFIX) \
>       --prefix=$(PREFIX) \
> @@ -1616,11 +1623,8 @@
>  
> ###############################################################################
>  
>  exec : $(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) $(LIBPARROT)
> -     $(LINK) ${ld_out}$(EXEC)$(EXE) $(LINKFLAGS) $(EXEC)$(O) 
> $(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) $(ALL_PARROT_LIBS)
> +     $(LINK) ${ld_out}$(EXEC)$(EXE) $(LINKFLAGS) $(EXEC)$(O) 
> $(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) 
> ${link_rpath_blib}$(ALL_PARROT_LIBS)
>  
> -exec_so : $(SRC_DIR)/exec_start$(O) blib/lib/libparrot$(SHARE_EXT)
> -     $(LINK) ${ld_out}$(EXEC)$(SHARE_EXT) $(LINKFLAGS) $(EXEC)$(O) 
> $(SRC_DIR)/exec_start$(O) $(SRC_DIR)/parrot_config$(O) -lparrot $(C_LIBS)
> -
>  ###### OS depend targets ##########
>  
>  # for use by t/pmc/nci.t

-J

--

Attachment: pgpugLP7kJrBi.pgp
Description: PGP signature

Reply via email to