diff options
author | Brad King <brad.king@kitware.com> | 2009-09-28 13:45:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-09-28 13:45:34 (GMT) |
commit | 6c59b924d2892191981f5fda94d8211d337d71c5 (patch) | |
tree | 43456d58ae67ffb46d7e4e1e07d68969bbe018ab /Source | |
parent | f73c769dd666994ccbd2939faeca9b8d5ae6b186 (diff) | |
download | CMake-6c59b924d2892191981f5fda94d8211d337d71c5.zip CMake-6c59b924d2892191981f5fda94d8211d337d71c5.tar.gz CMake-6c59b924d2892191981f5fda94d8211d337d71c5.tar.bz2 |
Use BeAPI for per-user package registry on Haiku
Applications on Haiku are discouraged from storing their data in $HOME.
This teaches export(PACKAGE) and find_package() to use the BeAPI on
Haiku to store the package registry instead of using ~/.cmake/packages.
See issue #9603.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmExportCommand.cxx | 15 | ||||
-rw-r--r-- | Source/cmFindPackageCommand.cxx | 12 |
2 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 945cfee..56cb0d0 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -24,6 +24,10 @@ #include "cmExportBuildFileGenerator.h" +#if defined(__HAIKU__) +#include <StorageKit.h> +#endif + cmExportCommand::cmExportCommand() :cmCommand() ,ArgumentGroup() @@ -303,6 +307,16 @@ void cmExportCommand::StorePackageRegistryDir(std::string const& package, const char* content, const char* hash) { +#if defined(__HAIKU__) + BPath dir; + if (find_directory(B_USER_SETTINGS_DIRECTORY, &dir) != B_OK) + { + return; + } + dir.Append("cmake/packages"); + dir.Append(package.c_str()); + std::string fname = dir.Path(); +#else const char* home = cmSystemTools::GetEnv("HOME"); if(!home) { @@ -312,6 +326,7 @@ void cmExportCommand::StorePackageRegistryDir(std::string const& package, cmSystemTools::ConvertToUnixSlashes(fname); fname += "/.cmake/packages/"; fname += package; +#endif cmSystemTools::MakeDirectory(fname.c_str()); fname += "/"; fname += hash; diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index ff1d94c..3a791d9 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -23,6 +23,10 @@ #include "cmVariableWatch.h" #endif +#if defined(__HAIKU__) +#include <StorageKit.h> +#endif + void cmFindPackageNeedBackwardsCompatibility(const std::string& variable, int access_type, void*, const char* newValue, const cmMakefile*) @@ -1159,6 +1163,14 @@ void cmFindPackageCommand::AddPrefixesRegistry() #if defined(_WIN32) && !defined(__CYGWIN__) this->LoadPackageRegistryWin(); +#elif defined(__HAIKU__) + BPath dir; + if (find_directory(B_USER_SETTINGS_DIRECTORY, &dir) == B_OK) + { + dir.Append("cmake/packages"); + dir.Append(this->Name.c_str()); + this->LoadPackageRegistryDir(dir.Path()); + } #else if(const char* home = cmSystemTools::GetEnv("HOME")) { |