From f40406ed6bbb47e2b68e20cb7dd623a7961b090b Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 30 Sep 2009 08:31:53 -0400 Subject: Fix default install prefix on Haiku Since Haiku does not have /usr (and therefore /usr/local), this commit changes the default install prefix to the equivalent directory of /boot/common. See issue #9607. --- Modules/Platform/Haiku.cmake | 5 +++++ Source/CPack/cmCPackGenerator.cxx | 14 ++++++++++++++ Source/cmLocalGenerator.cxx | 17 +++++++++++++++++ bootstrap | 2 ++ 4 files changed, 38 insertions(+) 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 #include // auto_ptr +#if defined(__HAIKU__) +#include +#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 +#if defined(__HAIKU__) +#include +#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 -- cgit v0.12