Author: chromatic Date: Tue Jan 20 17:07:25 2009 New Revision: 35849 Modified: trunk/config/gen/makefiles/root.in trunk/config/inter/libparrot.pm
Log: [install] Added linker magic so that installable binaries get the correct rpath to work with the installed libparrot (Andy Dougherty). Modified: trunk/config/gen/makefiles/root.in ============================================================================== --- trunk/config/gen/makefiles/root.in (original) +++ trunk/config/gen/makefiles/root.in Tue Jan 20 17:07:25 2009 @@ -798,7 +798,7 @@ $(PARROT) $(LINK) @ld_...@$@ \ $(SRC_DIR)/main$(O) \ - $(ALL_PARROT_LIBS) $(LINKFLAGS) $(SRC_DIR)/install_config$(O) + @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) $(SRC_DIR)/install_config$(O) #IF(win32): if exist $...@.manifest mt.exe -nologo -manifest $...@.manifest -outputresource:$@;1 $(INC_DIR)/parrot.h : $(INC_DIR)/pbcversion.h $(INC_DIR)/vtable.h @@ -897,7 +897,7 @@ $(LINK) @ld_...@$@ \ $(SRC_DIR)/parrot_debugger$(O) \ $(SRC_DIR)/parrot_config$(O) \ - $(ALL_PARROT_LIBS) $(LINKFLAGS) + @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) #IF(win32): if exist $...@.manifest mt.exe -nologo -manifest $...@.manifest -outputresource:$@;1 # @@ -915,7 +915,7 @@ $(INSTALLABLEDIS) : $(SRC_DIR)/pbc_disassemble$(O) $(LIBPARROT) $(LINK) @ld_...@$@ \ $(SRC_DIR)/pbc_disassemble$(O) \ - $(ALL_PARROT_LIBS) $(LINKFLAGS) + @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) #IF(win32): if exist $...@.manifest mt.exe -nologo -manifest $...@.manifest -outputresource:$@;1 # @@ -933,7 +933,8 @@ $(INSTALLABLEPDUMP) : $(SRC_DIR)/pdump$(O) $(SRC_DIR)/packdump$(O) $(LIBPARROT) $(LINK) @ld_...@$@ \ $(SRC_DIR)/pdump$(O) \ - $(SRC_DIR)/packdump$(O) $(ALL_PARROT_LIBS) $(LINKFLAGS) + $(SRC_DIR)/packdump$(O) \ + @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) #IF(win32): if exist $...@.manifest mt.exe -nologo -manifest $...@.manifest -outputresource:$@;1 @@ -949,7 +950,7 @@ $(INSTALLABLEPINFO) : $(SRC_DIR)/pbc_info$(O) $(LIBPARROT) $(LINK) @ld_...@$@ \ $(SRC_DIR)/pbc_info$(O) \ - $(ALL_PARROT_LIBS) $(LINKFLAGS) + @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) #IF(win32): if exist $...@.manifest mt.exe -nologo -manifest $...@.manifest -outputresource:$@;1 # @@ -967,7 +968,7 @@ $(LINK) @ld_...@$@ \ $(SRC_DIR)/pbc_merge$(O) \ $(SRC_DIR)/install_config$(O) \ - $(ALL_PARROT_LIBS) $(LINKFLAGS) + @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) #IF(win32): if exist $...@.manifest mt.exe -nologo -manifest $...@.manifest -outputresource:$@;1 Modified: trunk/config/inter/libparrot.pm ============================================================================== --- trunk/config/inter/libparrot.pm (original) +++ trunk/config/inter/libparrot.pm Tue Jan 20 17:07:25 2009 @@ -75,6 +75,8 @@ : '$(LIBPARROT_STATIC)', ); + # Set -rpath (or equivalent) for executables to find the + # shared libparrot in the build directory. $conf->data->set( rpath_blib => ( $parrot_is_shared && $conf->data->get('rpath') ) ? $conf->data->get('rpath') @@ -83,6 +85,15 @@ . $conf->data->get('blib_dir') : '' ); + + # Set -rpath (or equivalent) for the installed executables to find the + # installed shared libparrot. + $conf->data->set( + rpath_lib => ( $parrot_is_shared && $conf->data->get('rpath') ) + ? $conf->data->get('rpath') + . $conf->data->get('libdir') + : '' + ); unless ( defined( $conf->data->get('libparrot_ldflags') ) ) { $conf->data->set(libparrot_ldflags =>