From 32681fe31265ab0e2365f9b9c17d54051783adae Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 16 Oct 2017 00:46:04 +0300 Subject: Build both 32 and 64 on Windows --- boostcpp.jam | 67 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 22 deletions(-) (limited to 'boostcpp.jam') diff --git a/boostcpp.jam b/boostcpp.jam index eefc694f18..85a4cb323f 100644 --- a/boostcpp.jam +++ b/boostcpp.jam @@ -359,57 +359,84 @@ class top-level-target : alias-target-class # incompatibility between debug and release variants. We build shared # and static libraries since that is what most packages seem to provide # (.so in libfoo and .a in libfoo-dev). + self.minimal-properties = [ property-set.create release multi shared static shared ] ; + # On Windows, new IDE projects use: # # runtime-link=dynamic, threading=multi, variant=(debug|release) # # and in addition, C++ Boost's autolink defaults to static linking. + self.minimal-properties-win = [ property-set.create debug release multi static shared - ] ; + 32 64 ] ; self.complete-properties = [ property-set.create debug release multi shared static shared static ] ; + + self.complete-properties-win = [ property-set.create + debug release + multi + shared static + shared static + 32 64 ] ; } rule generate ( property-set ) { modules.poke : top-level-targets : [ modules.peek : top-level-targets ] $(self.name) ; - if $(self.build-type) = minimal + + local os = [ $(property-set).get ] ; + + # Because we completely override the parent's 'generate' we need to + # check for default feature values ourselves. + + if ! $(os) { - local expanded ; + os = [ feature.defaults ] ; + os = $(os:G=) ; + } - local os = [ $(property-set).get ] ; - # Because we completely override the parent's 'generate' we need to - # check for default feature values ourselves. - if ! $(os) - { - os = [ feature.defaults ] ; - os = $(os:G=) ; - } + local build-type-set ; + if $(self.build-type) = minimal + { if $(os) = windows { - expanded = [ targets.apply-default-build $(property-set) - : $(self.minimal-properties-win) ] ; + build-type-set = $(self.minimal-properties-win) ; } else { - expanded = [ targets.apply-default-build $(property-set) - : $(self.minimal-properties) ] ; + build-type-set = $(self.minimal-properties) ; } - return [ build-multiple $(expanded) ] ; } else if $(self.build-type) = complete + { + if $(os) = windows + { + build-type-set = $(self.complete-properties-win) ; + } + else + { + build-type-set = $(self.complete-properties) ; + } + } + else + { + import errors ; + errors.error "Unknown build type" ; + } + + if $(build-type-set) { local expanded = [ targets.apply-default-build $(property-set) - : $(self.complete-properties) ] ; + : $(build-type-set) ] ; # Filter inappopriate combinations. local filtered ; @@ -427,13 +454,9 @@ class top-level-target : alias-target-class filtered += $(p) ; } } + return [ build-multiple $(filtered) ] ; } - else - { - import errors ; - errors.error "Unknown build type" ; - } } rule build-multiple ( property-sets * ) -- cgit v1.2.1