Commit 6c59b924 authored by Brad King's avatar Brad King

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.
parent f73c769d
......@@ -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;
......
......@@ -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"))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment