diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-17 01:38:59 +0000 | 
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-17 01:38:59 +0000 | 
| commit | f645603783c352c1c6916a6df455f4da660cb1a7 (patch) | |
| tree | c15589debb5972ca83c55bf447da2ad9f84b0455 | |
| parent | Switch lib64 references for native ones (diff) | |
| download | libadhocutil-f645603783c352c1c6916a6df455f4da660cb1a7.tar.bz2 libadhocutil-f645603783c352c1c6916a6df455f4da660cb1a7.tar.xz libadhocutil-f645603783c352c1c6916a6df455f4da660cb1a7.zip  | |
Improve logic for determining bjam build variant (assumes gcc toolset, which is fine)
| -rw-r--r-- | libadhocutil/definedDirs.h | 16 | ||||
| -rw-r--r-- | libadhocutil/unittests/Jamfile.jam | 13 | ||||
| -rw-r--r-- | libadhocutil/unittests/testDirs.cpp | 18 | ||||
| -rw-r--r-- | libadhocutil/unittests/testPluginsRuntime.cpp | 4 | 
4 files changed, 46 insertions, 5 deletions
diff --git a/libadhocutil/definedDirs.h b/libadhocutil/definedDirs.h index b24a1c9..9c1cc84 100644 --- a/libadhocutil/definedDirs.h +++ b/libadhocutil/definedDirs.h @@ -10,9 +10,21 @@  #define XSTR(s) STR(s)  #define STR(s) #s -const auto selfExe = boost::filesystem::canonical("/proc/self/exe"); -const auto binDir = selfExe.parent_path(); +namespace AdHoc { +	static boost::filesystem::path getBuildVariant(boost::filesystem::path binDir) +	{ +		boost::filesystem::path p; +		while (strncmp(p.c_str(), "gcc-", 4)) { +			p = binDir.leaf() / p; +			binDir = binDir.parent_path(); +		} +		return p; +	} +} +const boost::filesystem::path selfExe = boost::filesystem::canonical("/proc/self/exe"); +const boost::filesystem::path binDir = selfExe.parent_path();  const boost::filesystem::path rootDir(XSTR(ROOT)); +const boost::filesystem::path buildVariant = AdHoc::getBuildVariant(binDir);  #endif diff --git a/libadhocutil/unittests/Jamfile.jam b/libadhocutil/unittests/Jamfile.jam index 9f45265..5ea24a8 100644 --- a/libadhocutil/unittests/Jamfile.jam +++ b/libadhocutil/unittests/Jamfile.jam @@ -129,6 +129,19 @@ lib utilTestClasses :  	;  run +	testDirs.cpp +	: : : +	<define>BOOST_TEST_DYN_LINK +	<library>..//adhocutil +	<library>boost_utf +	<define>ROOT=\"$(me)\" +	<library>boost_filesystem +	<library>boost_system +	: +	testDirs +	; + +run  	testPlugins.cpp  	: : :  	<define>BOOST_TEST_DYN_LINK diff --git a/libadhocutil/unittests/testDirs.cpp b/libadhocutil/unittests/testDirs.cpp new file mode 100644 index 0000000..f215d49 --- /dev/null +++ b/libadhocutil/unittests/testDirs.cpp @@ -0,0 +1,18 @@ +#define BOOST_TEST_MODULE Dirs +#include <boost/test/unit_test.hpp> + +#include <definedDirs.h> +#include <boost/filesystem/convenience.hpp> + +BOOST_AUTO_TEST_CASE( iexist ) +{ +	BOOST_REQUIRE(boost::filesystem::exists(selfExe)); +	BOOST_REQUIRE(selfExe.is_absolute()); +	BOOST_REQUIRE_EQUAL("testDirs", selfExe.leaf().string()); +	BOOST_REQUIRE_EQUAL("unittests", rootDir.leaf().string()); +	BOOST_REQUIRE(boost::filesystem::is_directory(binDir)); +	BOOST_REQUIRE_EQUAL("libadhocutil", rootDir.parent_path().leaf().string()); +	BOOST_REQUIRE(buildVariant.is_relative()); +	BOOST_REQUIRE_EQUAL(selfExe, rootDir / "bin" / "testDirs.test" / buildVariant / "testDirs"); +} + diff --git a/libadhocutil/unittests/testPluginsRuntime.cpp b/libadhocutil/unittests/testPluginsRuntime.cpp index aa1dcf1..9185cdc 100644 --- a/libadhocutil/unittests/testPluginsRuntime.cpp +++ b/libadhocutil/unittests/testPluginsRuntime.cpp @@ -9,9 +9,7 @@  using namespace AdHoc; -auto variant	= selfExe.parent_path().leaf(); -auto toolset	= selfExe.parent_path().parent_path().leaf(); -auto lib = rootDir / "bin" / toolset / variant / "libutilTestClasses.so"; +auto lib = rootDir / "bin" / buildVariant / "libutilTestClasses.so";  static boost::optional<std::string> nullResolver(const std::type_info &, const std::string &);  static boost::optional<std::string> badResolver(const std::type_info &, const std::string &);  | 
