# HG changeset patch # User Jacob Carlborg # Date 1288684191 -3600 # Node ID 13cf8da225ce3bcc0b574aee13c2fb48cc745de1 # Parent 9f4e5ac4f0a3283787ccc0e740192a418536fc00# Parent b64060ab22dfd21711c9badaa853a3af7d6e5fff Merge. diff -r b64060ab22df -r 13cf8da225ce .hgignore --- a/.hgignore Sat Oct 30 05:05:32 2010 +0400 +++ b/.hgignore Tue Nov 02 08:49:51 2010 +0100 @@ -5,9 +5,12 @@ \.map$ \.obj$ +\.o$ glob:dmd2/* glob:dmd.*.zip glob:buildHelper.d.deps glob:buildHelper.exe glob:dmd.lib glob:bin/* +glob:libdmd.a +glob:*.orig diff -r b64060ab22df -r 13cf8da225ce bin/dmd.conf --- a/bin/dmd.conf Sat Oct 30 05:05:32 2010 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -[Environment] -DFLAGS=-I%@P%/../dmd33/dmd2/src/druntime/import/ -I%@P%/../dmd33/dmd2/src/druntime/src/common/ -I%@P%/../dmd33/dmd2/src/phobos/ -L-L%@P%/../dmd33/dmd2/linux/lib -;CC=i686-unknown-linux-gnu-gcc diff -r b64060ab22df -r 13cf8da225ce build.sh --- a/build.sh Sat Oct 30 05:05:32 2010 +0400 +++ b/build.sh Tue Nov 02 08:49:51 2010 +0100 @@ -3,7 +3,7 @@ # but supports extra optional command line arguments. # Too see the supported args, run: ./build.sh --help -rdmd -unittest buildHelper.d "$@" +rdmd buildHelper.d "$@" # Old buildscript: ##i686-unknown-linux-gnu-g++ -c bridge/bridge.cpp -obridge.o diff -r b64060ab22df -r 13cf8da225ce buildHelper.d --- a/buildHelper.d Sat Oct 30 05:05:32 2010 +0400 +++ b/buildHelper.d Tue Nov 02 08:49:51 2010 +0100 @@ -10,20 +10,28 @@ enum dmdVersionDefault = "2.040"; enum dmdArchiveBaseURL = "http://ftp.digitalmars.com/"; -enum dmdLib = "dmd.lib"; +enum dmd = "dmd"; + version(Windows) { enum scriptName = "build.bat"; enum osSubDir = "windows"; enum configFile = "sc.ini"; enum execExt = ".exe"; + enum dmdLib = "dmd.lib"; } else { + version (OSX) + enum osSubDir = "osx"; + + else version (linux) + enum osSubDir = "linux"; + enum scriptName = "./build.sh"; - enum osSubDir = "linux"; enum configFile = "dmd.conf"; enum execExt = ""; + enum dmdLib = "libdmd.a"; } string dmdVersion; @@ -183,7 +191,12 @@ enum makefile = "win32.mak"; else { - enum makefile = "linux_lib.mak"; + version (linux) + enum makefile = "linux_lib.mak"; + + else version (OSX) + enum makefile = "osx_lib.mak"; + doCopy("../../../"~makefile, makefile); } @@ -204,7 +217,7 @@ doSystem("make deblib -f"~makefile); else doSystem("make -f"~makefile); - doCopy("dmd.lib", "../../../dmd.lib"); + doCopy(dmdLib, "../../../" ~ dmdLib); // Copy and patch config file doChDir("../../.."); @@ -213,12 +226,13 @@ normFilePath("bin/"~configFile), (ref string data) { data = data.replace(normDirPath("../.."), normDirPath("../dmd2")); - data = data.replace(normDirPath("../lib"), normDirPath("../dmd2/"~osSubDir~"/lib")); + data = data.replace(normDirPath("../lib")[0 .. $ - 1], normDirPath("../dmd2/"~osSubDir~"/lib")[0 .. $ - 1]); } ); // Copy linker - doCopy("dmd2/"~osSubDir~"/bin/link"~execExt, "bin/link"~execExt); + version (Windows) + doCopy("dmd2/"~osSubDir~"/bin/link"~execExt, "bin/link"~execExt); return true; } @@ -317,14 +331,20 @@ { system("cls"); if(ret == 0) ret = doSystem(r"dmc.exe bridge\bridge.cpp -c"); - if(!releaseOnly) if(ret == 0) ret = doSystem(r"dmd -debug -g @commands.txt"); - if(!debugOnly) if(ret == 0) ret = doSystem(r"dmd -release -O -inline @commands.txt"); + if(!releaseOnly) if(ret == 0) ret = doSystem(dmd ~ r" -debug -g @commands.txt"); + if(!debugOnly) if(ret == 0) ret = doSystem(dmd ~ r" -release -O -inline @commands.txt"); } else { - if(ret == 0) ret = doSystem("g++ -c bridge/bridge.cpp -obridge.o"); - if(!releaseOnly) if(ret == 0) ret = doSystem("dmd -debug -gc @commands.linux.txt"); - if(!debugOnly) if(ret == 0) ret = doSystem("dmd -release -O -inline @commands.linux.txt"); + version (linux) + auto commands = "@commands.linux.txt"; + + else version (OSX) + auto commands = "@commands.osx.txt"; + + if(ret == 0) ret = doSystem("g++ -m32 -c bridge/bridge.cpp -obridge.o"); + if(!releaseOnly) if(ret == 0) ret = doSystem(dmd ~ " -debug -gc " ~ commands); + if(!debugOnly) if(ret == 0) ret = doSystem(dmd ~ " -release -O -inline " ~ commands); } return ret; diff -r b64060ab22df -r 13cf8da225ce commands.linux.txt --- a/commands.linux.txt Sat Oct 30 05:05:32 2010 +0400 +++ b/commands.linux.txt Tue Nov 02 08:49:51 2010 +0100 @@ -17,14 +17,14 @@ -version=SNAN_DEFAULT_INIT -version=SARRAYVALUE -version=MODULEINFO_IS_STRUCT +-version=CPP_MANGLE -ofbin/ddmd bridge.o --L-Ldmd32/dmd2/src/dmd +-L-Ldmd2/src/dmd -L-ldmd -L-lstdc++ main.d -dbg/CallStackInfo.d dbg/Debug.d dbg/symbol/CodeView.d dmd/AggregateDeclaration.d @@ -90,6 +90,7 @@ dmd/TypeInfoPointerDeclaration.d dmd/TypeInfoStaticArrayDeclaration.d dmd/TypeInfoAssociativeArrayDeclaration.d +dmd/TypeInfoFunctionDeclaration.d dmd/DsymbolExp.d dmd/GlobalExpressions.d dmd/NewExp.d diff -r b64060ab22df -r 13cf8da225ce commands.osx.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commands.osx.txt Tue Nov 02 08:49:51 2010 +0100 @@ -0,0 +1,399 @@ +-version=Bug3602 +-version=Bug4054 +-version=Bug4059 +-version=DMDV2 +-version=TX86 +-version=MARS +-version=TARGET_OSX +-version=POSIX +-version=MACHOBJ +-version=ELFOBJ_OR_MACHOBJ +-version=NobodyCares +-version=DumbClone +-version=STRUCTTHISREF +-version=CCASTSYNTAX +-version=CARRAYDECL +-version=BREAKABI +-version=SNAN_DEFAULT_INIT +-version=SARRAYVALUE +-version=MODULEINFO_IS_STRUCT +-version=CPP_MANGLE +-ofbin/ddmd + +bridge.o +libdmd.a +-L-lstdc++ +-L-framework -LCoreServices +main.d +dbg/Debug.d +dbg/symbol/CodeView.d +dmd/AggregateDeclaration.d +dmd/VarExp.d +dmd/Tuple.d +dmd/UnrolledLoopStatement.d +dmd/SwitchErrorStatement.d +dmd/NewAnonClassExp.d +dmd/StructLiteralExp.d +dmd/StaticIfCondition.d +dmd/BoolExp.d +dmd/ShlAssignExp.d +dmd/ShrAssignExp.d +dmd/UshrAssignExp.d +dmd/CatAssignExp.d +dmd/Port.d +dmd/Gnuc.d +dmd/declaration/Match.d +dmd/interpret/Util.d +dmd/templates/Util.d +dmd/expression/Util.d +dmd/expression/Add.d +dmd/expression/Bool.d +dmd/expression/Xor.d +dmd/expression/Ptr.d +dmd/expression/Min.d +dmd/expression/And.d +dmd/expression/Shr.d +dmd/expression/Not.d +dmd/expression/Mod.d +dmd/expression/Mul.d +dmd/expression/Com.d +dmd/expression/Ushr.d +dmd/expression/Shl.d +dmd/expression/Div.d +dmd/expression/Cmp.d +dmd/expression/Identity.d +dmd/expression/ArrayLength.d +dmd/expression/Equal.d +dmd/expression/Or.d +dmd/expression/Neg.d +dmd/expression/Cat.d +dmd/expression/Slice.d +dmd/expression/Index.d +dmd/expression/shift_optimize.d +dmd/expression/util/arrayTypeCompatible.d +dmd/condition/util/findCondition.d +dmd/OverExp.d +dmd/Cast.d +dmd/TupleExp.d +dmd/ArrayLengthExp.d +dmd/TypeInfoConstDeclaration.d +dmd/TypeInfoInvariantDeclaration.d +dmd/TypeInfoWildDeclaration.d +dmd/TypeInfoSharedDeclaration.d +dmd/TypeInfoStructDeclaration.d +dmd/TypeInfoInterfaceDeclaration.d +dmd/TypeInfoEnumDeclaration.d +dmd/TypeInfoClassDeclaration.d +dmd/TypeInfoArrayDeclaration.d +dmd/TypeInfoDelegateDeclaration.d +dmd/TypeInfoTypedefDeclaration.d +dmd/TypeInfoPointerDeclaration.d +dmd/TypeInfoStaticArrayDeclaration.d +dmd/TypeInfoAssociativeArrayDeclaration.d +dmd/TypeInfoFunctionDeclaration.d +dmd/DsymbolExp.d +dmd/GlobalExpressions.d +dmd/NewExp.d +dmd/PeelStatement.d +dmd/HaltExp.d +dmd/SymOffExp.d +dmd/type/Util.d +dmd/SymbolExp.d +dmd/Optimize.d +dmd/DotVarExp.d +dmd/DeclarationExp.d +dmd/TraitsExp.d +dmd/ComplexExp.d +dmd/ErrorExp.d +dmd/AssignExp.d +dmd/DotExp.d +dmd/AliasDeclaration.d +dmd/DefaultInitExp.d +dmd/FileInitExp.d +dmd/LineInitExp.d +dmd/AnonDeclaration.d +dmd/AliasThis.d +dmd/AlignDeclaration.d +dmd/AnonymousAggregateDeclaration.d +dmd/Parameter.d +dmd/FuncExp.d +dmd/ArrayLiteralExp.d +dmd/AssocArrayLiteralExp.d +dmd/AssertExp.d +dmd/IsExp.d +dmd/TypeExp.d +dmd/StringExp.d +dmd/NullExp.d +dmd/RealExp.d +dmd/ThisExp.d +dmd/ScopeExp.d +dmd/Array.d +dmd/DotIdExp.d +dmd/FileExp.d +dmd/SuperExp.d +dmd/TypeidExp.d +dmd/CompileExp.d +dmd/IdentifierExp.d +dmd/DollarExp.d +dmd/AndAndExp.d +dmd/DotTemplateInstanceExp.d +dmd/OrExp.d +dmd/PostExp.d +dmd/CallExp.d +dmd/SliceExp.d +dmd/ArrayExp.d +dmd/AddrExp.d +dmd/UAddExp.d +dmd/XorExp.d +dmd/CommaExp.d +dmd/BinExp.d +dmd/CondExp.d +dmd/OrOrExp.d +dmd/AndExp.d +dmd/InExp.d +dmd/EqualExp.d +dmd/CmpExp.d +dmd/ShlExp.d +dmd/AddExp.d +dmd/CatExp.d +dmd/MinExp.d +dmd/MulExp.d +dmd/ModExp.d +dmd/DivExp.d +dmd/ShrExp.d +dmd/UshrExp.d +dmd/CastExp.d +dmd/DeleteExp.d +dmd/ComExp.d +dmd/NotExp.d +dmd/UnaExp.d +dmd/NegExp.d +dmd/PtrExp.d +dmd/IntegerExp.d +dmd/AddAssignExp.d +dmd/AndAssignExp.d +dmd/DivAssignExp.d +dmd/MinAssignExp.d +dmd/ModAssignExp.d +dmd/MulAssignExp.d +dmd/OrAssignExp.d +dmd/XorAssignExp.d +dmd/IdentityExp.d +dmd/ArrayInitializer.d +dmd/ArrayScopeSymbol.d +dmd/ArrayTypes.d +dmd/AsmStatement.d +dmd/AttribDeclaration.d +dmd/BUILTIN.d +dmd/BaseClass.d +dmd/BreakStatement.d +dmd/CaseRangeStatement.d +dmd/CaseStatement.d +dmd/Catch.d +dmd/ClassDeclaration.d +dmd/ClassInfoDeclaration.d +dmd/CompileDeclaration.d +dmd/CompileStatement.d +dmd/CompoundDeclarationStatement.d +dmd/CompoundStatement.d +dmd/Condition.d +dmd/ConditionalDeclaration.d +dmd/ConditionalStatement.d +dmd/ContinueStatement.d +dmd/CppMangleState.d +dmd/CtorDeclaration.d +dmd/DVCondition.d +dmd/Dchar.d +dmd/DebugCondition.d +dmd/DebugSymbol.d +dmd/Declaration.d +dmd/DeclarationStatement.d +dmd/DefaultStatement.d +dmd/DeleteDeclaration.d +dmd/DoStatement.d +dmd/DocComment.d +dmd/Dsymbol.d +dmd/DsymbolTable.d +dmd/DtorDeclaration.d +dmd/EnumDeclaration.d +dmd/EnumMember.d +dmd/Escape.d +dmd/ExpInitializer.d +dmd/ExpStatement.d +dmd/Expression.d +dmd/File.d +dmd/FileName.d +dmd/ForStatement.d +dmd/ForeachRangeStatement.d +dmd/ForeachStatement.d +dmd/FuncAliasDeclaration.d +dmd/FuncDeclaration.d +dmd/FuncLiteralDeclaration.d +dmd/Global.d +dmd/GotoCaseStatement.d +dmd/GotoDefaultStatement.d +dmd/GotoStatement.d +dmd/HdrGenState.d +dmd/ILS.d +dmd/IRState.d +dmd/Id.d +dmd/Identifier.d +dmd/IfStatement.d +dmd/Import.d +dmd/Initializer.d +dmd/InlineCostState.d +dmd/InlineDoState.d +dmd/InlineScanState.d +dmd/IntRange.d +dmd/InterState.d +dmd/InterfaceDeclaration.d +dmd/InvariantDeclaration.d +dmd/Json.d +dmd/LINK.d +dmd/LabelDsymbol.d +dmd/LabelStatement.d +dmd/Lexer.d +dmd/Library.d +dmd/LinkDeclaration.d +dmd/Loc.d +dmd/Lstring.d +dmd/MATCH.d +dmd/Macro.d +dmd/Module.d +dmd/ModuleDeclaration.d +dmd/ModuleInfoDeclaration.d +dmd/NewDeclaration.d +dmd/ObjModule.d +dmd/OnScopeStatement.d +dmd/OutBuffer.d +dmd/OverloadSet.d +dmd/PREC.d +dmd/PROT.d +dmd/Package.d +dmd/Param.d +dmd/Parser.d +dmd/PostBlitDeclaration.d +dmd/PowExp.d +dmd/PowAssignExp.d +dmd/PragmaDeclaration.d +dmd/PragmaStatement.d +dmd/ProtDeclaration.d +dmd/RET.d +dmd/ReturnStatement.d +dmd/STC.d +dmd/Scope.d +dmd/ScopeDsymbol.d +dmd/ScopeStatement.d +dmd/Section.d +dmd/Statement.d +dmd/StaticAssert.d +dmd/StaticAssertStatement.d +dmd/StaticCtorDeclaration.d +dmd/StaticDtorDeclaration.d +dmd/StaticIfDeclaration.d +dmd/StorageClassDeclaration.d +dmd/String.d +dmd/StringEntry.d +dmd/StringTable.d +dmd/StringValue.d +dmd/StructDeclaration.d +dmd/StructInitializer.d +dmd/SwitchStatement.d +dmd/SymbolDeclaration.d +dmd/SynchronizedStatement.d +dmd/SharedStaticCtorDeclaration.d +dmd/SharedStaticDtorDeclaration.d +dmd/TOK.d +dmd/TRUST.d +dmd/TY.d +dmd/TemplateAliasParameter.d +dmd/TemplateDeclaration.d +dmd/TemplateInstance.d +dmd/TemplateMixin.d +dmd/TemplateParameter.d +dmd/TemplateThisParameter.d +dmd/TemplateTupleParameter.d +dmd/TemplateTypeParameter.d +dmd/TemplateValueParameter.d +dmd/ThisDeclaration.d +dmd/ThrowStatement.d +dmd/Token.d +dmd/TryCatchStatement.d +dmd/TryFinallyStatement.d +dmd/TupleDeclaration.d +dmd/Type.d +dmd/TypeAArray.d +dmd/TypeArray.d +dmd/TypeBasic.d +dmd/TypeClass.d +dmd/TypeDArray.d +dmd/TypeDelegate.d +dmd/TypeEnum.d +dmd/TypeFunction.d +dmd/TypeIdentifier.d +dmd/TypeInfoDeclaration.d +dmd/TypeInstance.d +dmd/TypeNewArray.d +dmd/TypeNext.d +dmd/TypePointer.d +dmd/TypeQualified.d +dmd/TypeReference.d +dmd/TypeReturn.d +dmd/TypeSArray.d +dmd/EnumUtils.d +dmd/TypeSlice.d +dmd/TypeStruct.d +dmd/TypeTuple.d +dmd/TypeTypedef.d +dmd/TypeTypeof.d +dmd/TypedefDeclaration.d +dmd/TypeInfoTupleDeclaration +dmd/UnionDeclaration.d +dmd/UnitTestDeclaration.d +dmd/Utf.d +dmd/Util.d +dmd/DotTemplateExp.d +dmd/DelegateExp.d +dmd/RemoveExp.d +dmd/TemplateExp.d +dmd/DotTypeExp.d +dmd/IndexExp.d +dmd/TObject.d +dmd/VarDeclaration.d +dmd/VersionCondition.d +dmd/VersionSymbol.d +dmd/VoidInitializer.d +dmd/VolatileStatement.d +dmd/WhileStatement.d +dmd/WithScopeSymbol.d +dmd/WithStatement.d +dmd/backend/Blockx.d +dmd/backend/enum_t.d +dmd/backend/Symbol.d +dmd/backend/Util.d +dmd/backend/TYPE.d +dmd/backend/TYM.d +dmd/backend/mTY.d +dmd/backend/block.d +dmd/backend/code.d +dmd/backend/glue.d +dmd/backend/dt_t.d +dmd/backend/elem.d +dmd/backend/func_t.d +dmd/backend/Cstate.d +dmd/backend/TYFL.d +dmd/backend/RTLSYM.d +dmd/backend/symtab_t.d +dmd/backend/Classsym.d +dmd/backend/con_t.d +dmd/backend/cse_t.d +dmd/backend/struct_t.d +dmd/backend/OPER.d +dmd/backend/StringTab.d +dmd/backend/DT.d +dmd/backend/Configv.d +dmd/backend/iasm.d +dmd/backend/rel.d +dmd/backend/LIST.d +dmd/codegen/Util.d +dmd/codegen/linkhelper.d \ No newline at end of file diff -r b64060ab22df -r 13cf8da225ce dmd/Declaration.d --- a/dmd/Declaration.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/Declaration.d Tue Nov 02 08:49:51 2010 +0100 @@ -15,6 +15,12 @@ import dmd.VarDeclaration; import dmd.OutBuffer; +version (CPP_MANGLE) +{ + import dmd.backend.glue; + import std.conv : to; +} + import std.stdio : writef; import core.stdc.ctype; diff -r b64060ab22df -r 13cf8da225ce dmd/File.d --- a/dmd/File.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/File.d Tue Nov 02 08:49:51 2010 +0100 @@ -111,7 +111,7 @@ goto err2; } - off_t size = buf.st_size; + size_t size = cast(size_t) buf.st_size; buffer = cast(ubyte*)GC.malloc(size + 2); if (buffer is null) { printf("\tmalloc error, errno = %d\n", errno); diff -r b64060ab22df -r 13cf8da225ce dmd/Library.d --- a/dmd/Library.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/Library.d Tue Nov 02 08:49:51 2010 +0100 @@ -1009,3 +1009,26 @@ } } + +else version (TARGET_OSX) +{ + import dmd.TObject; + + class Library : TObject + { + void setFilename(string dir, string filename) + { + assert(0); + } + + void addObject(string module_name, void *buf, size_t buflen) + { + assert(0); + } + + void write() + { + assert(0); + } + } +} \ No newline at end of file diff -r b64060ab22df -r 13cf8da225ce dmd/SwitchStatement.d --- a/dmd/SwitchStatement.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/SwitchStatement.d Tue Nov 02 08:49:51 2010 +0100 @@ -50,6 +50,9 @@ import dmd.backend.RTLSYM; import dmd.backend.targ_types; +version (MACHOBJ) + import dmd.Module; + import core.memory; import core.stdc.stdlib; diff -r b64060ab22df -r 13cf8da225ce dmd/Type.d --- a/dmd/Type.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/Type.d Tue Nov 02 08:49:51 2010 +0100 @@ -936,6 +936,8 @@ } version (CPP_MANGLE) { + import dmd.CppMangleState; + void toCppMangle(OutBuffer buf, CppMangleState* cms) { assert(false); diff -r b64060ab22df -r 13cf8da225ce dmd/TypeDArray.d --- a/dmd/TypeDArray.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/TypeDArray.d Tue Nov 02 08:49:51 2010 +0100 @@ -281,7 +281,10 @@ } version (CPP_MANGLE) { - void toCppMangle(OutBuffer buf, CppMangleState* cms); + void toCppMangle(OutBuffer buf, CppMangleState* cms) + { + assert(false); + } } override type* toCtype() diff -r b64060ab22df -r 13cf8da225ce dmd/Util.d --- a/dmd/Util.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/Util.d Tue Nov 02 08:49:51 2010 +0100 @@ -58,6 +58,8 @@ import dmd.Gnuc; import core.sys.posix.stdlib; version (TARGET_FOS) import core.stdc.limits; + + enum PATH_MAX = 1024; } enum MAX_PATH = 256; /// @@ -115,7 +117,7 @@ return result; } -char* strupr(char* s) +extern (C++) char* strupr(char* s) { char* t = s; @@ -192,7 +194,7 @@ */ version (TARGET_FOS) {/// #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 char resolved_name[PATH_MAX + 1]; - char* real_argv0 = realpath(toStringz(argv0), resolved_name); + char* real_argv0 = realpath(toStringz(argv0), resolved_name.ptr); } else { char* real_argv0 = realpath(toStringz(argv0), null); } @@ -591,7 +593,7 @@ } } -void halt() +extern (C++) void halt() { assert(false); } @@ -919,7 +921,7 @@ global.params.mapfile = cast(string)m[0..mlen]; } argv.push(cast(void*)"-Xlinker".ptr); - argv.push(global.params.mapfile.ptr); + argv.push(cast(void*)global.params.mapfile.ptr); } if (0 && global.params.exefile) diff -r b64060ab22df -r 13cf8da225ce dmd/backend/glue.d --- a/dmd/backend/glue.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/backend/glue.d Tue Nov 02 08:49:51 2010 +0100 @@ -38,11 +38,28 @@ void util_set386(); } } +else version (OSX) +{ + extern (C++) + { + int go_flag(char* cp); + void util_set64(); + void util_set386(); + } +} else { static assert(false, "fix this"); } +version (CPP_MANGLE) +{ + string cpp_mangle(Dsymbol s) + { + assert(false, "port c++ mangling"); + } +} + import std.exception; import std.string; diff -r b64060ab22df -r 13cf8da225ce dmd/backend/iasm.d --- a/dmd/backend/iasm.d Sat Oct 30 05:05:32 2010 +0400 +++ b/dmd/backend/iasm.d Tue Nov 02 08:49:51 2010 +0100 @@ -4493,7 +4493,7 @@ { // backward reference from backend - __gshared int refparam; + extern __gshared int refparam; /********************************** * Return mask of registers used by block bp. diff -r b64060ab22df -r 13cf8da225ce dmdpatch.patch --- a/dmdpatch.patch Sat Oct 30 05:05:32 2010 +0400 +++ b/dmdpatch.patch Tue Nov 02 08:49:51 2010 +0100 @@ -13,7 +13,7 @@ { // 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) ++ 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? @@ -25,7 +25,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) ++ if (ident == Id::__sizeof || ident == Id::_alignof || ident == Id::mangleof) error(".%s property cannot be redefined", ident->toChars()); } return 1; @@ -37,7 +37,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::_alignof && ident != Id::offsetof && ident != Id::mangleof && ident != Id::stringof) { /* Rewrite: * p.ident @@ -49,7 +49,7 @@ { "size" }, { "__sizeof", "sizeof" }, - { "alignof" }, -+ { "__alignof", "alignof" }, ++ { "_alignof", "alignof" }, { "mangleof" }, { "stringof" }, { "tupleof" }, @@ -61,7 +61,7 @@ e = new ErrorExp(); } - else if (ident == Id::alignof) -+ else if (ident == Id::__alignof) ++ else if (ident == Id::_alignof) { e = new IntegerExp(loc, alignsize(), Type::tsize_t); } @@ -70,7 +70,7 @@ if (ident != Id::__sizeof && - ident != Id::alignof && -+ ident != Id::__alignof && ++ ident != Id::_alignof && ident != Id::init && ident != Id::mangleof && ident != Id::stringof && diff -r b64060ab22df -r 13cf8da225ce linux_lib.mak --- a/linux_lib.mak Sat Oct 30 05:05:32 2010 +0400 +++ b/linux_lib.mak Tue Nov 02 08:49:51 2010 +0100 @@ -159,7 +159,7 @@ $(CC) -c $(CFLAGS) $< cast.o: cast.c - $(CC) -c $(CFLAGS) $< + $(CC) -c $(CFLAGS) $< cg.o: fltables.c $C/cg.c $(CC) -c $(MFLAGS) -I. $C/cg.c @@ -219,7 +219,7 @@ $(CC) -c $(CFLAGS) $< irstate.o: irstate.h irstate.c - $(CC) -c $(MFLAGS) irstate.c + $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c csymbol.o : $C/symbol.c $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o @@ -255,7 +255,7 @@ $(CC) -c $(CFLAGS) $< dwarf.o: $C/dwarf.h $C/dwarf.c - $(CC) -c $(MFLAGS) $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 @@ -379,7 +379,7 @@ 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 @@ -444,7 +444,7 @@ $(CC) -c $(GFLAGS) -I$(ROOT) $< strtold.o: $C/strtold.c - $(CC) -c $C/strtold.c + gcc -m32 -c $C/strtold.c struct.o: struct.c $(CC) -c $(CFLAGS) $< diff -r b64060ab22df -r 13cf8da225ce main.d --- a/main.d Sat Oct 30 05:05:32 2010 +0400 +++ b/main.d Tue Nov 02 08:49:51 2010 +0100 @@ -33,7 +33,8 @@ import core.memory; -import dbg.CallStackInfo; +version (Windows) + import dbg.CallStackInfo; import dmd.Util; diff -r b64060ab22df -r 13cf8da225ce osx_lib.mak --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/osx_lib.mak Tue Nov 02 08:49:51 2010 +0100 @@ -0,0 +1,582 @@ + +C=backend +TK=tk +ROOT=root + +CC=g++ -m32 +#CC=/usr/bin/i686-unknown-linux-gnu-g++ + +#OPT=-g -g3 +#OPT=-O2 + +#COV=-fprofile-arcs -ftest-coverage + +GFLAGS = -Wno-deprecated -D__near= -D__pascal= -fno-exceptions -g -DDEBUG=1 $(COV) +#GFLAGS = -Wno-deprecated -D__near= -D__pascal= -fno-exceptions -O2 + +CFLAGS = $(GFLAGS) -I$(ROOT) -D__I86__=1 -DMARS=1 -DTARGET_OSX=1 -D_DH +MFLAGS = $(GFLAGS) -I$C -I$(TK) -D__I86__=1 -DMARS=1 -DTARGET_OSX=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= + +BACKEND_OBJS = array.o bcomplex.o blockopt.o code.o cg.o cg87.o \ + cgcod.o cgcs.o cgcv.o cgelem.o cgen.o cgreg.o \ + cgsched.o cod1.o cod2.o cod3.o cod4.o cod5.o \ + dchar.o debug.o dt.o ee.o el.o dwarf.o \ + evalu8.o gdag.o gflow.o glocal.o gloop.o gnuc.o \ + go.o gother.o html.o lstring.o rmem.o \ + nteh.o os.o out.o outbuf.o ptrntab.o \ + root.o rtlsym.o stringtable.o csymbol.o type.o var.o \ + strtold.o toelfdebug.o aa.o ti_achar.o man.o port.o \ + response.o async.o \ + libmach.o machobj.o + +FRONTEND_OBJS = access.o attrib.o bit.o cast.o class.o constfold.o \ + irstate.o cond.o declaration.o dsymbol.o dump.o e2ir.o \ + eh.o enum.o expression.o func.o glue.o id.o \ + identifier.o impcnvtab.o import.o inifile.o init.o inline.o \ + lexer.o link.o mangle.o mars.o module.o msc.o \ + mtype.o opover.o optimize.o parse.o ph.o s2ir.o \ + scope.o statement.o struct.o template.o tk.o tocsym.o \ + todt.o typinf.o util.o version.o utf.o staticassert.o \ + unialpha.o toobj.o toctype.o entity.o doc.o macro.o \ + hdrgen.o delegatize.o toir.o interpret.o traits.o builtin.o \ + clone.o aliasthis.o arrayop.o json.o iasm.o cppmangle.o + +SRC = win32.mak linux.mak osx.mak freebsd.mak solaris.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 objfile.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 \ + $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 + +DMD_OBJS = $(FRONTEND_OBJS) $(BACKEND_OBJS) + +all: dmd + +dmd: id.o optabgen $(DMD_OBJS) + ar rs libdmd.a $(BACKEND_OBJS) msc.o tk.o util.o entity.o ph.o eh.o + +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 + +debtab.c optab.c cdxxx.c elxxx.c fltables.c tytab.c : optabgen + ./optabgen + +######## idgen generates some source + +id.h id.c : idgen + ./idgen + +idgen : idgen.c + $(CC) idgen.c -o idgen + +id.o : id.h id.c + $(CC) -c $(CFLAGS) id.c + +######### impcnvgen generates some source + +impcnvtab.c : impcnvgen + ./impcnvgen + +impcnvgen : mtype.h impcnvgen.c + $(CC) $(CFLAGS) impcnvgen.c -o impcnvgen + +######### + +aa.o: $C/aa.h $C/tinfo.h $C/aa.c + $(CC) -c $(MFLAGS) -I. $C/aa.c + +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) $C/bcomplex.c + +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 + +identifier.o: identifier.c + $(CC) -c $(CFLAGS) $< + +impcnvtab.o: mtype.h impcnvtab.c + $(CC) -c $(CFLAGS) -I$(ROOT) impcnvtab.c + +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) -I. $< + +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) $< + +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 -m32 -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) $< + +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 libmach.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)