Browse Source

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.
Brad King 16 years ago
parent
commit
f40406ed6b
4 changed files with 38 additions and 0 deletions
  1. 5 0
      Modules/Platform/Haiku.cmake
  2. 14 0
      Source/CPack/cmCPackGenerator.cxx
  3. 17 0
      Source/cmLocalGenerator.cxx
  4. 2 0
      bootstrap

+ 5 - 0
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)

+ 14 - 0
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

+ 17 - 0
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)
     {

+ 2 - 0
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