Merge topic 'haiku-updates'

54ef2be Haiku: Include files cleanup in cmCTest
38d5555 Haiku: Remove outdated preprocessor checks
1dc61f8 Haiku: Remove use of B_COMMON_DIRECTORY
7ebc1cb Haiku: Several fixes to platform module
This commit is contained in:
Brad King 2013-10-09 10:23:04 -04:00 committed by CMake Topic Stage
commit e81b6742f7
13 changed files with 152 additions and 52 deletions

View File

@ -54,7 +54,7 @@ find_library(LUA_LIBRARY
if(LUA_LIBRARY) if(LUA_LIBRARY)
# include the math library for Unix # include the math library for Unix
if(UNIX AND NOT APPLE AND NOT BEOS) if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU)
find_library(LUA_MATH_LIBRARY m) find_library(LUA_MATH_LIBRARY m)
set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries") set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
# For Windows and Mac, don't need to explicitly include the math library # For Windows and Mac, don't need to explicitly include the math library

View File

@ -1,22 +1,123 @@
set(BEOS 1) # process only once
if(HAIKU)
return()
endif()
set(CMAKE_DL_LIBS root be) set(HAIKU 1)
set(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC") set(UNIX 1)
set(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
set(CMAKE_DL_LIBS "")
set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-nostart") set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,") set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
include(Platform/UnixPaths) # Determine, if the C or C++ compiler is configured for a secondary
list(APPEND CMAKE_SYSTEM_PREFIX_PATH /boot/common) # architecture. If so, that will change the search paths we set below. We check
list(APPEND CMAKE_SYSTEM_INCLUDE_PATH /boot/common/include) # whether the compiler's library search paths contain a
list(APPEND CMAKE_SYSTEM_LIBRARY_PATH /boot/common/lib) # "/boot/system/develop/lib/<subdir>/", which we assume to be the secondary
list(APPEND CMAKE_SYSTEM_PROGRAM_PATH /boot/common/bin) # architecture specific subdirectory and extract the name of the architecture
list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES /boot/common/lib) # accordingly.
list(APPEND CMAKE_SYSTEM_INCLUDE_PATH /boot/develop/headers/3rdparty) set(__HAIKU_COMPILER ${CMAKE_C_COMPILER})
list(APPEND CMAKE_SYSTEM_LIBRARY_PATH /boot/develop/lib/x86)
if(NOT __HAIKU_COMPILER)
set(__HAIKU_COMPILER ${CMAKE_CXX_COMPILER})
endif()
execute_process(
COMMAND ${__HAIKU_COMPILER} -print-search-dirs
OUTPUT_VARIABLE _HAIKU_SEARCH_DIRS
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH ".*\nlibraries: =?([^\n]*:)?/boot/system/develop/lib/([^/]*)/(:[^\n]*)?\n.*" _dummy "\n${_HAIKU_SEARCH_DIRS}\n")
set(CMAKE_HAIKU_SECONDARY_ARCH "${CMAKE_MATCH_2}")
if(NOT CMAKE_HAIKU_SECONDARY_ARCH)
set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "")
unset(CMAKE_HAIKU_SECONDARY_ARCH)
else()
set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "/${CMAKE_HAIKU_SECONDARY_ARCH}")
# Override CMAKE_*LIBRARY_ARCHITECTURE. This will cause FIND_LIBRARY to search
# the libraries in the correct subdirectory first. It still isn't completely
# correct, since the parent directories shouldn't be searched at all. The
# primary architecture library might still be found, if there isn't one
# installed for the secondary architecture or it is installed in a less
# specific location.
set(CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
set(CMAKE_C_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
set(CMAKE_CXX_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
endif()
list(APPEND CMAKE_SYSTEM_PREFIX_PATH
/boot/common/non-packaged
/boot/common
/boot/system
)
LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
/boot/common/non-packaged/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
/boot/common/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
/boot/system/develop/headers/os
/boot/system/develop/headers/os/app
/boot/system/develop/headers/os/device
/boot/system/develop/headers/os/drivers
/boot/system/develop/headers/os/game
/boot/system/develop/headers/os/interface
/boot/system/develop/headers/os/kernel
/boot/system/develop/headers/os/locale
/boot/system/develop/headers/os/mail
/boot/system/develop/headers/os/media
/boot/system/develop/headers/os/midi
/boot/system/develop/headers/os/midi2
/boot/system/develop/headers/os/net
/boot/system/develop/headers/os/opengl
/boot/system/develop/headers/os/storage
/boot/system/develop/headers/os/support
/boot/system/develop/headers/os/translation
/boot/system/develop/headers/os/add-ons/graphics
/boot/system/develop/headers/os/add-ons/input_server
/boot/system/develop/headers/os/add-ons/screen_saver
/boot/system/develop/headers/os/add-ons/tracker
/boot/system/develop/headers/os/be_apps/Deskbar
/boot/system/develop/headers/os/be_apps/NetPositive
/boot/system/develop/headers/os/be_apps/Tracker
/boot/system/develop/headers/3rdparty
/boot/system/develop/headers/bsd
/boot/system/develop/headers/glibc
/boot/system/develop/headers/gnu
/boot/system/develop/headers/posix
/boot/system/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
)
IF (CMAKE_HAIKU_SECONDARY_ARCH)
LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
/boot/system/develop/headers
)
ENDIF (CMAKE_HAIKU_SECONDARY_ARCH)
LIST(APPEND CMAKE_HAIKU_C_INCLUDE_DIRECTORIES
${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES}
)
LIST(APPEND CMAKE_HAIKU_CXX_INCLUDE_DIRECTORIES
${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES})
LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_HAIKU_C_INCLUDE_DIRECTORIES})
LIST(APPEND CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES
/boot/common/non-packaged/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
/boot/common/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
/boot/system/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
)
LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES}
)
LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES})
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "/boot/common" CACHE PATH set(CMAKE_INSTALL_PREFIX "/boot/common" CACHE PATH

View File

@ -26,7 +26,8 @@
#include <algorithm> #include <algorithm>
#if defined(__HAIKU__) #if defined(__HAIKU__)
#include <StorageKit.h> #include <FindDirectory.h>
#include <StorageDefs.h>
#endif #endif
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -1263,14 +1264,14 @@ const char* cmCPackGenerator::GetInstallPath()
this->InstallPath += "-"; this->InstallPath += "-";
this->InstallPath += this->GetOption("CPACK_PACKAGE_VERSION"); this->InstallPath += this->GetOption("CPACK_PACKAGE_VERSION");
#elif defined(__HAIKU__) #elif defined(__HAIKU__)
BPath dir; char dir[B_PATH_NAME_LENGTH];
if (find_directory(B_COMMON_DIRECTORY, &dir) == B_OK) if (find_directory(B_SYSTEM_DIRECTORY, -1, false, dir, sizeof(dir)) == B_OK)
{ {
this->InstallPath = dir.Path(); this->InstallPath = dir;
} }
else else
{ {
this->InstallPath = "/boot/common"; this->InstallPath = "/boot/system";
} }
#else #else
this->InstallPath = "/usr/local/"; this->InstallPath = "/usr/local/";

View File

@ -53,14 +53,10 @@
#include <cm_zlib.h> #include <cm_zlib.h>
#include <cmsys/Base64.h> #include <cmsys/Base64.h>
#if defined(__BEOS__) #if defined(__BEOS__) || defined(__HAIKU__)
#include <be/kernel/OS.h> /* disable_debugger() API. */ #include <be/kernel/OS.h> /* disable_debugger() API. */
#endif #endif
#if defined(__HAIKU__)
#include <os/kernel/OS.h> /* disable_debugger() API. */
#endif
#define DEBUGOUT std::cout << __LINE__ << " "; std::cout #define DEBUGOUT std::cout << __LINE__ << " "; std::cout
#define DEBUGERR std::cerr << __LINE__ << " "; std::cerr #define DEBUGERR std::cerr << __LINE__ << " "; std::cerr

View File

@ -20,7 +20,8 @@
#include "cmExportBuildFileGenerator.h" #include "cmExportBuildFileGenerator.h"
#if defined(__HAIKU__) #if defined(__HAIKU__)
#include <StorageKit.h> #include <FindDirectory.h>
#include <StorageDefs.h>
#endif #endif
cmExportCommand::cmExportCommand() cmExportCommand::cmExportCommand()
@ -319,14 +320,15 @@ void cmExportCommand::StorePackageRegistryDir(std::string const& package,
const char* hash) const char* hash)
{ {
#if defined(__HAIKU__) #if defined(__HAIKU__)
BPath dir; char dir[B_PATH_NAME_LENGTH];
if (find_directory(B_USER_SETTINGS_DIRECTORY, &dir) != B_OK) if (find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, dir, sizeof(dir)) !=
B_OK)
{ {
return; return;
} }
dir.Append("cmake/packages"); std::string fname = dir;
dir.Append(package.c_str()); fname += "/cmake/packages/";
std::string fname = dir.Path(); fname += package;
#else #else
const char* home = cmSystemTools::GetEnv("HOME"); const char* home = cmSystemTools::GetEnv("HOME");
if(!home) if(!home)

View File

@ -19,7 +19,9 @@
#endif #endif
#if defined(__HAIKU__) #if defined(__HAIKU__)
#include <StorageKit.h> #include <string.h>
#include <FindDirectory.h>
#include <StorageDefs.h>
#endif #endif
void cmFindPackageNeedBackwardsCompatibility(const std::string& variable, void cmFindPackageNeedBackwardsCompatibility(const std::string& variable,
@ -1584,12 +1586,14 @@ void cmFindPackageCommand::AddPrefixesUserRegistry()
#if defined(_WIN32) && !defined(__CYGWIN__) #if defined(_WIN32) && !defined(__CYGWIN__)
this->LoadPackageRegistryWinUser(); this->LoadPackageRegistryWinUser();
#elif defined(__HAIKU__) #elif defined(__HAIKU__)
BPath dir; char dir[B_PATH_NAME_LENGTH];
if (find_directory(B_USER_SETTINGS_DIRECTORY, &dir) == B_OK) if (find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, dir, sizeof(dir)) ==
B_OK)
{ {
dir.Append("cmake/packages"); std::string fname = dir;
dir.Append(this->Name.c_str()); fname += "/cmake/packages/";
this->LoadPackageRegistryDir(dir.Path()); fname += Name;
this->LoadPackageRegistryDir(fname);
} }
#else #else
if(const char* home = cmSystemTools::GetEnv("HOME")) if(const char* home = cmSystemTools::GetEnv("HOME"))

View File

@ -37,7 +37,8 @@
#include <assert.h> #include <assert.h>
#if defined(__HAIKU__) #if defined(__HAIKU__)
#include <StorageKit.h> #include <FindDirectory.h>
#include <StorageDefs.h>
#endif #endif
cmLocalGenerator::cmLocalGenerator() cmLocalGenerator::cmLocalGenerator()
@ -349,16 +350,17 @@ void cmLocalGenerator::GenerateInstallRules()
prefix = prefix_win32.c_str(); prefix = prefix_win32.c_str();
} }
#elif defined(__HAIKU__) #elif defined(__HAIKU__)
char dir[B_PATH_NAME_LENGTH];
if (!prefix) if (!prefix)
{ {
BPath dir; if (find_directory(B_SYSTEM_DIRECTORY, -1, false, dir, sizeof(dir))
if (find_directory(B_COMMON_DIRECTORY, &dir) == B_OK) == B_OK)
{ {
prefix = dir.Path(); prefix = dir;
} }
else else
{ {
prefix = "/boot/common"; prefix = "/boot/system";
} }
} }
#else #else

