diff --git a/source/dub/compilers/buildsettings.d b/source/dub/compilers/buildsettings.d index 615685ed9..aef3fe8f4 100644 --- a/source/dub/compilers/buildsettings.d +++ b/source/dub/compilers/buildsettings.d @@ -545,6 +545,14 @@ void getPlatformSettings(in BuildSettingsTemplate this_, ref BuildSettings dst, // collect source files. Note: D source from 'sourcePaths' and C sources from 'cSourcePaths' are joint into 'sourceFiles' dst.addSourceFiles(collectFiles(this_.sourcePaths, "*.d")); dst.addSourceFiles(collectFiles(this_.cSourcePaths, "*.{c,i}")); + version (Windows) { + import std.path : buildNormalizedPath; + import std.algorithm : map; + import std.array : array; + dst.sourceFiles = dst.sourceFiles.map!buildNormalizedPath.array; + if (!dst.mainSourceFile.empty) + dst.mainSourceFile = buildNormalizedPath(dst.mainSourceFile); + } auto sourceFiles = dst.sourceFiles.sort(); // collect import files and remove sources diff --git a/tests/issue3070/dub.json b/tests/issue3070/dub.json new file mode 100644 index 000000000..1ff76e84c --- /dev/null +++ b/tests/issue3070/dub.json @@ -0,0 +1,7 @@ +{ + "name": "issue3070", + "description": "Test mixed path separators do not duplicate mainSourceFile", + "targetType": "executable", + "sourcePaths": ["src"], + "mainSourceFile": "src/main.d" +} diff --git a/tests/issue3070/src/main.d b/tests/issue3070/src/main.d new file mode 100644 index 000000000..a74017975 --- /dev/null +++ b/tests/issue3070/src/main.d @@ -0,0 +1 @@ +void main() {} diff --git a/tests/run.d b/tests/run.d new file mode 100644 index 000000000..0a74f315b --- /dev/null +++ b/tests/run.d @@ -0,0 +1 @@ +runDubTest("issue3070");