# HG changeset patch
# User Trass3r
# Date 1284422088 -7200
# Node ID 31c086f76669977c8a8682639649d4bb39680123
# Parent bc45b1c53019711d1d1e63448c17eec827442da7
dmd.lib now only contains the backend
backward references from the backend to the frontend are implemented in ddmd
win32_lib.mak is replaced by a patch
also fixed VisualD project file predefined versions
diff -r bc45b1c53019 -r 31c086f76669 commands.linux.txt
--- a/commands.linux.txt Tue Sep 14 01:13:58 2010 +0200
+++ b/commands.linux.txt Tue Sep 14 01:54:48 2010 +0200
@@ -392,3 +392,4 @@
dmd/backend/rel.d
dmd/backend/LIST.d
dmd/codegen/Util.d
+dmd/codegen/linkhelper.d
\ No newline at end of file
diff -r bc45b1c53019 -r 31c086f76669 commands.txt
--- a/commands.txt Tue Sep 14 01:13:58 2010 +0200
+++ b/commands.txt Tue Sep 14 01:54:48 2010 +0200
@@ -387,4 +387,5 @@
dmd\backend\iasm.d
dmd\backend\rel.d
dmd\backend\LIST.d
-dmd\codegen\Util.d
\ No newline at end of file
+dmd\codegen\Util.d
+dmd\codegen\linkhelper.d
\ No newline at end of file
diff -r bc45b1c53019 -r 31c086f76669 ddmd.visualdproj
--- a/ddmd.visualdproj Tue Sep 14 01:13:58 2010 +0200
+++ b/ddmd.visualdproj Tue Sep 14 01:54:48 2010 +0200
@@ -59,7 +59,7 @@
0
0
- DMDV2 TX86 MARS _WIN32 TARGET_WINDOS OMFOBJ WindowsXP DumbClone BREAKABI SEH STRUCTTHISREF SNAN_DEFAULT_INIT SARRAYVALUE
+ DMDV2 TX86 MARS _WIN32 TARGET_WINDOS OMFOBJ WindowsXP DumbClone BREAKABI SEH STRUCTTHISREF CCASTSYNTAX CARRAYDECL SNAN_DEFAULT_INIT SARRAYVALUE
0
0
0
@@ -146,7 +146,7 @@
0
0
- DMDV2 TX86 MARS _WIN32 TARGET_WINDOS OMFOBJ WindowsXP DumbClone BREAKABI SEH STRUCTTHISREF SNAN_DEFAULT_INIT SARRAYVALUE
+ DMDV2 TX86 MARS _WIN32 TARGET_WINDOS OMFOBJ WindowsXP DumbClone BREAKABI SEH STRUCTTHISREF CCASTSYNTAX CARRAYDECL SNAN_DEFAULT_INIT SARRAYVALUE
0
0
0
@@ -246,6 +246,7 @@
+
diff -r bc45b1c53019 -r 31c086f76669 dmd/Type.d
--- a/dmd/Type.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/Type.d Tue Sep 14 01:54:48 2010 +0200
@@ -89,15 +89,15 @@
* REALALIGNSIZE = alignment for reals
*/
version (TARGET_OSX) {
- int REALSIZE = 16;
+ extern(C++) int REALSIZE = 16;
int REALPAD = 6;
int REALALIGNSIZE = 16;
} else version (POSIX) { /// TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS
- int REALSIZE = 12;
+ extern(C++) int REALSIZE = 12;
int REALPAD = 2;
int REALALIGNSIZE = 4;
} else {
- int REALSIZE = 10;
+ extern(C++) int REALSIZE = 10;
int REALPAD = 0;
int REALALIGNSIZE = 2;
}
diff -r bc45b1c53019 -r 31c086f76669 dmd/VolatileStatement.d
--- a/dmd/VolatileStatement.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/VolatileStatement.d Tue Sep 14 01:54:48 2010 +0200
@@ -15,6 +15,9 @@
import dmd.backend.Blockx;
import dmd.backend.Util;
import dmd.backend.BC;
+import dmd.backend.elem;
+import dmd.backend.OPER;
+import dmd.backend.mTY;
//import dmd.backend.BFL;
class VolatileStatement : Statement
@@ -70,6 +73,23 @@
return this;
}
+ static void el_setVolatile(elem* e)
+ {
+ while (1)
+ {
+ e.Ety |= mTYvolatile;
+ if (OTunary(e.Eoper))
+ e = e.E1;
+ else if (OTbinary(e.Eoper))
+ {
+ el_setVolatile(e.E2);
+ e = e.E1;
+ }
+ else
+ break;
+ }
+ }
+
override void toIR(IRState* irs)
{
block* b;
diff -r bc45b1c53019 -r 31c086f76669 dmd/backend/OPER.d
--- a/dmd/backend/OPER.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/backend/OPER.d Tue Sep 14 01:54:48 2010 +0200
@@ -324,12 +324,17 @@
#define _OTboolnop 1
+/
-ubyte OTbinary(OPER op) {
+ubyte OTbinary(OPER op)
+{
return (optab1[op] & _OT._OTbinary);
}
+ubyte OTunary(OPER op)
+{
+ return (optab1[op] & _OT._OTunary);
+}
+
/+
-#define OTunary(op) (optab1[op]&_OTunary)
#define OTleaf(op) (!(optab1[op]&(_OTunary|_OTbinary)))
#define OTcommut(op) (optab1[op]&_OTcommut)
#define OTassoc(op) (optab1[op]&_OTassoc)
diff -r bc45b1c53019 -r 31c086f76669 dmd/backend/Util.d
--- a/dmd/backend/Util.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/backend/Util.d Tue Sep 14 01:54:48 2010 +0200
@@ -167,7 +167,7 @@
elem_p el_copytree(elem_p);
int el_allbits(elem *e, int bit);
block* block_goto(Blockx* bctx, BC bc, block* bn);
- block* block_calloc(Blockx* blx);
+// block* block_calloc(Blockx* blx);
targ_size_t type_paramsize_i(type* t);
int os_critsecsize();
void el_setVolatile(elem* e);
@@ -175,6 +175,15 @@
elem* el_const(tym_t, eve*);
elem *el_params(void** args, int length);
+ /****************************************
+ * Allocate a new block, and set the tryblock.
+ */
+ block *block_calloc(Blockx *blx)
+ {
+ block* b = block_calloc();
+ b.Btry = blx.tryblock;
+ return b;
+ }
version (SEH) {
void nteh_declarvars(Blockx* bx);
diff -r bc45b1c53019 -r 31c086f76669 dmd/backend/glue.d
--- a/dmd/backend/glue.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/backend/glue.d Tue Sep 14 01:54:48 2010 +0200
@@ -20,12 +20,12 @@
import core.stdc.string;
__gshared Array obj_symbols_towrite;
+__gshared Outbuffer objbuf;
version (Windows)
{
extern (C++) extern
{
- __gshared Outbuffer objbuf;
int go_flag(char* cp);
void util_set64();
void util_set386();
@@ -35,7 +35,6 @@
{
extern (C++)
{
- extern(C) extern __gshared Outbuffer objbuf;
int go_flag(char* cp);
void util_set64();
void util_set386();
diff -r bc45b1c53019 -r 31c086f76669 dmd/backend/iasm.d
--- a/dmd/backend/iasm.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/backend/iasm.d Tue Sep 14 01:54:48 2010 +0200
@@ -36,6 +36,7 @@
import dmd.backend.Config;
import dmd.backend.targ_types;
import dmd.backend.elem;
+import dmd.backend.block;
import dmd.Util;
import std.stdio : writef, writefln;
@@ -4466,3 +4467,22 @@
(szReg[1] == 't' || szReg[1] == 'T'));
}
}
+
+extern(C)
+{
+ // backward reference from backend
+
+ extern int refparam;
+
+ /**********************************
+ * Return mask of registers used by block bp.
+ */
+ regm_t iasm_regs(block *bp)
+ {
+ debug if (debuga)
+ printf("Block iasm regs = 0x%X\n", bp.usIasmregs);
+
+ refparam |= bp.bIasmrefparam;
+ return bp.usIasmregs;
+ }
+}
\ No newline at end of file
diff -r bc45b1c53019 -r 31c086f76669 dmd/codegen/Util.d
--- a/dmd/codegen/Util.d Tue Sep 14 01:13:58 2010 +0200
+++ b/dmd/codegen/Util.d Tue Sep 14 01:54:48 2010 +0200
@@ -55,6 +55,7 @@
import dmd.backend.RTLSYM;
import dmd.backend.block;
import dmd.backend.LIST;
+import dmd.backend.iasm : binary;
import std.string;
import core.stdc.string;
@@ -652,13 +653,123 @@
* Returns that operator, -1 if not an intrinsic function.
*/
-extern (C++) extern int intrinsic_op(char* name);
-
+//extern (C++) extern int intrinsic_op(char* name);
+
OPER intrinsic_oper(const(char)* name)
{
- int result = intrinsic_op(cast(char*)name);
- if (result == -1) return OPER.OPMAX;
- return cast(OPER)result;
+ version(DMDV1)
+ static const(char) *namearray[] =
+ [
+ "4math3cosFeZe",
+ "4math3sinFeZe",
+ "4math4fabsFeZe",
+ "4math4rintFeZe",
+ "4math4sqrtFdZd",
+ "4math4sqrtFeZe",
+ "4math4sqrtFfZf",
+ "4math4yl2xFeeZe",
+ "4math5ldexpFeiZe",
+ "4math6rndtolFeZl",
+ "4math6yl2xp1FeeZe",
+
+ "9intrinsic2btFPkkZi",
+ "9intrinsic3bsfFkZi",
+ "9intrinsic3bsrFkZi",
+ "9intrinsic3btcFPkkZi",
+ "9intrinsic3btrFPkkZi",
+ "9intrinsic3btsFPkkZi",
+ "9intrinsic3inpFkZh",
+ "9intrinsic4inplFkZk",
+ "9intrinsic4inpwFkZt",
+ "9intrinsic4outpFkhZh",
+ "9intrinsic5bswapFkZk",
+ "9intrinsic5outplFkkZk",
+ "9intrinsic5outpwFktZt",
+ ];
+else
+ static const(char) *namearray[] =
+ [
+ /* The names are mangled differently because of the pure and
+ * nothrow attributes.
+ */
+ "4math3cosFNaNbNfeZe",
+ "4math3sinFNaNbNfeZe",
+ "4math4fabsFNaNbNfeZe",
+ "4math4rintFNaNbNfeZe",
+ "4math4sqrtFNaNbNfdZd",
+ "4math4sqrtFNaNbNfeZe",
+ "4math4sqrtFNaNbNffZf",
+ "4math4yl2xFNaNbNfeeZe",
+ "4math5ldexpFNaNbNfeiZe",
+ "4math6rndtolFNaNbNfeZl",
+ "4math6yl2xp1FNaNbNfeeZe",
+
+ "9intrinsic2btFNaNbxPkkZi",
+ "9intrinsic3bsfFNaNbkZi",
+ "9intrinsic3bsrFNaNbkZi",
+ "9intrinsic3btcFNbPkkZi",
+ "9intrinsic3btrFNbPkkZi",
+ "9intrinsic3btsFNbPkkZi",
+ "9intrinsic3inpFNbkZh",
+ "9intrinsic4inplFNbkZk",
+ "9intrinsic4inpwFNbkZt",
+ "9intrinsic4outpFNbkhZh",
+ "9intrinsic5bswapFNaNbkZk",
+ "9intrinsic5outplFNbkkZk",
+ "9intrinsic5outpwFNbktZt",
+ ];
+
+ static const OPER ioptab[] =
+ [
+ OPcos,
+ OPsin,
+ OPabs,
+ OPrint,
+ OPsqrt,
+ OPsqrt,
+ OPsqrt,
+ OPyl2x,
+ OPscale,
+ OPrndtol,
+ OPyl2xp1,
+
+ OPbt,
+ OPbsf,
+ OPbsr,
+ OPbtc,
+ OPbtr,
+ OPbts,
+ OPinp,
+ OPinp,
+ OPinp,
+ OPoutp,
+ OPbswap,
+ OPoutp,
+ OPoutp,
+ ];
+
+ debug
+ {
+ assert(namearray.length == ioptab.length);
+ // assume sorted namearray
+ for (int i = 0; i < namearray.length - 1; i++)
+ {
+ if (strcmp(namearray[i], namearray[i + 1]) >= 0)
+ {
+ printf("namearray[%d] = '%s'\n", i, namearray[i]);
+ assert(0);
+ }
+ }
+ }
+
+ size_t length = strlen(name);
+ if (length < 11 || !(name[7] == 'm' || name[7] == 'i') || name[0..6] != "_D3std")
+ return OPMAX;
+
+ int p = binary(name + 6, namearray.ptr, namearray.length);
+ if(p == -1)
+ return OPMAX;
+ return ioptab[p];
}
/**************************************
@@ -790,13 +901,13 @@
{
elength = *pe;
*pe = el_same(&elength);
- elength = el_una(OPER.OP64_32, TYM.TYuint, elength);
+ elength = el_una(OP64_32, TYM.TYuint, elength);
L3:
slength = lengthVar.toSymbol();
//symbol_add(slength);
- einit = el_bin(OPER.OPeq, TYM.TYuint, el_var(slength), elength);
+ einit = el_bin(OPeq, TYM.TYuint, el_var(slength), elength);
}
}
return einit;
diff -r bc45b1c53019 -r 31c086f76669 dmd/codegen/linkhelper.d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dmd/codegen/linkhelper.d Tue Sep 14 01:54:48 2010 +0200
@@ -0,0 +1,32 @@
+module dmd.codegen.linkhelper;
+
+import dmd.Loc;
+import dmd.Util;
+
+import core.stdc.stdarg;
+import std.conv;
+
+// help resolve some linker dependencies from the backend back into the frontend
+
+extern(C++)
+{
+ // msc.c wants to access global from out_config_init(), but it should never be called
+ struct Global {}
+ Global global;
+
+ void error(const char *filename, uint linnum, const char *format, ...)
+ {
+ Loc loc;
+ loc.filename = to!string(filename);
+ loc.linnum = linnum;
+
+ va_list ap;
+ va_start(ap, format);
+
+ char buf[1024];
+ vsprintf(buf.ptr, format, ap);
+ va_end( ap );
+
+ dmd.Util.error(loc, to!string(buf));
+ }
+}
diff -r bc45b1c53019 -r 31c086f76669 dmdpatch.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dmdpatch.patch Tue Sep 14 01:54:48 2010 +0200
@@ -0,0 +1,183 @@
+# HG changeset patch
+# User trass3r
+# Date 1284418540 -7200
+# Node ID a4ec24e030fdda493d8d1249ef966e0beed13e1e
+# Parent 0ebf1721e4d32cfb38376c6688a767627aa63758
+t
+
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/dmd/class.c
+--- a/src/dmd/class.c Mon Sep 13 15:46:31 2010 +0200
++++ b/src/dmd/class.c Tue Sep 14 00:55:40 2010 +0200
+@@ -61,7 +61,7 @@
+ if (id)
+ { // Look for special class names
+
+- if (id == Id::__sizeof || id == Id::alignof || id == Id::mangleof)
++ if (id == Id::__sizeof || id == Id::__alignof || id == Id::mangleof)
+ error("illegal class name");
+
+ // BUG: What if this is the wrong TypeInfo, i.e. it is nested?
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/dmd/dsymbol.c
+--- a/src/dmd/dsymbol.c Mon Sep 13 15:46:31 2010 +0200
++++ b/src/dmd/dsymbol.c Tue Sep 14 00:55:40 2010 +0200
+@@ -488,7 +488,7 @@
+ }
+ if (sd->isAggregateDeclaration() || sd->isEnumDeclaration())
+ {
+- if (ident == Id::__sizeof || ident == Id::alignof || ident == Id::mangleof)
++ if (ident == Id::__sizeof || ident == Id::__alignof || ident == Id::mangleof)
+ error(".%s property cannot be redefined", ident->toChars());
+ }
+ return 1;
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/dmd/expression.c
+--- a/src/dmd/expression.c Mon Sep 13 15:46:31 2010 +0200
++++ b/src/dmd/expression.c Tue Sep 14 00:55:40 2010 +0200
+@@ -5953,7 +5953,7 @@
+ }
+ else if (t1b->ty == Tpointer &&
+ ident != Id::init && ident != Id::__sizeof &&
+- ident != Id::alignof && ident != Id::offsetof &&
++ ident != Id::__alignof && ident != Id::offsetof &&
+ ident != Id::mangleof && ident != Id::stringof)
+ { /* Rewrite:
+ * p.ident
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/dmd/idgen.c
+--- a/src/dmd/idgen.c Mon Sep 13 15:46:31 2010 +0200
++++ b/src/dmd/idgen.c Tue Sep 14 00:55:40 2010 +0200
+@@ -44,7 +44,7 @@
+ { "init" },
+ { "size" },
+ { "__sizeof", "sizeof" },
+- { "alignof" },
++ { "__alignof", "alignof" },
+ { "mangleof" },
+ { "stringof" },
+ { "tupleof" },
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/dmd/mtype.c
+--- a/src/dmd/mtype.c Mon Sep 13 15:46:31 2010 +0200
++++ b/src/dmd/mtype.c Tue Sep 14 00:55:40 2010 +0200
+@@ -1610,7 +1610,7 @@
+ error(loc, ".size property should be replaced with .sizeof");
+ e = new ErrorExp();
+ }
+- else if (ident == Id::alignof)
++ else if (ident == Id::__alignof)
+ {
+ e = new IntegerExp(loc, alignsize(), Type::tsize_t);
+ }
+@@ -1749,7 +1749,7 @@
+ assert(sym);
+
+ if (ident != Id::__sizeof &&
+- ident != Id::alignof &&
++ ident != Id::__alignof &&
+ ident != Id::init &&
+ ident != Id::mangleof &&
+ ident != Id::stringof &&
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/dmd/win32.mak
+--- a/src/dmd/win32.mak Mon Sep 13 15:46:31 2010 +0200
++++ b/src/dmd/win32.mak Tue Sep 14 00:55:40 2010 +0200
+@@ -8,7 +8,8 @@
+ DMDSVN=\svnproj\dmd\trunk\src
+ SCROOT=$D\dm
+ INCLUDE=$(SCROOT)\include
+-CC=\dm\bin\dmc
++CC=$(SCROOT)\bin\dmc
++LIB=$(SCROOT)\bin\lib
+ LIBNT=$(SCROOT)\lib
+ SNN=$(SCROOT)\lib\snn
+ DIR=\dmd2
+@@ -24,7 +25,7 @@
+ XFLG=
+ MODEL=n
+ OPT=
+-DEBUG=-gl -D
++DEBUG=-g -D
+ #PREC=-H -HItotal.h -HO
+ PREC=
+ LFLAGS=
+@@ -59,11 +60,17 @@
+ $(MAKE) OPT=-o "DEBUG=" LFLAGS=-L/delexe dmd.exe
+ # $(MAKE) OPT=-o "DEBUG=" LFLAGS=-L/ma/co/delexe dmd.exe
+
++lib:
++ $(MAKE) OPT=-o "DEBUG=" dmd.lib
++
+ ################ NT COMMAND LINE DEBUG #########################
+
+ debdmd:
+ $(MAKE) OPT= "DEBUG=-D -g" LFLAGS=-L/ma/co dmd.exe
+
++deblib:
++ $(MAKE) OPT= "DEBUG=-D -g" dmd.lib
++
+ #########################################
+
+ # D front end
+@@ -155,8 +162,11 @@
+ #########################################
+
+ $(TARGET).exe : $(OBJS) win32.mak
+- dmc -o$(TARGET).exe $(OBJS) -cpp -mn -Ar $(LFLAGS)
++ $(CC) -o$(TARGET).exe $(OBJS) -cpp -mn -Ar $(LFLAGS)
+
++$(TARGET).lib : $(OBJS) win32.mak
++ $(LIB) -c -p128 $(TARGET).lib $(OBJ8) $(ROOTOBJS) msc.obj tk.obj util.obj entity.obj ph.obj eh.obj
++ $(LIB) -d $(TARGET).lib iasm.obj
+
+ ##################### INCLUDE MACROS #####################
+
+@@ -171,11 +181,11 @@
+ msgsx
+
+ msgsx.exe : msgsx.c
+- dmc msgsx -mn -D$(TARGET) $(DEFINES) $(WINLIBS)
++ $(CC) msgsx -mn -D$(TARGET) $(DEFINES) $(WINLIBS)
+
+ elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c : \
+ $C\cdef.h $C\cc.h $C\oper.h $C\ty.h $C\optabgen.c
+- dmc -cpp -ooptabgen.exe $C\optabgen -DMARS -I$(TK) $(WINLIBS) #-L$(LINKS)
++ $(CC) -cpp -ooptabgen.exe $C\optabgen -DMARS -I$(TK) $(WINLIBS) #-L$(LINKS)
+ optabgen
+
+ impcnvtab.c : impcnvgen.c
+@@ -183,7 +193,7 @@
+ impcnvgen
+
+ id.h id.c : idgen.c
+- dmc -cpp idgen
++ $(CC) -cpp idgen
+ idgen
+
+ ##################### SPECIAL BUILDS #####################
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/druntime/win32.mak
+--- a/src/druntime/win32.mak Mon Sep 13 15:46:31 2010 +0200
++++ b/src/druntime/win32.mak Tue Sep 14 00:55:40 2010 +0200
+@@ -1,5 +1,5 @@
+
+-DMD=dmd
++DMD=..\..\windows\bin\dmd
+
+ CC=dmc
+
+@@ -300,7 +300,7 @@
+ # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and
+ # minit.asm is not used by dmd for Linux
+
+-OBJS= errno_c.obj complex.obj critical.obj deh.obj monitor.obj src\rt\minit.obj
++OBJS= errno_c.obj complex.obj critical.obj deh.obj monitor.obj minit.obj
+ OBJS_TO_DELETE= errno_c.obj complex.obj critical.obj deh.obj monitor.obj
+
+ DOCS=\
+diff -r 0ebf1721e4d3 -r a4ec24e030fd src/phobos/win32.mak
+--- a/src/phobos/win32.mak Mon Sep 13 15:46:31 2010 +0200
++++ b/src/phobos/win32.mak Tue Sep 14 00:55:40 2010 +0200
+@@ -51,7 +51,7 @@
+
+ DMD=$(DIR)\bin\dmd
+ #DMD=..\dmd
+-DMD=dmd
++DMD=..\..\windows\bin\dmd
+
+ ## Location of where to write the html documentation files
+
diff -r bc45b1c53019 -r 31c086f76669 win32_lib.mak
--- a/win32_lib.mak Tue Sep 14 01:13:58 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,518 +0,0 @@
-#_ win32_lib.mak
-# Copyright (C) 1999-2009 by Digital Mars, http://www.digitalmars.com
-# Written by Walter Bright
-# All Rights Reserved
-# Build dmd with Digital Mars C++ compiler
-
-D=
-DMDSVN=\svnproj\dmd\trunk\src
-SCROOT=$D\dm
-INCLUDE=$(SCROOT)\include
-CC=\dm\bin\dmc
-LIBNT=$(SCROOT)\lib
-SNN=$(SCROOT)\lib\snn
-DIR=\dmd2
-CP=cp
-
-C=backend
-TK=tk
-ROOT=root
-
-MAKE=make -fwin32_lib.mak C=$C TK=$(TK) ROOT=$(ROOT)
-
-TARGET=dmd
-XFLG=
-MODEL=n
-OPT=
-DEBUG=-gl -D
-#PREC=-H -HItotal.h -HO
-PREC=
-LFLAGS=
-
-LINKN=$(SCROOT)\bin\link /de
-
-CFLAGS=-I$(ROOT);$(INCLUDE) $(XFLG) $(OPT) $(DEBUG) -cpp -D_DH
-MFLAGS=-I$C;$(TK) -DMARS -cpp $(DEBUG) -e -wx -D_DH
-
-# Makerules:
-.c.obj:
- $(CC) -c $(CFLAGS) $(PREC) $*
-
-.asm.obj:
- $(CC) -c $(CFLAGS) $*
-
-defaulttarget: debdmd
-
-################ RELEASES #########################
-
-release:
- $(MAKE) clean
- $(MAKE) dmd
- $(MAKE) clean
-
-################ NT COMMAND LINE RELEASE #########################
-
-trace:
- $(MAKE) OPT=-o "DEBUG=-gt -Nc" LFLAGS=-L/ma/co/delexe dmd.lib
-
-dmd:
- $(MAKE) OPT=-o "DEBUG=" LFLAGS=-L/delexe dmd.lib
-# $(MAKE) OPT=-o "DEBUG=" LFLAGS=-L/ma/co/delexe dmd.exe
-
-################ NT COMMAND LINE DEBUG #########################
-
-debdmd:
- $(MAKE) OPT= "DEBUG=-D -g" LFLAGS=-L/ma/co dmd.lib
-
-#########################################
-
-# D front end
-
-OBJ1= mars2.obj enum.obj struct.obj dsymbol.obj import.obj id.obj \
- staticassert.obj identifier.obj mtype.obj expression.obj \
- optimize.obj template.obj lexer.obj declaration.obj cast.obj \
- init.obj func.obj utf.obj unialpha.obj parse.obj statement.obj \
- constfold.obj version.obj inifile.obj typinf.obj \
- module.obj scope.obj dump.obj cond.obj inline.obj opover.obj \
- entity.obj class.obj mangle.obj attrib.obj impcnvtab.obj \
- link.obj access.obj doc.obj macro.obj hdrgen.obj delegatize.obj \
- interpret.obj traits.obj aliasthis.obj \
- builtin.obj clone.obj libomf.obj arrayop.obj irstate.obj \
- glue.obj msc.obj ph.obj tk.obj s2ir.obj todt.obj e2ir.obj tocsym.obj \
- util.obj bit.obj eh.obj toobj.obj toctype.obj tocvdebug.obj toir.obj \
- json.obj
-
-# from C/C++ compiler optimizer and back end
-
-OBJ8= go.obj gdag.obj gother.obj gflow.obj gloop.obj var.obj el.obj \
- newman.obj glocal.obj os.obj nteh.obj evalu8.obj cgcs.obj \
- rtlsym.obj html.obj cgelem.obj cgen.obj cgreg.obj out.obj \
- blockopt.obj cgobj.obj cg.obj cgcv.obj type.obj dt.obj \
- debug.obj code.obj cg87.obj cgsched.obj ee.obj csymbol.obj \
- cgcod.obj cod1.obj cod2.obj cod3.obj cod4.obj cod5.obj outbuf.obj \
- bcomplex.obj iasm.obj ptrntab.obj aa.obj ti_achar.obj md5.obj
-
-# from ROOT
-
-ROOTOBJS= lstring.obj array.obj gnuc.obj man.obj rmem.obj port.obj root.obj \
- stringtable.obj dchar.obj response.obj async.obj
-
-OBJS= $(OBJ1) $(OBJ8) $(ROOTOBJS)
-
-SRCS= mars2.c enum.c struct.c dsymbol.c import.c idgen.c impcnvgen.c utf.h \
- utf.c entity.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 staticassert.h parse.c statement.c \
- constfold.c version.h version.c inifile.c iasm.c staticassert.c \
- module.c scope.c dump.c init.h init.c attrib.h attrib.c opover.c \
- eh.c toctype.c class.c mangle.c bit.c tocsym.c func.c inline.c \
- access.c complex_t.h unialpha.c irstate.h irstate.c glue.c msc.c \
- ph.c tk.c s2ir.c todt.c e2ir.c util.c toobj.c cppmangle.c \
- identifier.h parse.h objfile.h scope.h enum.h import.h \
- typinf.c tocvdebug.c toelfdebug.c mars.h module.h mtype.h dsymbol.h \
- declaration.h lexer.h expression.h statement.h doc.h doc.c \
- macro.h macro.c hdrgen.h hdrgen.c arraytypes.h \
- delegatize.c toir.h toir.c interpret.c traits.c builtin.c \
- clone.c lib.h libomf.c libelf.c libmach.c arrayop.c \
- aliasthis.h aliasthis.c json.h json.c
-
-# From C++ compiler
-
-BACKSRC= $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\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\cppman.c $C\machobj.c \
- $C\strtold.c $C\aa.h $C\aa.c $C\tinfo.h $C\ti_achar.c \
- $C\md5.h $C\md5.c
-
-# From TK
-
-TKSRC= $(TK)\filespec.h $(TK)\mem.h $(TK)\list.h $(TK)\vec.h \
- $(TK)\filespec.c $(TK)\mem.c $(TK)\vec.c $(TK)\list.c
-
-# From root
-
-ROOTSRC= $(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)\stringtable.h $(ROOT)\stringtable.c \
- $(ROOT)\gnuc.h $(ROOT)\gnuc.c $(ROOT)\man.c $(ROOT)\port.c \
- $(ROOT)\response.c $(ROOT)\async.h $(ROOT)\async.c
-
-MAKEFILES=win32.mak win32_lib.mak linux.mak osx.mak freebsd.mak solaris.mak
-
-#########################################
-
-$(TARGET).lib : $(OBJS) win32_lib.mak
- lib -c -p128 $(TARGET).lib $(OBJS)
-
-##################### INCLUDE MACROS #####################
-
-CCH=
-#TOTALH=$(CCH) total.sym
-TOTALH=$(CCH) id.h
-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
-
-##################### GENERATED SOURCE #####################
-
-msgs.h msgs.c sj1041.msg sj1036.msg sj1031.msg : msgsx.exe
- msgsx
-
-msgsx.exe : msgsx.c
- dmc msgsx -mn -D$(TARGET) $(DEFINES) $(WINLIBS)
-
-elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c : \
- $C\cdef.h $C\cc.h $C\oper.h $C\ty.h $C\optabgen.c
- dmc -cpp -ooptabgen.exe $C\optabgen -DMARS -I$(TK) $(WINLIBS) #-L$(LINKS)
- optabgen
-
-impcnvtab.c : impcnvgen.c
- $(CC) -I$(ROOT) -cpp impcnvgen
- impcnvgen
-
-id.h id.c : idgen.c
- dmc -cpp idgen
- idgen
-
-##################### SPECIAL BUILDS #####################
-
-total.sym : $(ROOT)\root.h mars.h lexer.h parse.h enum.h dsymbol.h \
- mtype.h expression.h attrib.h init.h cond.h version.h \
- declaration.h statement.h scope.h import.h module.h id.h \
- template.h aggregate.h arraytypes.h lib.h total.h
- $(CC) -c $(CFLAGS) -HFtotal.sym total.h
-
-impcnvtab.obj : mtype.h impcnvtab.c
- $(CC) -c -I$(ROOT) -cpp impcnvtab
-
-iasm.obj : $(CH) $(TOTALH) $C\iasm.h iasm.c
- $(CC) -c $(MFLAGS) -I$(ROOT) iasm
-
-bcomplex.obj : $C\bcomplex.c
- $(CC) -c $(MFLAGS) $C\bcomplex
-
-aa.obj : $C\tinfo.h $C\aa.h $C\aa.c
- $(CC) -c $(MFLAGS) -I. $C\aa
-
-bit.obj : expression.h bit.c
- $(CC) -c -I$(ROOT) $(MFLAGS) bit
-
-blockopt.obj : $C\blockopt.c
- $(CC) -c $(MFLAGS) $C\blockopt
-
-cg.obj : $C\cg.c
- $(CC) -c $(MFLAGS) -I. $C\cg
-
-cg87.obj : $C\cg87.c
- $(CC) -c $(MFLAGS) $C\cg87
-
-cgcod.obj : $C\cgcod.c
- $(CC) -c $(MFLAGS) -I. $C\cgcod
-
-cgcs.obj : $C\cgcs.c
- $(CC) -c $(MFLAGS) $C\cgcs
-
-cgcv.obj : $C\cgcv.c
- $(CC) -c $(MFLAGS) $C\cgcv
-
-cgelem.obj : $C\rtlsym.h $C\cgelem.c
- $(CC) -c $(MFLAGS) -I. $C\cgelem
-
-cgen.obj : $C\rtlsym.h $C\cgen.c
- $(CC) -c $(MFLAGS) $C\cgen
-
-cgobj.obj : $C\md5.h $C\cgobj.c
- $(CC) -c $(MFLAGS) $C\cgobj
-
-cgreg.obj : $C\cgreg.c
- $(CC) -c $(MFLAGS) $C\cgreg
-
-cgsched.obj : $C\rtlsym.h $C\cgsched.c
- $(CC) -c $(MFLAGS) $C\cgsched
-
-cod1.obj : $C\rtlsym.h $C\cod1.c
- $(CC) -c $(MFLAGS) $C\cod1
-
-cod2.obj : $C\rtlsym.h $C\cod2.c
- $(CC) -c $(MFLAGS) $C\cod2
-
-cod3.obj : $C\rtlsym.h $C\cod3.c
- $(CC) -c $(MFLAGS) $C\cod3
-
-cod4.obj : $C\cod4.c
- $(CC) -c $(MFLAGS) $C\cod4
-
-cod5.obj : $C\cod5.c
- $(CC) -c $(MFLAGS) $C\cod5
-
-code.obj : $C\code.c
- $(CC) -c $(MFLAGS) $C\code
-
-irstate.obj : irstate.h irstate.c
- $(CC) -c $(MFLAGS) irstate
-
-csymbol.obj : $C\symbol.c
- $(CC) -c $(MFLAGS) $C\symbol -ocsymbol.obj
-
-debug.obj : $C\debug.c
- $(CC) -c $(MFLAGS) -I. $C\debug
-
-dt.obj : $C\dt.h $C\dt.c
- $(CC) -c $(MFLAGS) $C\dt
-
-ee.obj : $C\ee.c
- $(CC) -c $(MFLAGS) $C\ee
-
-eh.obj : $C\cc.h $C\code.h $C\type.h $C\dt.h eh.c
- $(CC) -c $(MFLAGS) eh
-
-el.obj : $C\rtlsym.h $C\el.h $C\el.c
- $(CC) -c $(MFLAGS) $C\el
-
-evalu8.obj : $C\evalu8.c
- $(CC) -c $(MFLAGS) $C\evalu8
-
-go.obj : $C\go.c
- $(CC) -c $(MFLAGS) $C\go
-
-gflow.obj : $C\gflow.c
- $(CC) -c $(MFLAGS) $C\gflow
-
-gdag.obj : $C\gdag.c
- $(CC) -c $(MFLAGS) $C\gdag
-
-gother.obj : $C\gother.c
- $(CC) -c $(MFLAGS) $C\gother
-
-glocal.obj : $C\rtlsym.h $C\glocal.c
- $(CC) -c $(MFLAGS) $C\glocal
-
-gloop.obj : $C\gloop.c
- $(CC) -c $(MFLAGS) $C\gloop
-
-glue.obj : $(CH) $(TOTALH) $C\rtlsym.h mars.h module.h glue.c
- $(CC) -c $(MFLAGS) -I$(ROOT) glue
-
-html.obj : $(CH) $(TOTALH) $C\html.h $C\html.c
- $(CC) -c -I$(ROOT) $(MFLAGS) $C\html
-
-mars2.obj : $(TOTALH) module.h mars.h mars2.c
- $(CC) -c $(CFLAGS) $(PREC) $* -Ae
-
-md5.obj : $C\md5.h $C\md5.c
- $(CC) -c $(MFLAGS) $C\md5
-
-module.obj : $(TOTALH) $C\html.h module.c
- $(CC) -c $(CFLAGS) -I$C $(PREC) module.c
-
-msc.obj : $(CH) mars.h msc.c
- $(CC) -c $(MFLAGS) msc
-
-newman.obj : $(CH) $C\newman.c
- $(CC) -c $(MFLAGS) $C\newman
-
-nteh.obj : $C\rtlsym.h $C\nteh.c
- $(CC) -c $(MFLAGS) $C\nteh
-
-os.obj : $C\os.c
- $(CC) -c $(MFLAGS) $C\os
-
-out.obj : $C\out.c
- $(CC) -c $(MFLAGS) $C\out
-
-outbuf.obj : $C\outbuf.h $C\outbuf.c
- $(CC) -c $(MFLAGS) $C\outbuf
-
-ph.obj : ph.c
- $(CC) -c $(MFLAGS) ph
-
-ptrntab.obj : $C\iasm.h $C\ptrntab.c
- $(CC) -c $(MFLAGS) $C\ptrntab
-
-rtlsym.obj : $C\rtlsym.h $C\rtlsym.c
- $(CC) -c $(MFLAGS) $C\rtlsym
-
-ti_achar.obj : $C\tinfo.h $C\ti_achar.c
- $(CC) -c $(MFLAGS) -I. $C\ti_achar
-
-toctype.obj : $(CH) $(TOTALH) $C\rtlsym.h mars.h module.h toctype.c
- $(CC) -c $(MFLAGS) -I$(ROOT) toctype
-
-tocvdebug.obj : $(CH) $(TOTALH) $C\rtlsym.h mars.h module.h tocvdebug.c
- $(CC) -c $(MFLAGS) -I$(ROOT) tocvdebug
-
-toobj.obj : $(CH) $(TOTALH) mars.h module.h toobj.c
- $(CC) -c $(MFLAGS) -I$(ROOT) toobj
-
-type.obj : $C\type.c
- $(CC) -c $(MFLAGS) $C\type
-
-typinf.obj : $(CH) $(TOTALH) $C\rtlsym.h mars.h module.h typinf.c
- $(CC) -c $(MFLAGS) -I$(ROOT) typinf
-
-todt.obj : mtype.h expression.h $C\dt.h todt.c
- $(CC) -c -I$(ROOT) $(MFLAGS) todt
-
-s2ir.obj : $C\rtlsym.h statement.h s2ir.c
- $(CC) -c -I$(ROOT) $(MFLAGS) s2ir
-
-e2ir.obj : $C\rtlsym.h expression.h toir.h e2ir.c
- $(CC) -c -I$(ROOT) $(MFLAGS) e2ir
-
-toir.obj : $C\rtlsym.h expression.h toir.h toir.c
- $(CC) -c -I$(ROOT) $(MFLAGS) toir
-
-tocsym.obj : $(CH) $(TOTALH) mars.h module.h tocsym.c
- $(CC) -c $(MFLAGS) -I$(ROOT) tocsym
-
-util.obj : util.c
- $(CC) -c $(MFLAGS) util
-
-var.obj : $C\var.c optab.c
- $(CC) -c $(MFLAGS) -I. $C\var
-
-
-tk.obj : tk.c
- $(CC) -c $(MFLAGS) tk.c
-
-# ROOT
-
-array.obj : $(ROOT)\array.c
- $(CC) -c $(CFLAGS) $(ROOT)\array.c
-
-async.obj : $(ROOT)\async.h $(ROOT)\async.c
- $(CC) -c $(CFLAGS) $(ROOT)\async.c
-
-dchar.obj : $(ROOT)\dchar.c
- $(CC) -c $(CFLAGS) $(ROOT)\dchar.c
-
-gnuc.obj : $(ROOT)\gnuc.c
- $(CC) -c $(CFLAGS) $(ROOT)\gnuc.c
-
-lstring.obj : $(ROOT)\lstring.c
- $(CC) -c $(CFLAGS) $(ROOT)\lstring.c
-
-man.obj : $(ROOT)\man.c
- $(CC) -c $(CFLAGS) $(ROOT)\man.c
-
-rmem.obj : $(ROOT)\rmem.c
- $(CC) -c $(CFLAGS) $(ROOT)\rmem.c
-
-port.obj : $(ROOT)\port.c
- $(CC) -c $(CFLAGS) $(ROOT)\port.c
-
-root.obj : $(ROOT)\root.c
- $(CC) -c $(CFLAGS) $(ROOT)\root.c
-
-response.obj : $(ROOT)\response.c
- $(CC) -c $(CFLAGS) $(ROOT)\response.c
-
-stringtable.obj : $(ROOT)\stringtable.c
- $(CC) -c $(CFLAGS) $(ROOT)\stringtable.c
-
-
-################# Source file dependencies ###############
-
-access.obj : $(TOTALH) enum.h aggregate.h init.h attrib.h access.c
-aliasthis.obj : $(TOTALH) aliasthis.h aliasthis.c
-arrayop.obj : $(TOTALH) identifier.h declaration.h arrayop.c
-attrib.obj : $(TOTALH) identifier.h declaration.h attrib.h attrib.c
-builtin.obj : $(TOTALH) builtin.c
-cast.obj : $(TOTALH) expression.h mtype.h cast.c
-class.obj : $(TOTALH) enum.h class.c
-clone.obj : $(TOTALH) clone.c
-constfold.obj : $(TOTALH) expression.h constfold.c
-cond.obj : $(TOTALH) identifier.h declaration.h cond.h cond.c
-declaration.obj : $(TOTALH) identifier.h attrib.h declaration.h declaration.c
-delegatize.obj : $(TOTALH) delegatize.c
-doc.obj : $(TOTALH) doc.h doc.c
-enum.obj : $(TOTALH) identifier.h enum.h enum.c
-expression.obj : $(TOTALH) expression.h expression.c
-func.obj : $(TOTALH) identifier.h attrib.h declaration.h func.c
-hdrgen.obj : $(TOTALH) hdrgen.h hdrgen.c
-id.obj : $(TOTALH) id.h id.c
-identifier.obj : $(TOTALH) identifier.h identifier.c
-import.obj : $(TOTALH) dsymbol.h import.h import.c
-inifile.obj : $(TOTALH) inifile.c
-init.obj : $(TOTALH) init.h init.c
-inline.obj : $(TOTALH) inline.c
-interpret.obj : $(TOTALH) interpret.c
-json.obj : $(TOTALH) json.h json.c
-lexer.obj : $(TOTALH) lexer.c
-libomf.obj : $(TOTALH) lib.h libomf.c
-link.obj : $(TOTALH) link.c
-macro.obj : $(TOTALH) macro.h macro.c
-mangle.obj : $(TOTALH) dsymbol.h declaration.h mangle.c
-#module.obj : $(TOTALH) mars.h $C\html.h module.h module.c
-opover.obj : $(TOTALH) expression.h opover.c
-optimize.obj : $(TOTALH) expression.h optimize.c
-parse.obj : $(TOTALH) attrib.h lexer.h parse.h parse.c
-scope.obj : $(TOTALH) scope.h scope.c
-statement.obj : $(TOTALH) statement.h statement.c
-staticassert.obj : $(TOTALH) staticassert.h staticassert.c
-struct.obj : $(TOTALH) identifier.h enum.h struct.c
-traits.obj : $(TOTALH) traits.c
-dsymbol.obj : $(TOTALH) identifier.h dsymbol.h dsymbol.c
-mtype.obj : $(TOTALH) mtype.h mtype.c
-#typinf.obj : $(TOTALH) mtype.h typinf.c
-utf.obj : utf.h utf.c
-template.obj : $(TOTALH) template.h template.c
-version.obj : $(TOTALH) identifier.h dsymbol.h cond.h version.h version.c
-
-################### Utilities ################
-
-clean:
- del *.obj
- del total.sym
- del msgs.h msgs.c
- del elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c
- del impcnvtab.c
-
-zip : $(MAKEFILES)
- del dmdsrc.zip
- zip32 dmdsrc $(MAKEFILES)
- zip32 dmdsrc $(SRCS)
- zip32 dmdsrc $(BACKSRC)
- zip32 dmdsrc $(TKSRC)
- zip32 dmdsrc $(ROOTSRC)
-
-################### Install ################
-
-install:
- copy dmd.exe $(DIR)\windows\bin\
- copy phobos\phobos.lib $(DIR)\windows\lib
- $(CP) $(SRCS) $(DIR)\src\dmd\
- $(CP) $(ROOTSRC) $(DIR)\src\dmd\root\
- $(CP) $(TKSRC) $(DIR)\src\dmd\tk\
- $(CP) $(BACKSRC) $(DIR)\src\dmd\backend\
- $(CP) $(MAKEFILES) $(DIR)\src\dmd\
- copy gpl.txt $(DIR)\src\dmd\
- copy readme.txt $(DIR)\src\dmd\
- copy artistic.txt $(DIR)\src\dmd\
- copy backendlicense.txt $(DIR)\src\dmd\
-
-################### Write to SVN ################
-
-svn:
- $(CP) $(SRCS) $(DMDSVN)\
- $(CP) $(ROOTSRC) $(DMDSVN)\root\
- $(CP) $(TKSRC) $(DMDSVN)\tk\
- $(CP) $(BACKSRC) $(DMDSVN)\backend\
- $(CP) $(MAKEFILES) $(DMDSVN)\
- copy gpl.txt $(DMDSVN)\
- copy readme.txt $(DMDSVN)\
- copy artistic.txt $(DMDSVN)\
- copy backendlicense.txt $(DMDSVN)\
-
-###################################