#| Copyright 2019 Dmitry Arkhipov Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.txt or copy at https://www.bfgroup.xyz/b2/LICENSE.txt) |# using pkg-config : : : packages ; using pkg-config : debug : : packages debug-packages ; import common ; import pkg-config ; import property-set ; import testing ; import version ; project : requirements debug:debug ; pkg-config.import debugged ; pkg-config.import foobar : requirements >=0.3 ; pkg-config.import mangled : requirements @mangle-name ; versioned = [ pkg-config.import versioned : usage-requirements @versioned-api ] ; with-var = [ pkg-config.import with-var : usage-requirements @var-to-define ] ; # test if a package is found at all run test1.cpp foobar ; # test if conditional requirement is applied run test2.cpp mangled : target-name test2-1 : requirements single : args SINGLE ; run test2.cpp mangled : target-name test2-2 : requirements multi : args MULTI ; # test if pkg-config configuration is properly inferred from property set run test3.cpp debugged : target-name test3-1 : requirements release : args RELEASE ; run test3.cpp debugged : target-name test3-2 : requirements debug : args DEBUG ; # test use of version method of pkg-config targets run test4.cpp versioned ; # test use of variable method of pkg-config targets run test5.cpp with-var ; rule mangle-name ( props * ) { import feature ; local name = [ common.format-name : mangled : "" : [ property-set.create $(props) ] ] ; return $(name) ; } rule versioned-api ( props * ) { local ps = [ property-set.create $(props) ] ; local version = [ $(versioned).version $(ps) ] ; if [ version.version-less $(version) : 2 ] { return VERSIONED_API=1 ; } else { return VERSIONED_API=2 ; } } rule var-to-define ( props * ) { local ps = [ property-set.create $(props) ] ; local qwerty = [ $(with-var).variable qwerty : $(ps) ] ; return QWERTY=\\\"$(qwerty)\\\" ; }