X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Farchitecture.cpp;h=58f435d51ec10fd8d75cbe777ef0442c8b68c1c4;hb=1c66151c44b4f4fb567da5ec8b75f066cccc5421;hp=a3f3b132447f3213ce7d5f0f797751f90beae79b;hpb=bf0883b6dd3946612922aa1b7c04a87d06442df7;p=builder.git diff --git a/source/architecture.cpp b/source/architecture.cpp index a3f3b13..58f435d 100644 --- a/source/architecture.cpp +++ b/source/architecture.cpp @@ -4,6 +4,7 @@ #include "architecture.h" #include "builder.h" #include "executable.h" +#include "importlibrary.h" #include "objectfile.h" #include "sharedlibrary.h" #include "staticlibrary.h" @@ -67,6 +68,7 @@ const char *toolchains[] = { "gnu", "clang", + "msvc", 0 }; @@ -130,6 +132,8 @@ Architecture::Architecture(Builder &b, const string &spec): { if((system=="darwin" || system=="freebsd") && builder.get_vfs().find_binary("clang")) toolchain = "clang"; + else if(system=="windows" && native) + toolchain = "msvc"; else toolchain = "gnu"; } @@ -141,20 +145,27 @@ Architecture::Architecture(Builder &b, const string &spec): name += format("-%s", fpu); name += format("-%d-%s-%s", bits, system, toolchain); - add_pattern("%.o"); if(system=="windows") { add_pattern("%.dll"); - add_pattern("lib%.dll"); - /* XXX Hack: Consider import libraries (*.dll.a) as dynamic libraries, - even though technically they are linked statically. */ - add_pattern("lib%.dll.a"); - add_pattern("lib%.a"); - add_pattern("%.lib"); + if(toolchain=="msvc") + { + add_pattern("%.obj"); + add_pattern("%.lib"); + add_pattern("%_static.lib"); + } + else + { + add_pattern("%.o"); + add_pattern("lib%.dll"); + add_pattern("lib%.dll.a"); + add_pattern("lib%.a"); + } add_pattern("%.exe"); } else { + add_pattern("%.o"); if(system=="darwin") add_pattern("lib%.dylib"); else