From fdace2348cf7a42ad5990b686f4eb9e6497e3225 Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sun, 12 Oct 2025 10:48:11 +0200 Subject: [PATCH 1/7] - dbuild: add option to select the D runtime: none/druntime/phobos (druntime LDC only) - improve building dbuild - fix registering dbuild-18.0 --- VERSION | 2 +- build/build.visualdproj | 128 ++++++++++++++++++++++++-------- msbuild/dbuild/CompileD.cs | 3 +- msbuild/dbuild/CompileDOpt.cs | 19 +++++ msbuild/dbuild/dbuild.csproj | 75 +++++++++++++++++++ msbuild/dcompile.targets | 9 ++- msbuild/dcompile_defaults.props | 1 + msbuild/dmd.xml | 7 ++ msbuild/ldc.xml | 9 +++ nsis/visuald.nsi | 42 +++++------ visuald/register.d | 2 + 11 files changed, 239 insertions(+), 58 deletions(-) diff --git a/VERSION b/VERSION index f7314a5a..201d6cef 100644 --- a/VERSION +++ b/VERSION @@ -2,4 +2,4 @@ #define VERSION_MINOR 5 #define VERSION_REVISION 0 #define VERSION_BETA -beta -#define VERSION_BUILD 1 +#define VERSION_BUILD 2 diff --git a/build/build.visualdproj b/build/build.visualdproj index e2d1dc04..50d73ce9 100644 --- a/build/build.visualdproj +++ b/build/build.visualdproj @@ -123,8 +123,12 @@ 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -250,8 +254,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -377,8 +385,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -504,8 +516,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -631,8 +647,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -758,8 +778,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -885,8 +909,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1012,8 +1040,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1139,8 +1171,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1266,8 +1302,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1393,8 +1433,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1520,8 +1564,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1647,8 +1695,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1774,8 +1826,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -1901,8 +1957,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep @@ -2028,8 +2088,12 @@ echo. >"$(TargetDir)\build.dep" 0 - echo Success >"$(TargetPath)" -echo. >"$(TargetDir)\build.dep" + +echo $(ProjectDir)\sdk.bat >"$(TargetDir)\build.dep" +echo $(ProjectDir)\sdk_libs.bat >>"$(TargetDir)\build.dep" +echo $(ProjectDir)\build.visualdproj >>"$(TargetDir)\build.dep" +echo Success >"$(TargetPath)" + *.obj;*.cmd;*.build;*.json;*.dep diff --git a/msbuild/dbuild/CompileD.cs b/msbuild/dbuild/CompileD.cs index a6c90dfd..0c9902f0 100644 --- a/msbuild/dbuild/CompileD.cs +++ b/msbuild/dbuild/CompileD.cs @@ -45,7 +45,8 @@ public CompileD() public string[] ImportCDefines { get { return opts.ImportCDefines; } set { opts.ImportCDefines = value; } } public string ObjectFileName { get { return opts.ObjectFileName; } set { opts.ObjectFileName = value; } } public bool PreserveSourcePath { get { return opts.PreserveSourcePath; } set { opts.PreserveSourcePath = value; } } - public string CRuntimeLibrary { get { return opts.CRuntimeLibrary; } set { opts.CRuntimeLibrary = value; } } + public string CRuntimeLibrary { get { return opts.CRuntimeLibrary; } set { opts.CRuntimeLibrary = value; } } + public string DRuntimeLibrary { get { return opts.DRuntimeLibrary; } set { opts.DRuntimeLibrary = value; } } public bool Profile { get { return opts.Profile; } set { opts.Profile = value; } } public bool ProfileGC { get { return opts.ProfileGC; } set { opts.ProfileGC = value; } } public bool Coverage { get { return opts.Coverage; } set { opts.Coverage = value; } } diff --git a/msbuild/dbuild/CompileDOpt.cs b/msbuild/dbuild/CompileDOpt.cs index c077cc40..eac42492 100644 --- a/msbuild/dbuild/CompileDOpt.cs +++ b/msbuild/dbuild/CompileDOpt.cs @@ -67,6 +67,7 @@ public CompileDOptions(IToolSwitchProvider provider) this.switchOrderList.Add("ObjectFileName"); this.switchOrderList.Add("PreserveSourcePath"); this.switchOrderList.Add("CRuntimeLibrary"); + this.switchOrderList.Add("DRuntimeLibrary"); this.switchOrderList.Add("Profile"); this.switchOrderList.Add("ProfileGC"); @@ -279,6 +280,24 @@ public string CRuntimeLibrary } } + public string DRuntimeLibrary + { + get { return GetStringProperty("DRuntimeLibrary"); } + set + { + string[][] switchMap = new string[3][] + { + new string[2] { "None", "-defaultlib=" }, + new string[2] { "Druntime", "-defaultlib=druntime-ldc" }, + new string[2] { "Phobos", "" }, + }; + + SetEnumProperty("DRuntimeLibrary", "D Runtime Library", + "Link against the D runtime library.", + switchMap, value); + } + } + // Code generation public bool Profile { diff --git a/msbuild/dbuild/dbuild.csproj b/msbuild/dbuild/dbuild.csproj index afd37076..980bec73 100644 --- a/msbuild/dbuild/dbuild.csproj +++ b/msbuild/dbuild/dbuild.csproj @@ -497,6 +497,10 @@ 12.0 dbuild.$(TargetVer) + ..\..\bin\dbuild\$(Configuration)\ + $(BaseOutputPath)\ + $(OutputPath)\obj\ + $(OutputPath)\obj-base\ @@ -553,21 +557,27 @@ assemblies\v12\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v12\Microsoft.Build.Framework.dll + False assemblies\v12\Microsoft.Build.Tasks.v12.0.dll + False assemblies\v12\Microsoft.Build.Utilities.v12.0.dll + False assemblies\v12\Microsoft.VisualStudio.VCProject.dll + False assemblies\v12\Microsoft.VisualStudio.VCProjectEngine.dll + False @@ -591,10 +601,12 @@ False c:\Program Files (x86)\MSBuild\12.0\Bin\Microsoft.Build.Tasks.v12.0.dll + False False c:\Program Files (x86)\MSBuild\12.0\Bin\Microsoft.Build.Utilities.v12.0.dll + False False @@ -603,52 +615,65 @@ False False c:\Windows\assembly\GAC\Microsoft.VisualStudio.VCProjectEngine\12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.VCProjectEngine.dll + False False + False assemblies\v14\Microsoft.Build.dll + False assemblies\v14\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v14\Microsoft.Build.Framework.dll + False assemblies\v14\Microsoft.Build.Tasks.Core.dll + False assemblies\v14\Microsoft.Build.Utilities.Core.dll + False False assemblies\v14\Microsoft.VisualStudio.VCProject.dll + False False False assemblies\v14\Microsoft.VisualStudio.VCProjectEngine.dll + False False + False c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.Build\v4.0_14.0.0.0__b03f5f7f11d50a3a\Microsoft.Build.dll + False False c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Build.CPPTasks.Common.dll + False False c:\Program Files (x86)\MSBuild\14.0\Bin\Microsoft.Build.Framework.dll + False False @@ -663,11 +688,13 @@ False C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.VCProject.dll + False False False c:\Windows\assembly\GAC\Microsoft.VisualStudio.VCProjectEngine\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.VCProjectEngine.dll + False @@ -680,21 +707,27 @@ assemblies\v15\Microsoft.Build.dll + False assemblies\v15\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v15\Microsoft.Build.Framework.dll + False assemblies\v15\Microsoft.Build.Tasks.Core.dll + False assemblies\v15\Microsoft.Build.Utilities.Core.dll + False assemblies\v15\envdte.dll + False False @@ -702,6 +735,7 @@ assemblies\v15\Microsoft.VisualStudio.VCProject.dll c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.VCProject.dll c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.VCProject.dll + False False @@ -709,40 +743,50 @@ assemblies\v15\Microsoft.VisualStudio.VCProjectEngine.dll c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.VCProjectEngine.dll c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.VCProjectEngine.dll + False assemblies\v16\Microsoft.Build.dll + False assemblies\v16\Microsoft.Build.Framework.dll + False assemblies\v16\Microsoft.Build.Tasks.Core.dll + False assemblies\v16\Microsoft.Build.Utilities.Core.dll + False assemblies\v16\envdte.dll + False assemblies\v16\Microsoft.VisualStudio.VCProject.dll + False assemblies\v16\Microsoft.VisualStudio.VCProjectEngine.dll + False assemblies\v16\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v16_1\Microsoft.Build.CPPTasks.Common.dll + False @@ -754,133 +798,164 @@ or '$(TargetVer)' == '17.12' or '$(TargetVer)' == '17.13' or '$(TargetVer)' == '17.14'"> assemblies\v17\Microsoft.Build.dll + False assemblies\v17\Microsoft.Build.Framework.dll + False assemblies\v17\Microsoft.Build.Tasks.Core.dll + False assemblies\v17\Microsoft.Build.Utilities.Core.dll + False assemblies\v17\envdte.dll + False assemblies\v17\Microsoft.VisualStudio.VCProject.dll + False assemblies\v17\Microsoft.VisualStudio.VCProjectEngine.dll + False assemblies\v17\Microsoft.Build.CPPTasks.Common.Base.dll + False assemblies\v17\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_1\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_2\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_3\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_4\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_5\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_6\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_7\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_8\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_9\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_10\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_11\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_12\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_13\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v17_14\Microsoft.Build.CPPTasks.Common.dll + False assemblies\v18\Microsoft.Build.dll + False assemblies\v18\Microsoft.Build.Framework.dll + False assemblies\v18\Microsoft.Build.Tasks.Core.dll + False assemblies\v18\Microsoft.Build.Utilities.Core.dll + False assemblies\v18\envdte.dll + False assemblies\v18\Microsoft.VisualStudio.VCProject.dll + False assemblies\v18\Microsoft.VisualStudio.VCProjectEngine.dll + False assemblies\v18\Microsoft.Build.CPPTasks.Common.dll + False diff --git a/msbuild/dcompile.targets b/msbuild/dcompile.targets index eb1b868b..763ebf64 100644 --- a/msbuild/dcompile.targets +++ b/msbuild/dcompile.targets @@ -208,6 +208,7 @@ DebugIdentifiers="%(DCompile.DebugIdentifiers)" ObjectFileName="%(DCompile.ObjectFileName)" PreserveSourcePath="%(DCompile.PreserveSourcePath)" + DRuntimeLibrary="%(DCompile.DRuntimeLibrary)" CRuntimeLibrary="%(DCompile.CRuntimeLibrary)" Profile="%(DCompile.Profile)" @@ -344,9 +345,11 @@ - phobos32mscoff.lib - phobos64.lib - phobos2-ldc.lib;druntime-ldc.lib + <_DRuntimeLib>@(DCompile->Metadata('DRuntimeLibrary')->Distinct()->ClearMetadata()) + phobos32mscoff.lib + phobos64.lib + phobos2-ldc.lib;druntime-ldc.lib + druntime-ldc.lib $(DRuntimeLibs);legacy_stdio_definitions.lib diff --git a/msbuild/dcompile_defaults.props b/msbuild/dcompile_defaults.props index 4f2a5e24..e16adef1 100644 --- a/msbuild/dcompile_defaults.props +++ b/msbuild/dcompile_defaults.props @@ -112,6 +112,7 @@ Project + Phobos MultiThreaded false