45 Commits

Author SHA1 Message Date
Andrew Kelley
94ec2190f8 update to llvm master 2017-11-02 21:54:24 -04:00
Dimenus
38f05d4ac5 WIN32: Linking with the CRT at runtime. (#570)
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)
2017-11-01 15:33:14 -04:00
Andrew Kelley
5f28a9d238 cleaner verbose flags and zig build prints failed command 2017-10-25 23:10:41 -04:00
Andrew Kelley
c1642355f0 parse-c: improve performance
previously we did linear search to find existing global
declarations; now we index using a hash map.

building tetris went from taking 5.3 sec to 0.76 sec
2017-10-21 16:46:33 -04:00
Andrew Kelley
8156e4f78f fix parse-c tests 2017-10-01 21:42:33 -04:00
Andrew Kelley
4d865e355b support linking against MSVC libc 2017-10-01 21:05:08 -04:00
Andrew Kelley
1962c8588f implement standard library path search
closes #463
See #302
2017-10-01 18:30:31 -04:00
Josh Wolfe
ee42caee0e fix chain assignment semicolon 2017-09-20 23:49:46 -07:00
Josh Wolfe
d7775e3dca chain assignment 2017-09-20 23:45:53 -07:00
Andrew Kelley
be37b03f4c parse-c: support sizeof 2017-09-21 02:37:42 -04:00
Andrew Kelley
c01ae69cdb parse-c: support implicit cast to void * 2017-09-21 02:31:52 -04:00
Andrew Kelley
2655cf1bf7 parse-c: support c style cast 2017-09-21 01:55:15 -04:00
Josh Wolfe
5ac2cf9c28 fix assignment needing an lvalue 2017-09-20 22:41:16 -07:00
Andrew Kelley
1360af847e parse-c: array access expression 2017-09-21 01:38:29 -04:00
Josh Wolfe
67a5a3f3d7 add sub mul div rem 2017-09-20 22:36:43 -07:00
Andrew Kelley
0d1f64b08c parse-c: fix undefined array literals 2017-09-21 01:22:50 -04:00
Josh Wolfe
33784871ec assign 2017-09-20 22:14:39 -07:00
Josh Wolfe
f7cb77a02c Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig 2017-09-20 22:05:14 -07:00
Josh Wolfe
2ae789d27c bitwise binary operators 2017-09-20 22:04:51 -07:00
Andrew Kelley
0d91747502 parse-c: null statements 2017-09-21 01:04:43 -04:00
Andrew Kelley
eba45b0013 parse-c: field access expressions 2017-09-21 00:54:08 -04:00
Josh Wolfe
0827a8f36b ==, != 2017-09-20 21:47:43 -07:00
Josh Wolfe
4c8443d96d logical and, logical or 2017-09-20 21:37:56 -07:00
Josh Wolfe
bf6d32f8cb Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig 2017-09-20 21:17:41 -07:00
Josh Wolfe
46fef543f9 if statement 2017-09-20 21:16:49 -07:00
Andrew Kelley
f68d724647 parse-c: support function calls 2017-09-21 00:02:18 -04:00
Andrew Kelley
38059e6f97 parse-c: fix anonymous enums 2017-09-20 23:16:44 -04:00
Josh Wolfe
c3814eee26 Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig 2017-09-20 19:49:55 -07:00
Josh Wolfe
c10b052cee translate expr++ from c to zig 2017-09-20 19:49:41 -07:00
Andrew Kelley
9cdb5dec7a parsec: cleaner shifting code for fixed size types 2017-09-20 22:44:24 -04:00
Josh Wolfe
e2f8bec7ac optimize >>= operator for common case 2017-09-20 18:37:36 -07:00
Andrew Kelley
0228f8c9fd all parsec tests passing 2017-09-20 21:16:26 -04:00
Andrew Kelley
b1e04865cc parsec: don't make pointless block in fn body 2017-09-20 13:08:02 -04:00
Andrew Kelley
3c41c2d84b Merge branch 'master' into c-to-zig 2017-09-20 12:52:54 -04:00
Andrew Kelley
57ea6e8c9f fix up msvc stuff to make it work on linux and macos too 2017-09-13 02:40:02 -04:00
Josh Wolfe
4adffea8d0 analysis of result used 2017-09-11 21:37:11 -07:00
Josh Wolfe
99cb6e955a oh, actually it was 2017-09-11 20:39:42 -07:00
Josh Wolfe
e52418097d not my segfault 2017-09-11 20:08:45 -07:00
Josh Wolfe
7e3f45a49f Merge branch 'master' into c-to-zig 2017-09-11 19:58:41 -07:00
Josh Wolfe
6f50457b61 wip c to zig stuff 2017-09-11 19:58:14 -07:00
Andrew Kelley
4bd23aefe7 local var 2017-09-11 22:58:06 -04:00
Jonathan Marler
7c81cd30de Add support for MSVC 2017-09-11 09:26:26 -06:00
Andrew Kelley
b5d9584e6f support parens in C macros
closes #454
2017-09-10 00:20:09 -04:00
Andrew Kelley
e7c3aa7f7c parsec: turn panics into warnings 2017-09-06 01:00:42 -04:00
Andrew Kelley
2c9bdad346 rename parseh to parsec 2017-09-05 22:55:03 -04:00