38f05d4ac5
Disclaimer: Forgive me if my format sucks, I've never submitted a PR before! Fixes: #517 I added a few things to allow zig to link with the CRT properly both statically and dynamically. In Visual Studio 2017, Microsoft changed how the c-runtime is factored again. With this change, they also added a COM interface to allow you to query the respective Visual Studio instance for two of them. This does that and also falls back on a registry query for 2015 support. If you're using a Visual Studio instance older than 2015, you'll have to use the existing options available with the zig compiler. Changes are listed below along with a general description of the changes. all_types.cpp: The separate variables for msvc/kern32 have been removed and all win32 libc directory paths have been combined into a ZigList since we're querying more than two directories and differentiating one from another doesn't matter to lld. analyze.cpp: The existing functions were extended to support querying libc libs & libc headers at runtime. codegen.cpp/hpp: Microsoft uses the new 'Universal C Runtime' name now. Doesn't matter from a functionality standpoint. I left the compiler switches as is to not introduce any breaking changes. link.cpp: We're linking 4 libs and generating another in order to support the UCRT. Dynamic: msvcrt/d, vcruntime/d, ucrt/d, legacy_stdio_definitions.lib Static: libcmt/d, libvcruntime/d libucrt/d, legacy_stdio_definitions.lib main.cpp: Update function call names. os.cpp/hpp: COM/Registry interface for querying Windows UCRT/SDK. Sources: [Windows CRT](https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features) [VS 2015 Breaking Changes](https://msdn.microsoft.com/en-us/library/bb531344.aspx) |
||
---|---|---|
.. | ||
all_types.hpp | ||
analyze.cpp | ||
analyze.hpp | ||
ast_render.cpp | ||
ast_render.hpp | ||
bigfloat.cpp | ||
bigfloat.hpp | ||
bigint.cpp | ||
bigint.hpp | ||
buffer.cpp | ||
buffer.hpp | ||
c_tokenizer.cpp | ||
c_tokenizer.hpp | ||
codegen.cpp | ||
codegen.hpp | ||
config.h.in | ||
errmsg.cpp | ||
errmsg.hpp | ||
error.cpp | ||
error.hpp | ||
hash_map.hpp | ||
ir_print.cpp | ||
ir_print.hpp | ||
ir.cpp | ||
ir.hpp | ||
link.cpp | ||
link.hpp | ||
list.hpp | ||
main.cpp | ||
os.cpp | ||
os.hpp | ||
parsec.cpp | ||
parsec.hpp | ||
parser.cpp | ||
parser.hpp | ||
range_set.cpp | ||
range_set.hpp | ||
softfloat.hpp | ||
target.cpp | ||
target.hpp | ||
tokenizer.cpp | ||
tokenizer.hpp | ||
util.cpp | ||
util.hpp | ||
windows_com.hpp | ||
zig_llvm.cpp | ||
zig_llvm.hpp |