| |
---|
| | arch_override |
---|
| | ); |
---|
| | } |
---|
| | |
---|
| | void prepareBuildSettings(ref BuildSettings settings, BuildSetting fields = BuildSetting.all) const |
---|
| | void prepareBuildSettings(ref BuildSettings settings, in ref BuildPlatform platform, BuildSetting fields = BuildSetting.all) const |
---|
| | { |
---|
| | enforceBuildRequirements(settings); |
---|
| | |
---|
| | if (!(fields & BuildSetting.options)) { |
---|
| |
---|
| | settings.stringImportPaths = null; |
---|
| | } |
---|
| | |
---|
| | if (!(fields & BuildSetting.libs)) { |
---|
| | resolveLibs(settings); |
---|
| | version(Windows) settings.addSourceFiles(settings.libs.map!(l => l~".lib")().array()); |
---|
| | else settings.addLFlags(settings.libs.map!(l => "-l"~l)().array()); |
---|
| | resolveLibs(settings, platform); |
---|
| | if (platform.platform.canFind("windows")) |
---|
| | settings.addSourceFiles(settings.libs.map!(l => l~".lib")().array()); |
---|
| | else |
---|
| | settings.addLFlags(settings.libs.map!(l => "-l"~l)().array()); |
---|
| | } |
---|
| | |
---|
| | if (!(fields & BuildSetting.sourceFiles)) { |
---|
| | settings.addDFlags(settings.sourceFiles); |
---|
| |
---|
| | settings.addDFlags(lflagsToDFlags(settings.lflags)); |
---|
| | settings.lflags = null; |
---|
| | } |
---|
| | |
---|
| | version (Posix) { |
---|
| | if (settings.options & BuildOption.pic) |
---|
| | settings.addDFlags("-fPIC"); |
---|
| | } |
---|
| | if (platform.platform.canFind("posix") && (settings.options & BuildOption.pic)) |
---|
| | settings.addDFlags("-fPIC"); |
---|
| | |
---|
| | assert(fields & BuildSetting.dflags); |
---|
| | assert(fields & BuildSetting.copyFiles); |
---|
| | } |
---|
| |
---|
| | case TargetType.staticLibrary: |
---|
| | settings.addDFlags("-lib"); |
---|
| | break; |
---|
| | case TargetType.dynamicLibrary: |
---|
| | version (Windows) settings.addDFlags("-shared"); |
---|
| | else version (OSX) settings.addDFlags("-shared"); |
---|
| | else settings.prependDFlags("-shared", "-defaultlib=libphobos2.so"); |
---|
| | if (platform.compiler != "dmd" || platform.platform.canFind("windows") || platform.platform.canFind("osx")) |
---|
| | settings.addDFlags("-shared"); |
---|
| | else |
---|
| | settings.prependDFlags("-shared", "-defaultlib=libphobos2.so"); |
---|
| | break; |
---|
| | case TargetType.object: |
---|
| | settings.addDFlags("-c"); |
---|
| | break; |
---|
| |
---|
| | auto tpath = NativePath(settings.targetPath) ~ getTargetFileName(settings, platform); |
---|
| | auto args = ["-of"~tpath.toNativeString()]; |
---|
| | args ~= objects; |
---|
| | args ~= settings.sourceFiles; |
---|
| | version(linux) args ~= "-L--no-as-needed"; // avoids linker errors due to libraries being specified in the wrong order by DMD |
---|
| | if (platform.platform.canFind("linux")) |
---|
| | args ~= "-L--no-as-needed"; // avoids linker errors due to libraries being specified in the wrong order by DMD |
---|
| | args ~= lflagsToDFlags(settings.lflags); |
---|
| | args ~= settings.dflags.filter!(f => isLinkerDFlag(f)).array; |
---|
| | |
---|
| | auto res_file = getTempFile("dub-build", ".lnk"); |
---|
| |
---|
| | |