View File

@ -51,7 +51,7 @@ define_property(
FULL_DOCS "A simple etst proerty that means nothign and is used for nothing" FULL_DOCS "A simple etst proerty that means nothign and is used for nothing"
) )
set_target_properties(CMakeTestCLibraryShared PROPERTIES FOO BAR) set_target_properties(CMakeTestCLibraryShared PROPERTIES FOO BAR)
if(NOT BEOS AND NOT WIN32) # No libm on BeOS. if(NOT BEOS AND NOT WIN32 AND NOT HAIKU) # No libm on BeOS.
set_target_properties(CMakeTestCLibraryShared PROPERTIES LINK_FLAGS "-lm") set_target_properties(CMakeTestCLibraryShared PROPERTIES LINK_FLAGS "-lm")
endif() endif()
get_target_property(FOO_BAR_VAR CMakeTestCLibraryShared FOO) get_target_property(FOO_BAR_VAR CMakeTestCLibraryShared FOO)

View File

@ -51,7 +51,7 @@ define_property(
FULL_DOCS "A simple etst proerty that means nothign and is used for nothing" FULL_DOCS "A simple etst proerty that means nothign and is used for nothing"
) )
set_target_properties(CMakeTestCLibraryShared PROPERTIES FOO BAR) set_target_properties(CMakeTestCLibraryShared PROPERTIES FOO BAR)
if(NOT BEOS AND NOT WIN32) # No libm on BeOS. if(NOT BEOS AND NOT WIN32 AND NOT HAIKU) # No libm on BeOS.
set_target_properties(CMakeTestCLibraryShared PROPERTIES LINK_FLAGS "-lm") set_target_properties(CMakeTestCLibraryShared PROPERTIES LINK_FLAGS "-lm")
endif() endif()
get_target_property(FOO_BAR_VAR CMakeTestCLibraryShared FOO) get_target_property(FOO_BAR_VAR CMakeTestCLibraryShared FOO)

