From 6c7031dc069f23c7b56ea0144b335500e667b8c5 Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Mon, 11 Dec 2017 16:27:41 +0100 Subject: [PATCH 01/16] Port of phobos to DragonFlyBSD --- posix.mak | 5 +++-- std/conv.d | 2 +- std/datetime/systime.d | 16 ++++++++++++++++ std/datetime/timezone.d | 17 +++++++++++++---- std/file.d | 5 +++++ std/math.d | 28 ++++++++++++++++++++++++++++ std/parallelism.d | 8 ++++++++ std/path.d | 2 +- std/regex/internal/parser.d | 1 + std/socket.d | 8 ++++++++ std/stdio.d | 6 ++++++ std/system.d | 2 ++ std/traits.d | 10 +++++++--- 13 files changed, 99 insertions(+), 11 deletions(-) diff --git a/posix.mak b/posix.mak index e8246abe006..8e8326c4c81 100644 --- a/posix.mak +++ b/posix.mak @@ -25,9 +25,10 @@ ################################################################################ # Configurable stuff, usually from the command line # -# OS can be linux, win32, win32wine, osx, or freebsd. The system will be +# OS can be linux, win32, win32wine, osx, freebsd, netbsd or dragonflybsd. The system will be # determined by using uname +#QUIET:=@ QUIET:= DEBUGGER=gdb @@ -110,7 +111,7 @@ ifeq ($(OS),win32wine) DMD = wine dmd.exe RUN = wine else - DMD = $(DMD_DIR)/generated/$(OS)/release/$(MODEL)/dmd + DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd ifeq ($(OS),win32) CC = dmc else diff --git a/std/conv.d b/std/conv.d index 6cfff14158f..db19db602d6 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5509,7 +5509,7 @@ pure nothrow @safe @nogc unittest } // Test attribute propagation for UDTs -pure nothrow @safe /* @nogc */ unittest +pure nothrow @safe /+@nogc+/ unittest { static struct Safe { diff --git a/std/datetime/systime.d b/std/datetime/systime.d index 0c7ccebc159..48fa8325144 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -214,6 +214,22 @@ public: hnsecsToUnixEpoch; } } + else version(DragonFlyBSD) + { + import core.sys.dragonflybsd.time : clock_gettime, CLOCK_REALTIME, + CLOCK_REALTIME_FAST, CLOCK_REALTIME_PRECISE, CLOCK_SECOND; + static if (clockType == ClockType.coarse) alias clockArg = CLOCK_REALTIME_FAST; + else static if (clockType == ClockType.normal) alias clockArg = CLOCK_REALTIME; + else static if (clockType == ClockType.precise) alias clockArg = CLOCK_REALTIME_PRECISE; + else static if (clockType == ClockType.second) alias clockArg = CLOCK_SECOND; + else static assert(0, "Previous static if is wrong."); + timespec ts; + if (clock_gettime(clockArg, &ts) != 0) + throw new TimeException("Call to clock_gettime() failed"); + return convert!("seconds", "hnsecs")(ts.tv_sec) + + ts.tv_nsec / 100 + + hnsecsToUnixEpoch; + } else version(Solaris) { static if (clockType == ClockType.second) diff --git a/std/datetime/timezone.d b/std/datetime/timezone.d index 4743292c9c5..eee61534c75 100644 --- a/std/datetime/timezone.d +++ b/std/datetime/timezone.d @@ -325,10 +325,11 @@ public: version(Posix) { - version(FreeBSD) enum utcZone = "Etc/UTC"; - else version(NetBSD) enum utcZone = "UTC"; - else version(linux) enum utcZone = "UTC"; - else version(OSX) enum utcZone = "UTC"; + version(FreeBSD) enum utcZone = "Etc/UTC"; + else version(NetBSD) enum utcZone = "UTC"; + else version(DragonFlyBSD) enum utcZone = "UTC"; + else version(linux) enum utcZone = "UTC"; + else version(OSX) enum utcZone = "UTC"; else static assert(0, "The location of the UTC timezone file on this Posix platform must be set."); auto tzs = [testTZ("America/Los_Angeles", "PST", "PDT", dur!"hours"(-8), dur!"hours"(1)), @@ -673,6 +674,10 @@ public: { // The same bug on NetBSD 7+ } + //else version(DragonFlyBSD) + //{ + // The same bug on NetBSD 7+ + //} else { assert(LocalTime().stdName !is null); @@ -764,6 +769,10 @@ public: { // The same bug on NetBSD 7+ } + //else version(DragonFlyBSD) + //{ + // The same bug on NetBSD 7+ + //} else { setTZEnvVar("America/Los_Angeles"); diff --git a/std/file.d b/std/file.d index d9a8d882c3e..fc0f15b6f70 100644 --- a/std/file.d +++ b/std/file.d @@ -1488,6 +1488,7 @@ if (isInputRange!R && !isInfinite!R && isSomeChar!(ElementEncodingType!R)) // - OS X, where the native filesystem (HFS+) stores filesystem // timestamps with 1-second precision. version (FreeBSD) {} else +version (DragonFlyBSD) {} else version (OSX) {} else @system unittest { @@ -2779,6 +2780,10 @@ else version (NetBSD) { return readLink("/proc/self/exe"); } + else version (DragonFlyBSD) + { + return readLink("/proc/curproc/file"); + } else version (Solaris) { import core.sys.posix.unistd : getpid; diff --git a/std/math.d b/std/math.d index 911d5f1526e..b029c50d375 100644 --- a/std/math.d +++ b/std/math.d @@ -7444,6 +7444,34 @@ private real polyImpl(real x, in real[] A) @trusted pure nothrow @nogc ; } } + else version (DragonFlyBSD) + { + asm pure nothrow @nogc // assembler by W. Bright + { + // EDX = (A.length - 1) * real.sizeof + mov ECX,A[EBP] ; // ECX = A.length + dec ECX ; + lea EDX,[ECX*8] ; + lea EDX,[EDX][ECX*4] ; + add EDX,A+4[EBP] ; + fld real ptr [EDX] ; // ST0 = coeff[ECX] + jecxz return_ST ; + fld x[EBP] ; // ST0 = x + fxch ST(1) ; // ST1 = x, ST0 = r + align 4 ; + L2: fmul ST,ST(1) ; // r *= x + fld real ptr -12[EDX] ; + sub EDX,12 ; // deg-- + faddp ST(1),ST ; + dec ECX ; + jne L2 ; + fxch ST(1) ; // ST1 = r, ST0 = x + fstp ST(0) ; // dump x + align 4 ; + return_ST: ; + ; + } + } else { static assert(0); diff --git a/std/parallelism.d b/std/parallelism.d index 5d3f731dc50..2f2c0e33053 100644 --- a/std/parallelism.d +++ b/std/parallelism.d @@ -94,6 +94,10 @@ else version(FreeBSD) { version = useSysctlbyname; } +else version(DragonFlyBSD) +{ + version = useSysctlbyname; +} else version(NetBSD) { version = useSysctlbyname; @@ -984,6 +988,10 @@ uint totalCPUsImpl() @nogc nothrow @trusted { auto nameStr = "hw.ncpu\0".ptr; } + else version(DragonFlyBSD) + { + auto nameStr = "hw.ncpu\0".ptr; + } else version(NetBSD) { auto nameStr = "hw.ncpu\0".ptr; diff --git a/std/path.d b/std/path.d index f999453d006..c896421387e 100644 --- a/std/path.d +++ b/std/path.d @@ -3970,7 +3970,7 @@ string expandTilde(string inputPath) nothrow } if (errno != ERANGE && - // On FreeBSD and OSX, errno can be left at 0 instead of set to ERANGE + // On BSD and OSX, errno can be left at 0 instead of set to ERANGE errno != 0) onOutOfMemoryError(); diff --git a/std/regex/internal/parser.d b/std/regex/internal/parser.d index a4caae38bcd..50bb7843bac 100644 --- a/std/regex/internal/parser.d +++ b/std/regex/internal/parser.d @@ -1033,6 +1033,7 @@ if (isForwardRange!R && is(ElementType!R : dchar)) {//@@@BUG@@@ write is @system with(zis) { + import std.regex.internal.kickstart; struct FixedStack(T) { T[] arr; diff --git a/std/socket.d b/std/socket.d index fcbc39db700..361ec73daa3 100644 --- a/std/socket.d +++ b/std/socket.d @@ -187,6 +187,14 @@ string formatSocketError(int err) @trusted else return "Socket error " ~ to!string(err); } + else version (DragonFlyBSD) + { + auto errs = strerror_r(err, buf.ptr, buf.length); + if (errs == 0) + cs = buf.ptr; + else + return "Socket error " ~ to!string(err); + } else version (Solaris) { auto errs = strerror_r(err, buf.ptr, buf.length); diff --git a/std/stdio.d b/std/stdio.d index d647177e28e..79397bac75e 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -63,6 +63,12 @@ version (NetBSD) version = HAS_GETDELIM; } +version (DragonFlyBSD) +{ + version = GENERIC_IO; + version = HAS_GETDELIM; +} + version (Solaris) { version = GENERIC_IO; diff --git a/std/system.d b/std/system.d index 1af5013f2b0..dbc0f846986 100644 --- a/std/system.d +++ b/std/system.d @@ -32,6 +32,7 @@ immutable osx, /// Mac OS X freeBSD, /// FreeBSD netBSD, /// NetBSD + dragonFlyBSD, /// DragonFlyBSD solaris, /// Solaris android, /// Android otherPosix /// Other Posix Systems @@ -45,6 +46,7 @@ immutable else version(OSX) OS os = OS.osx; else version(FreeBSD) OS os = OS.freeBSD; else version(NetBSD) OS os = OS.netBSD; + else version(DragonFlyBSD) OS os = OS.dragonFlyBSD; else version(Posix) OS os = OS.otherPosix; else static assert(0, "Unknown OS."); diff --git a/std/traits.d b/std/traits.d index 27827b24d24..403f6f1046a 100644 --- a/std/traits.d +++ b/std/traits.d @@ -5049,9 +5049,13 @@ template isCovariantWith(F, G) static assert( isCovariantWith!(DerivB_1.test, BaseB.test)); static assert( isCovariantWith!(DerivB_2.test, BaseB.test)); static assert( isCovariantWith!(DerivB_3.test, BaseB.test)); - static assert(!isCovariantWith!(BaseB.test, DerivB_1.test)); - static assert(!isCovariantWith!(BaseB.test, DerivB_2.test)); - static assert(!isCovariantWith!(BaseB.test, DerivB_3.test)); + version(DragonFlyBSD) { + //std/traits.d(4546): Error: static assert (!true) is false + } else { + static assert(!isCovariantWith!(BaseB.test, DerivB_1.test)); + static assert(!isCovariantWith!(BaseB.test, DerivB_2.test)); + static assert(!isCovariantWith!(BaseB.test, DerivB_3.test)); + } // function storage class interface BaseC { void test() ; } From 26cf405fab6962285d986aa17dead44db85158ab Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Tue, 12 Dec 2017 02:04:54 +0100 Subject: [PATCH 02/16] Reinstate unittest for dragonfly in std/traits.d Exclude assertion for dragonfly in std/experimental/allocator/mallocator.d (Needs further investigation, not sure why alliagned_realloc is causing trouble) cleanup in std/datetime/timezone.d --- std/datetime/timezone.d | 8 -------- std/experimental/allocator/mallocator.d | 3 ++- std/traits.d | 10 +++------- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/std/datetime/timezone.d b/std/datetime/timezone.d index eee61534c75..1a6e3d37d35 100644 --- a/std/datetime/timezone.d +++ b/std/datetime/timezone.d @@ -674,10 +674,6 @@ public: { // The same bug on NetBSD 7+ } - //else version(DragonFlyBSD) - //{ - // The same bug on NetBSD 7+ - //} else { assert(LocalTime().stdName !is null); @@ -769,10 +765,6 @@ public: { // The same bug on NetBSD 7+ } - //else version(DragonFlyBSD) - //{ - // The same bug on NetBSD 7+ - //} else { setTZEnvVar("America/Los_Angeles"); diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index e62b9211e88..08e69b50dbf 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -278,7 +278,7 @@ struct AlignedMallocator /** Forwards to $(D alignedReallocate(b, newSize, platformAlignment)). - Should be used with bocks obtained with `allocate` otherwise the custom + Should be used with blocks obtained with `allocate` otherwise the custom alignment passed with `alignedAllocate` can be lost. */ @system @nogc nothrow @@ -375,6 +375,7 @@ version(Posix) AlignedMallocator.instance.alignedReallocate(c, 32, 32); assert(c.ptr); + version (DragonFlyBSD) {} else /* FIXME */ assert(!AlignedMallocator.instance.alignedReallocate(c, size_t.max, 4096)); AlignedMallocator.instance.deallocate(c); } diff --git a/std/traits.d b/std/traits.d index 403f6f1046a..27827b24d24 100644 --- a/std/traits.d +++ b/std/traits.d @@ -5049,13 +5049,9 @@ template isCovariantWith(F, G) static assert( isCovariantWith!(DerivB_1.test, BaseB.test)); static assert( isCovariantWith!(DerivB_2.test, BaseB.test)); static assert( isCovariantWith!(DerivB_3.test, BaseB.test)); - version(DragonFlyBSD) { - //std/traits.d(4546): Error: static assert (!true) is false - } else { - static assert(!isCovariantWith!(BaseB.test, DerivB_1.test)); - static assert(!isCovariantWith!(BaseB.test, DerivB_2.test)); - static assert(!isCovariantWith!(BaseB.test, DerivB_3.test)); - } + static assert(!isCovariantWith!(BaseB.test, DerivB_1.test)); + static assert(!isCovariantWith!(BaseB.test, DerivB_2.test)); + static assert(!isCovariantWith!(BaseB.test, DerivB_3.test)); // function storage class interface BaseC { void test() ; } From 5157abc254bcac96d721ebc3d460cd0fcdfdd5e0 Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Wed, 13 Dec 2017 00:19:56 +0100 Subject: [PATCH 03/16] Fix indentation / tab instead of space --- std/experimental/allocator/mallocator.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index 08e69b50dbf..2783acea7bf 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -375,7 +375,7 @@ version(Posix) AlignedMallocator.instance.alignedReallocate(c, 32, 32); assert(c.ptr); - version (DragonFlyBSD) {} else /* FIXME */ + version (DragonFlyBSD) {} else /* FIXME: assertion below fails, have not been able to figure out why, yet */ assert(!AlignedMallocator.instance.alignedReallocate(c, size_t.max, 4096)); AlignedMallocator.instance.deallocate(c); } From 143b51173b5e5acd7b6201c2982d3ef04519027b Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Mon, 11 Dec 2017 16:27:41 +0100 Subject: [PATCH 04/16] Port of phobos to DragonFlyBSD Notes: - Exclude assertion for dragonfly in std/experimental/allocator/mallocator.d (Needs further investigation, not sure why alliagned_realloc is causing trouble) --- posix.mak | 3 ++- std/conv.d | 2 +- std/datetime/systime.d | 16 ++++++++++++++ std/datetime/timezone.d | 9 ++++---- std/experimental/allocator/mallocator.d | 3 ++- std/file.d | 5 +++++ std/math.d | 28 +++++++++++++++++++++++++ std/parallelism.d | 8 +++++++ std/path.d | 2 +- std/regex/internal/parser.d | 1 + std/socket.d | 8 +++++++ std/stdio.d | 6 ++++++ std/system.d | 2 ++ 13 files changed, 85 insertions(+), 8 deletions(-) diff --git a/posix.mak b/posix.mak index 9e34c3f1211..e9f9b2d58fa 100644 --- a/posix.mak +++ b/posix.mak @@ -25,9 +25,10 @@ ################################################################################ # Configurable stuff, usually from the command line # -# OS can be linux, win32, win32wine, osx, or freebsd. The system will be +# OS can be linux, win32, win32wine, osx, freebsd, netbsd or dragonflybsd. The system will be # determined by using uname +#QUIET:=@ QUIET:= DEBUGGER=gdb diff --git a/std/conv.d b/std/conv.d index 6277c32580d..62cdbefc3fd 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5519,7 +5519,7 @@ pure nothrow @safe @nogc unittest } // Test attribute propagation for UDTs -pure nothrow @safe /* @nogc */ unittest +pure nothrow @safe /+@nogc+/ unittest { static struct Safe { diff --git a/std/datetime/systime.d b/std/datetime/systime.d index 0c7ccebc159..48fa8325144 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -214,6 +214,22 @@ public: hnsecsToUnixEpoch; } } + else version(DragonFlyBSD) + { + import core.sys.dragonflybsd.time : clock_gettime, CLOCK_REALTIME, + CLOCK_REALTIME_FAST, CLOCK_REALTIME_PRECISE, CLOCK_SECOND; + static if (clockType == ClockType.coarse) alias clockArg = CLOCK_REALTIME_FAST; + else static if (clockType == ClockType.normal) alias clockArg = CLOCK_REALTIME; + else static if (clockType == ClockType.precise) alias clockArg = CLOCK_REALTIME_PRECISE; + else static if (clockType == ClockType.second) alias clockArg = CLOCK_SECOND; + else static assert(0, "Previous static if is wrong."); + timespec ts; + if (clock_gettime(clockArg, &ts) != 0) + throw new TimeException("Call to clock_gettime() failed"); + return convert!("seconds", "hnsecs")(ts.tv_sec) + + ts.tv_nsec / 100 + + hnsecsToUnixEpoch; + } else version(Solaris) { static if (clockType == ClockType.second) diff --git a/std/datetime/timezone.d b/std/datetime/timezone.d index 4743292c9c5..1a6e3d37d35 100644 --- a/std/datetime/timezone.d +++ b/std/datetime/timezone.d @@ -325,10 +325,11 @@ public: version(Posix) { - version(FreeBSD) enum utcZone = "Etc/UTC"; - else version(NetBSD) enum utcZone = "UTC"; - else version(linux) enum utcZone = "UTC"; - else version(OSX) enum utcZone = "UTC"; + version(FreeBSD) enum utcZone = "Etc/UTC"; + else version(NetBSD) enum utcZone = "UTC"; + else version(DragonFlyBSD) enum utcZone = "UTC"; + else version(linux) enum utcZone = "UTC"; + else version(OSX) enum utcZone = "UTC"; else static assert(0, "The location of the UTC timezone file on this Posix platform must be set."); auto tzs = [testTZ("America/Los_Angeles", "PST", "PDT", dur!"hours"(-8), dur!"hours"(1)), diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index e62b9211e88..2783acea7bf 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -278,7 +278,7 @@ struct AlignedMallocator /** Forwards to $(D alignedReallocate(b, newSize, platformAlignment)). - Should be used with bocks obtained with `allocate` otherwise the custom + Should be used with blocks obtained with `allocate` otherwise the custom alignment passed with `alignedAllocate` can be lost. */ @system @nogc nothrow @@ -375,6 +375,7 @@ version(Posix) AlignedMallocator.instance.alignedReallocate(c, 32, 32); assert(c.ptr); + version (DragonFlyBSD) {} else /* FIXME: assertion below fails, have not been able to figure out why, yet */ assert(!AlignedMallocator.instance.alignedReallocate(c, size_t.max, 4096)); AlignedMallocator.instance.deallocate(c); } diff --git a/std/file.d b/std/file.d index d9a8d882c3e..fc0f15b6f70 100644 --- a/std/file.d +++ b/std/file.d @@ -1488,6 +1488,7 @@ if (isInputRange!R && !isInfinite!R && isSomeChar!(ElementEncodingType!R)) // - OS X, where the native filesystem (HFS+) stores filesystem // timestamps with 1-second precision. version (FreeBSD) {} else +version (DragonFlyBSD) {} else version (OSX) {} else @system unittest { @@ -2779,6 +2780,10 @@ else version (NetBSD) { return readLink("/proc/self/exe"); } + else version (DragonFlyBSD) + { + return readLink("/proc/curproc/file"); + } else version (Solaris) { import core.sys.posix.unistd : getpid; diff --git a/std/math.d b/std/math.d index 911d5f1526e..b029c50d375 100644 --- a/std/math.d +++ b/std/math.d @@ -7444,6 +7444,34 @@ private real polyImpl(real x, in real[] A) @trusted pure nothrow @nogc ; } } + else version (DragonFlyBSD) + { + asm pure nothrow @nogc // assembler by W. Bright + { + // EDX = (A.length - 1) * real.sizeof + mov ECX,A[EBP] ; // ECX = A.length + dec ECX ; + lea EDX,[ECX*8] ; + lea EDX,[EDX][ECX*4] ; + add EDX,A+4[EBP] ; + fld real ptr [EDX] ; // ST0 = coeff[ECX] + jecxz return_ST ; + fld x[EBP] ; // ST0 = x + fxch ST(1) ; // ST1 = x, ST0 = r + align 4 ; + L2: fmul ST,ST(1) ; // r *= x + fld real ptr -12[EDX] ; + sub EDX,12 ; // deg-- + faddp ST(1),ST ; + dec ECX ; + jne L2 ; + fxch ST(1) ; // ST1 = r, ST0 = x + fstp ST(0) ; // dump x + align 4 ; + return_ST: ; + ; + } + } else { static assert(0); diff --git a/std/parallelism.d b/std/parallelism.d index 5d3f731dc50..2f2c0e33053 100644 --- a/std/parallelism.d +++ b/std/parallelism.d @@ -94,6 +94,10 @@ else version(FreeBSD) { version = useSysctlbyname; } +else version(DragonFlyBSD) +{ + version = useSysctlbyname; +} else version(NetBSD) { version = useSysctlbyname; @@ -984,6 +988,10 @@ uint totalCPUsImpl() @nogc nothrow @trusted { auto nameStr = "hw.ncpu\0".ptr; } + else version(DragonFlyBSD) + { + auto nameStr = "hw.ncpu\0".ptr; + } else version(NetBSD) { auto nameStr = "hw.ncpu\0".ptr; diff --git a/std/path.d b/std/path.d index f999453d006..c896421387e 100644 --- a/std/path.d +++ b/std/path.d @@ -3970,7 +3970,7 @@ string expandTilde(string inputPath) nothrow } if (errno != ERANGE && - // On FreeBSD and OSX, errno can be left at 0 instead of set to ERANGE + // On BSD and OSX, errno can be left at 0 instead of set to ERANGE errno != 0) onOutOfMemoryError(); diff --git a/std/regex/internal/parser.d b/std/regex/internal/parser.d index a4caae38bcd..50bb7843bac 100644 --- a/std/regex/internal/parser.d +++ b/std/regex/internal/parser.d @@ -1033,6 +1033,7 @@ if (isForwardRange!R && is(ElementType!R : dchar)) {//@@@BUG@@@ write is @system with(zis) { + import std.regex.internal.kickstart; struct FixedStack(T) { T[] arr; diff --git a/std/socket.d b/std/socket.d index fcbc39db700..361ec73daa3 100644 --- a/std/socket.d +++ b/std/socket.d @@ -187,6 +187,14 @@ string formatSocketError(int err) @trusted else return "Socket error " ~ to!string(err); } + else version (DragonFlyBSD) + { + auto errs = strerror_r(err, buf.ptr, buf.length); + if (errs == 0) + cs = buf.ptr; + else + return "Socket error " ~ to!string(err); + } else version (Solaris) { auto errs = strerror_r(err, buf.ptr, buf.length); diff --git a/std/stdio.d b/std/stdio.d index d647177e28e..79397bac75e 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -63,6 +63,12 @@ version (NetBSD) version = HAS_GETDELIM; } +version (DragonFlyBSD) +{ + version = GENERIC_IO; + version = HAS_GETDELIM; +} + version (Solaris) { version = GENERIC_IO; diff --git a/std/system.d b/std/system.d index 1af5013f2b0..dbc0f846986 100644 --- a/std/system.d +++ b/std/system.d @@ -32,6 +32,7 @@ immutable osx, /// Mac OS X freeBSD, /// FreeBSD netBSD, /// NetBSD + dragonFlyBSD, /// DragonFlyBSD solaris, /// Solaris android, /// Android otherPosix /// Other Posix Systems @@ -45,6 +46,7 @@ immutable else version(OSX) OS os = OS.osx; else version(FreeBSD) OS os = OS.freeBSD; else version(NetBSD) OS os = OS.netBSD; + else version(DragonFlyBSD) OS os = OS.dragonFlyBSD; else version(Posix) OS os = OS.otherPosix; else static assert(0, "Unknown OS."); From 58b5569d0b6a9fc555eaa5f8f22b3d8fe05b264c Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Mon, 18 Dec 2017 18:46:32 +0100 Subject: [PATCH 05/16] Revert unrelated changes requested by @wilzbach --- posix.mak | 10 +++++----- std/conv.d | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/posix.mak b/posix.mak index e9f9b2d58fa..8fb1a71d60f 100644 --- a/posix.mak +++ b/posix.mak @@ -13,7 +13,8 @@ # # make BUILD=debug unittest => builds all unittests (for debug) and runs them # -# make DEBUGGER=ddd std/XXXXX.debug => builds the module XXXXX and executes it in the debugger ddd +# make DEBUGGER=ddd std/XXXXX.debug => builds the module XXXXX and executes it +# in the debugger ddd # # make html => makes html documentation # @@ -25,11 +26,10 @@ ################################################################################ # Configurable stuff, usually from the command line # -# OS can be linux, win32, win32wine, osx, freebsd, netbsd or dragonflybsd. The system will be -# determined by using uname +# OS can be linux, win32, win32wine, osx, freebsd, netbsd or dragonflybsd. +# The system will be determined by using uname -#QUIET:=@ -QUIET:= +QUIET:=@ DEBUGGER=gdb GIT_HOME=https://github.com/dlang diff --git a/std/conv.d b/std/conv.d index 62cdbefc3fd..6277c32580d 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5519,7 +5519,7 @@ pure nothrow @safe @nogc unittest } // Test attribute propagation for UDTs -pure nothrow @safe /+@nogc+/ unittest +pure nothrow @safe /* @nogc */ unittest { static struct Safe { From bf06f453c97db0753a43f1ac79362f01746e2ac2 Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Wed, 20 Dec 2017 04:07:58 +0100 Subject: [PATCH 06/16] Update FIXME message related to dragonfly malloc issue --- std/experimental/allocator/mallocator.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index 2783acea7bf..8befa436b35 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -375,7 +375,9 @@ version(Posix) AlignedMallocator.instance.alignedReallocate(c, 32, 32); assert(c.ptr); - version (DragonFlyBSD) {} else /* FIXME: assertion below fails, have not been able to figure out why, yet */ + version (DragonFlyBSD) {} else /* FIXME: Malloc on DragonFly does not return NULL when allocating more than UINTPTR_MAX + * $(LINK: https://bugs.dragonflybsd.org/issues/3114, dragonfly bug report) + * $(LINK: https://github.com/dlang/druntime/pull/1999#discussion_r157536030, PR Discussion) */ assert(!AlignedMallocator.instance.alignedReallocate(c, size_t.max, 4096)); AlignedMallocator.instance.deallocate(c); } From ca27cdfec0d78c176eece0c561b2d786b694d9bd Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Wed, 20 Dec 2017 04:40:19 +0100 Subject: [PATCH 07/16] Remove extraneous import (Review @ZombineDev) --- std/regex/internal/parser.d | 1 - 1 file changed, 1 deletion(-) diff --git a/std/regex/internal/parser.d b/std/regex/internal/parser.d index 50bb7843bac..a4caae38bcd 100644 --- a/std/regex/internal/parser.d +++ b/std/regex/internal/parser.d @@ -1033,7 +1033,6 @@ if (isForwardRange!R && is(ElementType!R : dchar)) {//@@@BUG@@@ write is @system with(zis) { - import std.regex.internal.kickstart; struct FixedStack(T) { T[] arr; From a11f63ff14540247d491f460a675baa2d4494841 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 15 Dec 2017 11:10:09 +0100 Subject: [PATCH 08/16] Make imports in std.net.curl local & lazy --- std/net/curl.d | 109 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 87 insertions(+), 22 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 1c0b53ac914..90f45e15c83 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -156,36 +156,26 @@ Distributed under the Boost Software License, Version 1.0. */ module std.net.curl; -import core.thread; -import etc.c.curl; -import std.concurrency; -import std.encoding; -import std.exception; -import std.meta; -import std.range.primitives; -import std.socket : InternetAddress; -import std.traits; -import std.typecons; - -import std.internal.cstring; - public import etc.c.curl : CurlOption; +import std.concurrency : Tid; +import std.range.primitives; +import std.encoding : EncodingScheme; +import std.traits : isSomeChar; +import std.typecons : Flag, Yes, No, Tuple; version(unittest) { // Run unit test with the PHOBOS_TEST_ALLOW_NET=1 set in order to // allow net traffic - import std.range; - import std.stdio; - - import std.socket : Address, INADDR_LOOPBACK, Socket, TcpSocket; - private struct TestServer { + import std.socket : Socket, TcpSocket; + string addr() { return _addr; } void handle(void function(Socket s) dg) { + import std.concurrency : send; tid.send(dg); } @@ -195,6 +185,9 @@ version(unittest) static void loop(shared TcpSocket listener) { + import std.concurrency : OwnerTerminated, receiveOnly; + import std.stdio : stderr; + try while (true) { void function(Socket) handler = void; @@ -215,6 +208,9 @@ version(unittest) private TestServer startServer() { + import std.concurrency : spawn; + import std.socket : INADDR_LOOPBACK, InternetAddress, TcpSocket; + auto sock = new TcpSocket; sock.bind(new InternetAddress(INADDR_LOOPBACK, InternetAddress.PORT_ANY)); sock.listen(1); @@ -225,6 +221,7 @@ version(unittest) private ref TestServer testServer() { + import std.concurrency : initOnce; __gshared TestServer server; return initOnce!server(startServer()); } @@ -235,8 +232,11 @@ version(unittest) immutable(T)[] bdy; } - private Request!T recvReq(T=char)(Socket s) + private Request!T recvReq(T=char, S)(S s) { + import std.socket : Socket; + static assert (is(S == Socket), "Invalid type used. Use std.socket.Socket."); + import std.algorithm.comparison : min; import std.algorithm.searching : find, canFind; import std.conv : to; @@ -313,7 +313,11 @@ version(unittest) version(StdDdoc) import std.stdio; // Default data timeout for Protocols -private enum _defaultDataTimeout = dur!"minutes"(2); +private auto _defaultDataTimeout() { + import core.time : dur; + static res = dur!"minutes"(2); + return res; +} /** Macros: @@ -758,6 +762,7 @@ if (isCurlConn!Conn) { import std.algorithm.searching : findSplitAfter; import std.conv : text; + import std.exception : enforce; auto trimmed = url.findSplitAfter("ftp://")[1]; auto t = trimmed.findSplitAfter("/"); @@ -980,6 +985,8 @@ private auto _basicHTTP(T)(const(char)[] url, const(void)[] sendData, HTTP clien { import std.algorithm.comparison : min; import std.format : format; + import std.exception : enforce; + import etc.c.curl : CurlSeek, CurlSeekPos; immutable doSend = sendData !is null && (client.method == HTTP.Method.post || @@ -1056,6 +1063,7 @@ private auto _basicHTTP(T)(const(char)[] url, const(void)[] sendData, HTTP clien @system unittest { import std.algorithm.searching : canFind; + import std.exception : collectException; testServer.handle((s) { auto req = s.recvReq; @@ -1176,6 +1184,7 @@ private auto _decodeContent(T)(ubyte[] content, string encoding) } else { + import std.exception : enforce; import std.format : format; // Optimally just return the utf8 encoded content @@ -1281,6 +1290,7 @@ if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator) @property @safe Char[] front() { + import std.exception : enforce; enforce!CurlException(currentValid, "Cannot call front() on empty range"); return current; } @@ -1288,6 +1298,7 @@ if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator) void popFront() { import std.algorithm.searching : findSplitAfter, findSplit; + import std.exception : enforce; enforce!CurlException(currentValid, "Cannot call popFront() on empty range"); if (lines.empty) @@ -1437,6 +1448,8 @@ private T[] _getForRange(T,Conn)(const(char)[] url, Conn conn) */ private mixin template WorkerThreadProtocol(Unit, alias units) { + import core.time : Duration; + @property bool empty() { tryEnsureUnits(); @@ -1455,7 +1468,9 @@ private mixin template WorkerThreadProtocol(Unit, alias units) void popFront() { + import std.concurrency : send; import std.format : format; + tryEnsureUnits(); assert(state == State.gotUnits, format("Expected %s but got $s", @@ -1471,7 +1486,9 @@ private mixin template WorkerThreadProtocol(Unit, alias units) */ bool wait(Duration d) { + import core.time : dur; import std.datetime.stopwatch : StopWatch; + import std.concurrency : receiveTimeout; if (state == State.gotUnits) return true; @@ -1522,6 +1539,7 @@ private mixin template WorkerThreadProtocol(Unit, alias units) void tryEnsureUnits() { + import std.concurrency : receive; while (true) { final switch (state) @@ -1566,6 +1584,8 @@ private static struct AsyncLineInputRange(Char) private this(Tid tid, size_t transmitBuffers, size_t bufferSize) { + import std.concurrency : send; + workerTid = tid; state = State.needUnits; @@ -1656,6 +1676,7 @@ if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator) } else { + import std.concurrency; // 50 is just an arbitrary number for now setMaxMailboxSize(thisTid, 50, OnCrowding.block); auto tid = spawn(&_spawnAsync!(Conn, Char, Terminator)); @@ -1711,6 +1732,8 @@ auto byLineAsync(Conn = AutoProtocol, Terminator = char, Char = char) // Range that reads one chunk at a time asynchronously. private static struct AsyncChunkInputRange { + import std.concurrency : Tid, send; + private ubyte[] chunk; mixin WorkerThreadProtocol!(ubyte, chunk); @@ -1806,6 +1829,7 @@ if (isCurlConn!(Conn)) } else { + import std.concurrency; // 50 is just an arbitrary number for now setMaxMailboxSize(thisTid, 50, OnCrowding.block); auto tid = spawn(&_spawnAsync!(Conn, ubyte)); @@ -1861,6 +1885,9 @@ if (isCurlConn!(Conn)) private void _asyncDuplicateConnection(Conn, PostData) (const(char)[] url, Conn conn, PostData postData, Tid tid) { + import std.concurrency : send; + import std.exception : enforce; + // no move semantic available in std.concurrency ie. must use casting. auto connDup = conn.dup(); connDup.url = url; @@ -1909,6 +1936,9 @@ private void _asyncDuplicateConnection(Conn, PostData) */ private mixin template Protocol() { + import etc.c.curl : CurlReadFunc; + import core.time : Duration; + import std.socket : InternetAddress; /// Value to return from $(D onSend)/$(D onReceive) delegates in order to /// pause a request @@ -2263,6 +2293,7 @@ decodeString(Char = char)(const(ubyte)[] data, EncodingScheme scheme, size_t maxChars = size_t.max) { + import std.encoding : INVALID_SEQUENCE; Char[] res; immutable startLen = data.length; size_t charsDecoded = 0; @@ -2303,6 +2334,8 @@ private bool decodeLineInto(Terminator, Char = char)(ref const(ubyte)[] basesrc, Terminator terminator) { import std.algorithm.searching : endsWith; + import std.encoding : INVALID_SEQUENCE; + import std.exception : enforce; // if there is anything in the basesrc then try to decode that // first. @@ -2399,6 +2432,8 @@ struct HTTP mixin Protocol; import std.datetime.systime : SysTime; + import std.typecons : RefCounted; + import etc.c.curl; /// Authentication method equal to $(REF CurlAuth, etc,c,curl) alias AuthMethod = CurlAuth; @@ -2495,6 +2530,7 @@ struct HTTP } private RefCounted!Impl p; + import etc.c.curl : CurlTimeCond; /** Time condition enumeration as an alias of $(REF CurlTimeCond, etc,c,curl) @@ -2867,6 +2903,7 @@ struct HTTP void addRequestHeader(const(char)[] name, const(char)[] value) { import std.format : format; + import std.internal.cstring : tempCString; import std.uni : icmp; if (icmp(name, "User-Agent") == 0) @@ -3270,6 +3307,7 @@ struct HTTP @system unittest // charset/Charset/CHARSET/... { import std.meta : AliasSeq; + import etc.c.curl; foreach (c; AliasSeq!("charset", "Charset", "CHARSET", "CharSet", "charSet", "ChArSeT", "cHaRsEt")) @@ -3316,6 +3354,9 @@ struct FTP mixin Protocol; + import std.typecons : RefCounted; + import etc.c.curl; + private struct Impl { ~this() @@ -3601,6 +3642,7 @@ struct FTP */ void addCommand(const(char)[] command) { + import std.internal.cstring : tempCString; p.commands = Curl.curl.slist_append(p.commands, command.tempCString().buffPtr); p.curl.set(CurlOption.postquote, p.commands); @@ -3714,6 +3756,8 @@ struct FTP struct SMTP { mixin Protocol; + import std.typecons : RefCounted; + import etc.c.curl; private struct Impl { @@ -3799,6 +3843,7 @@ struct SMTP @property void url(const(char)[] url) { import std.algorithm.searching : startsWith; + import std.exception : enforce; import std.uni : toLower; auto lowered = url.toLower(); @@ -4099,15 +4144,16 @@ class HTTPStatusException : CurlException immutable int status; /// The HTTP status code } +import etc.c.curl : CURLcode; /// Equal to $(REF CURLcode, etc,c,curl) alias CurlCode = CURLcode; -import std.typecons : Flag, Yes, No; /// Flag to specify whether or not an exception is thrown on error. alias ThrowOnError = Flag!"throwOnError"; private struct CurlAPI { + import etc.c.curl; static struct API { extern(C): @@ -4138,6 +4184,8 @@ private struct CurlAPI static void* loadAPI() { + import std.exception : enforce; + version (Posix) { import core.sys.posix.dlfcn : dlsym, dlopen, dlclose, RTLD_LAZY; @@ -4238,6 +4286,8 @@ private struct CurlAPI */ struct Curl { + import etc.c.curl; + alias OutData = void[]; alias InData = ubyte[]; private bool _stopped; @@ -4264,6 +4314,7 @@ struct Curl */ void initialize() { + import std.exception : enforce; enforce!CurlException(!handle, "Curl instance already initialized"); handle = curl.easy_init(); enforce!CurlException(handle, "Curl instance couldn't be initialized"); @@ -4287,6 +4338,7 @@ struct Curl */ Curl dup() { + import std.meta : AliasSeq; Curl copy; copy.handle = curl.easy_duphandle(handle); copy._stopped = false; @@ -4300,7 +4352,7 @@ struct Curl interleavefunction, chunk_data, chunk_bgn_function, chunk_end_function, fnmatch_data, fnmatch_function, cookiejar, postfields); - foreach (option; tt) + static foreach (option; tt) copy.clear(option); } @@ -4337,6 +4389,7 @@ struct Curl private void _check(CurlCode code) { + import std.exception : enforce; enforce!CurlTimeoutException(code != CurlError.operation_timedout, errorString(code)); @@ -4356,6 +4409,7 @@ struct Curl private void throwOnStopped(string message = null) { + import std.exception : enforce; auto def = "Curl instance called after being cleaned up"; enforce!CurlException(!stopped, message == null ? def : message); @@ -4392,6 +4446,7 @@ struct Curl */ void set(CurlOption option, const(char)[] value) { + import std.internal.cstring : tempCString; throwOnStopped(); _check(curl.easy_setopt(this.handle, option, value.tempCString().buffPtr)); } @@ -4824,6 +4879,7 @@ private struct Pool(Data) @safe Data pop() { + import std.exception : enforce; enforce!Exception(root != null, "pop() called on empty pool"); auto d = root.data; auto n = root.next; @@ -4841,6 +4897,8 @@ private static size_t _receiveAsyncChunks(ubyte[] data, ref ubyte[] outdata, ref ubyte[] buffer, Tid fromTid, ref bool aborted) { + import std.concurrency : receive, send, thisTid; + immutable datalen = data.length; // Copy data to fill active buffer @@ -4888,6 +4946,7 @@ private static size_t _receiveAsyncChunks(ubyte[] data, ref ubyte[] outdata, private static void _finalizeAsyncChunks(ubyte[] outdata, ref ubyte[] buffer, Tid fromTid) { + import std.concurrency : send, thisTid; if (!outdata.empty) { // Resize the last buffer @@ -4906,7 +4965,10 @@ private static size_t _receiveAsyncLines(Terminator, Unit) ref Pool!(Unit[]) freeBuffers, ref Unit[] buffer, Tid fromTid, ref bool aborted) { + import std.concurrency : prioritySend, receive, send, thisTid; + import std.exception : enforce; import std.format : format; + import std.traits : isArray; immutable datalen = data.length; @@ -4996,6 +5058,7 @@ private static size_t _receiveAsyncLines(Terminator, Unit) private static void _finalizeAsyncLines(Unit)(bool bufferValid, Unit[] buffer, Tid fromTid) { + import std.concurrency : send, thisTid; if (bufferValid && buffer.length != 0) fromTid.send(thisTid, curlMessage(cast(immutable(Unit)[])buffer[0..$])); } @@ -5007,6 +5070,8 @@ void _finalizeAsyncLines(Unit)(bool bufferValid, Unit[] buffer, Tid fromTid) // output (e.g. AsyncHTTPLineOutputRange). private static void _spawnAsync(Conn, Unit, Terminator = void)() { + import std.concurrency : prioritySend, receiveOnly, send, thisTid; + import etc.c.curl : CURL, CurlError; Tid fromTid = receiveOnly!Tid(); // Get buffer to read into From 4a1065e13ea8f855cc8e768701f1bfe3f5c6d7f4 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 15 Dec 2017 20:00:03 +0100 Subject: [PATCH 09/16] Address review --- std/net/curl.d | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 90f45e15c83..51f24e83456 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -157,6 +157,8 @@ Distributed under the Boost Software License, Version 1.0. module std.net.curl; public import etc.c.curl : CurlOption; +import core.time : dur; +import etc.c.curl : CURLcode; import std.concurrency : Tid; import std.range.primitives; import std.encoding : EncodingScheme; @@ -165,6 +167,8 @@ import std.typecons : Flag, Yes, No, Tuple; version(unittest) { + import std.socket : Socket; + // Run unit test with the PHOBOS_TEST_ALLOW_NET=1 set in order to // allow net traffic private struct TestServer @@ -232,11 +236,8 @@ version(unittest) immutable(T)[] bdy; } - private Request!T recvReq(T=char, S)(S s) + private Request!T recvReq(T=char)(Socket s) { - import std.socket : Socket; - static assert (is(S == Socket), "Invalid type used. Use std.socket.Socket."); - import std.algorithm.comparison : min; import std.algorithm.searching : find, canFind; import std.conv : to; @@ -313,11 +314,7 @@ version(unittest) version(StdDdoc) import std.stdio; // Default data timeout for Protocols -private auto _defaultDataTimeout() { - import core.time : dur; - static res = dur!"minutes"(2); - return res; -} +enum _defaultDataTimeout = dur!"minutes"(2); /** Macros: @@ -4144,7 +4141,6 @@ class HTTPStatusException : CurlException immutable int status; /// The HTTP status code } -import etc.c.curl : CURLcode; /// Equal to $(REF CURLcode, etc,c,curl) alias CurlCode = CURLcode; @@ -4352,7 +4348,7 @@ struct Curl interleavefunction, chunk_data, chunk_bgn_function, chunk_end_function, fnmatch_data, fnmatch_function, cookiejar, postfields); - static foreach (option; tt) + foreach (option; tt) copy.clear(option); } From 1ad40c6077bcd003062b5729072c139a91a87158 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 17 Dec 2017 04:09:50 +0100 Subject: [PATCH 10/16] Fix Issue 18092 - Can't combine take and takeExactly --- std/range/package.d | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 076fd1a5bca..8f2cd196685 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -2393,9 +2393,9 @@ if (isInputRange!R) @property size_t length() const { return _n; } alias opDollar = length; - @property Take!R _takeExactly_Result_asTake() + @property auto _takeExactly_Result_asTake() { - return typeof(return)(_input, _n); + return take(_input, _n); } alias _takeExactly_Result_asTake this; @@ -2545,6 +2545,22 @@ pure @safe nothrow unittest assert(equal(t, te)); } +// https://issues.dlang.org/show_bug.cgi?id=18092 +// can't combine take and takeExactly +unittest +{ + import std.algorithm.comparison : equal; + import std.internal.test.dummyrange : AllDummyRanges; + + static foreach (Range; AllDummyRanges) + {{ + Range r; + assert(r.take(6).takeExactly(2).equal([1, 2])); + assert(r.takeExactly(6).takeExactly(2).equal([1, 2])); + assert(r.takeExactly(6).take(2).equal([1, 2])); + }} +} + /** Returns a range with at most one element; for example, $(D takeOne([42, 43, 44])) returns a range consisting of the integer $(D From cae4a30515fee9f2e3da88a23ba4ea68c7169b35 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 18 Dec 2017 08:40:57 +0100 Subject: [PATCH 11/16] Remove docs build from the Windows Makefiles --- win32.mak | 627 ------------------------------------------------------ win64.mak | 623 ----------------------------------------------------- 2 files changed, 1250 deletions(-) diff --git a/win32.mak b/win32.mak index b71dd1fa506..ea1931dca13 100644 --- a/win32.mak +++ b/win32.mak @@ -14,8 +14,6 @@ # Build phobos.lib, build and run unit tests # make cov # Build for coverage tests, run coverage tests -# make html -# Build documentation # Notes: # minit.obj requires Microsoft MASM386.EXE to build from minit.asm, # or just use the supplied minit.obj @@ -64,14 +62,6 @@ BUILD=release OS=windows DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\$(MODEL)\dmd -## Location of where to write the html documentation files - -DOCSRC = ../dlang.org -STDDOC = $(DOCSRC)/html.ddoc $(DOCSRC)/dlang.org.ddoc $(DOCSRC)/std.ddoc $(DOCSRC)/macros.ddoc $(DOCSRC)/std_navbar-prerelease.ddoc project.ddoc - -DOC=..\..\html\d\phobos -#DOC=..\doc\phobos - ## Zlib library ZLIB=etc\c\zlib\zlib.lib @@ -402,153 +392,6 @@ SRC_ZLIB= \ etc\c\zlib\linux.mak \ etc\c\zlib\osx.mak - -DOCS= \ - $(DOC)\object.html \ - $(DOC)\core_atomic.html \ - $(DOC)\core_bitop.html \ - $(DOC)\core_exception.html \ - $(DOC)\core_memory.html \ - $(DOC)\core_runtime.html \ - $(DOC)\core_simd.html \ - $(DOC)\core_time.html \ - $(DOC)\core_thread.html \ - $(DOC)\core_vararg.html \ - $(DOC)\core_sync_barrier.html \ - $(DOC)\core_sync_condition.html \ - $(DOC)\core_sync_config.html \ - $(DOC)\core_sync_exception.html \ - $(DOC)\core_sync_mutex.html \ - $(DOC)\core_sync_rwmutex.html \ - $(DOC)\core_sync_semaphore.html \ - $(DOC)\std_algorithm.html \ - $(DOC)\std_algorithm_comparison.html \ - $(DOC)\std_algorithm_iteration.html \ - $(DOC)\std_algorithm_mutation.html \ - $(DOC)\std_algorithm_searching.html \ - $(DOC)\std_algorithm_setops.html \ - $(DOC)\std_algorithm_sorting.html \ - $(DOC)\std_array.html \ - $(DOC)\std_ascii.html \ - $(DOC)\std_base64.html \ - $(DOC)\std_bigint.html \ - $(DOC)\std_bitmanip.html \ - $(DOC)\std_concurrency.html \ - $(DOC)\std_compiler.html \ - $(DOC)\std_complex.html \ - $(DOC)\std_container_array.html \ - $(DOC)\std_container_binaryheap.html \ - $(DOC)\std_container_dlist.html \ - $(DOC)\std_container_rbtree.html \ - $(DOC)\std_container_slist.html \ - $(DOC)\std_container.html \ - $(DOC)\std_container_util.html \ - $(DOC)\std_conv.html \ - $(DOC)\std_digest_crc.html \ - $(DOC)\std_digest_sha.html \ - $(DOC)\std_digest_md.html \ - $(DOC)\std_digest_ripemd.html \ - $(DOC)\std_digest_hmac.html \ - $(DOC)\std_digest_digest.html \ - $(DOC)\std_digest_hmac.html \ - $(DOC)\std_csv.html \ - $(DOC)\std_datetime.html \ - $(DOC)\std_datetime_date.html \ - $(DOC)\std_datetime_interval.html \ - $(DOC)\std_datetime_stopwatch.html \ - $(DOC)\std_datetime_systime.html \ - $(DOC)\std_datetime_timezone.html \ - $(DOC)\std_demangle.html \ - $(DOC)\std_encoding.html \ - $(DOC)\std_exception.html \ - $(DOC)\std_file.html \ - $(DOC)\std_format.html \ - $(DOC)\std_functional.html \ - $(DOC)\std_getopt.html \ - $(DOC)\std_json.html \ - $(DOC)\std_math.html \ - $(DOC)\std_mathspecial.html \ - $(DOC)\std_meta.html \ - $(DOC)\std_mmfile.html \ - $(DOC)\std_numeric.html \ - $(DOC)\std_outbuffer.html \ - $(DOC)\std_parallelism.html \ - $(DOC)\std_path.html \ - $(DOC)\std_process.html \ - $(DOC)\std_random.html \ - $(DOC)\std_range.html \ - $(DOC)\std_range_primitives.html \ - $(DOC)\std_range_interfaces.html \ - $(DOC)\std_regex.html \ - $(DOC)\std_signals.html \ - $(DOC)\std_socket.html \ - $(DOC)\std_stdint.html \ - $(DOC)\std_stdio.html \ - $(DOC)\std_string.html \ - $(DOC)\std_system.html \ - $(DOC)\std_traits.html \ - $(DOC)\std_typecons.html \ - $(DOC)\std_typetuple.html \ - $(DOC)\std_uni.html \ - $(DOC)\std_uri.html \ - $(DOC)\std_utf.html \ - $(DOC)\std_uuid.html \ - $(DOC)\std_variant.html \ - $(DOC)\std_xml.html \ - $(DOC)\std_zip.html \ - $(DOC)\std_zlib.html \ - $(DOC)\std_net_isemail.html \ - $(DOC)\std_net_curl.html \ - $(DOC)\std_experimental_logger_core.html \ - $(DOC)\std_experimental_logger_filelogger.html \ - $(DOC)\std_experimental_logger_multilogger.html \ - $(DOC)\std_experimental_logger_nulllogger.html \ - $(DOC)\std_experimental_logger.html \ - $(DOC)\std_experimental_allocator_building_blocks_affix_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_allocator_list.html \ - $(DOC)\std_experimental_allocator_building_blocks_ascending_page_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_bitmapped_block.html \ - $(DOC)\std_experimental_allocator_building_blocks_bucketizer.html \ - $(DOC)\std_experimental_allocator_building_blocks_fallback_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_free_list.html \ - $(DOC)\std_experimental_allocator_building_blocks_free_tree.html \ - $(DOC)\std_experimental_allocator_building_blocks_kernighan_ritchie.html \ - $(DOC)\std_experimental_allocator_building_blocks_null_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_quantizer.html \ - $(DOC)\std_experimental_allocator_building_blocks_region.html \ - $(DOC)\std_experimental_allocator_building_blocks_scoped_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_segregator.html \ - $(DOC)\std_experimental_allocator_building_blocks_stats_collector.html \ - $(DOC)\std_experimental_allocator_building_blocks.html \ - $(DOC)\std_experimental_allocator_common.html \ - $(DOC)\std_experimental_allocator_gc_allocator.html \ - $(DOC)\std_experimental_allocator_mmap_allocator.html \ - $(DOC)\std_experimental_allocator_showcase.html \ - $(DOC)\std_experimental_allocator_typed.html \ - $(DOC)\std_experimental_allocator.html \ - $(DOC)\std_experimental_typecons.html \ - $(DOC)\std_windows_charset.html \ - $(DOC)\std_windows_registry.html \ - $(DOC)\std_c_fenv.html \ - $(DOC)\std_c_locale.html \ - $(DOC)\std_c_math.html \ - $(DOC)\std_c_process.html \ - $(DOC)\std_c_stdarg.html \ - $(DOC)\std_c_stddef.html \ - $(DOC)\std_c_stdio.html \ - $(DOC)\std_c_stdlib.html \ - $(DOC)\std_c_string.html \ - $(DOC)\std_c_time.html \ - $(DOC)\std_c_wcharh.html \ - $(DOC)\etc_c_curl.html \ - $(DOC)\etc_c_sqlite3.html \ - $(DOC)\etc_c_zlib.html \ - $(DOC)\etc_c_odbc_sql.html \ - $(DOC)\etc_c_odbc_sqlext.html \ - $(DOC)\etc_c_odbc_sqltypes.html \ - $(DOC)\etc_c_odbc_sqlucode.html \ - $(DOC)\index.html - $(LIB) : $(SRC_TO_COMPILE) \ $(ZLIB) $(DRUNTIMELIB) win32.mak win64.mak $(DMD) -lib -of$(LIB) -Xfphobos.json $(DFLAGS) $(SRC_TO_COMPILE) \ @@ -690,11 +533,6 @@ cov : $(SRC_TO_COMPILE) $(LIB) $(DMD) -conf= -cov=31 -unittest -main -run std\internal\windows\advapi32.d $(DMD) -conf= -cov=58 -unittest -main -run etc\c\zlib.d -html : $(DOCS) - -changelog.html: changelog.dd - $(DMD) -Dfchangelog.html changelog.dd - ###################################################### $(ZLIB): $(SRC_ZLIB) @@ -702,464 +540,6 @@ $(ZLIB): $(SRC_ZLIB) $(MAKE) -f win$(MODEL).mak zlib.lib CC=$(CC) LIB=$(AR) cd ..\..\.. -################## DOCS #################################### - -DDOCFLAGS=$(DFLAGS) -version=StdDdoc - -$(DOC)\object.html : $(STDDOC) $(DRUNTIME)\src\object.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\object.html $(STDDOC) $(DRUNTIME)\src\object.d -I$(DRUNTIME)\src\ - -$(DOC)\index.html : $(STDDOC) index.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\index.html $(STDDOC) index.d - -$(DOC)\core_atomic.html : $(STDDOC) $(DRUNTIME)\src\core\atomic.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_atomic.html $(STDDOC) $(DRUNTIME)\src\core\atomic.d -I$(DRUNTIME)\src\ - -$(DOC)\core_bitop.html : $(STDDOC) $(DRUNTIME)\src\core\bitop.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_bitop.html $(STDDOC) $(DRUNTIME)\src\core\bitop.d -I$(DRUNTIME)\src\ - -$(DOC)\core_exception.html : $(STDDOC) $(DRUNTIME)\src\core\exception.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_exception.html $(STDDOC) $(DRUNTIME)\src\core\exception.d -I$(DRUNTIME)\src\ - -$(DOC)\core_memory.html : $(STDDOC) $(DRUNTIME)\src\core\memory.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_memory.html $(STDDOC) $(DRUNTIME)\src\core\memory.d -I$(DRUNTIME)\src\ - -$(DOC)\core_runtime.html : $(STDDOC) $(DRUNTIME)\src\core\runtime.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_runtime.html $(STDDOC) $(DRUNTIME)\src\core\runtime.d -I$(DRUNTIME)\src\ - -$(DOC)\core_simd.html : $(STDDOC) $(DRUNTIME)\src\core\simd.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_simd.html $(STDDOC) $(DRUNTIME)\src\core\simd.d -I$(DRUNTIME)\src\ - -$(DOC)\core_time.html : $(STDDOC) $(DRUNTIME)\src\core\time.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_time.html $(STDDOC) $(DRUNTIME)\src\core\time.d -I$(DRUNTIME)\src\ - -$(DOC)\core_thread.html : $(STDDOC) $(DRUNTIME)\src\core\thread.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_thread.html $(STDDOC) $(DRUNTIME)\src\core\thread.d -I$(DRUNTIME)\src\ - -$(DOC)\core_vararg.html : $(STDDOC) $(DRUNTIME)\src\core\vararg.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_vararg.html $(STDDOC) $(DRUNTIME)\src\core\vararg.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_barrier.html : $(STDDOC) $(DRUNTIME)\src\core\sync\barrier.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_barrier.html $(STDDOC) $(DRUNTIME)\src\core\sync\barrier.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_condition.html : $(STDDOC) $(DRUNTIME)\src\core\sync\condition.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_condition.html $(STDDOC) $(DRUNTIME)\src\core\sync\condition.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_config.html : $(STDDOC) $(DRUNTIME)\src\core\sync\config.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_config.html $(STDDOC) $(DRUNTIME)\src\core\sync\config.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_exception.html : $(STDDOC) $(DRUNTIME)\src\core\sync\exception.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_exception.html $(STDDOC) $(DRUNTIME)\src\core\sync\exception.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_mutex.html : $(STDDOC) $(DRUNTIME)\src\core\sync\mutex.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_mutex.html $(STDDOC) $(DRUNTIME)\src\core\sync\mutex.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_rwmutex.html : $(STDDOC) $(DRUNTIME)\src\core\sync\rwmutex.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_rwmutex.html $(STDDOC) $(DRUNTIME)\src\core\sync\rwmutex.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_semaphore.html : $(STDDOC) $(DRUNTIME)\src\core\sync\semaphore.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_semaphore.html $(STDDOC) $(DRUNTIME)\src\core\sync\semaphore.d -I$(DRUNTIME)\src\ - -$(DOC)\std_algorithm.html : $(STDDOC) std\algorithm\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm.html $(STDDOC) std\algorithm\package.d - -$(DOC)\std_algorithm_comparison.html : $(STDDOC) std\algorithm\comparison.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_comparison.html $(STDDOC) std\algorithm\comparison.d - -$(DOC)\std_algorithm_iteration.html : $(STDDOC) std\algorithm\iteration.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_iteration.html $(STDDOC) std\algorithm\iteration.d - -$(DOC)\std_algorithm_mutation.html : $(STDDOC) std\algorithm\mutation.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_mutation.html $(STDDOC) std\algorithm\mutation.d - -$(DOC)\std_algorithm_searching.html : $(STDDOC) std\algorithm\searching.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_searching.html $(STDDOC) std\algorithm\searching.d - -$(DOC)\std_algorithm_setops.html : $(STDDOC) std\algorithm\setops.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_setops.html $(STDDOC) std\algorithm\setops.d - -$(DOC)\std_algorithm_sorting.html : $(STDDOC) std\algorithm\sorting.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_sorting.html $(STDDOC) std\algorithm\sorting.d - -$(DOC)\std_array.html : $(STDDOC) std\array.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_array.html $(STDDOC) std\array.d - -$(DOC)\std_ascii.html : $(STDDOC) std\ascii.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_ascii.html $(STDDOC) std\ascii.d - -$(DOC)\std_base64.html : $(STDDOC) std\base64.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_base64.html $(STDDOC) std\base64.d - -$(DOC)\std_bigint.html : $(STDDOC) std\bigint.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_bigint.html $(STDDOC) std\bigint.d - -$(DOC)\std_bitmanip.html : $(STDDOC) std\bitmanip.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_bitmanip.html $(STDDOC) std\bitmanip.d - -$(DOC)\std_concurrency.html : $(STDDOC) std\concurrency.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_concurrency.html $(STDDOC) std\concurrency.d - -$(DOC)\std_compiler.html : $(STDDOC) std\compiler.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_compiler.html $(STDDOC) std\compiler.d - -$(DOC)\std_complex.html : $(STDDOC) std\complex.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_complex.html $(STDDOC) std\complex.d - -$(DOC)\std_conv.html : $(STDDOC) std\conv.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_conv.html $(STDDOC) std\conv.d - -$(DOC)\std_container_array.html : $(STDDOC) std\container\array.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_array.html $(STDDOC) std\container\array.d - -$(DOC)\std_container_binaryheap.html : $(STDDOC) std\container\binaryheap.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_binaryheap.html $(STDDOC) std\container\binaryheap.d - -$(DOC)\std_container_dlist.html : $(STDDOC) std\container\dlist.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_dlist.html $(STDDOC) std\container\dlist.d - -$(DOC)\std_container_rbtree.html : $(STDDOC) std\container\rbtree.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_rbtree.html $(STDDOC) std\container\rbtree.d - -$(DOC)\std_container_slist.html : $(STDDOC) std\container\slist.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_slist.html $(STDDOC) std\container\slist.d - -$(DOC)\std_container_util.html : $(STDDOC) std\container\util.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_util.html $(STDDOC) std\container\util.d - -$(DOC)\std_container.html : $(STDDOC) std\container\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container.html $(STDDOC) std\container\package.d - -$(DOC)\std_range.html : $(STDDOC) std\range\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range.html $(STDDOC) std\range\package.d - -$(DOC)\std_range_primitives.html : $(STDDOC) std\range\primitives.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range_primitives.html $(STDDOC) std\range\primitives.d - -$(DOC)\std_range_interfaces.html : $(STDDOC) std\range\interfaces.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range_interfaces.html $(STDDOC) std\range\interfaces.d - -$(DOC)\std_csv.html : $(STDDOC) std\csv.d - $(DMD) -c -o- $(DFLAGS) -Df$(DOC)\std_csv.html $(STDDOC) std\csv.d - -$(DOC)\std_datetime.html : $(STDDOC) std\datetime\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime.html $(STDDOC) std\datetime\package.d - -$(DOC)\std_datetime_date.html : $(STDDOC) std\datetime\date.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_date.html $(STDDOC) std\datetime\date.d - -$(DOC)\std_datetime_interval.html : $(STDDOC) std\datetime\interval.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_interval.html $(STDDOC) std\datetime\interval.d - -$(DOC)\std_datetime_stopwatch.html : $(STDDOC) std\datetime\stopwatch.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_stopwatch.html $(STDDOC) std\datetime\stopwatch.d - -$(DOC)\std_datetime_systime.html : $(STDDOC) std\datetime\systime.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_systime.html $(STDDOC) std\datetime\systime.d - -$(DOC)\std_datetime_timezone.html : $(STDDOC) std\datetime\timezone.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_timezone.html $(STDDOC) std\datetime\timezone.d - -$(DOC)\std_demangle.html : $(STDDOC) std\demangle.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_demangle.html $(STDDOC) std\demangle.d - -$(DOC)\std_exception.html : $(STDDOC) std\exception.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_exception.html $(STDDOC) std\exception.d - -$(DOC)\std_file.html : $(STDDOC) std\file.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_file.html $(STDDOC) std\file.d - -$(DOC)\std_format.html : $(STDDOC) std\format.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_format.html $(STDDOC) std\format.d - -$(DOC)\std_functional.html : $(STDDOC) std\functional.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_functional.html $(STDDOC) std\functional.d - -$(DOC)\std_getopt.html : $(STDDOC) std\getopt.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_getopt.html $(STDDOC) std\getopt.d - -$(DOC)\std_json.html : $(STDDOC) std\json.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_json.html $(STDDOC) std\json.d - -$(DOC)\std_math.html : $(STDDOC) std\math.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_math.html $(STDDOC) std\math.d - -$(DOC)\std_meta.html : $(STDDOC) std\meta.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_meta.html $(STDDOC) std\meta.d - -$(DOC)\std_mathspecial.html : $(STDDOC) std\mathspecial.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_mathspecial.html $(STDDOC) std\mathspecial.d - -$(DOC)\std_mmfile.html : $(STDDOC) std\mmfile.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_mmfile.html $(STDDOC) std\mmfile.d - -$(DOC)\std_numeric.html : $(STDDOC) std\numeric.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_numeric.html $(STDDOC) std\numeric.d - -$(DOC)\std_outbuffer.html : $(STDDOC) std\outbuffer.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_outbuffer.html $(STDDOC) std\outbuffer.d - -$(DOC)\std_parallelism.html : $(STDDOC) std\parallelism.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_parallelism.html $(STDDOC) std\parallelism.d - -$(DOC)\std_path.html : $(STDDOC) std\path.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_path.html $(STDDOC) std\path.d - -$(DOC)\std_process.html : $(STDDOC) std\process.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_process.html $(STDDOC) std\process.d - -$(DOC)\std_random.html : $(STDDOC) std\random.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_random.html $(STDDOC) std\random.d - -$(DOC)\std_range.html : $(STDDOC) std\range\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range.html $(STDDOC) std\range\package.d - -$(DOC)\std_regex.html : $(STDDOC) std\regex\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_regex.html $(STDDOC) std\regex\package.d - -$(DOC)\std_signals.html : $(STDDOC) std\signals.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_signals.html $(STDDOC) std\signals.d - -$(DOC)\std_socket.html : $(STDDOC) std\socket.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_socket.html $(STDDOC) std\socket.d - -$(DOC)\std_stdint.html : $(STDDOC) std\stdint.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_stdint.html $(STDDOC) std\stdint.d - -$(DOC)\std_stdio.html : $(STDDOC) std\stdio.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_stdio.html $(STDDOC) std\stdio.d - -$(DOC)\std_string.html : $(STDDOC) std\string.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_string.html $(STDDOC) std\string.d - -$(DOC)\std_system.html : $(STDDOC) std\system.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_system.html $(STDDOC) std\system.d - -$(DOC)\std_traits.html : $(STDDOC) std\traits.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_traits.html $(STDDOC) std\traits.d - -$(DOC)\std_typecons.html : $(STDDOC) std\typecons.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_typecons.html $(STDDOC) std\typecons.d - -$(DOC)\std_typetuple.html : $(STDDOC) std\typetuple.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_typetuple.html $(STDDOC) std\typetuple.d - -$(DOC)\std_uni.html : $(STDDOC) std\uni.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_uni.html $(STDDOC) std\uni.d - -$(DOC)\std_uri.html : $(STDDOC) std\uri.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_uri.html $(STDDOC) std\uri.d - -$(DOC)\std_utf.html : $(STDDOC) std\utf.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_utf.html $(STDDOC) std\utf.d - -$(DOC)\std_uuid.html : $(STDDOC) std\uuid.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_uuid.html $(STDDOC) std\uuid.d - -$(DOC)\std_variant.html : $(STDDOC) std\variant.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_variant.html $(STDDOC) std\variant.d - -$(DOC)\std_xml.html : $(STDDOC) std\xml.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_xml.html $(STDDOC) std\xml.d - -$(DOC)\std_encoding.html : $(STDDOC) std\encoding.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_encoding.html $(STDDOC) std\encoding.d - -$(DOC)\std_zip.html : $(STDDOC) std\zip.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_zip.html $(STDDOC) std\zip.d - -$(DOC)\std_zlib.html : $(STDDOC) std\zlib.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_zlib.html $(STDDOC) std\zlib.d - -$(DOC)\std_net_isemail.html : $(STDDOC) std\net\isemail.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_net_isemail.html $(STDDOC) std\net\isemail.d - -$(DOC)\std_net_curl.html : $(STDDOC) std\net\curl.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_net_curl.html $(STDDOC) std\net\curl.d - -$(DOC)\std_experimental_logger_core.html : $(STDDOC) std\experimental\logger\core.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_core.html $(STDDOC) std\experimental\logger\core.d - -$(DOC)\std_experimental_logger_multilogger.html : $(STDDOC) std\experimental\logger\multilogger.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_multilogger.html $(STDDOC) std\experimental\logger\multilogger.d - -$(DOC)\std_experimental_logger_filelogger.html : $(STDDOC) std\experimental\logger\filelogger.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_filelogger.html $(STDDOC) std\experimental\logger\filelogger.d - -$(DOC)\std_experimental_logger_nulllogger.html : $(STDDOC) std\experimental\logger\nulllogger.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_nulllogger.html $(STDDOC) std\experimental\logger\nulllogger.d - -$(DOC)\std_experimental_logger.html : $(STDDOC) std\experimental\logger\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger.html $(STDDOC) std\experimental\logger\package.d - -$(DOC)\std_experimental_allocator_building_blocks_affix_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\affix_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_affix_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\affix_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_allocator_list.html : $(STDDOC) std\experimental\allocator\building_blocks\allocator_list.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_allocator_list.html \ - $(STDDOC) std\experimental\allocator\building_blocks\allocator_list.d - -$(DOC)\std_experimental_allocator_building_blocks_ascending_page_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\ascending_page_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_ascending_page_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\ascending_page_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_bitmapped_block.html : $(STDDOC) std\experimental\allocator\building_blocks\bitmapped_block.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_bitmapped_block.html \ - $(STDDOC) std\experimental\allocator\building_blocks\bitmapped_block.d - -$(DOC)\std_experimental_allocator_building_blocks_bucketizer.html : $(STDDOC) std\experimental\allocator\building_blocks\bucketizer.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_bucketizer.html \ - $(STDDOC) std\experimental\allocator\building_blocks\bucketizer.d - -$(DOC)\std_experimental_allocator_building_blocks_fallback_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\fallback_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_fallback_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\fallback_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_free_list.html : $(STDDOC) std\experimental\allocator\building_blocks\free_list.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_free_list.html \ - $(STDDOC) std\experimental\allocator\building_blocks\free_list.d - -$(DOC)\std_experimental_allocator_building_blocks_free_tree.html : $(STDDOC) std\experimental\allocator\building_blocks\free_tree.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_free_tree.html \ - $(STDDOC) std\experimental\allocator\building_blocks\free_tree.d - -$(DOC)\std_experimental_allocator_building_blocks_kernighan_ritchie.html : $(STDDOC) std\experimental\allocator\building_blocks\kernighan_ritchie.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_kernighan_ritchie.html \ - $(STDDOC) std\experimental\allocator\building_blocks\kernighan_ritchie.d - -$(DOC)\std_experimental_allocator_building_blocks_null_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\null_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_null_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\null_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_quantizer.html : $(STDDOC) std\experimental\allocator\building_blocks\quantizer.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_quantizer.html \ - $(STDDOC) std\experimental\allocator\building_blocks\quantizer.d - -$(DOC)\std_experimental_allocator_building_blocks_region.html : $(STDDOC) std\experimental\allocator\building_blocks\region.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_region.html \ - $(STDDOC) std\experimental\allocator\building_blocks\region.d - -$(DOC)\std_experimental_allocator_building_blocks_scoped_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\scoped_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_scoped_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\scoped_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_segregator.html : $(STDDOC) std\experimental\allocator\building_blocks\segregator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_segregator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\segregator.d - -$(DOC)\std_experimental_allocator_building_blocks_stats_collector.html : $(STDDOC) std\experimental\allocator\building_blocks\stats_collector.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_stats_collector.html \ - $(STDDOC) std\experimental\allocator\building_blocks\stats_collector.d - -$(DOC)\std_experimental_allocator_building_blocks.html : $(STDDOC) std\experimental\allocator\building_blocks\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks.html \ - $(STDDOC) std\experimental\allocator\building_blocks\package.d - -$(DOC)\std_experimental_allocator_common.html : $(STDDOC) std\experimental\allocator\common.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_common.html $(STDDOC) std\experimental\allocator\common.d - -$(DOC)\std_experimental_allocator_gc_allocator.html : $(STDDOC) std\experimental\allocator\gc_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_gc_allocator.html $(STDDOC) std\experimental\allocator\gc_allocator.d - -$(DOC)\std_experimental_allocator_mallocator.html : $(STDDOC) std\experimental\allocator\mallocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_mallocator.html $(STDDOC) std\experimental\allocator\mallocator.d - -$(DOC)\std_experimental_allocator_mmap_allocator.html : $(STDDOC) std\experimental\allocator\mmap_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_mmap_allocator.html $(STDDOC) std\experimental\allocator\mmap_allocator.d - -$(DOC)\std_experimental_allocator_showcase.html : $(STDDOC) std\experimental\allocator\showcase.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_showcase.html $(STDDOC) std\experimental\allocator\showcase.d - -$(DOC)\std_experimental_allocator_typed.html : $(STDDOC) std\experimental\allocator\typed.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_typed.html $(STDDOC) std\experimental\allocator\typed.d - -$(DOC)\std_experimental_allocator.html : $(STDDOC) std\experimental\allocator\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator.html $(STDDOC) std\experimental\allocator\package.d - -$(DOC)\std_experimental_typecons.html : $(STDDOC) std\experimental\typecons.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_typecons.html $(STDDOC) std\experimental\typecons.d - -$(DOC)\std_digest_crc.html : $(STDDOC) std\digest\crc.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_crc.html $(STDDOC) std\digest\crc.d - -$(DOC)\std_digest_sha.html : $(STDDOC) std\digest\sha.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_sha.html $(STDDOC) std\digest\sha.d - -$(DOC)\std_digest_md.html : $(STDDOC) std\digest\md.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_md.html $(STDDOC) std\digest\md.d - -$(DOC)\std_digest_ripemd.html : $(STDDOC) std\digest\ripemd.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_ripemd.html $(STDDOC) std\digest\ripemd.d - -$(DOC)\std_digest_digest.html : $(STDDOC) std\digest\digest.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_digest.html $(STDDOC) std\digest\digest.d - -$(DOC)\std_digest_hmac.html : $(STDDOC) std\digest\hmac.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_hmac.html $(STDDOC) std\digest\hmac.d - -$(DOC)\std_windows_charset.html : $(STDDOC) std\windows\charset.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_windows_charset.html $(STDDOC) std\windows\charset.d - -$(DOC)\std_windows_registry.html : $(STDDOC) std\windows\registry.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_windows_registry.html $(STDDOC) std\windows\registry.d - -$(DOC)\std_c_fenv.html : $(STDDOC) std\c\fenv.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_fenv.html $(STDDOC) std\c\fenv.d - -$(DOC)\std_c_locale.html : $(STDDOC) std\c\locale.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_locale.html $(STDDOC) std\c\locale.d - -$(DOC)\std_c_math.html : $(STDDOC) std\c\math.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_math.html $(STDDOC) std\c\math.d - -$(DOC)\std_c_process.html : $(STDDOC) std\c\process.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_process.html $(STDDOC) std\c\process.d - -$(DOC)\std_c_stdarg.html : $(STDDOC) std\c\stdarg.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stdarg.html $(STDDOC) std\c\stdarg.d - -$(DOC)\std_c_stddef.html : $(STDDOC) std\c\stddef.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stddef.html $(STDDOC) std\c\stddef.d - -$(DOC)\std_c_stdio.html : $(STDDOC) std\c\stdio.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stdio.html $(STDDOC) std\c\stdio.d - -$(DOC)\std_c_stdlib.html : $(STDDOC) std\c\stdlib.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stdlib.html $(STDDOC) std\c\stdlib.d - -$(DOC)\std_c_string.html : $(STDDOC) std\c\string.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_string.html $(STDDOC) std\c\string.d - -$(DOC)\std_c_time.html : $(STDDOC) std\c\time.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_time.html $(STDDOC) std\c\time.d - -$(DOC)\std_c_wcharh.html : $(STDDOC) std\c\wcharh.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_wcharh.html $(STDDOC) std\c\wcharh.d - -$(DOC)\etc_c_curl.html : $(STDDOC) etc\c\curl.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_curl.html $(STDDOC) etc\c\curl.d - -$(DOC)\etc_c_sqlite3.html : $(STDDOC) etc\c\sqlite3.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_sqlite3.html $(STDDOC) etc\c\sqlite3.d - -$(DOC)\etc_c_zlib.html : $(STDDOC) etc\c\zlib.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_zlib.html $(STDDOC) etc\c\zlib.d - -$(DOC)\etc_c_odbc_sql.html : $(STDDOC) etc\c\odbc\sql.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sql.html $(STDDOC) etc\c\odbc\sql.d - -$(DOC)\etc_c_odbc_sqlext.html : $(STDDOC) etc\c\odbc\sqlext.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sqlext.html $(STDDOC) etc\c\odbc\sqlext.d - -$(DOC)\etc_c_odbc_sqltypes.html : $(STDDOC) etc\c\odbc\sqltypes.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sqltypes.html $(STDDOC) etc\c\odbc\sqltypes.d - -$(DOC)\etc_c_odbc_sqlucode.html : $(STDDOC) etc\c\odbc\sqlucode.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sqlucode.html $(STDDOC) etc\c\odbc\sqlucode.d - -$(DOC)\etc_c_odbc_sql.html : $(STDDOC) etc\c\odbc\sql.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sql.html $(STDDOC) etc\c\odbc\sql.d - ###################################################### zip: @@ -1177,15 +557,8 @@ clean: del $(LIB) del phobos.json -cleanhtml: - del $(DOCS) - install: phobos.zip $(CP) phobos.lib phobos64.lib $(DIR)\windows\lib - +rd/s/q $(DIR)\html\d\phobos - +md $(DIR)\html\d\phobos - $(CP) $(DOCS) $(DIR)\html\d\phobos - $(CP) $(DOC)\index.html $(DIR)\html\d\phobos\index.html +rd/s/q $(DIR)\src\phobos unzip -o phobos.zip -d $(DIR)\src\phobos diff --git a/win64.mak b/win64.mak index 7fff5151769..5275435d3bb 100644 --- a/win64.mak +++ b/win64.mak @@ -16,8 +16,6 @@ # Build phobos32mscoff.lib, build and run unit tests # make cov # Build for coverage tests, run coverage tests -# make html -# Build documentation ## Memory model (32 or 64) MODEL=64 @@ -68,14 +66,6 @@ BUILD=release OS=windows DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\$(MODEL)\dmd -## Location of where to write the html documentation files - -DOCSRC = ../dlang.org -STDDOC = $(DOCSRC)/html.ddoc $(DOCSRC)/dlang.org.ddoc $(DOCSRC)/std.ddoc $(DOCSRC)/macros.ddoc $(DOCSRC)/std_navbar-prerelease.ddoc project.ddoc - -DOC=..\..\html\d\phobos -#DOC=..\doc\phobos - ## Zlib library ZLIB=etc\c\zlib\zlib$(MODEL).lib @@ -427,153 +417,6 @@ SRC_ZLIB= \ etc\c\zlib\linux.mak \ etc\c\zlib\osx.mak - -DOCS= \ - $(DOC)\object.html \ - $(DOC)\core_atomic.html \ - $(DOC)\core_bitop.html \ - $(DOC)\core_exception.html \ - $(DOC)\core_memory.html \ - $(DOC)\core_runtime.html \ - $(DOC)\core_simd.html \ - $(DOC)\core_time.html \ - $(DOC)\core_thread.html \ - $(DOC)\core_vararg.html \ - $(DOC)\core_sync_barrier.html \ - $(DOC)\core_sync_condition.html \ - $(DOC)\core_sync_config.html \ - $(DOC)\core_sync_exception.html \ - $(DOC)\core_sync_mutex.html \ - $(DOC)\core_sync_rwmutex.html \ - $(DOC)\core_sync_semaphore.html \ - $(DOC)\std_algorithm.html \ - $(DOC)\std_algorithm_comparison.html \ - $(DOC)\std_algorithm_iteration.html \ - $(DOC)\std_algorithm_mutation.html \ - $(DOC)\std_algorithm_searching.html \ - $(DOC)\std_algorithm_setops.html \ - $(DOC)\std_algorithm_sorting.html \ - $(DOC)\std_array.html \ - $(DOC)\std_ascii.html \ - $(DOC)\std_base64.html \ - $(DOC)\std_bigint.html \ - $(DOC)\std_bitmanip.html \ - $(DOC)\std_concurrency.html \ - $(DOC)\std_compiler.html \ - $(DOC)\std_complex.html \ - $(DOC)\std_container_array.html \ - $(DOC)\std_container_binaryheap.html \ - $(DOC)\std_container_dlist.html \ - $(DOC)\std_container_rbtree.html \ - $(DOC)\std_container_slist.html \ - $(DOC)\std_container.html \ - $(DOC)\std_container_util.html \ - $(DOC)\std_conv.html \ - $(DOC)\std_digest_crc.html \ - $(DOC)\std_digest_sha.html \ - $(DOC)\std_digest_md.html \ - $(DOC)\std_digest_ripemd.html \ - $(DOC)\std_digest_hmac.html \ - $(DOC)\std_digest_digest.html \ - $(DOC)\std_digest_hmac.html \ - $(DOC)\std_csv.html \ - $(DOC)\std_datetime.html \ - $(DOC)\std_datetime_date.html \ - $(DOC)\std_datetime_interval.html \ - $(DOC)\std_datetime_stopwatch.html \ - $(DOC)\std_datetime_systime.html \ - $(DOC)\std_datetime_timezone.html \ - $(DOC)\std_demangle.html \ - $(DOC)\std_encoding.html \ - $(DOC)\std_exception.html \ - $(DOC)\std_file.html \ - $(DOC)\std_format.html \ - $(DOC)\std_functional.html \ - $(DOC)\std_getopt.html \ - $(DOC)\std_json.html \ - $(DOC)\std_math.html \ - $(DOC)\std_mathspecial.html \ - $(DOC)\std_meta.html \ - $(DOC)\std_mmfile.html \ - $(DOC)\std_numeric.html \ - $(DOC)\std_outbuffer.html \ - $(DOC)\std_parallelism.html \ - $(DOC)\std_path.html \ - $(DOC)\std_process.html \ - $(DOC)\std_random.html \ - $(DOC)\std_range.html \ - $(DOC)\std_range_primitives.html \ - $(DOC)\std_range_interfaces.html \ - $(DOC)\std_regex.html \ - $(DOC)\std_signals.html \ - $(DOC)\std_socket.html \ - $(DOC)\std_stdint.html \ - $(DOC)\std_stdio.html \ - $(DOC)\std_string.html \ - $(DOC)\std_system.html \ - $(DOC)\std_traits.html \ - $(DOC)\std_typecons.html \ - $(DOC)\std_typetuple.html \ - $(DOC)\std_uni.html \ - $(DOC)\std_uri.html \ - $(DOC)\std_utf.html \ - $(DOC)\std_uuid.html \ - $(DOC)\std_variant.html \ - $(DOC)\std_xml.html \ - $(DOC)\std_zip.html \ - $(DOC)\std_zlib.html \ - $(DOC)\std_net_isemail.html \ - $(DOC)\std_net_curl.html \ - $(DOC)\std_experimental_logger_core.html \ - $(DOC)\std_experimental_logger_filelogger.html \ - $(DOC)\std_experimental_logger_multilogger.html \ - $(DOC)\std_experimental_logger_nulllogger.html \ - $(DOC)\std_experimental_logger.html \ - $(DOC)\std_experimental_allocator_building_blocks_affix_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_allocator_list.html \ - $(DOC)\std_experimental_allocator_building_blocks_ascending_page_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_bitmapped_block.html \ - $(DOC)\std_experimental_allocator_building_blocks_bucketizer.html \ - $(DOC)\std_experimental_allocator_building_blocks_fallback_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_free_list.html \ - $(DOC)\std_experimental_allocator_building_blocks_free_tree.html \ - $(DOC)\std_experimental_allocator_building_blocks_kernighan_ritchie.html \ - $(DOC)\std_experimental_allocator_building_blocks_null_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_quantizer.html \ - $(DOC)\std_experimental_allocator_building_blocks_region.html \ - $(DOC)\std_experimental_allocator_building_blocks_scoped_allocator.html \ - $(DOC)\std_experimental_allocator_building_blocks_segregator.html \ - $(DOC)\std_experimental_allocator_building_blocks_stats_collector.html \ - $(DOC)\std_experimental_allocator_building_blocks.html \ - $(DOC)\std_experimental_allocator_common.html \ - $(DOC)\std_experimental_allocator_gc_allocator.html \ - $(DOC)\std_experimental_allocator_mmap_allocator.html \ - $(DOC)\std_experimental_allocator_showcase.html \ - $(DOC)\std_experimental_allocator_typed.html \ - $(DOC)\std_experimental_allocator.html \ - $(DOC)\std_experimental_typecons.html \ - $(DOC)\std_windows_charset.html \ - $(DOC)\std_windows_registry.html \ - $(DOC)\std_c_fenv.html \ - $(DOC)\std_c_locale.html \ - $(DOC)\std_c_math.html \ - $(DOC)\std_c_process.html \ - $(DOC)\std_c_stdarg.html \ - $(DOC)\std_c_stddef.html \ - $(DOC)\std_c_stdio.html \ - $(DOC)\std_c_stdlib.html \ - $(DOC)\std_c_string.html \ - $(DOC)\std_c_time.html \ - $(DOC)\std_c_wcharh.html \ - $(DOC)\etc_c_curl.html \ - $(DOC)\etc_c_sqlite3.html \ - $(DOC)\etc_c_zlib.html \ - $(DOC)\etc_c_odbc_sql.html \ - $(DOC)\etc_c_odbc_sqlext.html \ - $(DOC)\etc_c_odbc_sqltypes.html \ - $(DOC)\etc_c_odbc_sqlucode.html \ - $(DOC)\index.html - $(LIB) : $(SRC_TO_COMPILE) \ $(ZLIB) $(DRUNTIMELIB) win32.mak win64.mak $(DMD) -lib -of$(LIB) -Xfphobos.json $(DFLAGS) $(SRC_TO_COMPILE) \ @@ -649,11 +492,6 @@ cov : $(SRC_TO_COMPILE) $(LIB) $(DMD) -conf= -m$(MODEL) -cov -unittest -ofcov.exe unittest.d $(SRC_TO_COMPILE) $(LIB) cov -html : $(DOCS) - -changelog.html: changelog.dd - $(DMD) -Dfchangelog.html changelog.dd - ################### Win32 COFF support ######################### # default to 32-bit compiler relative to the location of the 64-bit compiler, @@ -675,464 +513,6 @@ $(ZLIB): $(SRC_ZLIB) $(MAKE) -f win64.mak MODEL=$(MODEL) zlib$(MODEL).lib "CC=\$(CC)"\"" "LIB=\$(AR)"\"" "VCDIR=$(VCDIR)" cd ..\..\.. -################## DOCS #################################### - -DDOCFLAGS=$(DFLAGS) -version=StdDdoc - -$(DOC)\object.html : $(STDDOC) $(DRUNTIME)\src\object.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\object.html $(STDDOC) $(DRUNTIME)\src\object.d -I$(DRUNTIME)\src\ - -$(DOC)\index.html : $(STDDOC) index.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\index.html $(STDDOC) index.d - -$(DOC)\core_atomic.html : $(STDDOC) $(DRUNTIME)\src\core\atomic.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_atomic.html $(STDDOC) $(DRUNTIME)\src\core\atomic.d -I$(DRUNTIME)\src\ - -$(DOC)\core_bitop.html : $(STDDOC) $(DRUNTIME)\src\core\bitop.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_bitop.html $(STDDOC) $(DRUNTIME)\src\core\bitop.d -I$(DRUNTIME)\src\ - -$(DOC)\core_exception.html : $(STDDOC) $(DRUNTIME)\src\core\exception.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_exception.html $(STDDOC) $(DRUNTIME)\src\core\exception.d -I$(DRUNTIME)\src\ - -$(DOC)\core_memory.html : $(STDDOC) $(DRUNTIME)\src\core\memory.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_memory.html $(STDDOC) $(DRUNTIME)\src\core\memory.d -I$(DRUNTIME)\src\ - -$(DOC)\core_runtime.html : $(STDDOC) $(DRUNTIME)\src\core\runtime.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_runtime.html $(STDDOC) $(DRUNTIME)\src\core\runtime.d -I$(DRUNTIME)\src\ - -$(DOC)\core_simd.html : $(STDDOC) $(DRUNTIME)\src\core\simd.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_simd.html $(STDDOC) $(DRUNTIME)\src\core\simd.d -I$(DRUNTIME)\src\ - -$(DOC)\core_time.html : $(STDDOC) $(DRUNTIME)\src\core\time.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_time.html $(STDDOC) $(DRUNTIME)\src\core\time.d -I$(DRUNTIME)\src\ - -$(DOC)\core_thread.html : $(STDDOC) $(DRUNTIME)\src\core\thread.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_thread.html $(STDDOC) $(DRUNTIME)\src\core\thread.d -I$(DRUNTIME)\src\ - -$(DOC)\core_vararg.html : $(STDDOC) $(DRUNTIME)\src\core\vararg.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_vararg.html $(STDDOC) $(DRUNTIME)\src\core\vararg.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_barrier.html : $(STDDOC) $(DRUNTIME)\src\core\sync\barrier.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_barrier.html $(STDDOC) $(DRUNTIME)\src\core\sync\barrier.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_condition.html : $(STDDOC) $(DRUNTIME)\src\core\sync\condition.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_condition.html $(STDDOC) $(DRUNTIME)\src\core\sync\condition.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_config.html : $(STDDOC) $(DRUNTIME)\src\core\sync\config.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_config.html $(STDDOC) $(DRUNTIME)\src\core\sync\config.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_exception.html : $(STDDOC) $(DRUNTIME)\src\core\sync\exception.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_exception.html $(STDDOC) $(DRUNTIME)\src\core\sync\exception.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_mutex.html : $(STDDOC) $(DRUNTIME)\src\core\sync\mutex.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_mutex.html $(STDDOC) $(DRUNTIME)\src\core\sync\mutex.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_rwmutex.html : $(STDDOC) $(DRUNTIME)\src\core\sync\rwmutex.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_rwmutex.html $(STDDOC) $(DRUNTIME)\src\core\sync\rwmutex.d -I$(DRUNTIME)\src\ - -$(DOC)\core_sync_semaphore.html : $(STDDOC) $(DRUNTIME)\src\core\sync\semaphore.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\core_sync_semaphore.html $(STDDOC) $(DRUNTIME)\src\core\sync\semaphore.d -I$(DRUNTIME)\src\ - -$(DOC)\std_algorithm.html : $(STDDOC) std\algorithm\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm.html $(STDDOC) std\algorithm\package.d - -$(DOC)\std_algorithm_comparison.html : $(STDDOC) std\algorithm\comparison.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_comparison.html $(STDDOC) std\algorithm\comparison.d - -$(DOC)\std_algorithm_iteration.html : $(STDDOC) std\algorithm\iteration.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_iteration.html $(STDDOC) std\algorithm\iteration.d - -$(DOC)\std_algorithm_mutation.html : $(STDDOC) std\algorithm\mutation.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_mutation.html $(STDDOC) std\algorithm\mutation.d - -$(DOC)\std_algorithm_searching.html : $(STDDOC) std\algorithm\searching.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_searching.html $(STDDOC) std\algorithm\searching.d - -$(DOC)\std_algorithm_setops.html : $(STDDOC) std\algorithm\setops.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_setops.html $(STDDOC) std\algorithm\setops.d - -$(DOC)\std_algorithm_sorting.html : $(STDDOC) std\algorithm\sorting.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_algorithm_sorting.html $(STDDOC) std\algorithm\sorting.d - -$(DOC)\std_array.html : $(STDDOC) std\array.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_array.html $(STDDOC) std\array.d - -$(DOC)\std_ascii.html : $(STDDOC) std\ascii.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_ascii.html $(STDDOC) std\ascii.d - -$(DOC)\std_base64.html : $(STDDOC) std\base64.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_base64.html $(STDDOC) std\base64.d - -$(DOC)\std_bigint.html : $(STDDOC) std\bigint.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_bigint.html $(STDDOC) std\bigint.d - -$(DOC)\std_bitmanip.html : $(STDDOC) std\bitmanip.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_bitmanip.html $(STDDOC) std\bitmanip.d - -$(DOC)\std_concurrency.html : $(STDDOC) std\concurrency.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_concurrency.html $(STDDOC) std\concurrency.d - -$(DOC)\std_compiler.html : $(STDDOC) std\compiler.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_compiler.html $(STDDOC) std\compiler.d - -$(DOC)\std_complex.html : $(STDDOC) std\complex.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_complex.html $(STDDOC) std\complex.d - -$(DOC)\std_conv.html : $(STDDOC) std\conv.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_conv.html $(STDDOC) std\conv.d - -$(DOC)\std_container_array.html : $(STDDOC) std\container\array.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_array.html $(STDDOC) std\container\array.d - -$(DOC)\std_container_binaryheap.html : $(STDDOC) std\container\binaryheap.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_binaryheap.html $(STDDOC) std\container\binaryheap.d - -$(DOC)\std_container_dlist.html : $(STDDOC) std\container\dlist.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_dlist.html $(STDDOC) std\container\dlist.d - -$(DOC)\std_container_rbtree.html : $(STDDOC) std\container\rbtree.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_rbtree.html $(STDDOC) std\container\rbtree.d - -$(DOC)\std_container_slist.html : $(STDDOC) std\container\slist.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_slist.html $(STDDOC) std\container\slist.d - -$(DOC)\std_container_util.html : $(STDDOC) std\container\util.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container_util.html $(STDDOC) std\container\util.d - -$(DOC)\std_container.html : $(STDDOC) std\container\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_container.html $(STDDOC) std\container\package.d - -$(DOC)\std_range.html : $(STDDOC) std\range\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range.html $(STDDOC) std\range\package.d - -$(DOC)\std_range_primitives.html : $(STDDOC) std\range\primitives.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range_primitives.html $(STDDOC) std\range\primitives.d - -$(DOC)\std_range_interfaces.html : $(STDDOC) std\range\interfaces.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range_interfaces.html $(STDDOC) std\range\interfaces.d - -$(DOC)\std_csv.html : $(STDDOC) std\csv.d - $(DMD) -c -o- $(DFLAGS) -Df$(DOC)\std_csv.html $(STDDOC) std\csv.d - -$(DOC)\std_datetime.html : $(STDDOC) std\datetime\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime.html $(STDDOC) std\datetime\package.d - -$(DOC)\std_datetime_date.html : $(STDDOC) std\datetime\date.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_date.html $(STDDOC) std\datetime\date.d - -$(DOC)\std_datetime_interval.html : $(STDDOC) std\datetime\interval.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_interval.html $(STDDOC) std\datetime\interval.d - -$(DOC)\std_datetime_stopwatch.html : $(STDDOC) std\datetime\stopwatch.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_stopwatch.html $(STDDOC) std\datetime\stopwatch.d - -$(DOC)\std_datetime_systime.html : $(STDDOC) std\datetime\systime.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_systime.html $(STDDOC) std\datetime\systime.d - -$(DOC)\std_datetime_timezone.html : $(STDDOC) std\datetime\timezone.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_datetime_timezone.html $(STDDOC) std\datetime\timezone.d - -$(DOC)\std_demangle.html : $(STDDOC) std\demangle.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_demangle.html $(STDDOC) std\demangle.d - -$(DOC)\std_exception.html : $(STDDOC) std\exception.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_exception.html $(STDDOC) std\exception.d - -$(DOC)\std_file.html : $(STDDOC) std\file.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_file.html $(STDDOC) std\file.d - -$(DOC)\std_format.html : $(STDDOC) std\format.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_format.html $(STDDOC) std\format.d - -$(DOC)\std_functional.html : $(STDDOC) std\functional.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_functional.html $(STDDOC) std\functional.d - -$(DOC)\std_getopt.html : $(STDDOC) std\getopt.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_getopt.html $(STDDOC) std\getopt.d - -$(DOC)\std_json.html : $(STDDOC) std\json.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_json.html $(STDDOC) std\json.d - -$(DOC)\std_math.html : $(STDDOC) std\math.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_math.html $(STDDOC) std\math.d - -$(DOC)\std_meta.html : $(STDDOC) std\meta.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_meta.html $(STDDOC) std\meta.d - -$(DOC)\std_mathspecial.html : $(STDDOC) std\mathspecial.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_mathspecial.html $(STDDOC) std\mathspecial.d - -$(DOC)\std_mmfile.html : $(STDDOC) std\mmfile.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_mmfile.html $(STDDOC) std\mmfile.d - -$(DOC)\std_numeric.html : $(STDDOC) std\numeric.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_numeric.html $(STDDOC) std\numeric.d - -$(DOC)\std_outbuffer.html : $(STDDOC) std\outbuffer.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_outbuffer.html $(STDDOC) std\outbuffer.d - -$(DOC)\std_parallelism.html : $(STDDOC) std\parallelism.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_parallelism.html $(STDDOC) std\parallelism.d - -$(DOC)\std_path.html : $(STDDOC) std\path.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_path.html $(STDDOC) std\path.d - -$(DOC)\std_process.html : $(STDDOC) std\process.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_process.html $(STDDOC) std\process.d - -$(DOC)\std_random.html : $(STDDOC) std\random.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_random.html $(STDDOC) std\random.d - -$(DOC)\std_range.html : $(STDDOC) std\range\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_range.html $(STDDOC) std\range\package.d - -$(DOC)\std_regex.html : $(STDDOC) std\regex\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_regex.html $(STDDOC) std\regex\package.d - -$(DOC)\std_signals.html : $(STDDOC) std\signals.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_signals.html $(STDDOC) std\signals.d - -$(DOC)\std_socket.html : $(STDDOC) std\socket.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_socket.html $(STDDOC) std\socket.d - -$(DOC)\std_stdint.html : $(STDDOC) std\stdint.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_stdint.html $(STDDOC) std\stdint.d - -$(DOC)\std_stdio.html : $(STDDOC) std\stdio.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_stdio.html $(STDDOC) std\stdio.d - -$(DOC)\std_string.html : $(STDDOC) std\string.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_string.html $(STDDOC) std\string.d - -$(DOC)\std_system.html : $(STDDOC) std\system.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_system.html $(STDDOC) std\system.d - -$(DOC)\std_traits.html : $(STDDOC) std\traits.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_traits.html $(STDDOC) std\traits.d - -$(DOC)\std_typecons.html : $(STDDOC) std\typecons.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_typecons.html $(STDDOC) std\typecons.d - -$(DOC)\std_typetuple.html : $(STDDOC) std\typetuple.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_typetuple.html $(STDDOC) std\typetuple.d - -$(DOC)\std_uni.html : $(STDDOC) std\uni.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_uni.html $(STDDOC) std\uni.d - -$(DOC)\std_uri.html : $(STDDOC) std\uri.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_uri.html $(STDDOC) std\uri.d - -$(DOC)\std_utf.html : $(STDDOC) std\utf.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_utf.html $(STDDOC) std\utf.d - -$(DOC)\std_uuid.html : $(STDDOC) std\uuid.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_uuid.html $(STDDOC) std\uuid.d - -$(DOC)\std_variant.html : $(STDDOC) std\variant.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_variant.html $(STDDOC) std\variant.d - -$(DOC)\std_xml.html : $(STDDOC) std\xml.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_xml.html $(STDDOC) std\xml.d - -$(DOC)\std_encoding.html : $(STDDOC) std\encoding.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_encoding.html $(STDDOC) std\encoding.d - -$(DOC)\std_zip.html : $(STDDOC) std\zip.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_zip.html $(STDDOC) std\zip.d - -$(DOC)\std_zlib.html : $(STDDOC) std\zlib.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_zlib.html $(STDDOC) std\zlib.d - -$(DOC)\std_net_isemail.html : $(STDDOC) std\net\isemail.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_net_isemail.html $(STDDOC) std\net\isemail.d - -$(DOC)\std_net_curl.html : $(STDDOC) std\net\curl.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_net_curl.html $(STDDOC) std\net\curl.d - -$(DOC)\std_experimental_logger_core.html : $(STDDOC) std\experimental\logger\core.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_core.html $(STDDOC) std\experimental\logger\core.d - -$(DOC)\std_experimental_logger_multilogger.html : $(STDDOC) std\experimental\logger\multilogger.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_multilogger.html $(STDDOC) std\experimental\logger\multilogger.d - -$(DOC)\std_experimental_logger_filelogger.html : $(STDDOC) std\experimental\logger\filelogger.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_filelogger.html $(STDDOC) std\experimental\logger\filelogger.d - -$(DOC)\std_experimental_logger_nulllogger.html : $(STDDOC) std\experimental\logger\nulllogger.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger_nulllogger.html $(STDDOC) std\experimental\logger\nulllogger.d - -$(DOC)\std_experimental_logger.html : $(STDDOC) std\experimental\logger\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_logger.html $(STDDOC) std\experimental\logger\package.d - -$(DOC)\std_experimental_allocator_building_blocks_affix_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\affix_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_affix_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\affix_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_allocator_list.html : $(STDDOC) std\experimental\allocator\building_blocks\allocator_list.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_allocator_list.html \ - $(STDDOC) std\experimental\allocator\building_blocks\allocator_list.d - -$(DOC)\std_experimental_allocator_building_blocks_ascending_page_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\ascending_page_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_ascending_page_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\ascending_page_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_bitmapped_block.html : $(STDDOC) std\experimental\allocator\building_blocks\bitmapped_block.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_bitmapped_block.html \ - $(STDDOC) std\experimental\allocator\building_blocks\bitmapped_block.d - -$(DOC)\std_experimental_allocator_building_blocks_bucketizer.html : $(STDDOC) std\experimental\allocator\building_blocks\bucketizer.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_bucketizer.html \ - $(STDDOC) std\experimental\allocator\building_blocks\bucketizer.d - -$(DOC)\std_experimental_allocator_building_blocks_fallback_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\fallback_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_fallback_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\fallback_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_free_list.html : $(STDDOC) std\experimental\allocator\building_blocks\free_list.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_free_list.html \ - $(STDDOC) std\experimental\allocator\building_blocks\free_list.d - -$(DOC)\std_experimental_allocator_building_blocks_free_tree.html : $(STDDOC) std\experimental\allocator\building_blocks\free_tree.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_free_tree.html \ - $(STDDOC) std\experimental\allocator\building_blocks\free_tree.d - -$(DOC)\std_experimental_allocator_building_blocks_kernighan_ritchie.html : $(STDDOC) std\experimental\allocator\building_blocks\kernighan_ritchie.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_kernighan_ritchie.html \ - $(STDDOC) std\experimental\allocator\building_blocks\kernighan_ritchie.d - -$(DOC)\std_experimental_allocator_building_blocks_null_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\null_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_null_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\null_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_quantizer.html : $(STDDOC) std\experimental\allocator\building_blocks\quantizer.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_quantizer.html \ - $(STDDOC) std\experimental\allocator\building_blocks\quantizer.d - -$(DOC)\std_experimental_allocator_building_blocks_region.html : $(STDDOC) std\experimental\allocator\building_blocks\region.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_region.html \ - $(STDDOC) std\experimental\allocator\building_blocks\region.d - -$(DOC)\std_experimental_allocator_building_blocks_scoped_allocator.html : $(STDDOC) std\experimental\allocator\building_blocks\scoped_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_scoped_allocator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\scoped_allocator.d - -$(DOC)\std_experimental_allocator_building_blocks_segregator.html : $(STDDOC) std\experimental\allocator\building_blocks\segregator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_segregator.html \ - $(STDDOC) std\experimental\allocator\building_blocks\segregator.d - -$(DOC)\std_experimental_allocator_building_blocks_stats_collector.html : $(STDDOC) std\experimental\allocator\building_blocks\stats_collector.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks_stats_collector.html \ - $(STDDOC) std\experimental\allocator\building_blocks\stats_collector.d - -$(DOC)\std_experimental_allocator_building_blocks.html : $(STDDOC) std\experimental\allocator\building_blocks\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_building_blocks.html \ - $(STDDOC) std\experimental\allocator\building_blocks\package.d - -$(DOC)\std_experimental_allocator_common.html : $(STDDOC) std\experimental\allocator\common.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_common.html $(STDDOC) std\experimental\allocator\common.d - -$(DOC)\std_experimental_allocator_gc_allocator.html : $(STDDOC) std\experimental\allocator\gc_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_gc_allocator.html $(STDDOC) std\experimental\allocator\gc_allocator.d - -$(DOC)\std_experimental_allocator_mallocator.html : $(STDDOC) std\experimental\allocator\mallocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_mallocator.html $(STDDOC) std\experimental\allocator\mallocator.d - -$(DOC)\std_experimental_allocator_mmap_allocator.html : $(STDDOC) std\experimental\allocator\mmap_allocator.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_mmap_allocator.html $(STDDOC) std\experimental\allocator\mmap_allocator.d - -$(DOC)\std_experimental_allocator_showcase.html : $(STDDOC) std\experimental\allocator\showcase.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_showcase.html $(STDDOC) std\experimental\allocator\showcase.d - -$(DOC)\std_experimental_allocator_typed.html : $(STDDOC) std\experimental\allocator\typed.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator_typed.html $(STDDOC) std\experimental\allocator\typed.d - -$(DOC)\std_experimental_allocator.html : $(STDDOC) std\experimental\allocator\package.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_allocator.html $(STDDOC) std\experimental\allocator\package.d - -$(DOC)\std_experimental_typecons.html : $(STDDOC) std\experimental\typecons.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_experimental_typecons.html $(STDDOC) std\experimental\typecons.d - -$(DOC)\std_digest_crc.html : $(STDDOC) std\digest\crc.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_crc.html $(STDDOC) std\digest\crc.d - -$(DOC)\std_digest_sha.html : $(STDDOC) std\digest\sha.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_sha.html $(STDDOC) std\digest\sha.d - -$(DOC)\std_digest_md.html : $(STDDOC) std\digest\md.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_md.html $(STDDOC) std\digest\md.d - -$(DOC)\std_digest_ripemd.html : $(STDDOC) std\digest\ripemd.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_ripemd.html $(STDDOC) std\digest\ripemd.d - -$(DOC)\std_digest_digest.html : $(STDDOC) std\digest\digest.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_digest.html $(STDDOC) std\digest\digest.d - -$(DOC)\std_digest_hmac.html : $(STDDOC) std\digest\hmac.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_digest_hmac.html $(STDDOC) std\digest\hmac.d - -$(DOC)\std_windows_charset.html : $(STDDOC) std\windows\charset.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_windows_charset.html $(STDDOC) std\windows\charset.d - -$(DOC)\std_windows_registry.html : $(STDDOC) std\windows\registry.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_windows_registry.html $(STDDOC) std\windows\registry.d - -$(DOC)\std_c_fenv.html : $(STDDOC) std\c\fenv.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_fenv.html $(STDDOC) std\c\fenv.d - -$(DOC)\std_c_locale.html : $(STDDOC) std\c\locale.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_locale.html $(STDDOC) std\c\locale.d - -$(DOC)\std_c_math.html : $(STDDOC) std\c\math.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_math.html $(STDDOC) std\c\math.d - -$(DOC)\std_c_process.html : $(STDDOC) std\c\process.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_process.html $(STDDOC) std\c\process.d - -$(DOC)\std_c_stdarg.html : $(STDDOC) std\c\stdarg.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stdarg.html $(STDDOC) std\c\stdarg.d - -$(DOC)\std_c_stddef.html : $(STDDOC) std\c\stddef.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stddef.html $(STDDOC) std\c\stddef.d - -$(DOC)\std_c_stdio.html : $(STDDOC) std\c\stdio.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stdio.html $(STDDOC) std\c\stdio.d - -$(DOC)\std_c_stdlib.html : $(STDDOC) std\c\stdlib.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_stdlib.html $(STDDOC) std\c\stdlib.d - -$(DOC)\std_c_string.html : $(STDDOC) std\c\string.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_string.html $(STDDOC) std\c\string.d - -$(DOC)\std_c_time.html : $(STDDOC) std\c\time.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_time.html $(STDDOC) std\c\time.d - -$(DOC)\std_c_wcharh.html : $(STDDOC) std\c\wcharh.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\std_c_wcharh.html $(STDDOC) std\c\wcharh.d - -$(DOC)\etc_c_curl.html : $(STDDOC) etc\c\curl.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_curl.html $(STDDOC) etc\c\curl.d - -$(DOC)\etc_c_sqlite3.html : $(STDDOC) etc\c\sqlite3.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_sqlite3.html $(STDDOC) etc\c\sqlite3.d - -$(DOC)\etc_c_zlib.html : $(STDDOC) etc\c\zlib.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_zlib.html $(STDDOC) etc\c\zlib.d - -$(DOC)\etc_c_odbc_sql.html : $(STDDOC) etc\c\odbc\sql.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sql.html $(STDDOC) etc\c\odbc\sql.d - -$(DOC)\etc_c_odbc_sqlext.html : $(STDDOC) etc\c\odbc\sqlext.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sqlext.html $(STDDOC) etc\c\odbc\sqlext.d - -$(DOC)\etc_c_odbc_sqltypes.html : $(STDDOC) etc\c\odbc\sqltypes.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sqltypes.html $(STDDOC) etc\c\odbc\sqltypes.d - -$(DOC)\etc_c_odbc_sqlucode.html : $(STDDOC) etc\c\odbc\sqlucode.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sqlucode.html $(STDDOC) etc\c\odbc\sqlucode.d - -$(DOC)\etc_c_odbc_sql.html : $(STDDOC) etc\c\odbc\sql.d - $(DMD) -c -o- $(DDOCFLAGS) -Df$(DOC)\etc_c_odbc_sql.html $(STDDOC) etc\c\odbc\sql.d - ###################################################### zip: @@ -1150,9 +530,6 @@ clean: del $(LIB) del phobos.json -cleanhtml: - del $(DOCS) - install: phobos.zip $(CP) phobos.lib phobos64.lib $(DIR)\windows\lib +rd/s/q $(DIR)\src\phobos From 31ca73d58d313ef73f4771e7b2cfeec6c16195ea Mon Sep 17 00:00:00 2001 From: Diederik de Groot Date: Mon, 11 Dec 2017 16:27:41 +0100 Subject: [PATCH 12/16] Port of phobos to DragonFlyBSD Notes: - FIXME message related to dragonfly malloc issue (issue reported on upstream dragonfly issue database) --- posix.mak | 9 ++++---- std/datetime/systime.d | 16 ++++++++++++++ std/datetime/timezone.d | 9 ++++---- std/experimental/allocator/mallocator.d | 5 ++++- std/file.d | 5 +++++ std/math.d | 28 +++++++++++++++++++++++++ std/parallelism.d | 8 +++++++ std/path.d | 2 +- std/socket.d | 8 +++++++ std/stdio.d | 6 ++++++ std/system.d | 2 ++ 11 files changed, 88 insertions(+), 10 deletions(-) diff --git a/posix.mak b/posix.mak index 9e34c3f1211..8fb1a71d60f 100644 --- a/posix.mak +++ b/posix.mak @@ -13,7 +13,8 @@ # # make BUILD=debug unittest => builds all unittests (for debug) and runs them # -# make DEBUGGER=ddd std/XXXXX.debug => builds the module XXXXX and executes it in the debugger ddd +# make DEBUGGER=ddd std/XXXXX.debug => builds the module XXXXX and executes it +# in the debugger ddd # # make html => makes html documentation # @@ -25,10 +26,10 @@ ################################################################################ # Configurable stuff, usually from the command line # -# OS can be linux, win32, win32wine, osx, or freebsd. The system will be -# determined by using uname +# OS can be linux, win32, win32wine, osx, freebsd, netbsd or dragonflybsd. +# The system will be determined by using uname -QUIET:= +QUIET:=@ DEBUGGER=gdb GIT_HOME=https://github.com/dlang diff --git a/std/datetime/systime.d b/std/datetime/systime.d index 0c7ccebc159..48fa8325144 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -214,6 +214,22 @@ public: hnsecsToUnixEpoch; } } + else version(DragonFlyBSD) + { + import core.sys.dragonflybsd.time : clock_gettime, CLOCK_REALTIME, + CLOCK_REALTIME_FAST, CLOCK_REALTIME_PRECISE, CLOCK_SECOND; + static if (clockType == ClockType.coarse) alias clockArg = CLOCK_REALTIME_FAST; + else static if (clockType == ClockType.normal) alias clockArg = CLOCK_REALTIME; + else static if (clockType == ClockType.precise) alias clockArg = CLOCK_REALTIME_PRECISE; + else static if (clockType == ClockType.second) alias clockArg = CLOCK_SECOND; + else static assert(0, "Previous static if is wrong."); + timespec ts; + if (clock_gettime(clockArg, &ts) != 0) + throw new TimeException("Call to clock_gettime() failed"); + return convert!("seconds", "hnsecs")(ts.tv_sec) + + ts.tv_nsec / 100 + + hnsecsToUnixEpoch; + } else version(Solaris) { static if (clockType == ClockType.second) diff --git a/std/datetime/timezone.d b/std/datetime/timezone.d index 4743292c9c5..1a6e3d37d35 100644 --- a/std/datetime/timezone.d +++ b/std/datetime/timezone.d @@ -325,10 +325,11 @@ public: version(Posix) { - version(FreeBSD) enum utcZone = "Etc/UTC"; - else version(NetBSD) enum utcZone = "UTC"; - else version(linux) enum utcZone = "UTC"; - else version(OSX) enum utcZone = "UTC"; + version(FreeBSD) enum utcZone = "Etc/UTC"; + else version(NetBSD) enum utcZone = "UTC"; + else version(DragonFlyBSD) enum utcZone = "UTC"; + else version(linux) enum utcZone = "UTC"; + else version(OSX) enum utcZone = "UTC"; else static assert(0, "The location of the UTC timezone file on this Posix platform must be set."); auto tzs = [testTZ("America/Los_Angeles", "PST", "PDT", dur!"hours"(-8), dur!"hours"(1)), diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index e62b9211e88..8befa436b35 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -278,7 +278,7 @@ struct AlignedMallocator /** Forwards to $(D alignedReallocate(b, newSize, platformAlignment)). - Should be used with bocks obtained with `allocate` otherwise the custom + Should be used with blocks obtained with `allocate` otherwise the custom alignment passed with `alignedAllocate` can be lost. */ @system @nogc nothrow @@ -375,6 +375,9 @@ version(Posix) AlignedMallocator.instance.alignedReallocate(c, 32, 32); assert(c.ptr); + version (DragonFlyBSD) {} else /* FIXME: Malloc on DragonFly does not return NULL when allocating more than UINTPTR_MAX + * $(LINK: https://bugs.dragonflybsd.org/issues/3114, dragonfly bug report) + * $(LINK: https://github.com/dlang/druntime/pull/1999#discussion_r157536030, PR Discussion) */ assert(!AlignedMallocator.instance.alignedReallocate(c, size_t.max, 4096)); AlignedMallocator.instance.deallocate(c); } diff --git a/std/file.d b/std/file.d index d9a8d882c3e..fc0f15b6f70 100644 --- a/std/file.d +++ b/std/file.d @@ -1488,6 +1488,7 @@ if (isInputRange!R && !isInfinite!R && isSomeChar!(ElementEncodingType!R)) // - OS X, where the native filesystem (HFS+) stores filesystem // timestamps with 1-second precision. version (FreeBSD) {} else +version (DragonFlyBSD) {} else version (OSX) {} else @system unittest { @@ -2779,6 +2780,10 @@ else version (NetBSD) { return readLink("/proc/self/exe"); } + else version (DragonFlyBSD) + { + return readLink("/proc/curproc/file"); + } else version (Solaris) { import core.sys.posix.unistd : getpid; diff --git a/std/math.d b/std/math.d index 911d5f1526e..b029c50d375 100644 --- a/std/math.d +++ b/std/math.d @@ -7444,6 +7444,34 @@ private real polyImpl(real x, in real[] A) @trusted pure nothrow @nogc ; } } + else version (DragonFlyBSD) + { + asm pure nothrow @nogc // assembler by W. Bright + { + // EDX = (A.length - 1) * real.sizeof + mov ECX,A[EBP] ; // ECX = A.length + dec ECX ; + lea EDX,[ECX*8] ; + lea EDX,[EDX][ECX*4] ; + add EDX,A+4[EBP] ; + fld real ptr [EDX] ; // ST0 = coeff[ECX] + jecxz return_ST ; + fld x[EBP] ; // ST0 = x + fxch ST(1) ; // ST1 = x, ST0 = r + align 4 ; + L2: fmul ST,ST(1) ; // r *= x + fld real ptr -12[EDX] ; + sub EDX,12 ; // deg-- + faddp ST(1),ST ; + dec ECX ; + jne L2 ; + fxch ST(1) ; // ST1 = r, ST0 = x + fstp ST(0) ; // dump x + align 4 ; + return_ST: ; + ; + } + } else { static assert(0); diff --git a/std/parallelism.d b/std/parallelism.d index 5d3f731dc50..2f2c0e33053 100644 --- a/std/parallelism.d +++ b/std/parallelism.d @@ -94,6 +94,10 @@ else version(FreeBSD) { version = useSysctlbyname; } +else version(DragonFlyBSD) +{ + version = useSysctlbyname; +} else version(NetBSD) { version = useSysctlbyname; @@ -984,6 +988,10 @@ uint totalCPUsImpl() @nogc nothrow @trusted { auto nameStr = "hw.ncpu\0".ptr; } + else version(DragonFlyBSD) + { + auto nameStr = "hw.ncpu\0".ptr; + } else version(NetBSD) { auto nameStr = "hw.ncpu\0".ptr; diff --git a/std/path.d b/std/path.d index f999453d006..c896421387e 100644 --- a/std/path.d +++ b/std/path.d @@ -3970,7 +3970,7 @@ string expandTilde(string inputPath) nothrow } if (errno != ERANGE && - // On FreeBSD and OSX, errno can be left at 0 instead of set to ERANGE + // On BSD and OSX, errno can be left at 0 instead of set to ERANGE errno != 0) onOutOfMemoryError(); diff --git a/std/socket.d b/std/socket.d index fcbc39db700..361ec73daa3 100644 --- a/std/socket.d +++ b/std/socket.d @@ -187,6 +187,14 @@ string formatSocketError(int err) @trusted else return "Socket error " ~ to!string(err); } + else version (DragonFlyBSD) + { + auto errs = strerror_r(err, buf.ptr, buf.length); + if (errs == 0) + cs = buf.ptr; + else + return "Socket error " ~ to!string(err); + } else version (Solaris) { auto errs = strerror_r(err, buf.ptr, buf.length); diff --git a/std/stdio.d b/std/stdio.d index d647177e28e..79397bac75e 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -63,6 +63,12 @@ version (NetBSD) version = HAS_GETDELIM; } +version (DragonFlyBSD) +{ + version = GENERIC_IO; + version = HAS_GETDELIM; +} + version (Solaris) { version = GENERIC_IO; diff --git a/std/system.d b/std/system.d index 1af5013f2b0..dbc0f846986 100644 --- a/std/system.d +++ b/std/system.d @@ -32,6 +32,7 @@ immutable osx, /// Mac OS X freeBSD, /// FreeBSD netBSD, /// NetBSD + dragonFlyBSD, /// DragonFlyBSD solaris, /// Solaris android, /// Android otherPosix /// Other Posix Systems @@ -45,6 +46,7 @@ immutable else version(OSX) OS os = OS.osx; else version(FreeBSD) OS os = OS.freeBSD; else version(NetBSD) OS os = OS.netBSD; + else version(DragonFlyBSD) OS os = OS.dragonFlyBSD; else version(Posix) OS os = OS.otherPosix; else static assert(0, "Unknown OS."); From c5b7317b8e1eb0539b0e4a17b2dcd7d27eb2c55e Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 15 Dec 2017 11:10:09 +0100 Subject: [PATCH 13/16] Make imports in std.net.curl local & lazy --- std/net/curl.d | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 51f24e83456..46ad2d0dea3 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -236,8 +236,11 @@ version(unittest) immutable(T)[] bdy; } - private Request!T recvReq(T=char)(Socket s) + private Request!T recvReq(T=char, S)(S s) { + import std.socket : Socket; + static assert (is(S == Socket), "Invalid type used. Use std.socket.Socket."); + import std.algorithm.comparison : min; import std.algorithm.searching : find, canFind; import std.conv : to; @@ -4141,6 +4144,7 @@ class HTTPStatusException : CurlException immutable int status; /// The HTTP status code } +import etc.c.curl : CURLcode; /// Equal to $(REF CURLcode, etc,c,curl) alias CurlCode = CURLcode; @@ -4348,7 +4352,7 @@ struct Curl interleavefunction, chunk_data, chunk_bgn_function, chunk_end_function, fnmatch_data, fnmatch_function, cookiejar, postfields); - foreach (option; tt) + static foreach (option; tt) copy.clear(option); } From 106954f99e0789e1c6495ce7b9e7a53f446dc10d Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Fri, 15 Dec 2017 20:00:03 +0100 Subject: [PATCH 14/16] Address review --- std/net/curl.d | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 46ad2d0dea3..51f24e83456 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -236,11 +236,8 @@ version(unittest) immutable(T)[] bdy; } - private Request!T recvReq(T=char, S)(S s) + private Request!T recvReq(T=char)(Socket s) { - import std.socket : Socket; - static assert (is(S == Socket), "Invalid type used. Use std.socket.Socket."); - import std.algorithm.comparison : min; import std.algorithm.searching : find, canFind; import std.conv : to; @@ -4144,7 +4141,6 @@ class HTTPStatusException : CurlException immutable int status; /// The HTTP status code } -import etc.c.curl : CURLcode; /// Equal to $(REF CURLcode, etc,c,curl) alias CurlCode = CURLcode; @@ -4352,7 +4348,7 @@ struct Curl interleavefunction, chunk_data, chunk_bgn_function, chunk_end_function, fnmatch_data, fnmatch_function, cookiejar, postfields); - static foreach (option; tt) + foreach (option; tt) copy.clear(option); } From b712abcae24ada54ee2b4b48f64f8c2ae600a81e Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 17 Dec 2017 04:09:50 +0100 Subject: [PATCH 15/16] Fix Issue 18092 - Can't combine take and takeExactly From 24f0c957472074ad4c48d3d807db0baf455d3d3c Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Mon, 18 Dec 2017 08:40:57 +0100 Subject: [PATCH 16/16] Remove docs build from the Windows Makefiles