From 39608cd666801cb2f6970f83f46ccbc3b6ea036c Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Sun, 25 Jul 2010 11:58:38 +0000 Subject: [PATCH] Fix computation of default install prefix. [SVN r64325] --- v2/Jamroot.jam | 4 ++-- v2/tools/package.jam | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/v2/Jamroot.jam b/v2/Jamroot.jam index 3403c2083..421e51a18 100644 --- a/v2/Jamroot.jam +++ b/v2/Jamroot.jam @@ -12,7 +12,7 @@ if [ os.on-windows ] } -package.install boost-build-engine +package.install boost-build-engine boost-build : # properties : # binaries bjam$(ext) @@ -28,7 +28,7 @@ for e in $(e1) } } -package.install-data boost-build-core +package.install-data boost-build-core : # Which subdir of $prefix/share boost-build : # What to install diff --git a/v2/tools/package.jam b/v2/tools/package.jam index a77e1f6bc..198c22315 100644 --- a/v2/tools/package.jam +++ b/v2/tools/package.jam @@ -39,10 +39,11 @@ import stage ; import targets ; import modules ; -feature.feature install-default-prefix : : free ; +feature.feature install-default-prefix : : free incidental ; -rule install ( name : requirements * : binaries * : libraries * : headers * ) +rule install ( name package-name ? : requirements * : binaries * : libraries * : headers * ) { + package-name ?= $(name) ; if [ MATCH --prefix=(.*) : [ modules.peek : ARGV ] ] { # If --prefix is explicitly specified on the command line, @@ -70,7 +71,7 @@ rule install ( name : requirements * : binaries * : libraries * : headers * ) # First, figure out all locations. Use the default if no prefix option # given. - local prefix = [ get-prefix $(requirements) ] ; + local prefix = [ get-prefix $(name) : $(requirements) ] ; # Architecture dependent files. local exec-locate = [ option.get exec-prefix : $(prefix) ] ; @@ -120,21 +121,22 @@ rule install ( name : requirements * : binaries * : libraries * : headers * ) } } -rule install-data ( target-name : directory-name : data * : requirements * ) +rule install-data ( target-name : package-name : data * : requirements * ) { + package-name ?= target-name ; if [ MATCH --prefix=(.*) : [ modules.peek : ARGV ] ] { # If --prefix is explicitly specified on the command line, # then we need wipe away any settings of datarootdir option.set datarootdir : ; - } + } - local prefix = [ get-prefix $(requirements) ] ; + local prefix = [ get-prefix $(package-name) : $(requirements) ] ; local datadir = [ option.get datarootdir : $(prefix)/share ] ; stage.install $(target-name) : $(data) - : $(requirements) $(datadir)/$(directory-name) + : $(requirements) $(datadir)/$(package-name) ; local c = [ project.current ] ; @@ -145,7 +147,7 @@ rule install-data ( target-name : directory-name : data * : requirements * ) } } -local rule get-prefix ( requirements * ) +local rule get-prefix ( package-name : requirements * ) { local prefix = [ option.get prefix : [ property.select : $(requirements) ] ] ; @@ -155,7 +157,7 @@ local rule get-prefix ( requirements * ) # Or some likely defaults if neither is given. if ! $(prefix) { - if [ modules.peek : NT ] { prefix = C:\\$(name) ; } + if [ modules.peek : NT ] { prefix = C:\\$(package-name) ; } else if [ modules.peek : UNIX ] { prefix = /usr/local ; } } return $(prefix) ;