View File

@ -38,7 +38,7 @@ main ()
# define PLATFORM_AIX_V3 # define PLATFORM_AIX_V3
#endif #endif
#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || (defined(__BEOS__) && !defined(__HAIKU__)) #if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)
#error "O_NONBLOCK does not work on this platform" #error "O_NONBLOCK does not work on this platform"
#endif #endif
int socket; int socket;

View File

@ -39,7 +39,7 @@
#error "We can't compile without select() support!" #error "We can't compile without select() support!"
#endif #endif
#if defined(__BEOS__) && !defined(__HAIKU__) #if defined(__BEOS__)
/* BeOS has FD_SET defined in socket.h */ /* BeOS has FD_SET defined in socket.h */
#include <socket.h> #include <socket.h>
#endif #endif

View File

@ -237,7 +237,7 @@
# endif # endif
#endif #endif
#if defined (__BEOS__) && !defined (__HAIKU__) #if defined (__BEOS__)
# ifdef ZLIB_DLL # ifdef ZLIB_DLL
# ifdef ZLIB_INTERNAL # ifdef ZLIB_INTERNAL
# define ZEXPORT __declspec(dllexport) # define ZEXPORT __declspec(dllexport)

View File

@ -147,12 +147,6 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# define OS_CODE 0x0f # define OS_CODE 0x0f
#endif #endif
/* Haiku defines both __HAIKU__ and __BEOS__ (for now) */
/* many BeOS workarounds are no longer needed in Haiku */
#if defined(__HAIKU__) && defined(__BEOS__)
#undef __BEOS__
#endif
#if defined(_BEOS_) || defined(RISCOS) #if defined(_BEOS_) || defined(RISCOS)
# define fdopen(fd,mode) NULL /* No fdopen() */ # define fdopen(fd,mode) NULL /* No fdopen() */
#endif #endif