Patch by Morgan Howe (slightly modified): Several changes to support

building on Mac OS X (Darwin). A problem with makebootable remains.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21165 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2007-05-18 15:59:04 +00:00
parent 354543fa8b
commit 6dcd0ccf23
13 changed files with 66 additions and 17 deletions
+14 -2
View File
@@ -335,9 +335,11 @@ HOST_AR = $(HOST_AR[1]) ;
HOST_UNARFLAGS ?= x ;
# check the host platform compatibility
SetPlatformCompatibilityFlagVariables HOST_PLATFORM : HOST : host : linux freebsd ;
SetPlatformCompatibilityFlagVariables HOST_PLATFORM : HOST : host
: linux freebsd darwin ;
if $(HOST_PLATFORM) = linux || $(HOST_PLATFORM) = freebsd {
if $(HOST_PLATFORM) = linux || $(HOST_PLATFORM) = freebsd
|| $(HOST_PLATFORM) = darwin {
# don't use lex: otherwise rc will not work correctly
if $(LEX) = lex {
LEX = flex ;
@@ -404,6 +406,7 @@ switch $(HOST_PLATFORM) {
case haiku : HOST_DEBUG_FLAGS ?= -ggdb ;
case linux : HOST_DEBUG_FLAGS ?= -ggdb ;
case freebsd : HOST_DEBUG_FLAGS ?= -ggdb ;
case darwin : HOST_DEBUG_FLAGS ?= -ggdb ;
case * : HOST_DEBUG_FLAGS ?= -g ;
}
@@ -465,10 +468,17 @@ if $(HOST_PLATFORM_BEOS_COMPATIBLE) {
HOST_LIBSUPC++ = supc++ ;
}
if $(HOST_PLATFORM) = darwin {
HOST_LIBSUPC++ = gcc_s.1 ;
}
# Unlike glibc FreeBSD's libc doesn't have built-in regex support.
if $(HOST_PLATFORM) = freebsd {
HOST_LIBROOT += /usr/lib/libgnuregex.so ;
} else if $(HOST_PLATFORM) = darwin {
HOST_LIBROOT += /opt/local/lib/libgnuregex.dylib ;
}
# The BeOS compilers define __INTEL__ respectively __POWERPC__. On the
# build platform we need to make sure, this is also defined.
@@ -635,6 +645,7 @@ switch $(TARGET_PLATFORM) {
case haiku : TARGET_DEFINES += HAIKU_TARGET_PLATFORM_HAIKU ;
case linux : TARGET_DEFINES += HAIKU_TARGET_PLATFORM_LINUX ;
case freebsd : TARGET_DEFINES += HAIKU_TARGET_PLATFORM_FREEBSD ;
case darwin : TARGET_DEFINES += HAIKU_TARGET_PLATFORM_DARWIN ;
case libbe_test : TARGET_DEFINES += HAIKU_TARGET_PLATFORM_LIBBE_TEST ;
}
@@ -646,6 +657,7 @@ switch $(HOST_PLATFORM) {
case haiku : HOST_DEFINES += HAIKU_HOST_PLATFORM_HAIKU ;
case linux : HOST_DEFINES += HAIKU_HOST_PLATFORM_LINUX ;
case freebsd : HOST_DEFINES += HAIKU_HOST_PLATFORM_FREEBSD ;
case darwin : HOST_DEFINES += HAIKU_HOST_PLATFORM_DARWIN ;
}
+8 -2
View File
@@ -457,8 +457,14 @@ rule BuildPlatformSharedLibrary
local libs = $(3) ;
BuildPlatformMain $(target) : $(sources) : $(libs) ;
LINKFLAGS on $(target) = [ on $(target) return $(LINKFLAGS) ]
-shared -Xlinker -soname=\"$(target:G=)\" ;
if $(HOST_PLATFORM) = darwin {
LINKFLAGS on $(target) = [ on $(target) return $(LINKFLAGS) ]
-dynamic -dynamiclib -Xlinker -flat_namespace ;
} else {
LINKFLAGS on $(target) = [ on $(target) return $(LINKFLAGS) ]
-shared -Xlinker -soname=\"$(target:G=)\" ;
}
}
rule BuildPlatformMergeObject
+1 -1
View File
@@ -56,7 +56,7 @@ if [ $isImage ]; then
echo
if [ ! $updateOnly ]; then
echo "Creating image ..."
dd if=/dev/zero of=$imagePath bs=1M count=$imageSize
dd if=/dev/zero of=$imagePath bs=1048576 count=$imageSize
$bfsShell --initialize $imagePath Haiku
$makebootable $imagePath
fi
Vendored
+1
View File
@@ -272,6 +272,7 @@ case "${platform}" in
;;
Linux) buildPlatform=linux ;;
FreeBSD) buildPlatform=freebsd ;;
Darwin) buildPlatform=darwin ;;
*) echo Unsupported platform: ${platform}
exit 1 ;;
esac
+1 -1
View File
@@ -16,7 +16,7 @@ extern "C" {
extern size_t strlcpy(char *dest, const char *source, size_t length);
extern size_t strlcat(char *dest, const char *source, size_t length);
#ifdef HAIKU_HOST_PLATFORM_FREEBSD
#if defined(HAIKU_HOST_PLATFORM_FREEBSD) || defined(HAIKU_HOST_PLATFORM_DARWIN)
extern size_t strnlen(const char *string, size_t length);
#endif
+10
View File
@@ -0,0 +1,10 @@
#ifndef _HAIKU_BUILD_COMPATIBILITY_DARWIN_ENDIAN
#define _HAIKU_BUILD_COMPATIBILITY_DARWIN_ENDIAN
#include <machine/endian.h>
#define __LITTLE_ENDIAN LITTLE_ENDIAN
#define __BIG_ENDIAN BIG_ENDIAN
#define __PDP_ENDIAN PDP_ENDIAN
#endif // _HAIKU_BUILD_COMPATIBILITY_DARWIN_ENDIAN
+16
View File
@@ -0,0 +1,16 @@
#ifndef _HAIKU_BUILD_COMPATIBILITY_DARWIN_REGEX
#define _HAIKU_BUILD_COMPATIBILITY_DARWIN_REGEX
// Include the darwin port of gnuregex
#ifdef __cplusplus
extern "C" {
#endif
#include </opt/local/include/gnuregex.h>
#ifdef __cplusplus
}
#endif
#endif // _HAIKU_BUILD_COMPATIBILITY_DARWIN_REGEX
+9 -6
View File
@@ -22,7 +22,7 @@ USES_BE_API on $(tools) = true ;
BuildPlatformMain <build>catattr : catattr.cpp : $(HOST_LIBBE) ;
BuildPlatformMain <build>copyattr : copyattr.cpp
: $(HOST_LIBBE) $(HOST_LIBSTDC++) ;
: $(HOST_LIBBE) $(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;
BuildPlatformMain <build>listattr : listattr.cpp : $(HOST_LIBBE) ;
@@ -35,7 +35,7 @@ BuildPlatformMain <build>mimeset :
database_support.cpp
UpdateMimeInfoThread.cpp
MimeUpdateThread.cpp
: $(HOST_LIBBE)
: $(HOST_LIBBE) $(HOST_LIBSTDC++) $(HOST_LIBSUPC++)
;
BuildPlatformMain <build>mkindex : mkindex.cpp : $(HOST_LIBBE) ;
@@ -43,13 +43,16 @@ BuildPlatformMain <build>mkindex : mkindex.cpp : $(HOST_LIBBE) ;
BuildPlatformMain <build>rmattr : rmattr.cpp : $(HOST_LIBBE) ;
BuildPlatformMain <build>set_haiku_revision : set_haiku_revision.cpp
: $(HOST_LIBSTDC++) ;
: $(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;
BuildPlatformMain <build>settype : settype.cpp : $(HOST_LIBBE) ;
BuildPlatformMain <build>settype : settype.cpp : $(HOST_LIBBE)
$(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;
BuildPlatformMain <build>setversion : setversion.cpp : $(HOST_LIBBE) ;
BuildPlatformMain <build>setversion : setversion.cpp : $(HOST_LIBBE)
$(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;
BuildPlatformMain <build>xres : xres.cpp : $(HOST_LIBBE) $(HOST_LIBSTDC++) ;
BuildPlatformMain <build>xres : xres.cpp : $(HOST_LIBBE) $(HOST_LIBSTDC++)
$(HOST_LIBSUPC++) ;
SEARCH on [ FGristFiles
Mime.cpp
+2 -2
View File
@@ -62,7 +62,7 @@ PreprocessSyscalls $(syscallsHeaderPP) : $(syscallsHeader) ;
BuildPlatformMain gensyscallinfos
: gensyscallinfos.cpp
: $(HOST_LIBSTDC++)
: $(HOST_LIBSTDC++) $(HOST_LIBSUPC++)
;
@@ -88,7 +88,7 @@ SubDirHdrs [ FDirName $(SUBDIR) arch $(TARGET_ARCH) ] ;
# build gensyscalls
BuildPlatformMain gensyscalls : gensyscalls.cpp $(syscallInfos) ;
LinkAgainst gensyscalls : $(HOST_LIBSTDC++) ;
LinkAgainst gensyscalls : $(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;
# Explicitly tell jam that gensyscalls.cpp includes the generated header.
Includes [ FGristFiles gensyscalls.cpp ] : $(syscallsHeaderPP) ;
+1
View File
@@ -7,6 +7,7 @@ USES_BE_API on <build>keymap = true ;
BuildPlatformMain <build>keymap :
main.cpp
Keymap.cpp
: $(HOST_LIBSTDC++) $(HOST_LIBSUPC++)
;
LinkAgainst <build>keymap : $(HOST_LIBBE) ;
@@ -23,5 +23,5 @@ AddFileDataResource <build>makebootable : RAWT:666:BootCode : stage1.bin ;
BuildPlatformMain <build>makebootable :
makebootable.cpp
$(hostPlatformSources)
: $(HOST_LIBBE)
: $(HOST_LIBBE) $(HOST_LIBSTDC++) $(HOST_LIBSUPC++)
;
+1 -1
View File
@@ -21,7 +21,7 @@ BuildPlatformMain <build>rc :
strlcat.c
;
LinkAgainst <build>rc
: <build>librdef.a $(HOST_LIBSTDC++) $(HOST_LIBBE) ;
: <build>librdef.a $(HOST_LIBSTDC++) $(HOST_LIBBE) $(HOST_LIBSUPC++) ;
SEARCH on [ FGristFiles
strlcat.c strlcpy.c
+1 -1
View File
@@ -3,5 +3,5 @@ SubDir HAIKU_TOP src tools resattr ;
USES_BE_API on <build>resattr = true ;
BuildPlatformMain <build>resattr : resattr.cpp ;
LinkAgainst <build>resattr : $(HOST_LIBBE) ;
LinkAgainst <build>resattr : $(HOST_LIBBE) $(HOST_LIBSTDC++) $(HOST_LIBSUPC++) ;