Also include HaikuBuildCompatibility.h on a Haiku host platform and

conditionally define some of the new stuff there. That fixes the build under
a r34172 Haiku, though it also causes some problems that needed working around.
Haven't tested under newer Haiku revisions yet. Will do tomorrow.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34267 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2009-11-25 23:48:45 +00:00
parent 6cb744fecb
commit 6236ae8570
3 changed files with 130 additions and 17 deletions

View File

@ -677,6 +677,14 @@ if $(HOST_PLATFORM_BEOS_COMPATIBLE) {
HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR = "export LIBRARY_PATH=$LIBRARY_PATH:$(HOST_BUILD_COMPATIBILITY_LIB_DIR)" ; HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR = "export LIBRARY_PATH=$LIBRARY_PATH:$(HOST_BUILD_COMPATIBILITY_LIB_DIR)" ;
HOST_LIBRARY_NAME_MAP_input_server = /system/servers/input_server ; HOST_LIBRARY_NAME_MAP_input_server = /system/servers/input_server ;
HOST_DEFINES += __STDC_FORMAT_MACROS __STDC_LIMIT_MACROS ; HOST_DEFINES += __STDC_FORMAT_MACROS __STDC_LIMIT_MACROS ;
local compatibilityHeader = -include [ FDirName $(HAIKU_TOP) headers build
HaikuBuildCompatibility.h ] ;
HOST_CCFLAGS += $(compatibilityHeader) ;
HOST_C++FLAGS += $(compatibilityHeader) ;
# compatibility library
HOST_HAIKU_COMPATIBILITY_LIBS = libhaikucompat.a ;
} else { } else {
HOST_LIBSTDC++ = stdc++ ; HOST_LIBSTDC++ = stdc++ ;
HOST_LIBROOT = libroot_build.so ; HOST_LIBROOT = libroot_build.so ;

View File

@ -3,8 +3,9 @@
/*! /*!
This header is automatically included in all Haiku applications This header is automatically included in all Haiku applications
that are built for BeOS. that are built for BeOS or a Haiku host (which might not be compatible
It will make BeOS a bit more Haiku compatible, and slightly more with the current Haiku source anymore).
It will make BeOS/Haiku a bit more Haiku compatible, and slightly more
POSIX compatible, too. It is supposed to keep the BeOS compatibility POSIX compatible, too. It is supposed to keep the BeOS compatibility
kludges in our source files at a minimum. kludges in our source files at a minimum.
*/ */
@ -22,14 +23,20 @@
# include <Errors.h> # include <Errors.h>
#endif #endif
#include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
#include <SupportDefs.h> #include <SupportDefs.h>
#include <TypeConstants.h>
#include <string.h> #include <string.h>
// no addr_t under standard BeOS // no addr_t under standard BeOS
typedef unsigned long haiku_build_addr_t; #ifndef HAIKU_HOST_PLATFORM_HAIKU
#define addr_t haiku_build_addr_t typedef unsigned long haiku_build_addr_t;
# define addr_t haiku_build_addr_t
#endif
#ifndef HAIKU_HOST_PLATFORM_HAIKU
struct sockaddr_storage { struct sockaddr_storage {
uint8 ss_len; /* total length */ uint8 ss_len; /* total length */
@ -41,6 +48,8 @@ struct sockaddr_storage {
typedef int socklen_t; typedef int socklen_t;
#endif // !HAIKU_HOST_PLATFORM_HAIKU
#ifndef DEFFILEMODE #ifndef DEFFILEMODE
# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) # define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
#endif #endif
@ -65,12 +74,13 @@ typedef int socklen_t;
# define B_SPINLOCK_INITIALIZER 0 # define B_SPINLOCK_INITIALIZER 0
#endif #endif
#if __GNUC__ #if defined(__GNUC__) && !defined(_PRINTFLIKE)
# define _PRINTFLIKE(_format_, _args_) \ # define _PRINTFLIKE(_format_, _args_) \
__attribute__((format(__printf__, _format_, _args_))) __attribute__((format(__printf__, _format_, _args_)))
#endif #endif
#ifdef HAIKU_TARGET_PLATFORM_LIBBE_TEST #if defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
// BeOS version of BeBuild.h defines this // BeOS version of BeBuild.h defines this
# define _IMPEXP_ROOT __declspec(dllimport) # define _IMPEXP_ROOT __declspec(dllimport)
# define _IMPEXP_BE __declspec(dllimport) # define _IMPEXP_BE __declspec(dllimport)
@ -81,7 +91,7 @@ typedef int socklen_t;
# define _IMPEXP_NET __declspec(dllimport) # define _IMPEXP_NET __declspec(dllimport)
#endif #endif
#ifdef __cplusplus #if defined(__cplusplus) && !defined(HAIKU_HOST_PLATFORM_HAIKU)
class BBuffer; class BBuffer;
class BBufferConsumer; class BBufferConsumer;
class BBufferGroup; class BBufferGroup;
@ -128,7 +138,8 @@ extern float roundf(float value);
#endif #endif
// These are R1-specific extensions // These are R1-specific extensions
#ifndef HAIKU_TARGET_PLATFORM_LIBBE_TEST #if !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) \
&& !defined(HAIKU_HOST_PLATFORM_HAIKU)
# define B_TRANSLATION_MAKE_VERSION(major, minor, revision) \ # define B_TRANSLATION_MAKE_VERSION(major, minor, revision) \
((major << 8) | ((minor << 4) & 0xf0) | (revision & 0x0f)) ((major << 8) | ((minor << 4) & 0xf0) | (revision & 0x0f))
# define B_TRANSLATION_MAJOR_VERSION(v) (v >> 8) # define B_TRANSLATION_MAJOR_VERSION(v) (v >> 8)
@ -150,7 +161,7 @@ extern float roundf(float value);
# define B_DOCUMENT_TEXT_COLOR B_MENU_ITEM_TEXT_COLOR # define B_DOCUMENT_TEXT_COLOR B_MENU_ITEM_TEXT_COLOR
#endif #endif
#if !defined(HAIKU_TARGET_PLATFORM_HAIKU) && !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) #if !defined(HAIKU_HOST_PLATFORM_HAIKU) && !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST)
# if !defined(B_NOT_SUPPORTED) && !defined(HAIKU_HOST_PLATFORM_DANO) # if !defined(B_NOT_SUPPORTED) && !defined(HAIKU_HOST_PLATFORM_DANO)
# define B_NOT_SUPPORTED (B_ERROR) # define B_NOT_SUPPORTED (B_ERROR)
# endif # endif
@ -174,15 +185,18 @@ extern float roundf(float value);
# define INT64_MAX LONGLONG_MAX # define INT64_MAX LONGLONG_MAX
#endif #endif
#define B_MPEG_2_AUDIO_LAYER_1 (enum mpeg_id)0x201 #ifndef HAIKU_HOST_PLATFORM_HAIKU
#define B_MPEG_2_AUDIO_LAYER_2 (enum mpeg_id)0x202 # define B_MPEG_2_AUDIO_LAYER_1 (enum mpeg_id)0x201
#define B_MPEG_2_AUDIO_LAYER_3 (enum mpeg_id)0x203 # define B_MPEG_2_AUDIO_LAYER_2 (enum mpeg_id)0x202
#define B_MPEG_2_VIDEO (enum mpeg_id)0x211 # define B_MPEG_2_AUDIO_LAYER_3 (enum mpeg_id)0x203
#define B_MPEG_2_5_AUDIO_LAYER_1 (enum mpeg_id)0x301 # define B_MPEG_2_VIDEO (enum mpeg_id)0x211
#define B_MPEG_2_5_AUDIO_LAYER_2 (enum mpeg_id)0x302 # define B_MPEG_2_5_AUDIO_LAYER_1 (enum mpeg_id)0x301
#define B_MPEG_2_5_AUDIO_LAYER_3 (enum mpeg_id)0x303 # define B_MPEG_2_5_AUDIO_LAYER_2 (enum mpeg_id)0x302
# define B_MPEG_2_5_AUDIO_LAYER_3 (enum mpeg_id)0x303
#endif
// TODO: experimental API (keep in sync with Accelerant.h) // TODO: experimental API (keep in sync with Accelerant.h)
#ifndef HAIKU_HOST_PLATFORM_HAIKU
typedef struct { typedef struct {
uint32 version; uint32 version;
char vendor[128]; char vendor[128];
@ -201,7 +215,96 @@ typedef struct {
uint32 max_vertical_frequency; uint32 max_vertical_frequency;
uint32 max_pixel_clock; // in kHz uint32 max_pixel_clock; // in kHz
} monitor_info; } monitor_info;
#endif // !HAIKU_HOST_PLATFORM_HAIKU
#if !defined(B_HAIKU_32_BIT) && !defined(B_HAIKU_64_BIT)
# ifdef HAIKU_HOST_PLATFORM_64_BIT
# define B_HAIKU_64_BIT 1
# else
# define B_HAIKU_32_BIT 1
# endif
#endif
#ifndef B_PRId8
# define __HAIKU_PRI_PREFIX_32 "l"
# define __HAIKU_PRI_PREFIX_64 "ll"
# define __HAIKU_PRI_PREFIX_ADDR "l"
/* printf()/scanf() format strings for [u]int* types */
# define B_PRId8 "d"
# define B_PRIi8 "i"
# define B_PRId16 "d"
# define B_PRIi16 "i"
# define B_PRId32 __HAIKU_PRI_PREFIX_32 "d"
# define B_PRIi32 __HAIKU_PRI_PREFIX_32 "i"
# define B_PRId64 __HAIKU_PRI_PREFIX_64 "d"
# define B_PRIi64 __HAIKU_PRI_PREFIX_64 "i"
# define B_PRIu8 "u"
# define B_PRIo8 "o"
# define B_PRIx8 "x"
# define B_PRIX8 "X"
# define B_PRIu16 "u"
# define B_PRIo16 "o"
# define B_PRIx16 "x"
# define B_PRIX16 "X"
# define B_PRIu32 __HAIKU_PRI_PREFIX_32 "u"
# define B_PRIo32 __HAIKU_PRI_PREFIX_32 "o"
# define B_PRIx32 __HAIKU_PRI_PREFIX_32 "x"
# define B_PRIX32 __HAIKU_PRI_PREFIX_32 "X"
# define B_PRIu64 __HAIKU_PRI_PREFIX_64 "u"
# define B_PRIo64 __HAIKU_PRI_PREFIX_64 "o"
# define B_PRIx64 __HAIKU_PRI_PREFIX_64 "x"
# define B_PRIX64 __HAIKU_PRI_PREFIX_64 "X"
# define B_SCNd8 "hhd"
# define B_SCNi8 "hhi"
# define B_SCNd16 "hd"
# define B_SCNi16 "hi"
# define B_SCNd32 __HAIKU_PRI_PREFIX_32 "d"
# define B_SCNi32 __HAIKU_PRI_PREFIX_32 "i"
# define B_SCNd64 __HAIKU_PRI_PREFIX_64 "d"
# define B_SCNi64 __HAIKU_PRI_PREFIX_64 "i"
# define B_SCNu8 "hhu"
# define B_SCNo8 "hho"
# define B_SCNx8 "hhx"
# define B_SCNu16 "hu"
# define B_SCNo16 "ho"
# define B_SCNx16 "hx"
# define B_SCNu32 __HAIKU_PRI_PREFIX_32 "u"
# define B_SCNo32 __HAIKU_PRI_PREFIX_32 "o"
# define B_SCNx32 __HAIKU_PRI_PREFIX_32 "x"
# define B_SCNu64 __HAIKU_PRI_PREFIX_64 "u"
# define B_SCNo64 __HAIKU_PRI_PREFIX_64 "o"
# define B_SCNx64 __HAIKU_PRI_PREFIX_64 "x"
/* printf() format strings for some standard types */
/* size_t */
# define B_PRIuSIZE __HAIKU_PRI_PREFIX_ADDR "u"
# define B_PRIoSIZE __HAIKU_PRI_PREFIX_ADDR "o"
# define B_PRIxSIZE __HAIKU_PRI_PREFIX_ADDR "x"
# define B_PRIXSIZE __HAIKU_PRI_PREFIX_ADDR "X"
/* ssize_t */
# define B_PRIdSSIZE __HAIKU_PRI_PREFIX_ADDR "d"
# define B_PRIiSSIZE __HAIKU_PRI_PREFIX_ADDR "i"
/* addr_t */
# define B_PRIuADDR __HAIKU_PRI_PREFIX_ADDR "u"
# define B_PRIoADDR __HAIKU_PRI_PREFIX_ADDR "o"
# define B_PRIxADDR __HAIKU_PRI_PREFIX_ADDR "x"
# define B_PRIXADDR __HAIKU_PRI_PREFIX_ADDR "X"
/* off_t */
# define B_PRIdOFF B_PRId64
# define B_PRIiOFF B_PRIi64
/* dev_t */
# define B_PRIdDEV B_PRId32
# define B_PRIiDEV B_PRIi32
/* ino_t */
# define B_PRIdINO B_PRId64
# define B_PRIiINO B_PRIi64
/* time_t */
# define B_PRIdTIME B_PRId32
# define B_PRIiTIME B_PRIi32
#endif // !B_PRId8
#endif // HAIKU_BUILD_COMPATIBILITY_H #endif // HAIKU_BUILD_COMPATIBILITY_H

View File

@ -87,6 +87,8 @@ SubDirHdrs [ FDirName $(SUBDIR) arch $(TARGET_ARCH) ] ;
# build gensyscalls # build gensyscalls
ObjectDefines $(syscallInfos) : HAIKU_BUILD_COMPATIBILITY_H ;
# Prevent the inclusion of HaikuBuildCompatibility.h. TODO: Very hacky!
BuildPlatformMain gensyscalls : gensyscalls.cpp $(syscallInfos) ; BuildPlatformMain gensyscalls : gensyscalls.cpp $(syscallInfos) ;
LinkAgainst gensyscalls : $(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ; LinkAgainst gensyscalls : $(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;