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 --
pgpugLP7kJrBi.pgp
Description: PGP signature