Guys,
I'd like to revive this patch which I posted a while back, but has
needed bringing up to date due to subsequent changes.
It has a few key intentions:
* Makes libparrot.so a 'first class citizen'
* Allows the installed version of parrot and its utilities to be
either shared or static
* The decision to build libparrot.[a/so] is a configure step which can
be overridden by hints and --ask (should a command-line option work? I
couldn't make this work)
Some comments:
* Although a Configuration step, the type of build can be altered
manually by changing the LIBPARROT target in the Makefile.
* I use rpath for the devel targets to find the shared library; not
sure how portable this is (we can have a configure test for this, and if
it isn't supported, suggest that they set LD_LIBRARY_PATH manually)
* Some make targets have been changed, added or removed; e.g. Removed:
shared/static/world_shared/parrot_utils_shared. Added: installable
At the moment libparrot.so doesn't sit nicely and although some work was
done to make parrot build with a shared library for the debian build, it
isn't as general as it could be.
I'd initially appreciate some feedback, and particularly reports of
breakage.
* I know that the debian automatic build will have broken because I am
currently dropping the version number
(I shall incorporate this, but in a more general manner)
* I have only tried this on Linux, but no Windows builds (I've changed
the files, but may have overlooked important changes)
* I'm going to check 'make install' -- it needs updating to distribute
the installable utilities and check that things work in both configurations.
All tests (as far as I can see) pass with shared and static on Linux.
Cheers,
Nick
Index: debian/rules
===================================================================
--- debian/rules (revision 10619)
+++ 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: lib/Parrot/Test.pm
===================================================================
--- lib/Parrot/Test.pm (revision 10619)
+++ 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{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 10619)
+++ 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 10619)
+++ Configure.pl (working copy)
@@ -398,6 +398,7 @@
auto::msvc
init::optimize
inter::shlibs
+ inter::libparrot
inter::charset
inter::encoding
inter::types
Index: config/inter/libparrot.pm
===================================================================
--- config/inter/libparrot.pm (revision 0)
+++ config/inter/libparrot.pm (revision 0)
@@ -0,0 +1,61 @@
+# Copyright: 2005 The Perl Foundation. All Rights Reserved.
+# $Id: libparrot.pm $
+
+=head1 NAME
+
+config/inter/libparrot.pm - Should libparrot be compiled as a shared library
+
+=head1 DESCRIPTION
+
+
+=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 verbose libparrot_is_shared);
+
+sub runstep {
+ my $self = shift;
+ my ($ask, $verbose, $libparrot_is_shared) = @_;
+
+ $libparrot_is_shared =
+ integrate(Parrot::Configure::Data->get('libparrot_is_shared'),
+ $libparrot_is_shared);
+
+ if ($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';
+ }
+
+ Parrot::Configure::Data->set(libparrot_is_shared =>
+ $libparrot_is_shared);
+
+ $result = $libparrot_is_shared ? 'yes' : 'no';
+
+ Parrot::Configure::Data->set(libparrot =>
+ $libparrot_is_shared
+ ? '$(LIBPARROT_SHARED)'
+ : '$(LIBPARROT_STATIC)');
+
+ Parrot::Configure::Data->set(rpath_blib =>
+ Parrot::Configure::Data->get('rpath') .
+ Parrot::Configure::Data->get('build_dir') .
+ Parrot::Configure::Data->get('slash') .
+ Parrot::Configure::Data->get('blib_dir'));
+
+}
+
+1;
Index: config/init/defaults.pm
===================================================================
--- config/init/defaults.pm (revision 10619)
+++ config/init/defaults.pm (working copy)
@@ -118,13 +118,20 @@
# 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)',
+
+ 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
Index: config/init/hints/linux.pm
===================================================================
--- config/init/hints/linux.pm (revision 10619)
+++ config/init/hints/linux.pm (working copy)
@@ -45,6 +45,7 @@
i_lib_pthread => 1, # XXX fake a header entry
linkflags => $linkflags,
link => $link,
+ libparrot_is_shared => 1,
);
if ((split('-', $Config{archname}))[0] eq 'ia64') {
Index: config/init/hints/mswin32.pm
===================================================================
--- config/init/hints/mswin32.pm (revision 10619)
+++ config/init/hints/mswin32.pm (working copy)
@@ -54,10 +54,12 @@
ld_load_flags => '-dll -def:libparrot.def',
ld_out => '-out:',
ldflags => '-nologo -nodefaultlib',
- blib_lib_libparrot_a => 'blib/lib/libparrot_s$(A)',
+ libparrot_static => 'libparrot_s$(A)',
+ libparrot_shared => 'libparrot_s$(SHARE_EXT)',
ar_flags => '',
ar_out => '-out:',
slash => '\\',
+ blib_dir => 'blib\\lib',
ccflags => $ccflags,
ccwarn => ''
);
@@ -101,11 +103,11 @@
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 => ''
);
@@ -149,9 +151,9 @@
ar_out => '',
ar_extra => '/au',
slash => '\\',
+ blib_dir => 'blib\\lib',
make_and => "\n\t",
- blib_lib_libparrot_a => 'blib\lib\libparrot.lib',
);
}
elsif( $is_mingw ) {
@@ -173,6 +175,7 @@
ncilib_link_extra => 'src/libnci_test.def',
o => '.o',
slash => '\\',
+ blib_dir => 'blib\\lib',
);
if (Parrot::Configure::Data->get(qw(optimize)) eq "1") {
Parrot::Configure::Data->set(
Index: config/gen/makefiles/root.in
===================================================================
--- config/gen/makefiles/root.in (revision 10619)
+++ 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,15 +701,17 @@
$(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}$(PARROT) $(LINKFLAGS) $(LINK_DYNAMIC) \
+ ${ld_parrot_exe_def} \
+ $(IMCC_DIR)/main$(O) ${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)
+ ${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) \
@@ -747,40 +755,25 @@
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}$@ $(O_FILES) $(C_LIBS)
$(ICU_SHARED)
+
#
# Parrot Debugger
#
@@ -791,12 +784,13 @@
$(LINK) ${ld_out}$(PDB) \
$(SRC_DIR)/pdb$(O) \
$(SRC_DIR)/null_config$(O) \
- $(LINKFLAGS) $(ALL_PARROT_LIBS)
+ $(LINKFLAGS) ${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}$(INSTALLABLEPDB) \
$(SRC_DIR)/pdb$(O) \
- $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
+ $(SRC_DIR)/install_config$(O) \
+ $(LINKFLAGS) $(ALL_PARROT_LIBS)
#
# Parrot Disassembler
@@ -808,12 +802,13 @@
$(LINK) ${ld_out}$(DIS) \
$(SRC_DIR)/disassemble$(O) \
$(SRC_DIR)/null_config$(O) \
- $(LINKFLAGS) $(ALL_PARROT_LIBS)
+ $(LINKFLAGS) ${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}$(INSTALLABLEDIS) \
$(SRC_DIR)/disassemble$(O) \
- $(LINKFLAGS) -Lblib/lib -lparrot $(ALL_PARROT_LIBS)
+ $(SRC_DIR)/install_config$(O) \
+ $(LINKFLAGS) $(ALL_PARROT_LIBS)
#
# Parrot Dump
@@ -823,13 +818,13 @@
$(LINK) ${ld_out}$(PDUMP) \
$(SRC_DIR)/pdump$(O) \
$(SRC_DIR)/null_config$(O) \
- $(SRC_DIR)/packdump$(O) $(LINKFLAGS) $(ALL_PARROT_LIBS)
+ $(SRC_DIR)/packdump$(O) $(LINKFLAGS) ${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}$(INSTALLABLEPDUMP) \
$(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
@@ -837,12 +832,13 @@
$(LINK) ${ld_out}$(PINFO) \
$(SRC_DIR)/pbc_info$(O) \
$(SRC_DIR)/null_config$(O) \
- $(LINKFLAGS) $(ALL_PARROT_LIBS)
+ $(LINKFLAGS) ${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}$(INSTALLABLEPINFO) \
$(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
@@ -852,14 +848,17 @@
$(LINK) ${ld_out}$(PBCMERGE) \
$(SRC_DIR)/pbc_merge$(O) \
$(SRC_DIR)/parrot_config$(O) \
- $(LINKFLAGS) $(LINK_DYNAMIC) $(ALL_PARROT_LIBS)
+ $(LINKFLAGS) $(LINK_DYNAMIC) ${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}$(INSTALLABLEPBCMERGE) \
$(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 +1416,24 @@
$(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)
+ $(LIBPARROT_STATIC) \
+ $(LIBPARROT_SHARED)
$(PERL) tools/build/c2str.pl --init
$(RM_F) \
$(INC_DIR)/string_private_cstring.h \
@@ -1559,7 +1564,7 @@
#
###############################################################################
-install : $(INSTALLABLEPARROT)
+install : installable
$(PERL) tools/dev/install_files.pl \
--buildprefix=$(BUILDPREFIX) \
--prefix=$(PREFIX) \
@@ -1616,11 +1621,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) ${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