diff --git a/Modules/Platform/Haiku.cmake b/Modules/Platform/Haiku.cmake index 84ded8086a2b3b2ac885b7b1701dfeeb992556ed..6676f24b7054f12f1feeb560086ac4ac2eed2fb3 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 e2961dc317c5ec1dddb3ad2200e12cee20c7d4b1..7c8405e9c9b0b928bc7fc643fddd287997f62fc1 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 1cdcafc70334ccca120ac0cc856ce358a293dfbb..ee5595753309740ffd426d04bbe6ff7c13e2dc7c 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 3688983d6cd5c51718ee38c3fb3de791bcb78a29..b6d100139014a042f0669e3c6d7d67f55ba88401 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