summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/Platform/Haiku.cmake5
-rw-r--r--Source/CPack/cmCPackGenerator.cxx14
-rw-r--r--Source/cmLocalGenerator.cxx17
-rwxr-xr-xbootstrap2
4 files changed, 38 insertions, 0 deletions
diff --git a/Modules/Platform/Haiku.cmake b/Modules/Platform/Haiku.cmake
index 84ded80..6676f24 100644
--- a/Modules/Platform/Haiku.cmake
+++ b/Modules/Platform/Haiku.cmake
@@ -19,3 +19,8 @@ LIST(APPEND CMAKE_SYSTEM_PROGRAM_PATH /boot/common/bin)
LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES /boot/common/lib)
LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH /boot/develop/headers/3rdparty)
LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH /boot/develop/lib/x86)
+
+IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ SET(CMAKE_INSTALL_PREFIX "/boot/common" CACHE PATH
+ "Install path prefix, prepended onto install directories." FORCE)
+ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx
index e2961dc..7c8405e 100644
--- a/Source/CPack/cmCPackGenerator.cxx
+++ b/Source/CPack/cmCPackGenerator.cxx
@@ -25,6 +25,10 @@
#include <cmsys/Glob.hxx>
#include <memory> // auto_ptr
+#if defined(__HAIKU__)
+#include <StorageKit.h>
+#endif
+
//----------------------------------------------------------------------
cmCPackGenerator::cmCPackGenerator()
{
@@ -1020,6 +1024,16 @@ const char* cmCPackGenerator::GetInstallPath()
this->InstallPath += this->GetOption("CPACK_PACKAGE_NAME");
this->InstallPath += "-";
this->InstallPath += this->GetOption("CPACK_PACKAGE_VERSION");
+#elif defined(__HAIKU__)
+ BPath dir;
+ if (find_directory(B_COMMON_DIRECTORY, &dir) == B_OK)
+ {
+ this->InstallPath = dir.Path();
+ }
+ else
+ {
+ this->InstallPath = "/boot/common";
+ }
#else
this->InstallPath = "/usr/local/";
#endif
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 1cdcafc..ee55957 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -36,6 +36,10 @@
#include <assert.h>
+#if defined(__HAIKU__)
+#include <StorageKit.h>
+#endif
+
cmLocalGenerator::cmLocalGenerator()
{
this->Makefile = 0; // moved to after set on global
@@ -357,6 +361,19 @@ void cmLocalGenerator::GenerateInstallRules()
}
prefix = prefix_win32.c_str();
}
+#elif defined(__HAIKU__)
+ if (!prefix)
+ {
+ BPath dir;
+ if (find_directory(B_COMMON_DIRECTORY, &dir) == B_OK)
+ {
+ prefix = dir.Path();
+ }
+ else
+ {
+ prefix = "/boot/common";
+ }
+ }
#else
if (!prefix)
{
diff --git a/bootstrap b/bootstrap
index 3688983..b6d1001 100755
--- a/bootstrap
+++ b/bootstrap
@@ -131,6 +131,8 @@ if ${cmake_system_mingw}; then
else
cmake_default_prefix="c:/Program Files/CMake"
fi
+elif ${cmake_system_haiku}; then
+ cmake_default_prefix=`/bin/finddir B_COMMON_DIRECTORY`
else
cmake_default_prefix="/usr/local"
fi