From 5efa1b6ca112f4e8c27b91693f8d317da99f7b03 Mon Sep 17 00:00:00 2001 From: Scott McCreary Date: Thu, 30 Sep 2010 21:52:45 +0000 Subject: [PATCH] Initial .bep and .patch files for dmd, from haikubot --- dev-lang/dmd-bin/dmd-bin-1.064.bep | 21 + dev-lang/dmd-bin/licenses/Digital Mars | 46 + dev-lang/dmd-bin/patches/dmd-bin-1.064.patch | 2814 ++++++++++++++++++ 3 files changed, 2881 insertions(+) create mode 100644 dev-lang/dmd-bin/dmd-bin-1.064.bep create mode 100644 dev-lang/dmd-bin/licenses/Digital Mars create mode 100644 dev-lang/dmd-bin/patches/dmd-bin-1.064.patch diff --git a/dev-lang/dmd-bin/dmd-bin-1.064.bep b/dev-lang/dmd-bin/dmd-bin-1.064.bep new file mode 100644 index 000000000..fb051c98d --- /dev/null +++ b/dev-lang/dmd-bin/dmd-bin-1.064.bep @@ -0,0 +1,21 @@ +DESCRIPTION="D is a systems programming language." +HOMEPAGE="http://digitalmars.com/d/1.0/index.html" +SRC_URI="http://ftp.digitalmars.com/dmd.1.064.zip" +REVISION="1" +CHECKSUM_MD5="3d73758a7006397c2e66021532e2ff73" +MESSAGE="This port only builds with gcc4. Use 'setgcc gcc4' before building." +STATUS_HAIKU="stable" +DEPEND="" +BUILD { + cd ./dmd/src/dmd + make -f haiku.mak + strip dmd +} + +INSTALL { + mkdir -p ${DESTDIR}/boot/common/bin + cp dmd/src/dmd/dmd ${DESTDIR}/boot/common/bin/dmd + +} +LICENSE="Digital Mars" +COPYRIGHT="1999-2010, Digital Mars" diff --git a/dev-lang/dmd-bin/licenses/Digital Mars b/dev-lang/dmd-bin/licenses/Digital Mars new file mode 100644 index 000000000..580c840ba --- /dev/null +++ b/dev-lang/dmd-bin/licenses/Digital Mars @@ -0,0 +1,46 @@ + +The Software is not generally available software. It has not undergone +testing and may contain errors. The Software was not designed to operate +after December 31, 1999. It may be incomplete and it may not function +properly. No support or maintenance is provided with this Software. Do +not install or distribute the Software if +you are not accustomed to using or distributing experimental software. +Do not use this software for life critical applications, or applications +that could cause significant harm or property damage. + +Digital Mars licenses the Software to you on an "AS IS" basis, without +warranty of any kind. DIGITAL MARS AND SYMANTEC HEREBY EXPRESSLY DISCLAIM +ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, +NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. You are solely +responsible for determining the appropriateness of using this Software and +assume all risks associated with the use of this Software, including but not +limited to the risks of program errors, damage +to or loss of data, programs or equipment, unavailability or interruption of +operations and third party claims. You agree to defend, indemnify and hold +Digital Mars and Symantec, its subsidiaries, affiliates, directors, officers, +employees and agents harmless from all claims or demands made against them +(and any related losses, damages, expenses +and costs) arising out of your use of the Software. DIGITAL MARS AND SYMANTEC +WILL NOT BE LIABLE FOR ANY DIRECT DAMAGES OR FOR ANY SPECIAL, INCIDENTAL, OR +INDIRECT DAMAGES OR FOR ANY ECONOMIC CONSEQUENTIAL DAMAGES (INCLUDING +LOST PROFITS OR SAVINGS), EVEN IF DIGITAL MARS OR SYMANTEC HAS BEEN ADVISED +OF THE POSSIBILITY OF SUCH DAMAGES. +Digital Mars and Symantec will not be liable for the loss of, or damage to, +your records or data, the records or +data of any third party, or any damages claimed by you based on a third party +claim. + +If you send any messages to Digital Mars, on either the Digital Mars +newsgroups, the Digital Mars mailing list, or via email, you agree not +to make any claims of intellectual +property rights over the contents of those messages. + +The Software is copyrighted and comes with a single user license, +and may not be redistributed. If you wish to obtain a redistribution license, +please contact Digital Mars. + +-------------------------------------------- +Photo credits: Courtesy of NASA/JPL/Caltech +-------------------------------------------- + diff --git a/dev-lang/dmd-bin/patches/dmd-bin-1.064.patch b/dev-lang/dmd-bin/patches/dmd-bin-1.064.patch new file mode 100644 index 000000000..e737e05e4 --- /dev/null +++ b/dev-lang/dmd-bin/patches/dmd-bin-1.064.patch @@ -0,0 +1,2814 @@ +diff -Naur dmd/src/dmd/backend/cc.h dmd1/src/dmd/backend/cc.h +--- dmd/src/dmd/backend/cc.h 2010-09-14 07:16:00.036962304 +0000 ++++ dmd1/src/dmd/backend/cc.h 2010-09-19 15:18:13.894697472 +0000 +@@ -82,7 +82,7 @@ + WM_badnumber = 24, + WM_ccast = 25, + WM_obsolete = 26, +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + WM_skip_attribute = 27, // skip GNUC attribute specification + WM_warning_message = 28, // preprocessor warning message + WM_bad_vastart = 29, // args for builtin va_start bad +@@ -146,7 +146,7 @@ + #include "msgs2.h" + #endif + #include "ty.h" +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #include "../tk/mem.h" + #else + #include "mem.h" +@@ -745,7 +745,7 @@ + #define Fnteh 0x08 // uses NT Structured EH + #define Fdoinline 0x40 // do inline walk + #define Foverridden 0x80 // ignore for overriding purposes +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define Fnowrite 0x100 // SCinline should never output definition + #else + #define Fjmonitor 0x100 // Jupiter synchronized function +@@ -800,7 +800,7 @@ + // of SCftexpspec explicit specializations + Funcsym *Fsurrogatesym; // Fsurrogate: surrogate cast function + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + char *Fredirect; // redirect function name to this name in object + #endif + TARGET_structFUNC_S +@@ -1325,7 +1325,7 @@ + #define SFLmutable 0x100000 // SCmember or SCfield is mutable + #define SFLdyninit 0x200000 // symbol has dynamic initializer + #define SFLtmp 0x400000 // symbol is a generated temporary +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define SFLthunk 0x40000 // symbol is temporary for thunk + #endif + +@@ -1543,7 +1543,7 @@ + FLallocatmp, // temp for built-in alloca() + FLstack, // offset from ESP rather than EBP + FLdsymbol, // it's a Dsymbol +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + // Change this, update debug.c too + FLgot, // global offset table entry outside this object file + FLgotoff, // global offset table entry inside this object file +diff -Naur dmd/src/dmd/backend/cdef.h dmd1/src/dmd/backend/cdef.h +--- dmd/src/dmd/backend/cdef.h 2010-09-14 07:16:00.023068672 +0000 ++++ dmd1/src/dmd/backend/cdef.h 2010-09-19 15:22:37.755236864 +0000 +@@ -171,9 +171,14 @@ + #define TARGET_SOLARIS 0 // target is a Solaris executable + #endif + ++// Set to 1 using the makefile ++#ifndef TARGET_HAIKU ++#define TARGET_HAIKU 0 // target is a Haiku executable ++#endif ++ + // This is the default + #ifndef TARGET_WINDOS +-#define TARGET_WINDOS (!(TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS)) ++#define TARGET_WINDOS (!(TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU)) + #endif + + #if __GNUC__ +@@ -242,7 +247,7 @@ + + // Precompiled header variations + #define MEMORYHX (_WINDLL && _WIN32) // HX and SYM files are cached in memory +-#define MMFIO (_WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4) // if memory mapped files ++#define MMFIO (_WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__) // if memory mapped files + #define LINEARALLOC _WIN32 // if we can reserve address ranges + + // H_STYLE takes on one of these precompiled header methods +@@ -458,7 +463,7 @@ + #define DOUBLESIZE 8 + #if TARGET_OSX + #define LNGDBLSIZE 16 // 80 bit reals +-#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define LNGDBLSIZE 12 // 80 bit reals + #else + #define LNGDBLSIZE 10 // 80 bit reals +@@ -509,7 +514,7 @@ + #define OMFOBJ TARGET_WINDOS + #endif + #ifndef ELFOBJ +-#define ELFOBJ (TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS) ++#define ELFOBJ (TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU) + #endif + #ifndef MACHOBJ + #define MACHOBJ TARGET_OSX +@@ -696,6 +701,7 @@ + #define EX_SCOUNIX 0x800 + #define EX_UNIXSVR4 0x1000 + #define EX_LINUX 0x2000 ++#define EX_HAIKU 0x2000 + #define EX_WIN64 0x4000 // AMD64 and Windows (64 bit mode) + #define EX_LINUX64 0x8000 // AMD64 and Linux (64 bit mode) + #define EX_OSX 0x10000 +@@ -707,7 +713,7 @@ + + #define EX_flat (EX_OS2 | EX_NT | EX_LINUX | EX_WIN64 | EX_LINUX64 | \ + EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | \ +- EX_SOLARIS | EX_SOLARIS64) ++ EX_SOLARIS | EX_SOLARIS64 | EX_HAIKU) + #define EX_dos (EX_DOSX | EX_ZPM | EX_RATIONAL | EX_PHARLAP | \ + EX_COM | EX_MZ /*| EX_WIN16*/) + +@@ -760,7 +766,7 @@ + #define CFG3relax 0x200 // relaxed type checking (C only) + #define CFG3cpp 0x400 // C++ compile + #define CFG3igninc 0x800 // ignore standard include directory +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define CFG3mars 0x1000 // use mars libs and headers + #define NO_FAR (TRUE) // always ignore __far and __huge keywords + #else +@@ -772,7 +778,7 @@ + #define CFG3cppcomment 0x8000 // allow C++ style comments + #define CFG3wkfloat 0x10000 // make floating point references weak externs + #define CFG3digraphs 0x20000 // support ANSI C++ digraphs +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define CFG3semirelax 0x40000 // moderate relaxed type checking + #endif + #define CFG3pic 0x80000 // position independent code +@@ -975,7 +981,7 @@ + #define SYMBOLZERO + #endif + +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define UNIXFIELDS (unsigned)-1,(unsigned)-1,0,0, + #elif TARGET_OSX + #define UNIXFIELDS (unsigned)-1,(unsigned)-1,0,0,0, +diff -Naur dmd/src/dmd/backend/cg87.c dmd1/src/dmd/backend/cg87.c +--- dmd/src/dmd/backend/cg87.c 2010-09-14 07:16:00.041680896 +0000 ++++ dmd1/src/dmd/backend/cg87.c 2010-09-19 16:00:13.923271168 +0000 +@@ -619,7 +619,7 @@ + static double dval[7] = + {0.0,1.0,PI,LOG2T,LOG2E,LOG2,LN2}; + static long double ldval[7] = +-#if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #define M_PIl 0x1.921fb54442d1846ap+1L // 3.14159 fldpi + #define M_LOG2T_L 0x1.a934f0979a3715fcp+1L // 3.32193 fldl2t + #define M_LOG2El 0x1.71547652b82fe178p+0L // 1.4427 fldl2e +diff -Naur dmd/src/dmd/backend/cgcod.c dmd1/src/dmd/backend/cgcod.c +--- dmd/src/dmd/backend/cgcod.c 2010-09-14 07:16:00.010223616 +0000 ++++ dmd1/src/dmd/backend/cgcod.c 2010-09-19 15:23:23.361496576 +0000 +@@ -127,7 +127,7 @@ + csmax = 64; + csextab = (struct CSE *) util_calloc(sizeof(struct CSE),csmax); + functy = tybasic(funcsym_p->ty()); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (0 && config.flags3 & CFG3pic) + { + ALLREGS = ALLREGS_INIT_PIC; +@@ -1002,7 +1002,7 @@ + #endif + if (config.flags2 & CFG2seh) + c = cat(c,nteh_unwind(0,toindex)); +-#if MARS && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS) ++#if MARS && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU) + else if (toindex + 1 <= fromindex) + { + //c = cat(c, linux_unwind(0, toindex)); +@@ -1089,7 +1089,7 @@ + assert(!getregs(allregs)); + assert(!e); + assert(!bl->Bcode); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (config.flags3 & CFG3pic) + { + if (STACKALIGN == 16) +@@ -1553,7 +1553,7 @@ + return mST0; + + case TYcfloat: +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (I32 && tybasic(tyf) == TYnfunc) + return mDX | mAX; + #endif +@@ -2492,7 +2492,7 @@ + case OPrelconst: + c = cdrelconst(e,pretregs); + break; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case OPgot: + c = cdgot(e,pretregs); + break; +diff -Naur dmd/src/dmd/backend/cgelem.c dmd1/src/dmd/backend/cgelem.c +--- dmd/src/dmd/backend/cgelem.c 2010-09-14 07:16:00.005242880 +0000 ++++ dmd1/src/dmd/backend/cgelem.c 2010-09-19 15:24:12.137101312 +0000 +@@ -812,7 +812,7 @@ + e2 = e->E2; + if (e2->Eoper == OPconst) + { +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (e1->Eoper == OPrelconst && e1->EV.sp.Vsym->Sfl == FLgot) + goto ret; + #endif +@@ -827,7 +827,7 @@ + } + else if (e1->Eoper == OPconst) + { +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (e2->Eoper == OPrelconst && e2->EV.sp.Vsym->Sfl == FLgot) + goto ret; + #endif +diff -Naur dmd/src/dmd/backend/cod1.c dmd1/src/dmd/backend/cod1.c +--- dmd/src/dmd/backend/cod1.c 2010-09-14 07:16:00.022282240 +0000 ++++ dmd1/src/dmd/backend/cod1.c 2010-09-19 15:25:02.416808960 +0000 +@@ -1279,7 +1279,7 @@ + case FLextern: + if (s->Sident[0] == '_' && memcmp(s->Sident + 1,"tls_array",10) == 0) + { +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + // Rewrite as GS:[0000], or FS:[0000] for 64 bit + if (I64) + { +@@ -1307,7 +1307,7 @@ + case FLdata: + case FLudata: + case FLcsdata: +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case FLgot: + case FLgotoff: + case FLtlsdata: +@@ -1338,7 +1338,7 @@ + { + pcs->Iflags |= CFcs | CFoff; + } +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (I64 && config.flags3 & CFG3pic && + (fl == FLtlsdata || s->ty() & mTYthread)) + { +@@ -1923,12 +1923,12 @@ + { + //printf("callclib(e = %p, clib = %d, *pretregs = %s, keepmask = %s\n", e, clib, regm_str(*pretregs), regm_str(keepmask)); + //elem_print(e); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + static symbol lib[] = + { + /* Convert destroyed regs into saved regs */ + #define Z(desregs) (~(desregs) & (mBP| mES | ALLREGS)) +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define N(name) "_" name + #else + #define N(name) name +@@ -2149,7 +2149,7 @@ + {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _INTDBL@ intdbl + {mAX,mAX,0,INFfloat,1,1}, // _DBLUNS@ dbluns + {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _UNSDBL@ unsdbl +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + {mDX|mAX,mAX,0,INF32|INFfloat,0,1}, // _DBLULNG@ dblulng + #else + {mDX|mAX,mAX,0,INFfloat,1,1}, // _DBLULNG@ dblulng +@@ -2162,7 +2162,7 @@ + + {DOUBLEREGS_16,mDX|mAX,0,INFfloat,1,1}, // _DBLLLNG@ + {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _LLNGDBL@ +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + {DOUBLEREGS_16,mDX|mAX,0,INFfloat,2,2}, // _DBLULLNG@ + #else + {DOUBLEREGS_16,mDX|mAX,0,INFfloat,1,1}, // _DBLULLNG@ +diff -Naur dmd/src/dmd/backend/cod2.c dmd1/src/dmd/backend/cod2.c +--- dmd/src/dmd/backend/cod2.c 2010-09-14 07:16:00.049020928 +0000 ++++ dmd1/src/dmd/backend/cod2.c 2010-09-19 15:25:43.999292928 +0000 +@@ -151,7 +151,7 @@ + + ty1 = tybasic(e1->Ety); + if (tyfloating(ty1)) +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + return orth87(e,pretregs); + #else + return opdouble(e,pretregs,(e->Eoper == OPadd) ? CLIBdadd +@@ -793,7 +793,7 @@ + unsigned grex = rex << 16; + + if (tyfloating(tyml)) +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + return orth87(e,pretregs); + #else + return opdouble(e,pretregs,(oper == OPmul) ? CLIBdmul : CLIBddiv); +@@ -3761,7 +3761,7 @@ + goto L4; + + case FLtlsdata: +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + { + L5: + if (I64 && config.flags3 & CFG3pic) +@@ -3853,13 +3853,13 @@ + goto L4; + + case FLextern: +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (e->EV.sp.Vsym->ty() & mTYthread) + goto L5; + #endif + case FLdata: + case FLudata: +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case FLgot: + case FLgotoff: + #endif +@@ -4141,7 +4141,7 @@ + + if (tyfloating(tyml)) + { +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + return post87(e,pretregs); + #else + if (config.inline8087) +diff -Naur dmd/src/dmd/backend/cod3.c dmd1/src/dmd/backend/cod3.c +--- dmd/src/dmd/backend/cod3.c 2010-09-14 07:16:00.003145728 +0000 ++++ dmd1/src/dmd/backend/cod3.c 2010-09-19 15:26:46.276037632 +0000 +@@ -534,7 +534,7 @@ + genjmp(c,JNE,FLblock,list_block(b->Bsucc)); /* JNE default */ + } + ce = getregs(mCX|mDI); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (config.flags3 & CFG3pic) + { // Add in GOT + code *cx; +@@ -614,7 +614,7 @@ + mod = (disp > 127) ? 2 : 1; /* 1 or 2 byte displacement */ + if (config.flags & CFGromable) + gen1(ce,SEGCS); /* table is in code segment */ +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (config.flags3 & CFG3pic) + { // ADD EDX,(ncases-1)*2[EDI] + ct = genc1(CNIL,0x03,modregrm(mod,DX,7),FLconst,disp); +@@ -1092,7 +1092,7 @@ + gen1(c, 0x58 + reg); // L1: POP reg + + return cat(c,fixresult(e,retregs,pretregs)); +-#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + regm_t retregs; + unsigned reg; + code *c; +@@ -1125,7 +1125,7 @@ + #endif + } + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + /***************************** + * Returns: + * # of bytes stored +@@ -1401,7 +1401,7 @@ + if (config.wflags & WFincbp && farfunc) + c = gen1(c,0x40 + BP); /* INC BP */ + if (config.target_cpu < TARGET_80286 || +- config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64) || ++ config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64 | EX_HAIKU) || + !localsize || + config.flags & CFGstack || + (xlocalsize >= 0x1000 && config.exe & EX_flat) || +@@ -2077,7 +2077,7 @@ + + code *cod3_load_got() + { +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + code *c; + code *cgot; + +@@ -2259,7 +2259,7 @@ + sthunk->Soffset = thunkoffset; + sthunk->Ssize = Coffset - thunkoffset; /* size of thunk */ + sthunk->Sseg = cseg; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + objpubdef(cseg,sthunk,sthunk->Soffset); + #endif + searchfixlist(sthunk); /* resolve forward refs */ +@@ -4251,7 +4251,7 @@ + // un-named external with is the start of .rodata or .data + case FLextern: /* external data symbol */ + case FLtlsdata: +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case FLgot: + case FLgotoff: + #endif +@@ -4344,7 +4344,7 @@ + // un-named external with is the start of .rodata or .data + case FLextern: /* external data symbol */ + case FLtlsdata: +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case FLgot: + case FLgotoff: + #endif +@@ -4568,7 +4568,7 @@ + // resolve directly. + if (s->Sseg == p->Lseg && + (s->Sclass == SCstatic || +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + (!(config.flags3 & CFG3pic) && s->Sclass == SCglobal)) && + #else + s->Sclass == SCglobal) && +diff -Naur dmd/src/dmd/backend/cod4.c dmd1/src/dmd/backend/cod4.c +--- dmd/src/dmd/backend/cod4.c 2010-09-14 07:16:00.025165824 +0000 ++++ dmd1/src/dmd/backend/cod4.c 2010-09-19 15:27:05.449576960 +0000 +@@ -749,7 +749,7 @@ + byte = (sz == 1); // 1 for byte operation, else 0 + if (tyfloating(tyml)) + { +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (op == OPnegass) + c = cdnegass87(e,pretregs); + else +@@ -1192,7 +1192,7 @@ + + + if (tyfloating(tyml)) +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + return opass87(e,pretregs); + #else + return opassdbl(e,pretregs,op); +@@ -1685,7 +1685,7 @@ + unsigned rex = (I64 && sz == 8) ? REX_W : 0; + unsigned grex = rex << 16; // 64 bit operands + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (tyfloating(tym)) /* if floating operation */ + { + retregs = mPSW; +@@ -2427,7 +2427,7 @@ + case OPd_s64: + return cnvt87(e,pretregs); + case OPd_u32: // use subroutine, not 8087 +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + retregs = mST0; + #else + retregs = DOUBLEREGS; +diff -Naur dmd/src/dmd/backend/code.h dmd1/src/dmd/backend/code.h +--- dmd/src/dmd/backend/code.h 2010-09-14 07:16:00.039059456 +0000 ++++ dmd1/src/dmd/backend/code.h 2010-09-19 15:27:18.326369280 +0000 +@@ -110,7 +110,7 @@ + #define RMload (1 << 30) + #define RMstore (1 << 31) + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + // To support positional independent code, + // must be able to remove BX from available registers + extern regm_t ALLREGS; +@@ -669,7 +669,7 @@ + cd_t cdcomma; + cd_t cdloglog; + cd_t cdshift; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + cd_t cdindpic; + #endif + cd_t cdind; +diff -Naur dmd/src/dmd/backend/debug.c dmd1/src/dmd/backend/debug.c +--- dmd/src/dmd/backend/debug.c 2010-09-14 07:16:00.005767168 +0000 ++++ dmd1/src/dmd/backend/debug.c 2010-09-19 15:27:38.099876864 +0000 +@@ -101,7 +101,7 @@ + if (t & mTYpasobj) + dbg_printf("mTYpasobj|"); + #endif +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + if (t & mTYtransu) + dbg_printf("mTYtransu|"); + #endif +@@ -294,7 +294,7 @@ + "ndp ","farda ","local ","csdat ","tlsdat", + "bprel ","frameh","asm ","blocko","alloca", + "stack ","dsym ", +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + "got ","gotoff", + #endif + #endif +diff -Naur dmd/src/dmd/backend/dwarf.c dmd1/src/dmd/backend/dwarf.c +--- dmd/src/dmd/backend/dwarf.c 2010-09-14 07:16:00.007077888 +0000 ++++ dmd1/src/dmd/backend/dwarf.c 2010-09-19 15:28:04.921174016 +0000 +@@ -22,7 +22,7 @@ + #include + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #include + #include +@@ -402,7 +402,7 @@ + linebuf->writeString((char *)list_ptr(pl)); + linebuf->writeByte(0); + } +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + for (pl = pathsyslist; pl; pl = list_next(pl)) + { + linebuf->writeString((char *)list_ptr(pl)); +diff -Naur dmd/src/dmd/backend/el.c dmd1/src/dmd/backend/el.c +--- dmd/src/dmd/backend/el.c 2010-09-14 07:16:00.015728640 +0000 ++++ dmd1/src/dmd/backend/el.c 2010-09-19 15:28:43.187170816 +0000 +@@ -1329,7 +1329,7 @@ + return e; + } + #endif +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + + elem *el_picvar(symbol *s) + { elem *e; +@@ -1531,10 +1531,10 @@ + + //printf("el_var(s = '%s')\n", s->Sident); + //printf("%x\n", s->Stype->Tty); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + // OSX is currently always pic + if (config.flags3 & CFG3pic && +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + (!(s->Stype->Tty & mTYthread) || I64) && + #endif + !tyfunc(s->ty())) +@@ -1553,7 +1553,7 @@ + //printf("thread local %s\n", s->Sident); + #if TARGET_OSX + ; +-#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + /* For 32 bit: + * Generate for var locals: + * MOV reg,GS:[00000000] // add GS: override in back end +@@ -1658,7 +1658,7 @@ + { elem *e; + + //printf("el_var(s = '%s')\n", s->Sident); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (config.flags3 & CFG3pic && !tyfunc(s->ty())) + return el_picvar(s); + #endif +@@ -1755,7 +1755,7 @@ + return e; + } + #endif +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (config.flags3 & CFG3pic && tyfunc(s->ty())) + e = el_picvar(s); + else +diff -Naur dmd/src/dmd/backend/elfobj.c dmd1/src/dmd/backend/elfobj.c +--- dmd/src/dmd/backend/elfobj.c 2010-09-14 07:16:00.040632320 +0000 ++++ dmd1/src/dmd/backend/elfobj.c 2010-09-19 15:28:59.817364992 +0000 +@@ -1863,7 +1863,7 @@ + } + break; + case mTYman_std: +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (tyfunc(s->ty()) && !variadic(s->Stype)) + #else + if (!(config.flags4 & CFG4oldstdmangle) && +diff -Naur dmd/src/dmd/backend/evalu8.c dmd1/src/dmd/backend/evalu8.c +--- dmd/src/dmd/backend/evalu8.c 2010-09-14 07:16:00.031981568 +0000 ++++ dmd1/src/dmd/backend/evalu8.c 2010-09-19 15:29:18.926416896 +0000 +@@ -42,7 +42,7 @@ + + extern void error(const char *filename, unsigned linnum, const char *format, ...); + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + int _status87() + { + return fetestexcept(FE_ALL_EXCEPT); +@@ -514,7 +514,7 @@ + if (e2->Eoper == OPconst) + { targ_int i = e2->EV.Vint; + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (i && e1->EV.sp.Vsym->Sfl == FLgot) + break; + #endif +diff -Naur dmd/src/dmd/backend/global.h dmd1/src/dmd/backend/global.h +--- dmd/src/dmd/backend/global.h 2010-09-14 07:16:00.052428800 +0000 ++++ dmd1/src/dmd/backend/global.h 2010-09-19 15:29:26.810549248 +0000 +@@ -546,7 +546,7 @@ + void dwarf_CFA_args_size(size_t sz); + #endif + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + void elfobj_gotref(symbol *s); + symbol *elfobj_getGOTsym(); + void elfobj_refGOTsym(); +diff -Naur dmd/src/dmd/backend/machobj.c dmd1/src/dmd/backend/machobj.c +--- dmd/src/dmd/backend/machobj.c 2010-09-14 07:16:00.008650752 +0000 ++++ dmd1/src/dmd/backend/machobj.c 2010-09-19 15:29:53.417333248 +0000 +@@ -21,7 +21,7 @@ + #include + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #include + #endif +@@ -1615,7 +1615,7 @@ + strupr(dest); // to upper case + break; + case mTYman_std: +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (tyfunc(s->ty()) && !variadic(s->Stype)) + #else + if (!(config.flags4 & CFG4oldstdmangle) && +diff -Naur dmd/src/dmd/backend/nteh.c dmd1/src/dmd/backend/nteh.c +--- dmd/src/dmd/backend/nteh.c 2010-09-14 07:16:00.019922944 +0000 ++++ dmd1/src/dmd/backend/nteh.c 2010-09-19 15:30:37.083099648 +0000 +@@ -415,7 +415,7 @@ + /* An sindex value of -2 is a magic value that tells the + * stack unwinder to skip this frame. + */ +- assert(config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64)); ++ assert(config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64 | EX_HAIKU)); + cs.Iop = 0x68; + cs.Iflags = 0; + cs.Irex = 0; +diff -Naur dmd/src/dmd/backend/optabgen.c dmd1/src/dmd/backend/optabgen.c +--- dmd/src/dmd/backend/optabgen.c 2010-09-14 07:16:00.063700992 +0000 ++++ dmd1/src/dmd/backend/optabgen.c 2010-09-19 15:30:57.498860032 +0000 +@@ -703,7 +703,7 @@ + case FLctor: segfl[i] = -1; break; + case FLdtor: segfl[i] = -1; break; + case FLdsymbol: segfl[i] = -1; break; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case FLgot: segfl[i] = -1; break; + case FLgotoff: segfl[i] = -1; break; + #endif +diff -Naur dmd/src/dmd/backend/os.c dmd1/src/dmd/backend/os.c +--- dmd/src/dmd/backend/os.c 2010-09-14 07:16:00.039321600 +0000 ++++ dmd1/src/dmd/backend/os.c 2010-09-19 15:31:43.780664832 +0000 +@@ -26,7 +26,7 @@ + #include + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #include + #include +@@ -658,7 +658,7 @@ + if (!find) + return 0; + return (find->attribute & FA_DIREC) ? 2 : 1; +-#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + struct stat buf; + + return stat(name,&buf) == 0; /* file exists if stat succeeded */ +@@ -735,7 +735,7 @@ + + int file_write(char *name, void *buffer, unsigned len) + { +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + int fd; + ssize_t numwritten; + +@@ -811,7 +811,7 @@ + + int file_createdirs(char *name) + { +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + return 1; + #endif + #if _WIN32 +@@ -861,7 +861,7 @@ + } + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + int os_critsecsize() + { + return sizeof(pthread_mutex_t); +diff -Naur dmd/src/dmd/backend/out.c dmd1/src/dmd/backend/out.c +--- dmd/src/dmd/backend/out.c 2010-09-14 07:16:00.046661632 +0000 ++++ dmd1/src/dmd/backend/out.c 2010-09-19 15:31:52.633077760 +0000 +@@ -408,7 +408,7 @@ + flags = CFoff | CFseg; + if (tybasic(dt->Dty) == TYcptr) + reftocodseg(seg,offset,dt->DTabytes); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + else + reftodatseg(seg,offset,dt->DTabytes,dt->DTseg,flags); + #else +diff -Naur dmd/src/dmd/backend/parser.h dmd1/src/dmd/backend/parser.h +--- dmd/src/dmd/backend/parser.h 2010-09-14 07:16:00.043515904 +0000 ++++ dmd1/src/dmd/backend/parser.h 2010-09-23 20:53:34.909901824 +0000 +@@ -156,7 +156,7 @@ + #define FQtop 8 // top level file, already open + #define FQqual 0x10 // filename is already qualified + #endif +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #define FQnext 0x20 // search starts after directory + #endif // of last included file + +@@ -698,7 +698,7 @@ + + extern list_t pathlist; // include paths + extern list_t headers; // pre-include files +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + extern list_t pathsyslist; // include path for .h file overrides + #endif + +diff -Naur dmd/src/dmd/backend/strtold.c dmd1/src/dmd/backend/strtold.c +--- dmd/src/dmd/backend/strtold.c 2010-09-14 07:16:00.062390272 +0000 ++++ dmd1/src/dmd/backend/strtold.c 2010-09-19 15:32:39.060030976 +0000 +@@ -20,7 +20,7 @@ + #if _WIN32 + #include + #endif +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #endif + +@@ -30,7 +30,7 @@ + void __pascal __set_errno (int an_errno); + #endif + +-#if _WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if _WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + + #if 0 + /* This is for compilers that don't support hex float literals, +diff -Naur dmd/src/dmd/backend/token.h dmd1/src/dmd/backend/token.h +--- dmd/src/dmd/backend/token.h 2010-09-14 07:16:00.044302336 +0000 ++++ dmd1/src/dmd/backend/token.h 2010-09-19 15:32:54.867958784 +0000 +@@ -179,7 +179,7 @@ + TK_stdcall, + TK_syscall, + TK_try, +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + TK_attribute, + TK_extension, + TK_format, +@@ -211,7 +211,7 @@ + TKandand,TKshl,TKshr,TKrcur,TKeq,TKaddass,TKminass,TKmulass,TKdivass, + TKmodass,TKshrass,TKshlass,TKandass,TKxorass,TKorass,TKsemi, + TKadd,TKellipsis, +-#if !TX86 || TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if !TX86 || TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + TKdollar, + #endif + +diff -Naur dmd/src/dmd/backend/ty.h dmd1/src/dmd/backend/ty.h +--- dmd/src/dmd/backend/ty.h 2010-09-14 07:16:00.038535168 +0000 ++++ dmd1/src/dmd/backend/ty.h 2010-09-19 15:33:02.589299712 +0000 +@@ -304,7 +304,7 @@ + /* Array to give the 'relaxed' type for relaxed type checking */ + extern unsigned char _tyrelax[]; + #define type_relax (config.flags3 & CFG3relax) // !=0 if relaxed type checking +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define type_semirelax (config.flags3 & CFG3semirelax) // !=0 if semi-relaxed type checking + #else + #define type_semirelax type_relax +diff -Naur dmd/src/dmd/backend/type.h dmd1/src/dmd/backend/type.h +--- dmd/src/dmd/backend/type.h 2010-09-14 07:16:00.019136512 +0000 ++++ dmd1/src/dmd/backend/type.h 2010-09-19 15:33:16.247988224 +0000 +@@ -54,7 +54,7 @@ + unsigned short Tflags; // TFxxxxx + + #if TX86 +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define mTYnoret 0x010000 // function has no return + #define mTYtransu 0x010000 // transparent union + #else +@@ -68,7 +68,7 @@ + #define mTYsyscall 0x400000 + #define mTYjava 0x800000 + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #define mTYTFF 0xFE0000 + #else + #define mTYTFF 0xFF0000 +diff -Naur dmd/src/dmd/backend/var.c dmd1/src/dmd/backend/var.c +--- dmd/src/dmd/backend/var.c 2010-09-14 07:16:00.006815744 +0000 ++++ dmd1/src/dmd/backend/var.c 2010-09-19 15:33:25.649854976 +0000 +@@ -58,7 +58,7 @@ + #if MEMMODELS == 1 + tym_t functypetab[LINK_MAXDIM] = + { +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + TYnfunc, + TYnpfunc, + TYnpfunc, +diff -Naur dmd/src/dmd/cond.c dmd1/src/dmd/cond.c +--- dmd/src/dmd/cond.c 2010-09-14 07:16:00.002097152 +0000 ++++ dmd1/src/dmd/cond.c 2010-09-19 15:34:06.023855104 +0000 +@@ -138,6 +138,7 @@ + #endif + "OSX", "FreeBSD", + "Solaris", ++ "Haiku", + "LittleEndian", "BigEndian", + "all", + "none", +diff -Naur dmd/src/dmd/e2ir.c dmd1/src/dmd/e2ir.c +--- dmd/src/dmd/e2ir.c 2010-09-14 07:16:00.029622272 +0000 ++++ dmd1/src/dmd/e2ir.c 2010-09-19 15:34:41.236716032 +0000 +@@ -174,7 +174,8 @@ + if ((global.params.isLinux || + global.params.isOSX || + global.params.isFreeBSD || +- global.params.isSolaris) && tf->linkage != LINKd) ++ global.params.isSolaris || ++ global.params.isHaiku) && tf->linkage != LINKd) + ; // ehidden goes last on Linux/OSX C++ + else + { +@@ -1582,7 +1583,7 @@ + if (global.params.useInvariants && t1->ty == Tclass && + !((TypeClass *)t1)->sym->isInterfaceDeclaration()) + { +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + e = el_bin(OPcall, TYvoid, el_var(rtlsym[RTLSYM__DINVARIANT]), e); + #else + e = el_bin(OPcall, TYvoid, el_var(rtlsym[RTLSYM_DINVARIANT]), e); +diff -Naur dmd/src/dmd/eh.c dmd1/src/dmd/eh.c +--- dmd/src/dmd/eh.c 2010-09-14 07:16:00.013631488 +0000 ++++ dmd1/src/dmd/eh.c 2010-09-19 15:34:56.559153152 +0000 +@@ -26,7 +26,7 @@ + symbol *except_gentables() + { + //printf("except_gentables()\n"); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + symbol *s; + int sz; // size so far + dt_t **pdt; +diff -Naur dmd/src/dmd/expression.c dmd1/src/dmd/expression.c +--- dmd/src/dmd/expression.c 2010-09-14 07:16:00.011534336 +0000 ++++ dmd1/src/dmd/expression.c 2010-09-23 20:55:42.509083648 +0000 +@@ -1625,6 +1625,8 @@ + { + #if __APPLE__ + return (__inline_isnan(x1) && __inline_isnan(x2)) || ++#elif __HAIKU__ ++ return (__isnan(x1) && __isnan(x2)) || + #else + return (isnan(x1) && isnan(x2)) || + #endif +@@ -1734,6 +1736,8 @@ + + #if __APPLE__ + if (__inline_isnan(value)) ++#elif __HAIKU__ ++ if (__isnan(value)) + #else + if (isnan(value)) + #endif +diff -Naur dmd/src/dmd/glue.c dmd1/src/dmd/glue.c +--- dmd/src/dmd/glue.c 2010-09-14 07:16:00.022806528 +0000 ++++ dmd1/src/dmd/glue.c 2010-09-19 15:35:50.215220224 +0000 +@@ -610,7 +610,7 @@ + // Pull in RTL startup code + if (func->isMain()) + { objextdef("_main"); +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + obj_ehsections(); // initialize exception handling sections + #endif + #if TARGET_WINDOS +@@ -770,7 +770,7 @@ + pi++; + } + +- if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris) && ++ if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris || global.params.isHaiku) && + linkage != LINKd && shidden && sthis) + { + /* swap shidden and sthis +@@ -1015,7 +1015,7 @@ + s->toObjFile(0); + } + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + // A hack to get a pointer to this function put in the .dtors segment + if (ident && memcmp(ident->toChars(), "_STD", 4) == 0) + obj_staticdtor(s); +@@ -1061,7 +1061,7 @@ + //case Tbit: t = TYuchar; break; + case Tbool: t = TYbool; break; + case Tchar: t = TYchar; break; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case Twchar: t = TYwchar_t; break; + case Tdchar: t = TYdchar; break; + #else +@@ -1151,7 +1151,7 @@ + + case LINKc: + tyf = TYnfunc; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + if (retStyle() == RETstack) + tyf = TYhfunc; + #endif +diff -Naur dmd/src/dmd/haiku.mak dmd1/src/dmd/haiku.mak +--- dmd/src/dmd/haiku.mak 1970-01-01 00:00:00.000000000 +0000 ++++ dmd1/src/dmd/haiku.mak 2010-09-19 15:16:23.496762880 +0000 +@@ -0,0 +1,599 @@ ++ ++C=backend ++TK=tk ++ROOT=root ++ ++MODEL=-m32 ++ ++CC=g++ $(MODEL) ++ ++#OPT=-g -g3 ++#OPT=-O2 ++ ++#COV=-fprofile-arcs -ftest-coverage ++ ++WARNINGS=-Wno-deprecated -Wstrict-aliasing ++ ++#GFLAGS = $(WARNINGS) -D__near= -D__pascal= -fno-exceptions -g -DDEBUG=1 $(COV) ++GFLAGS = $(WARNINGS) -D__near= -D__pascal= -fno-exceptions -O2 ++ ++CFLAGS = $(GFLAGS) -I$(ROOT) -D__I86__=1 -DMARS=1 -DTARGET_HAIKU=1 -D_DH ++MFLAGS = $(GFLAGS) -I$C -I$(TK) -D__I86__=1 -DMARS=1 -DTARGET_HAIKU=1 -D_DH ++ ++CH= $C/cc.h $C/global.h $C/parser.h $C/oper.h $C/code.h $C/type.h \ ++ $C/dt.h $C/cgcv.h $C/el.h $C/iasm.h ++TOTALH= ++ ++DMD_OBJS = \ ++ access.o array.o attrib.o bcomplex.o bit.o blockopt.o \ ++ cast.o code.o cg.o cg87.o cgcod.o cgcs.o cgelem.o cgen.o \ ++ cgreg.o cgsched.o class.o cod1.o cod2.o cod3.o cod4.o cod5.o \ ++ constfold.o irstate.o dchar.o cond.o debug.o \ ++ declaration.o dsymbol.o dt.o dump.o e2ir.o ee.o eh.o el.o \ ++ dwarf.o enum.o evalu8.o expression.o func.o gdag.o gflow.o \ ++ glocal.o gloop.o glue.o gnuc.o go.o gother.o html.o iasm.o id.o \ ++ identifier.o impcnvtab.o import.o inifile.o init.o inline.o \ ++ lexer.o link.o lstring.o mangle.o mars.o rmem.o module.o msc.o mtype.o \ ++ nteh.o cppmangle.o opover.o optimize.o os.o out.o outbuf.o \ ++ parse.o ph.o ptrntab.o root.o rtlsym.o s2ir.o scope.o statement.o \ ++ stringtable.o struct.o csymbol.o template.o tk.o tocsym.o todt.o \ ++ type.o typinf.o util.o var.o version.o strtold.o utf.o staticassert.o \ ++ unialpha.o toobj.o toctype.o toelfdebug.o entity.o doc.o macro.o \ ++ hdrgen.o delegatize.o aa.o ti_achar.o toir.o interpret.o traits.o \ ++ builtin.o clone.o aliasthis.o \ ++ man.o arrayop.o port.o response.o async.o json.o speller.o aav.o unittests.o \ ++ imphint.o \ ++ libelf.o elfobj.o ++ ++SRC = win32.mak linux.mak osx.mak freebsd.mak solaris.mak haiku.mak \ ++ mars.c enum.c struct.c dsymbol.c import.c idgen.c impcnvgen.c \ ++ identifier.c mtype.c expression.c optimize.c template.h \ ++ template.c lexer.c declaration.c cast.c cond.h cond.c link.c \ ++ aggregate.h parse.c statement.c constfold.c version.h version.c \ ++ inifile.c iasm.c module.c scope.c dump.c init.h init.c attrib.h \ ++ attrib.c opover.c class.c mangle.c bit.c tocsym.c func.c inline.c \ ++ access.c complex_t.h irstate.h irstate.c glue.c msc.c ph.c tk.c \ ++ s2ir.c todt.c e2ir.c util.c identifier.h parse.h \ ++ scope.h enum.h import.h mars.h module.h mtype.h dsymbol.h \ ++ declaration.h lexer.h expression.h irstate.h statement.h eh.c \ ++ utf.h utf.c staticassert.h staticassert.c unialpha.c \ ++ typinf.c toobj.c toctype.c tocvdebug.c toelfdebug.c entity.c \ ++ doc.h doc.c macro.h macro.c hdrgen.h hdrgen.c arraytypes.h \ ++ delegatize.c toir.h toir.c interpret.c traits.c cppmangle.c \ ++ builtin.c clone.c lib.h libomf.c libelf.c libmach.c arrayop.c \ ++ aliasthis.h aliasthis.c json.h json.c unittests.c imphint.c \ ++ $C/cdef.h $C/cc.h $C/oper.h $C/ty.h $C/optabgen.c \ ++ $C/global.h $C/parser.h $C/code.h $C/type.h $C/dt.h $C/cgcv.h \ ++ $C/el.h $C/iasm.h $C/rtlsym.h $C/html.h \ ++ $C/bcomplex.c $C/blockopt.c $C/cg.c $C/cg87.c \ ++ $C/cgcod.c $C/cgcs.c $C/cgcv.c $C/cgelem.c $C/cgen.c $C/cgobj.c \ ++ $C/cgreg.c $C/var.c $C/strtold.c \ ++ $C/cgsched.c $C/cod1.c $C/cod2.c $C/cod3.c $C/cod4.c $C/cod5.c \ ++ $C/code.c $C/symbol.c $C/debug.c $C/dt.c $C/ee.c $C/el.c \ ++ $C/evalu8.c $C/go.c $C/gflow.c $C/gdag.c \ ++ $C/gother.c $C/glocal.c $C/gloop.c $C/html.c $C/newman.c \ ++ $C/nteh.c $C/os.c $C/out.c $C/outbuf.c $C/ptrntab.c $C/rtlsym.c \ ++ $C/type.c $C/melf.h $C/mach.h $C/bcomplex.h \ ++ $C/cdeflnx.h $C/outbuf.h $C/token.h $C/tassert.h \ ++ $C/elfobj.c $C/cv4.h $C/dwarf2.h $C/cpp.h $C/exh.h $C/go.h \ ++ $C/dwarf.c $C/dwarf.h $C/aa.h $C/aa.c $C/tinfo.h $C/ti_achar.c \ ++ $C/machobj.c \ ++ $(TK)/filespec.h $(TK)/mem.h $(TK)/list.h $(TK)/vec.h \ ++ $(TK)/filespec.c $(TK)/mem.c $(TK)/vec.c $(TK)/list.c \ ++ $(ROOT)/dchar.h $(ROOT)/dchar.c $(ROOT)/lstring.h \ ++ $(ROOT)/lstring.c $(ROOT)/root.h $(ROOT)/root.c $(ROOT)/array.c \ ++ $(ROOT)/rmem.h $(ROOT)/rmem.c $(ROOT)/port.h $(ROOT)/port.c \ ++ $(ROOT)/gnuc.h $(ROOT)/gnuc.c $(ROOT)/man.c \ ++ $(ROOT)/stringtable.h $(ROOT)/stringtable.c \ ++ $(ROOT)/response.c $(ROOT)/async.h $(ROOT)/async.c \ ++ $(ROOT)/aav.h $(ROOT)/aav.c \ ++ $(ROOT)/speller.h $(ROOT)/speller.c ++ ++ ++all: dmd ++ ++dmd: $(DMD_OBJS) ++ gcc $(MODEL) -lstdc++ -lroot $(COV) $(DMD_OBJS) -o dmd ++ ++clean: ++ rm -f $(DMD_OBJS) dmd optab.o id.o impcnvgen idgen id.c id.h \ ++ impcnvtab.c optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \ ++ tytab.c core \ ++ *.cov *.gcda *.gcno ++ ++######## optabgen generates some source ++ ++optabgen: $C/optabgen.c $C/cc.h $C/oper.h ++ $(CC) $(MFLAGS) $< -o optabgen ++ ./optabgen ++ ++optabgen_output = debtab.c optab.c cdxxx.c elxxx.c fltables.c tytab.c ++$(optabgen_output) : optabgen ++ ++######## idgen generates some source ++ ++idgen_output = id.h id.c ++$(idgen_output) : idgen ++ ++idgen : idgen.c ++ $(CC) idgen.c -o idgen ++ ./idgen ++ ++######### impcnvgen generates some source ++ ++impcnvtab_output = impcnvtab.c ++$(impcnvtab_output) : impcnvgen ++ ++impcnvgen : mtype.h impcnvgen.c ++ $(CC) $(CFLAGS) impcnvgen.c -o impcnvgen ++ ./impcnvgen ++ ++######### ++ ++$(DMD_OBJS) : $(idgen_output) $(optabgen_output) $(impcnvgen_output) ++ ++aa.o: $C/aa.h $C/tinfo.h $C/aa.c ++ $(CC) -c $(MFLAGS) -I. $C/aa.c ++ ++aav.o: $(ROOT)/aav.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++access.o: access.c ++ $(CC) -c $(CFLAGS) $< ++ ++aliasthis.o: aliasthis.c ++ $(CC) -c $(CFLAGS) $< ++ ++array.o: $(ROOT)/array.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++arrayop.o: arrayop.c ++ $(CC) -c $(CFLAGS) $< ++ ++async.o: $(ROOT)/async.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++attrib.o: attrib.c ++ $(CC) -c $(CFLAGS) $< ++ ++bcomplex.o: $C/bcomplex.c ++ $(CC) -c $(MFLAGS) $< ++ ++bit.o: expression.h bit.c ++ $(CC) -c -I$(ROOT) $(MFLAGS) bit.c ++ ++blockopt.o: $C/blockopt.c ++ $(CC) -c $(MFLAGS) $C/blockopt.c ++ ++builtin.o: builtin.c ++ $(CC) -c $(CFLAGS) $< ++ ++cast.o: cast.c ++ $(CC) -c $(CFLAGS) $< ++ ++cg.o: fltables.c $C/cg.c ++ $(CC) -c $(MFLAGS) -I. $C/cg.c ++ ++cg87.o: $C/cg87.c ++ $(CC) -c $(MFLAGS) $< ++ ++cgcod.o: $C/cgcod.c ++ $(CC) -c $(MFLAGS) -I. $< ++ ++cgcs.o: $C/cgcs.c ++ $(CC) -c $(MFLAGS) $< ++ ++cgcv.o: $C/cgcv.c ++ $(CC) -c $(MFLAGS) $< ++ ++cgelem.o: $C/rtlsym.h $C/cgelem.c ++ $(CC) -c $(MFLAGS) -I. $C/cgelem.c ++ ++cgen.o: $C/rtlsym.h $C/cgen.c ++ $(CC) -c $(MFLAGS) $C/cgen.c ++ ++cgobj.o: $C/cgobj.c ++ $(CC) -c $(MFLAGS) $< ++ ++cgreg.o: $C/cgreg.c ++ $(CC) -c $(MFLAGS) $< ++ ++cgsched.o: $C/rtlsym.h $C/cgsched.c ++ $(CC) -c $(MFLAGS) $C/cgsched.c ++ ++class.o: class.c ++ $(CC) -c $(CFLAGS) $< ++ ++clone.o: clone.c ++ $(CC) -c $(CFLAGS) $< ++ ++cod1.o: $C/rtlsym.h $C/cod1.c ++ $(CC) -c $(MFLAGS) $C/cod1.c ++ ++cod2.o: $C/rtlsym.h $C/cod2.c ++ $(CC) -c $(MFLAGS) $C/cod2.c ++ ++cod3.o: $C/rtlsym.h $C/cod3.c ++ $(CC) -c $(MFLAGS) $C/cod3.c ++ ++cod4.o: $C/cod4.c ++ $(CC) -c $(MFLAGS) $< ++ ++cod5.o: $C/cod5.c ++ $(CC) -c $(MFLAGS) $< ++ ++code.o: $C/code.c ++ $(CC) -c $(MFLAGS) $< ++ ++constfold.o: constfold.c ++ $(CC) -c $(CFLAGS) $< ++ ++irstate.o: irstate.h irstate.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c ++ ++csymbol.o : $C/symbol.c ++ $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o ++ ++dchar.o: $(ROOT)/dchar.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++cond.o: cond.c ++ $(CC) -c $(CFLAGS) $< ++ ++cppmangle.o: cppmangle.c ++ $(CC) -c $(CFLAGS) $< ++ ++debug.o: $C/debug.c ++ $(CC) -c $(MFLAGS) -I. $< ++ ++declaration.o: declaration.c ++ $(CC) -c $(CFLAGS) $< ++ ++delegatize.o: delegatize.c ++ $(CC) -c $(CFLAGS) $< ++ ++doc.o: doc.c ++ $(CC) -c $(CFLAGS) $< ++ ++dsymbol.o: dsymbol.c ++ $(CC) -c $(CFLAGS) $< ++ ++dt.o: $C/dt.h $C/dt.c ++ $(CC) -c $(MFLAGS) $C/dt.c ++ ++dump.o: dump.c ++ $(CC) -c $(CFLAGS) $< ++ ++dwarf.o: $C/dwarf.h $C/dwarf.c ++ $(CC) -c $(MFLAGS) -I. $C/dwarf.c ++ ++e2ir.o: $C/rtlsym.h expression.h toir.h e2ir.c ++ $(CC) -c -I$(ROOT) $(MFLAGS) e2ir.c ++ ++ee.o: $C/ee.c ++ $(CC) -c $(MFLAGS) $< ++ ++eh.o : $C/cc.h $C/code.h $C/type.h $C/dt.h eh.c ++ $(CC) -c $(MFLAGS) eh.c ++ ++el.o: $C/rtlsym.h $C/el.h $C/el.c ++ $(CC) -c $(MFLAGS) $C/el.c ++ ++elfobj.o: $C/elfobj.c ++ $(CC) -c $(MFLAGS) $< ++ ++entity.o: entity.c ++ $(CC) -c $(CFLAGS) $< ++ ++enum.o: enum.c ++ $(CC) -c $(CFLAGS) $< ++ ++evalu8.o: $C/evalu8.c ++ $(CC) -c $(MFLAGS) $< ++ ++expression.o: expression.c ++ $(CC) -c $(CFLAGS) $< ++ ++func.o: func.c ++ $(CC) -c $(CFLAGS) $< ++ ++gdag.o: $C/gdag.c ++ $(CC) -c $(MFLAGS) $< ++ ++gflow.o: $C/gflow.c ++ $(CC) -c $(MFLAGS) $< ++ ++#globals.o: globals.c ++# $(CC) -c $(CFLAGS) $< ++ ++glocal.o: $C/rtlsym.h $C/glocal.c ++ $(CC) -c $(MFLAGS) $C/glocal.c ++ ++gloop.o: $C/gloop.c ++ $(CC) -c $(MFLAGS) $< ++ ++glue.o: $(CH) $(TOTALH) $C/rtlsym.h mars.h module.h glue.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) glue.c ++ ++gnuc.o: $(ROOT)/gnuc.h $(ROOT)/gnuc.c ++ $(CC) -c $(GFLAGS) $(ROOT)/gnuc.c ++ ++go.o: $C/go.c ++ $(CC) -c $(MFLAGS) $< ++ ++gother.o: $C/gother.c ++ $(CC) -c $(MFLAGS) $< ++ ++hdrgen.o: hdrgen.c ++ $(CC) -c $(CFLAGS) $< ++ ++html.o: $(CH) $(TOTALH) $C/html.h $C/html.c ++ $(CC) -c -I$(ROOT) $(MFLAGS) $C/html.c ++ ++iasm.o : $(CH) $(TOTALH) $C/iasm.h iasm.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) iasm.c ++ ++id.o : id.h id.c ++ $(CC) -c $(CFLAGS) id.c ++ ++identifier.o: identifier.c ++ $(CC) -c $(CFLAGS) $< ++ ++impcnvtab.o: mtype.h impcnvtab.c ++ $(CC) -c $(CFLAGS) -I$(ROOT) impcnvtab.c ++ ++imphint.o: imphint.c ++ $(CC) -c $(CFLAGS) $< ++ ++import.o: import.c ++ $(CC) -c $(CFLAGS) $< ++ ++inifile.o: inifile.c ++ $(CC) -c $(CFLAGS) $< ++ ++init.o: init.c ++ $(CC) -c $(CFLAGS) $< ++ ++inline.o: inline.c ++ $(CC) -c $(CFLAGS) $< ++ ++interpret.o: interpret.c ++ $(CC) -c $(CFLAGS) $< ++ ++json.o: json.c ++ $(CC) -c $(CFLAGS) $< ++ ++lexer.o: lexer.c ++ $(CC) -c $(CFLAGS) $< ++ ++libelf.o: libelf.c $C/melf.h ++ $(CC) -c $(CFLAGS) -I$C $< ++ ++libmach.o: libmach.c $C/mach.h ++ $(CC) -c $(CFLAGS) -I$C $< ++ ++link.o: link.c ++ $(CC) -c $(CFLAGS) $< ++ ++lstring.o: $(ROOT)/lstring.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++machobj.o: $C/machobj.c ++ $(CC) -c $(MFLAGS) $< ++ ++macro.o: macro.c ++ $(CC) -c $(CFLAGS) $< ++ ++man.o: $(ROOT)/man.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++mangle.o: mangle.c ++ $(CC) -c $(CFLAGS) $< ++ ++mars.o: mars.c ++ $(CC) -c $(CFLAGS) $< ++ ++rmem.o: $(ROOT)/rmem.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $(ROOT)/rmem.c ++ ++module.o: $(TOTALH) $C/html.h module.c ++ $(CC) -c $(CFLAGS) -I$C module.c ++ ++msc.o: $(CH) mars.h msc.c ++ $(CC) -c $(MFLAGS) msc.c ++ ++mtype.o: mtype.c ++ $(CC) -c $(CFLAGS) $< ++ ++nteh.o: $C/rtlsym.h $C/nteh.c ++ $(CC) -c $(MFLAGS) $C/nteh.c ++ ++opover.o: opover.c ++ $(CC) -c $(CFLAGS) $< ++ ++optimize.o: optimize.c ++ $(CC) -c $(CFLAGS) $< ++ ++os.o: $C/os.c ++ $(CC) -c $(MFLAGS) $< ++ ++out.o: $C/out.c ++ $(CC) -c $(MFLAGS) $< ++ ++outbuf.o : $C/outbuf.h $C/outbuf.c ++ $(CC) -c $(MFLAGS) $C/outbuf.c ++ ++parse.o: parse.c ++ $(CC) -c $(CFLAGS) $< ++ ++ph.o: ph.c ++ $(CC) -c $(MFLAGS) $< ++ ++port.o: $(ROOT)/port.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++ptrntab.o: $C/iasm.h $C/ptrntab.c ++ $(CC) -c $(MFLAGS) $C/ptrntab.c ++ ++response.o: $(ROOT)/response.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++root.o: $(ROOT)/root.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++rtlsym.o: $C/rtlsym.h $C/rtlsym.c ++ $(CC) -c $(MFLAGS) $C/rtlsym.c ++ ++s2ir.o : $C/rtlsym.h statement.h s2ir.c ++ $(CC) -c -I$(ROOT) $(MFLAGS) s2ir.c ++ ++scope.o: scope.c ++ $(CC) -c $(CFLAGS) $< ++ ++speller.o: $(ROOT)/speller.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++statement.o: statement.c ++ $(CC) -c $(CFLAGS) $< ++ ++staticassert.o: staticassert.h staticassert.c ++ $(CC) -c $(CFLAGS) staticassert.c ++ ++stringtable.o: $(ROOT)/stringtable.c ++ $(CC) -c $(GFLAGS) -I$(ROOT) $< ++ ++strtold.o: $C/strtold.c ++ gcc $(MODEL) -c $C/strtold.c ++ ++struct.o: struct.c ++ $(CC) -c $(CFLAGS) $< ++ ++template.o: template.c ++ $(CC) -c $(CFLAGS) $< ++ ++ti_achar.o: $C/tinfo.h $C/ti_achar.c ++ $(CC) -c $(MFLAGS) -I. $C/ti_achar.c ++ ++tk.o: tk.c ++ $(CC) -c $(MFLAGS) tk.c ++ ++tocsym.o: $(CH) $(TOTALH) mars.h module.h tocsym.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) tocsym.c ++ ++toctype.o: $(CH) $(TOTALH) $C/rtlsym.h mars.h module.h toctype.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) toctype.c ++ ++todt.o : mtype.h expression.h $C/dt.h todt.c ++ $(CC) -c -I$(ROOT) $(MFLAGS) todt.c ++ ++toelfdebug.o: $(CH) $(TOTALH) mars.h toelfdebug.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) toelfdebug.c ++ ++toir.o: $C/rtlsym.h expression.h toir.h toir.c ++ $(CC) -c -I$(ROOT) $(MFLAGS) toir.c ++ ++toobj.o: $(CH) $(TOTALH) mars.h module.h toobj.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) toobj.c ++ ++traits.o: $(TOTALH) traits.c ++ $(CC) -c $(CFLAGS) $< ++ ++type.o: $C/type.c ++ $(CC) -c $(MFLAGS) $C/type.c ++ ++typinf.o: $(CH) $(TOTALH) mars.h module.h mtype.h typinf.c ++ $(CC) -c $(MFLAGS) -I$(ROOT) typinf.c ++ ++util.o: util.c ++ $(CC) -c $(MFLAGS) $< ++ ++utf.o: utf.h utf.c ++ $(CC) -c $(CFLAGS) utf.c ++ ++unialpha.o: unialpha.c ++ $(CC) -c $(CFLAGS) $< ++ ++unittests.o: unittests.c ++ $(CC) -c $(CFLAGS) $< ++ ++var.o: $C/var.c optab.c ++ $(CC) -c $(MFLAGS) -I. $C/var.c ++ ++version.o: version.c ++ $(CC) -c $(CFLAGS) $< ++ ++###################################################### ++ ++gcov: ++ gcov access.c ++ gcov aliasthis.c ++ gcov arrayop.c ++ gcov attrib.c ++ gcov bit.c ++ gcov builtin.c ++ gcov cast.c ++ gcov class.c ++ gcov clone.c ++ gcov cond.c ++ gcov constfold.c ++ gcov declaration.c ++ gcov delegatize.c ++ gcov doc.c ++ gcov dsymbol.c ++ gcov dump.c ++ gcov e2ir.c ++ gcov eh.c ++ gcov entity.c ++ gcov enum.c ++ gcov expression.c ++ gcov func.c ++ gcov glue.c ++ gcov iasm.c ++ gcov identifier.c ++ gcov imphint.c ++ gcov import.c ++ gcov inifile.c ++ gcov init.c ++ gcov inline.c ++ gcov interpret.c ++ gcov irstate.c ++ gcov json.c ++ gcov lexer.c ++ gcov libelf.c ++ gcov link.c ++ gcov macro.c ++ gcov mangle.c ++ gcov mars.c ++ gcov module.c ++ gcov msc.c ++ gcov mtype.c ++ gcov opover.c ++ gcov optimize.c ++ gcov parse.c ++ gcov ph.c ++ gcov scope.c ++ gcov statement.c ++ gcov staticassert.c ++ gcov s2ir.c ++ gcov struct.c ++ gcov template.c ++ gcov tk.c ++ gcov tocsym.c ++ gcov todt.c ++ gcov toobj.c ++ gcov toctype.c ++ gcov toelfdebug.c ++ gcov typinf.c ++ gcov unialpha.c ++ gcov utf.c ++ gcov util.c ++ gcov version.c ++ ++# gcov hdrgen.c ++# gcov tocvdebug.c ++ ++###################################################### ++ ++zip: ++ -rm -f dmdsrc.zip ++ zip dmdsrc $(SRC) +diff -Naur dmd/src/dmd/inifile.c dmd1/src/dmd/inifile.c +--- dmd/src/dmd/inifile.c 2010-09-14 07:16:00.055312384 +0000 ++++ dmd1/src/dmd/inifile.c 2010-09-19 15:37:02.201064448 +0000 +@@ -111,8 +111,8 @@ + filename = (char *)FileName::replaceName(argv0, inifile); + if (!FileName::exists(filename)) + { +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 +-#if __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 // This fix by Thomas Kuehne ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ ++#if __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ // This fix by Thomas Kuehne + /* argv0 might be a symbolic link, + * so try again looking past it to the real path + */ +diff -Naur dmd/src/dmd/link.c dmd1/src/dmd/link.c +--- dmd/src/dmd/link.c 2010-09-14 07:16:00.028835840 +0000 ++++ dmd1/src/dmd/link.c 2010-09-26 22:44:20.477626368 +0000 +@@ -19,7 +19,7 @@ + #include + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #include + #include +@@ -198,7 +198,7 @@ + delete lnkfilename; + } + return status; +-#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + pid_t childpid; + int i; + int status; +@@ -348,8 +348,12 @@ + argv.push((void *)buf); // turns into /usr/lib/libphobos2.a + + // argv.push((void *)"-ldruntime"); +- argv.push((void *)"-lpthread"); +- argv.push((void *)"-lm"); ++ #if __HAIKU__ ++ argv.push((void *)"-lroot"); ++ #else ++ argv.push((void *)"-lpthread"); ++ argv.push((void *)"-lm"); ++ #endif + + if (!global.params.quiet || global.params.verbose) + { +@@ -486,7 +490,7 @@ + //printf("spawning '%s'\n",file); + #if _WIN32 + return spawnl(0,file,file,args,NULL); +-#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + char *full; + int cmdl = strlen(cmd); + +@@ -549,7 +553,7 @@ + else + ex = global.params.exefile; + return spawnv(0,ex,(char **)argv.data); +-#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + pid_t childpid; + int status; + +diff -Naur dmd/src/dmd/mangle.c dmd1/src/dmd/mangle.c +--- dmd/src/dmd/mangle.c 2010-09-14 07:16:00.008126464 +0000 ++++ dmd1/src/dmd/mangle.c 2010-09-19 15:39:32.027525120 +0000 +@@ -24,7 +24,7 @@ + #include "id.h" + #include "module.h" + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + char *cpp_mangle(Dsymbol *s); + #endif + +@@ -119,7 +119,7 @@ + return ident->toChars(); + + case LINKcpp: +-#if DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS) ++#if DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU) + return cpp_mangle(this); + #else + // Windows C++ mangling is done by C++ back end +diff -Naur dmd/src/dmd/mars.c dmd1/src/dmd/mars.c +--- dmd/src/dmd/mars.c 2010-09-14 07:16:00.036700160 +0000 ++++ dmd1/src/dmd/mars.c 2010-09-26 21:50:22.656932864 +0000 +@@ -14,7 +14,7 @@ + #include + #include + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #endif + +@@ -59,7 +59,7 @@ + + #if TARGET_WINDOS + obj_ext = "obj"; +-#elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + obj_ext = "o"; + #elif TARGET_NET + #else +@@ -68,7 +68,7 @@ + + #if TARGET_WINDOS + lib_ext = "lib"; +-#elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + lib_ext = "a"; + #elif TARGET_NET + #else +@@ -77,7 +77,7 @@ + + #if TARGET_WINDOS + dll_ext = "dll"; +-#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + dll_ext = "so"; + #elif TARGET_OSX + dll_ext = "dylib"; +@@ -354,7 +354,7 @@ + + #if TARGET_WINDOS + global.params.defaultlibname = "phobos"; +-#elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + global.params.defaultlibname = "phobos"; + #elif TARGET_NET + #else +@@ -375,6 +375,10 @@ + VersionCondition::addPredefinedGlobalIdent("Posix"); + VersionCondition::addPredefinedGlobalIdent("linux"); + global.params.isLinux = 1; ++#elif TARGET_HAIKU ++ VersionCondition::addPredefinedGlobalIdent("Posix"); ++ VersionCondition::addPredefinedGlobalIdent("Haiku"); ++ global.params.isHaiku = 1; + #elif TARGET_OSX + VersionCondition::addPredefinedGlobalIdent("Posix"); + VersionCondition::addPredefinedGlobalIdent("OSX"); +@@ -403,7 +407,7 @@ + + #if _WIN32 + inifilename = inifile(argv[0], "sc.ini"); +-#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + inifilename = inifile(argv[0], "dmd.conf"); + #else + #error "fix this" +@@ -428,7 +432,7 @@ + global.params.link = 0; + else if (strcmp(p + 1, "cov") == 0) + global.params.cov = 1; +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + else if (strcmp(p + 1, "fPIC") == 0) + global.params.pic = 1; + #endif +diff -Naur dmd/src/dmd/mars.h dmd1/src/dmd/mars.h +--- dmd/src/dmd/mars.h 2010-09-14 07:16:00.038273024 +0000 ++++ dmd1/src/dmd/mars.h 2010-09-19 15:53:13.589824000 +0000 +@@ -86,7 +86,7 @@ + #define MODULEINFO_IS_STRUCT DMDV2 // if ModuleInfo is a struct rather than a class + + // Set if C++ mangling is done by the front end +-#define CPP_MANGLE (DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS)) ++#define CPP_MANGLE (DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU)) + + /* Other targets are TARGET_LINUX, TARGET_OSX, TARGET_FREEBSD and + * TARGET_SOLARIS, which are +@@ -98,7 +98,7 @@ + #define OMFOBJ 1 + #endif + +-#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + #ifndef ELFOBJ + #define ELFOBJ 1 + #endif +@@ -133,6 +133,7 @@ + char cpu; // target CPU + char isX86_64; // generate X86_64 bit code + char isLinux; // generate code for linux ++ char isHaiku; // generate code for Haiku + char isOSX; // generate code for Mac OSX + char isWindows; // generate code for Windows + char isFreeBSD; // generate code for FreeBSD +diff -Naur dmd/src/dmd/msc.c dmd1/src/dmd/msc.c +--- dmd/src/dmd/msc.c 2010-09-14 07:16:00.040632320 +0000 ++++ dmd1/src/dmd/msc.c 2010-09-19 15:54:02.013107200 +0000 +@@ -81,6 +81,13 @@ + if (params->pic) + config.flags3 |= CFG3pic; + #endif ++#if TARGET_HAIKU ++ config.exe = EX_HAIKU; ++ config.flags |= CFGnoebp; ++ config.flags |= CFGalwaysframe; ++ if (params->pic) ++ config.flags3 |= CFG3pic; ++#endif + #if TARGET_OSX + if (params->isX86_64) + config.exe = EX_OSX64; +diff -Naur dmd/src/dmd/mtype.c dmd1/src/dmd/mtype.c +--- dmd/src/dmd/mtype.c 2010-09-14 07:16:00.028049408 +0000 ++++ dmd1/src/dmd/mtype.c 2010-09-19 15:54:47.708050944 +0000 +@@ -71,7 +71,7 @@ + int REALSIZE = 16; + int REALPAD = 6; + int REALALIGNSIZE = 16; +-#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + int REALSIZE = 12; + int REALPAD = 2; + int REALALIGNSIZE = 4; +@@ -236,7 +236,7 @@ + if (global.params.isX86_64) + { + PTRSIZE = 8; +- if (global.params.isLinux || global.params.isFreeBSD || global.params.isSolaris) ++ if (global.params.isLinux || global.params.isFreeBSD || global.params.isSolaris || global.params.isHaiku) + { + REALSIZE = 16; + REALPAD = 6; +@@ -251,7 +251,7 @@ + #if TARGET_OSX + REALSIZE = 16; + REALPAD = 6; +-#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS ++#elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + REALSIZE = 12; + REALPAD = 2; + #else +@@ -1077,7 +1077,7 @@ + sz = REALALIGNSIZE; + break; + +-#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS ++#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU + case Tint64: + case Tuns64: + case Tfloat64: +diff -Naur dmd/src/dmd/root/man.c dmd1/src/dmd/root/man.c +--- dmd/src/dmd/root/man.c 2010-09-14 07:16:00.030408704 +0000 ++++ dmd1/src/dmd/root/man.c 2010-09-19 15:55:15.172228608 +0000 +@@ -26,7 +26,7 @@ + + #endif + +-#if linux || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + + #include + #include +diff -Naur dmd/src/dmd/root/port.c dmd1/src/dmd/root/port.c +--- dmd/src/dmd/root/port.c 2010-09-14 07:16:00.046661632 +0000 ++++ dmd1/src/dmd/root/port.c 2010-09-23 21:00:14.377487360 +0000 +@@ -315,7 +315,7 @@ + + #endif + +-#if linux || __APPLE__ || __FreeBSD__ ++#if linux || __APPLE__ || __FreeBSD__ || __HAIKU__ + + #include + #if linux +@@ -373,6 +373,8 @@ + { + #if __APPLE__ + return __inline_isnan(r); ++#elif __HAIKU__ ++ return ::__isnan(r); + #else + return ::isnan(r); + #endif +@@ -382,6 +384,8 @@ + { + #if __APPLE__ + return __inline_isnan(r); ++#elif __HAIKU__ ++ return ::__isnan(r); + #else + return ::isnan(r); + #endif +@@ -414,6 +418,8 @@ + { + #if __APPLE__ + return fpclassify(r) == FP_INFINITE; ++#elif __HAIKU__ ++ return ::__isinf(r); + #else + return ::isinf(r); + #endif +diff -Naur dmd/src/dmd/root/response.c dmd1/src/dmd/root/response.c +--- dmd/src/dmd/root/response.c 2010-09-14 07:16:00.022282240 +0000 ++++ dmd1/src/dmd/root/response.c 2010-09-19 15:56:08.390332416 +0000 +@@ -19,7 +19,7 @@ + #include + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #include + #include +diff -Naur dmd/src/dmd/root/rmem.c dmd1/src/dmd/root/rmem.c +--- dmd/src/dmd/root/rmem.c 2010-09-14 07:16:00.052690944 +0000 ++++ dmd1/src/dmd/root/rmem.c 2010-09-19 15:56:26.385875968 +0000 +@@ -6,7 +6,7 @@ + #include + #include + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include "../root/rmem.h" + #else + #include "rmem.h" +diff -Naur dmd/src/dmd/root/root.c dmd1/src/dmd/root/root.c +--- dmd/src/dmd/root/root.c 2010-09-14 07:16:00.025427968 +0000 ++++ dmd1/src/dmd/root/root.c 2010-09-19 15:56:47.602931200 +0000 +@@ -7,7 +7,7 @@ + // in artistic.txt, or the GNU General Public License in gnu.txt. + // See the included readme.txt for details. + +-#define POSIX (linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4) ++#define POSIX (linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__) + + #include + #include +diff -Naur dmd/src/dmd/tk/filespec.c dmd1/src/dmd/tk/filespec.c +--- dmd/src/dmd/tk/filespec.c 2010-09-14 07:16:00.017301504 +0000 ++++ dmd1/src/dmd/tk/filespec.c 2010-09-19 15:57:58.566755328 +0000 +@@ -25,7 +25,7 @@ + #include + #endif + +-#if M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #include + #include + #endif +@@ -87,7 +87,7 @@ + /**********************/ + char * filespecrootpath(char *filespec) + { +-#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + #define DIRCHAR '/' + #endif + #if MSDOS || __OS2__ || __NT__ || _WIN32 +@@ -112,7 +112,7 @@ + #endif + + /* get current working directory path */ +-#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + cwd_t = (char *)getcwd(NULL, 256); + #endif + #if MSDOS || __OS2__ || __NT__ || _WIN32 +@@ -133,7 +133,7 @@ + if (cwd[strlen(cwd) - 1] == DIRCHAR) + cwd[strlen(cwd) - 1] = '\0'; + #endif +-#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + free(cwd_t); + #endif + p = filespec; +@@ -150,7 +150,7 @@ + { + cwd_t = cwd; + cwd = (char *)mem_calloc(strlen(cwd_t) + 1 + strlen(p) + 1); +-#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + sprintf(cwd, "%s/%s", cwd_t, p); /* add relative directory */ + #endif + #if MSDOS || __OS2__ || __NT__ || _WIN32 +@@ -171,7 +171,7 @@ + { /* ... save remaining string */ + cwd_t = cwd; + cwd = (char *)mem_calloc(strlen(cwd_t) + 1 + strlen(p) + 1); +-#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + sprintf(cwd, "%s/%s", cwd_t, p); /* add relative directory */ + #endif + #if MSDOS || __OS2__ || __NT__ || _WIN32 +@@ -402,7 +402,7 @@ + #if MSDOS || __OS2__ || __NT__ || _WIN32 + return filespecforceext(filespec,"BAK"); + #endif +-#if BSDUNIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if BSDUNIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + char *p,*f; + + /* Prepend .B to file name, if it isn't already there */ +diff -Naur dmd/src/dmd/tk/mem.c dmd1/src/dmd/tk/mem.c +--- dmd/src/dmd/tk/mem.c 2010-09-14 07:16:00.064225280 +0000 ++++ dmd1/src/dmd/tk/mem.c 2010-09-19 15:58:19.705691648 +0000 +@@ -296,7 +296,7 @@ + 11111, + 0, + BEFOREVAL, +-#if !(linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4) ++#if !(linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__) + AFTERVAL + #endif + }; +@@ -804,7 +804,7 @@ + mem_numalloc = 0; + mem_maxalloc = 0; + mem_alloclist.Mnext = NULL; +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + *(long *) &(mem_alloclist.data[0]) = AFTERVAL; + #endif + #endif +diff -Naur dmd/src/dmd/toir.c dmd1/src/dmd/toir.c +--- dmd/src/dmd/toir.c 2010-09-14 07:16:00.028835840 +0000 ++++ dmd1/src/dmd/toir.c 2010-09-19 15:58:55.091226112 +0000 +@@ -676,7 +676,7 @@ + } + return RETstack; + } +- else if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris) && ++ else if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris || global.params.isHaiku) && + linkage == LINKc && + tn->iscomplex()) + { +diff -Naur dmd/src/dmd/util.c dmd1/src/dmd/util.c +--- dmd/src/dmd/util.c 2010-09-14 07:16:00.055312384 +0000 ++++ dmd1/src/dmd/util.c 2010-09-19 15:59:11.752877568 +0000 +@@ -131,7 +131,7 @@ + + #endif + +-#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 ++#if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ + void util_progress() + { + } +diff -Naur dmd/src/phobos/etc/c/zlib/haiku.mak dmd1/src/phobos/etc/c/zlib/haiku.mak +--- dmd/src/phobos/etc/c/zlib/haiku.mak 1970-01-01 00:00:00.000000000 +0000 ++++ dmd1/src/phobos/etc/c/zlib/haiku.mak 2010-09-14 07:16:06.000000000 +0000 +@@ -0,0 +1,79 @@ ++# Makefile for zlib ++ ++MODEL=32 ++CC=gcc ++LD=link ++CFLAGS=-O -m$(MODEL) ++LDFLAGS= ++O=.o ++ ++.c.o: ++ $(CC) -c $(CFLAGS) $* ++ ++.d.o: ++ $(DMD) -c $(DFLAGS) $* ++ ++# variables ++OBJS = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ ++ trees$(O) zutil$(O) inflate$(O) infback$(O) inftrees$(O) inffast$(O) ++ ++all: zlib.a example minigzip ++ ++adler32.o: adler32.c zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++compress.o: compress.c zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++crc32.o: crc32.c zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++deflate.o: deflate.c deflate.h zutil.h zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++gzio.o: gzio.c zutil.h zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++infback.o: infback.c zlib.h zconf.h inftrees.h inflate.h inffast.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++inflate.o: inflate.c zlib.h zconf.h inftrees.h inflate.h inffast.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++inftrees.o: inftrees.c zlib.h zconf.h inftrees.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++inffast.o: inffast.c zlib.h zconf.h inftrees.h inflate.h inffast.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++trees.o: trees.c deflate.h zutil.h zlib.h zconf.h trees.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++uncompr.o: uncompr.c zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++zutil.o: zutil.c zutil.h zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++example.o: example.c zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++minigzip.o: minigzip.c zlib.h zconf.h ++ $(CC) -c $(cvarsdll) $(CFLAGS) $*.c ++ ++zlib.a: $(OBJS) ++ ar -r $@ $(OBJS) ++ ++example: example.o zlib.a ++ $(CC) $(CFLAGS) -o $@ example.o zlib.a -g ++ ++minigzip: minigzip.o zlib.a ++ $(CC) $(CFLAGS) -o $@ minigzip.o zlib.a -g ++ ++test: example minigzip ++ ./example ++ echo hello world | minigzip | minigzip -d ++ ++clean: ++ $(RM) $(OBJS) zlib.a example.o example minigzip minigzip.o test foo.gz ++ +diff -Naur dmd/src/phobos/haiku.mak dmd1/src/phobos/haiku.mak +--- dmd/src/phobos/haiku.mak 1970-01-01 00:00:00.000000000 +0000 ++++ dmd1/src/phobos/haiku.mak 2010-09-23 21:08:26.131858432 +0000 +@@ -0,0 +1,650 @@ ++# Makefile to build Haiku D runtime library libphobos.a. ++# Targets: ++# make ++# Same as make unittest ++# make libphobos.a ++# Build libphobos.a ++# make clean ++# Delete unneeded files created by build process ++# make unittest ++# Build libphobos.a, build and run unit tests ++ ++LIB=libphobos.a ++ ++MAKEFILE=haiku.mak ++MODEL=32 ++ ++CFLAGS=-O -m$(MODEL) ++#CFLAGS=-g -m$(MODEL) ++ ++DFLAGS=-O -release -w -m$(MODEL) ++#DFLAGS=-unittest -w -m$(MODEL) ++ ++CC=gcc ++#DMD=/dmd/bin/dmd ++DMD=dmd ++ ++.SUFFIXES: .c .o .cpp .d .asm ++ ++.c.o: ++ $(CC) -c $(CFLAGS) $*.c ++ ++.cpp.o: ++ g++ -c $(CFLAGS) $*.cpp ++ ++.d.o: ++ $(DMD) -c $(DFLAGS) $*.d ++ ++.asm.o: ++ $(CC) -c $*.asm ++ ++targets : $(LIB) ++ ++test.o : test.d ++ $(DMD) -c test -g ++ ++test : test.o $(LIB) ++ $(CC) -o $@ test.o $(LIB) -lroot ++ ++OBJS = complex.o gcstats.o \ ++ critical.o object.o monitor.o \ ++ linux.o linuxsocket.o \ ++ posix.o posixsocket.o posixpthread.o \ ++ Dcrc32.o errno.o \ ++ std_c_stdarg.o \ ++ Czlib.o \ ++ pthread.o ++ ++ALLMAKEFILES= \ ++ win32.mak linux.mak osx.mak freebsd.mak solaris.mak haiku.mak ++ ++ZLIB_OBJS = etc/c/zlib/adler32.o etc/c/zlib/compress.o \ ++ etc/c/zlib/crc32.o etc/c/zlib/gzio.o \ ++ etc/c/zlib/uncompr.o etc/c/zlib/deflate.o \ ++ etc/c/zlib/trees.o etc/c/zlib/zutil.o \ ++ etc/c/zlib/inflate.o etc/c/zlib/infback.o \ ++ etc/c/zlib/inftrees.o etc/c/zlib/inffast.o ++ ++GC_OBJS= internal/gc/gc.o internal/gc/gcold.o internal/gc/gcx.o \ ++ internal/gc/gcbits.o internal/gc/gclinux.o ++ ++SRC= errno.c object.d unittest.d crc32.d gcstats.d ++ ++SRC_STD= std/zlib.d std/zip.d std/stdint.d std/conv.d std/utf.d std/uri.d \ ++ std/math.d std/string.d std/path.d std/date.d \ ++ std/ctype.d std/file.d std/compiler.d std/system.d std/moduleinit.d \ ++ std/outbuffer.d std/math2.d std/thread.d std/md5.d std/base64.d \ ++ std/asserterror.d std/dateparse.d std/outofmemory.d std/mmfile.d \ ++ std/intrinsic.d std/array.d std/switcherr.d std/syserror.d \ ++ std/regexp.d std/random.d std/stream.d std/process.d \ ++ std/socket.d std/socketstream.d std/loader.d std/stdarg.d \ ++ std/stdio.d std/format.d std/perf.d std/openrj.d std/uni.d \ ++ std/boxer.d std/cstream.d std/demangle.d std/cover.d std/bitarray.d \ ++ std/signals.d std/cpuid.d std/typetuple.d std/traits.d std/bind.d \ ++ std/metastrings.d ++ ++SRC_STD_C= std/c/process.d std/c/stdlib.d std/c/time.d std/c/stdio.d \ ++ std/c/math.d std/c/stdarg.d std/c/stddef.d std/c/fenv.d std/c/string.d \ ++ std/d/locale.d ++ ++SRC_TI= \ ++ std/typeinfo/ti_wchar.d std/typeinfo/ti_uint.d \ ++ std/typeinfo/ti_short.d std/typeinfo/ti_ushort.d \ ++ std/typeinfo/ti_byte.d std/typeinfo/ti_ubyte.d \ ++ std/typeinfo/ti_long.d std/typeinfo/ti_ulong.d \ ++ std/typeinfo/ti_ptr.d \ ++ std/typeinfo/ti_float.d std/typeinfo/ti_double.d \ ++ std/typeinfo/ti_real.d std/typeinfo/ti_delegate.d \ ++ std/typeinfo/ti_creal.d std/typeinfo/ti_ireal.d \ ++ std/typeinfo/ti_cfloat.d std/typeinfo/ti_ifloat.d \ ++ std/typeinfo/ti_cdouble.d std/typeinfo/ti_idouble.d \ ++ std/typeinfo/ti_Ashort.d \ ++ std/typeinfo/ti_Ag.d \ ++ std/typeinfo/ti_AC.d std/typeinfo/ti_C.d \ ++ std/typeinfo/ti_int.d std/typeinfo/ti_char.d \ ++ std/typeinfo/ti_dchar.d \ ++ std/typeinfo/ti_Aint.d \ ++ std/typeinfo/ti_Along.d \ ++ std/typeinfo/ti_Afloat.d std/typeinfo/ti_Adouble.d \ ++ std/typeinfo/ti_Areal.d \ ++ std/typeinfo/ti_Acfloat.d std/typeinfo/ti_Acdouble.d \ ++ std/typeinfo/ti_Acreal.d \ ++ std/typeinfo/ti_void.d ++ ++SRC_INTC= \ ++ internal/complex.c internal/critical.c \ ++ internal/minit.asm internal/deh.c \ ++ internal/monitor.c \ ++ internal/mars.h ++ ++ ++SRC_INT= \ ++ internal/switch.d \ ++ internal/alloca.d internal/llmath.d \ ++ internal/arraycat.d internal/invariant.d \ ++ internal/memset.d internal/arraycast.d internal/aaA.d internal/adi.d \ ++ internal/dmain2.d internal/cast.d internal/qsort.d internal/deh2.d \ ++ internal/cmath2.d internal/obj.d internal/aApply.d \ ++ internal/aApplyR.d internal/object.d internal/trace.d internal/qsort2.d ++ ++SRC_STD_WIN= std/windows/registry.d \ ++ std/windows/iunknown.d std/windows/charset.d ++ ++SRC_STD_C_WIN= std/c/windows/windows.d std/c/windows/com.d \ ++ std/c/windows/winsock.d std/c/windows/stat.d ++ ++SRC_STD_C_LINUX= std/c/linux/linux.d std/c/linux/linuxextern.d \ ++ std/c/linux/socket.d std/c/linux/pthread.d ++ ++SRC_STD_C_OSX= std/c/osx/osx.d ++ ++SRC_STD_C_FREEBSD= std/c/freebsd/freebsd.d \ ++ std/c/freebsd/socket.d std/c/freebsd/pthread.d \ ++ std/c/freebsd/math.d ++ ++SRC_STD_C_SOLARIS= std/c/solaris/solaris.d \ ++ std/c/solaris/socket.d std/c/solaris/pthread.d ++ ++SRC_STD_C_POSIX= std/c/posix/posix.d \ ++ std/c/posix/socket.d std/c/posix/pthread.d ++ ++SRC_ETC= etc/gamma.d ++ ++SRC_ETC_C= etc/c/zlib.d ++ ++SRC_ZLIB= etc/c/zlib/trees.h \ ++ etc/c/zlib/inffixed.h \ ++ etc/c/zlib/inffast.h \ ++ etc/c/zlib/crc32.h \ ++ etc/c/zlib/algorithm.txt \ ++ etc/c/zlib/uncompr.c \ ++ etc/c/zlib/compress.c \ ++ etc/c/zlib/deflate.h \ ++ etc/c/zlib/inftrees.h \ ++ etc/c/zlib/infback.c \ ++ etc/c/zlib/zutil.c \ ++ etc/c/zlib/crc32.c \ ++ etc/c/zlib/inflate.h \ ++ etc/c/zlib/example.c \ ++ etc/c/zlib/inffast.c \ ++ etc/c/zlib/trees.c \ ++ etc/c/zlib/inflate.c \ ++ etc/c/zlib/gzio.c \ ++ etc/c/zlib/zconf.h \ ++ etc/c/zlib/zconf.in.h \ ++ etc/c/zlib/minigzip.c \ ++ etc/c/zlib/deflate.c \ ++ etc/c/zlib/inftrees.c \ ++ etc/c/zlib/zutil.h \ ++ etc/c/zlib/zlib.3 \ ++ etc/c/zlib/zlib.h \ ++ etc/c/zlib/adler32.c \ ++ etc/c/zlib/ChangeLog \ ++ etc/c/zlib/README \ ++ etc/c/zlib/win32.mak \ ++ etc/c/zlib/linux.mak \ ++ etc/c/zlib/haiku.mak \ ++ etc/c/zlib/osx.mak \ ++ etc/c/zlib/freebsd.mak \ ++ etc/c/zlib/solaris.mak ++ ++SRC_GC= internal/gc/gc.d \ ++ internal/gc/gcold.d \ ++ internal/gc/gcx.d \ ++ internal/gc/gcstub.d \ ++ internal/gc/gcbits.d \ ++ internal/gc/win32.d \ ++ internal/gc/gclinux.d \ ++ internal/gc/gcosxc.c \ ++ internal/gc/testgc.d \ ++ internal/gc/win32.mak \ ++ internal/gc/linux.mak \ ++ internal/gc/haiku.mak \ ++ internal/gc/osx.mak \ ++ internal/gc/freebsd.mak \ ++ internal/gc/solaris.mak ++ ++ALLSRCS = $(SRC) $(SRC_STD) std/gc.d $(SRC_STD_C) $(SRC_TI) $(SRC_INTC) $(SRC_INT) $(SRC_STD_WIN) \ ++ $(SRC_STD_C_WIN) $(SRC_STD_C_LINUX) $(SRC_ETC) $(SRC_ETC_C) \ ++ $(SRC_ZLIB) $(SRC_GC) $(SRC_STD_C_FREEBSD) $(SRC_STD_C_SOLARIS) \ ++ $(SRC_STD_C_POSIX) ++ ++ ++SRCS= \ ++ internal/aaA.d internal/adi.d \ ++ internal/aApply.d internal/aApplyR.d internal/memset.d \ ++ internal/arraycast.d internal/arraycat.d \ ++ internal/switch.d internal/qsort.d internal/invariant.d \ ++ internal/dmain2.d internal/cast.d internal/obj.d \ ++ internal/arrayfloat.d internal/arraydouble.d internal/arrayreal.d \ ++ internal/arraybyte.d internal/arrayshort.d internal/arrayint.d \ ++ internal/deh2.d internal/llmath.d \ ++ internal/trace.d internal/cmath2.d \ ++ internal/alloca.d \ ++ $(SRC_STD) \ ++ $(SRC_TI) ++ ++ ++$(LIB) : $(OBJS) $(GC_OBJS) $(ZLIB_OBJS) $(SRCS) $(MAKEFILE) ++# rm -f $(LIB) ++# ar -r $@ $(OBJS) $(ZLIB_OBJS) $(GC_OBJS) ++ $(DMD) -lib -of$(LIB) $(DFLAGS) $(SRCS) $(OBJS) $(ZLIB_OBJS) $(GC_OBJS) ++ ++unittest : ++ $(DMD) $(DFLAGS) -unittest -version=Unittest unittest.d $(SRCS) $(LIB) -L-ldl ++ ./unittest ++ ++cov : $(SRCS) $(LIB) ++ $(DMD) -cov -unittest -ofcov -m$(MODEL) unittest.d $(SRCS) $(LIB) ++ ./cov ++ ++ ++########################################################### ++ ++$(GC_OBJS): ++# cd internal/gc ++# make -f $(MAKEFILE) dmgc.a ++# cd ../.. ++ make DMD=$(DMD) MODEL=$(MODEL) -C ./internal/gc -f $(MAKEFILE) ++ ++$(ZLIB_OBJS): ++# cd etc/c/zlib ++# make -f $(MAKEFILE) ++# cd ../../.. ++ make -C ./etc/c/zlib -f $(MAKEFILE) MODEL=$(MODEL) ++ ++### ++ ++Dcrc32.o : crc32.d ++ $(DMD) -c $(DFLAGS) crc32.d -ofDcrc32.o ++ ++errno.o : errno.c ++ ++gcstats.o : gcstats.d ++ $(DMD) -c $(DFLAGS) gcstats.d ++ ++### internal ++ ++aaA.o : internal/aaA.d ++ $(DMD) -c $(DFLAGS) internal/aaA.d ++ ++aApply.o : internal/aApply.d ++ $(DMD) -c $(DFLAGS) internal/aApply.d ++ ++aApplyR.o : internal/aApplyR.d ++ $(DMD) -c $(DFLAGS) internal/aApplyR.d ++ ++adi.o : internal/adi.d ++ $(DMD) -c $(DFLAGS) internal/adi.d ++ ++alloca.o : internal/alloca.d ++ $(DMD) -c $(DFLAGS) internal/alloca.d ++ ++arraycast.o : internal/arraycast.d ++ $(DMD) -c $(DFLAGS) internal/arraycast.d ++ ++arraycat.o : internal/arraycat.d ++ $(DMD) -c $(DFLAGS) internal/arraycat.d ++ ++cast.o : internal/cast.d ++ $(DMD) -c $(DFLAGS) internal/cast.d ++ ++cmath2.o : internal/cmath2.d ++ $(DMD) -c $(DFLAGS) internal/cmath2.d ++ ++complex.o : internal/complex.c ++ $(CC) -c $(CFLAGS) internal/complex.c ++ ++critical.o : internal/critical.c ++ $(CC) -c $(CFLAGS) internal/critical.c ++ ++#deh.o : internal/mars.h internal/deh.cA ++# $(CC) -c $(CFLAGS) internal/deh.c ++ ++deh2.o : internal/deh2.d ++ $(DMD) -c $(DFLAGS) -release internal/deh2.d ++ ++dmain2.o : internal/dmain2.d ++ $(DMD) -c $(DFLAGS) internal/dmain2.d ++ ++invariant.o : internal/invariant.d ++ $(DMD) -c $(DFLAGS) internal/invariant.d ++ ++llmath.o : internal/llmath.d ++ $(DMD) -c $(DFLAGS) internal/llmath.d ++ ++memset.o : internal/memset.d ++ $(DMD) -c $(DFLAGS) internal/memset.d ++ ++#minit.o : internal/minit.asm ++# $(CC) -c internal/minit.asm ++ ++monitor.o : internal/mars.h internal/monitor.c ++ $(CC) -c $(CFLAGS) internal/monitor.c ++ ++obj.o : internal/obj.d ++ $(DMD) -c $(DFLAGS) internal/obj.d ++ ++object.o : internal/object.d ++ $(DMD) -c $(DFLAGS) internal/object.d ++ ++qsort.o : internal/qsort.d ++ $(DMD) -c $(DFLAGS) internal/qsort.d ++ ++switch.o : internal/switch.d ++ $(DMD) -c $(DFLAGS) internal/switch.d ++ ++trace.o : internal/trace.d ++ $(DMD) -c $(DFLAGS) internal/trace.d ++ ++### std ++ ++array.o : std/array.d ++ $(DMD) -c $(DFLAGS) std/array.d ++ ++asserterror.o : std/asserterror.d ++ $(DMD) -c $(DFLAGS) std/asserterror.d ++ ++base64.o : std/base64.d ++ $(DMD) -c $(DFLAGS) std/base64.d ++ ++bind.o : std/bind.d ++ $(DMD) -c $(DFLAGS) std/bind.d ++ ++bitarray.o : std/bitarray.d ++ $(DMD) -c $(DFLAGS) std/bitarray.d ++ ++boxer.o : std/boxer.d ++ $(DMD) -c $(DFLAGS) std/boxer.d ++ ++compiler.o : std/compiler.d ++ $(DMD) -c $(DFLAGS) std/compiler.d ++ ++conv.o : std/conv.d ++ $(DMD) -c $(DFLAGS) std/conv.d ++ ++cover.o : std/cover.d ++ $(DMD) -c $(DFLAGS) std/cover.d ++ ++cpuid.o : std/cpuid.d ++ $(DMD) -c $(DFLAGS) std/cpuid.d ++ ++cstream.o : std/cstream.d ++ $(DMD) -c $(DFLAGS) std/cstream.d ++ ++ctype.o : std/ctype.d ++ $(DMD) -c $(DFLAGS) std/ctype.d ++ ++date.o : std/dateparse.d std/date.d ++ $(DMD) -c $(DFLAGS) std/date.d ++ ++dateparse.o : std/dateparse.d std/date.d ++ $(DMD) -c $(DFLAGS) std/dateparse.d ++ ++demangle.o : std/demangle.d ++ $(DMD) -c $(DFLAGS) std/demangle.d ++ ++file.o : std/file.d ++ $(DMD) -c $(DFLAGS) std/file.d ++ ++format.o : std/format.d ++ $(DMD) -c $(DFLAGS) std/format.d ++ ++gc.o : std/gc.d ++ $(DMD) -c $(DFLAGS) std/gc.d ++ ++loader.o : std/loader.d ++ $(DMD) -c $(DFLAGS) std/loader.d ++ ++math.o : std/math.d ++ $(DMD) -c $(DFLAGS) std/math.d ++ ++math2.o : std/math2.d ++ $(DMD) -c $(DFLAGS) std/math2.d ++ ++md5.o : std/md5.d ++ $(DMD) -c $(DFLAGS) std/md5.d ++ ++metastrings.o : std/metastrings.d ++ $(DMD) -c $(DFLAGS) std/metastrings.d ++ ++mmfile.o : std/mmfile.d ++ $(DMD) -c $(DFLAGS) std/mmfile.d ++ ++moduleinit.o : std/moduleinit.d ++ $(DMD) -c $(DFLAGS) std/moduleinit.d ++ ++openrj.o : std/openrj.d ++ $(DMD) -c $(DFLAGS) std/openrj.d ++ ++outbuffer.o : std/outbuffer.d ++ $(DMD) -c $(DFLAGS) std/outbuffer.d ++ ++outofmemory.o : std/outofmemory.d ++ $(DMD) -c $(DFLAGS) std/outofmemory.d ++ ++path.o : std/path.d ++ $(DMD) -c $(DFLAGS) std/path.d ++ ++perf.o : std/perf.d ++ $(DMD) -c $(DFLAGS) std/perf.d ++ ++process.o : std/process.d ++ $(DMD) -c $(DFLAGS) std/process.d ++ ++random.o : std/random.d ++ $(DMD) -c $(DFLAGS) std/random.d ++ ++regexp.o : std/regexp.d ++ $(DMD) -c $(DFLAGS) std/regexp.d ++ ++signals.o : std/signals.d ++ $(DMD) -c $(DFLAGS) std/signals.d ++ ++socket.o : std/socket.d ++ $(DMD) -c $(DFLAGS) std/socket.d ++ ++socketstream.o : std/socketstream.d ++ $(DMD) -c $(DFLAGS) std/socketstream.d ++ ++stdio.o : std/stdio.d ++ $(DMD) -c $(DFLAGS) std/stdio.d ++ ++stream.o : std/stream.d ++ $(DMD) -c $(DFLAGS) -d std/stream.d ++ ++string.o : std/string.d ++ $(DMD) -c $(DFLAGS) std/string.d ++ ++switcherr.o : std/switcherr.d ++ $(DMD) -c $(DFLAGS) std/switcherr.d ++ ++system.o : std/system.d ++ $(DMD) -c $(DFLAGS) std/system.d ++ ++syserror.o : std/syserror.d ++ $(DMD) -c $(DFLAGS) std/syserror.d ++ ++thread.o : std/thread.d ++ $(DMD) -c $(DFLAGS) std/thread.d ++ ++traits.o : std/traits.d ++ $(DMD) -c $(DFLAGS) std/traits.d ++ ++typetuple.o : std/typetuple.d ++ $(DMD) -c $(DFLAGS) std/typetuple.d ++ ++uri.o : std/uri.d ++ $(DMD) -c $(DFLAGS) std/uri.d ++ ++uni.o : std/uni.d ++ $(DMD) -c $(DFLAGS) std/uni.d ++ ++utf.o : std/utf.d ++ $(DMD) -c $(DFLAGS) std/utf.d ++ ++Dzlib.o : std/zlib.d ++ $(DMD) -c $(DFLAGS) std/zlib.d -ofDzlib.o ++ ++zip.o : std/zip.d ++ $(DMD) -c $(DFLAGS) std/zip.d ++ ++### std/c ++ ++std_c_stdarg.o : std/c/stdarg.d ++ $(DMD) -c $(DFLAGS) std/c/stdarg.d -ofstd_c_stdarg.o ++ ++### std/c/linux ++ ++linux.o : std/c/linux/linux.d ++ $(DMD) -c $(DFLAGS) std/c/linux/linux.d ++ ++linuxsocket.o : std/c/linux/socket.d ++ $(DMD) -c $(DFLAGS) std/c/linux/socket.d -oflinuxsocket.o ++ ++pthread.o : std/c/linux/pthread.d ++ $(DMD) -c $(DFLAGS) std/c/linux/pthread.d ++ ++### std/c/posix ++ ++posix.o : std/c/posix/posix.d ++ $(DMD) -c $(DFLAGS) std/c/posix/posix.d ++ ++posixsocket.o : std/c/posix/socket.d ++ $(DMD) -c $(DFLAGS) std/c/posix/socket.d -ofposixsocket.o ++ ++posixpthread.o : std/c/posix/pthread.d ++ $(DMD) -c $(DFLAGS) std/c/posix/pthread.d -ofposixpthread.o ++ ++### etc ++ ++### etc/c ++ ++Czlib.o : etc/c/zlib.d ++ $(DMD) -c $(DFLAGS) etc/c/zlib.d -ofCzlib.o ++ ++### std/typeinfo ++ ++ti_void.o : std/typeinfo/ti_void.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_void.d ++ ++ti_wchar.o : std/typeinfo/ti_wchar.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_wchar.d ++ ++ti_dchar.o : std/typeinfo/ti_dchar.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_dchar.d ++ ++ti_uint.o : std/typeinfo/ti_uint.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_uint.d ++ ++ti_short.o : std/typeinfo/ti_short.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_short.d ++ ++ti_ushort.o : std/typeinfo/ti_ushort.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_ushort.d ++ ++ti_byte.o : std/typeinfo/ti_byte.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_byte.d ++ ++ti_ubyte.o : std/typeinfo/ti_ubyte.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_ubyte.d ++ ++ti_long.o : std/typeinfo/ti_long.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_long.d ++ ++ti_ulong.o : std/typeinfo/ti_ulong.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_ulong.d ++ ++ti_ptr.o : std/typeinfo/ti_ptr.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_ptr.d ++ ++ti_float.o : std/typeinfo/ti_float.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_float.d ++ ++ti_double.o : std/typeinfo/ti_double.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_double.d ++ ++ti_real.o : std/typeinfo/ti_real.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_real.d ++ ++ti_delegate.o : std/typeinfo/ti_delegate.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_delegate.d ++ ++ti_creal.o : std/typeinfo/ti_creal.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_creal.d ++ ++ti_ireal.o : std/typeinfo/ti_ireal.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_ireal.d ++ ++ti_cfloat.o : std/typeinfo/ti_cfloat.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_cfloat.d ++ ++ti_ifloat.o : std/typeinfo/ti_ifloat.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_ifloat.d ++ ++ti_cdouble.o : std/typeinfo/ti_cdouble.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_cdouble.d ++ ++ti_idouble.o : std/typeinfo/ti_idouble.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_idouble.d ++ ++ti_AC.o : std/typeinfo/ti_AC.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_AC.d ++ ++ti_Ag.o : std/typeinfo/ti_Ag.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Ag.d ++ ++ti_Abit.o : std/typeinfo/ti_Abit.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Abit.d ++ ++ti_Ashort.o : std/typeinfo/ti_Ashort.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Ashort.d ++ ++ti_Aint.o : std/typeinfo/ti_Aint.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Aint.d ++ ++ti_Along.o : std/typeinfo/ti_Along.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Along.d ++ ++ti_Afloat.o : std/typeinfo/ti_Afloat.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Afloat.d ++ ++ti_Adouble.o : std/typeinfo/ti_Adouble.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Adouble.d ++ ++ti_Areal.o : std/typeinfo/ti_Areal.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Areal.d ++ ++ti_Acfloat.o : std/typeinfo/ti_Acfloat.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Acfloat.d ++ ++ti_Acdouble.o : std/typeinfo/ti_Acdouble.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Acdouble.d ++ ++ti_Acreal.o : std/typeinfo/ti_Acreal.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_Acreal.d ++ ++ti_C.o : std/typeinfo/ti_C.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_C.d ++ ++ti_char.o : std/typeinfo/ti_char.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_char.d ++ ++ti_int.o : std/typeinfo/ti_int.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_int.d ++ ++ti_bit.o : std/typeinfo/ti_bit.d ++ $(DMD) -c $(DFLAGS) std/typeinfo/ti_bit.d ++ ++ ++########################################################## ++ ++zip : $(ALLSRCS) $(ALLMAKEFILES) phoboslicense.txt ++ $(RM) phobos.zip ++ zip phobos $(ALLSRCS) $(ALLMAKEFILES) phoboslicense.txt ++ ++clean: ++ $(RM) $(LIB) $(OBJS) unittest unittest.o ++ make -C ./internal/gc -f $(MAKEFILE) clean ++ make -C ./etc/c/zlib -f $(MAKEFILE) clean ++ +diff -Naur dmd/src/phobos/internal/gc/haiku.mak dmd1/src/phobos/internal/gc/haiku.mak +--- dmd/src/phobos/internal/gc/haiku.mak 1970-01-01 00:00:00.000000000 +0000 ++++ dmd1/src/phobos/internal/gc/haiku.mak 2010-09-20 16:41:30.325582848 +0000 +@@ -0,0 +1,56 @@ ++ ++# makefile to build linux D garbage collector ++ ++MODEL=32 ++#DMD=../../../dmd ++DMD=dmd ++CFLAGS=-g -m$(MODEL) ++#DFLAGS=-unittest -g -release ++DFLAGS=-release -O -inline -m$(MODEL) -I../.. ++#DFLAGS=-release -inline -O ++CC=gcc ++MAKEFILE=haiku.mak ++ ++OBJS= gc.o gcx.o gcbits.o gclinux.o gcold.o ++ ++SRC= gc.d gcx.d gcbits.d win32.d gclinux.d gcold.d testgc.d \ ++ win32.mak osx.mak linux.mak freebsd.mak solaris.mak ++ ++.c.o: ++ $(CC) -c $(CFLAGS) $* ++ ++.d.o: ++ $(DMD) -c $(DFLAGS) $* ++ ++targets : dmgc.a ++ ++testgc : testgc.o $(OBJS) $(MAKEFILE) ++ $(DMD) -of$@ -m$(MODEL) testgc.o gc.o gcx.o gcbits.o gclinux.o -g ++ ++testgc.o : testgc.d ++ $(DMD) -c $(DFLAGS) testgc.d ++ ++dmgc.a : $(OBJS) $(MAKEFILE) ++ ar -r $@ $(OBJS) ++ ++gc.o : gc.d ++ $(DMD) -c $(DFLAGS) gc.d ++ ++gcold.o : gcold.d ++ $(DMD) -c $(DFLAGS) gcold.d ++ ++gcx.o : gcx.d ++ $(DMD) -c $(DFLAGS) gcx.d gcbits.d ++ ++#gcbits.o : gcbits.d ++# $(DMD) -c $(DFLAGS) gcbits.d ++ ++gclinux.o : gclinux.d ++ $(DMD) -c $(DFLAGS) gclinux.d ++ ++zip : $(SRC) ++ $(RM) dmgc.zip ++ zip dmgc $(SRC) ++ ++clean: ++ $(RM) $(OBJS) dmgc.a testgc testgc.o