Commit Graph

47 Commits

Author SHA1 Message Date
Andrew Kelley 257cf09472 colored error messages that tell the source file 2015-12-01 00:50:11 -07:00
Andrew Kelley 31cf43de54 analyze looks for root export decl only in the root source file 2015-11-30 23:06:29 -07:00
Andrew Kelley cd68969115 closer to multiple files working 2015-11-30 22:53:37 -07:00
Andrew Kelley 55b8472374 refactor code to prepare for multiple files
verbose compiler output is now behind --verbose flag
2015-11-30 20:00:39 -07:00
Josh Wolfe ef482ece7c no more TypeId. use g->builtin_types. 2015-11-30 15:36:58 -07:00
Andrew Kelley b77c423f77 all LLVM C++ API contained to one file 2015-11-30 14:43:23 -07:00
Andrew Kelley 4ccb98bdce analyze no longer depends on llvm C++ API 2015-11-30 14:10:07 -07:00
Josh Wolfe 9e0ff6faa2 factor analysis code out of codegen 2015-11-30 09:14:58 -07:00
Andrew Kelley 8f0f318c39 add directive to specify root export version 2015-11-30 02:12:20 -07:00
Andrew Kelley 9b477230e0 ability to generate shared library and h file 2015-11-29 18:02:20 -07:00
Josh Wolfe f4721857ed inline PrimaryExpr ast node 2015-11-29 17:16:32 -07:00
Andrew Kelley 63d4e3ce1e add missing panic for shared library output 2015-11-29 15:10:06 -07:00
Josh Wolfe ceb2d44bfc merge arithmetic binary operator gen functions 2015-11-29 15:08:42 -07:00
Andrew Kelley a008a81eef codegen: fix wrong node type 2015-11-29 14:59:41 -07:00
Josh Wolfe 30442ed893 merge conflicts 2015-11-29 14:52:49 -07:00
Josh Wolfe 9a014b52cc flatten expression ast to hide operator precedence 2015-11-29 14:46:05 -07:00
Andrew Kelley c1d77f2a23 function call names are expressions 2015-11-29 14:39:11 -07:00
Andrew Kelley 918e7641fc rename unary expression to prefix op expression 2015-11-29 14:00:34 -07:00
Andrew Kelley a7555c58d9 add unary expression 2015-11-29 13:37:55 -07:00
Andrew Kelley 855d51840d remove LLVMZigTargetMachineEmitToFile
The llvm C API provided function is adequate.
2015-11-29 11:12:40 -07:00
Andrew Kelley e5d1f0eea5 parse and codegen for math expressions 2015-11-29 02:43:05 -07:00
Andrew Kelley f6529341a2 ability to export .o file 2015-11-27 22:13:39 -07:00
Andrew Kelley 03f9922734 remove unnecessary codegen llvm initialization 2015-11-27 21:49:04 -07:00
Andrew Kelley cb4773ce29 add root export declaration which is overridable by command line options 2015-11-27 21:24:47 -07:00
Andrew Kelley 4cc95174a7 add tests for compile errors 2015-11-27 18:55:06 -07:00
Andrew Kelley 024052b448 add pub and export visibility modifiers and optimization 2015-11-27 15:46:06 -07:00
Andrew Kelley 9ca9a2c554 allow empty function and return with no expression 2015-11-27 10:52:31 -07:00
Andrew Kelley 4060ae93fb call ld with correct -dynamic-linker argument
It looks like Debian/Ubuntu are doing it correctly.
See https://sourceware.org/glibc/wiki/ABIList

NixOS has a clang patch which disables adding the -dynamic-linker
argument to ld in order to ensure "purity" - that is - that all paths
are in /nix/store/*.
See https://github.com/NixOS/nixpkgs/blob/6b1651928e943bdb0d69a20764fdaae294e92dc1/pkgs/development/compilers/llvm/3.7/clang/purity.patch

So, I changed the environment variable to ZIG_NATIVE_DYNAMIC_LINKER and allow
it to be set to blank. And it only matters when building for the native target,
since you might want to build for other targets without modifying your
environment.

closes #1
2015-11-26 23:43:29 -07:00
Josh Wolfe bd5cb3e50e add hook for environment variable ZIG_DEBIAN_HACK. see #1. 2015-11-26 14:42:46 -07:00
Andrew Kelley 893e152dab no errors during codegen
also, fix function calling and allow forward declarations
2015-11-25 18:17:35 -07:00
Josh Wolfe 311fd67083 inline AstNodeStatementExpression 2015-11-25 16:43:16 -07:00
Andrew Kelley 86a0ae8699 assert(false) -> zig_unreachable() 2015-11-25 15:48:57 -07:00
Josh Wolfe e579011a6e inline AstNodeStatement 2015-11-25 15:45:10 -07:00
Andrew Kelley a600df073a fix invalid memory write 2015-11-25 15:17:19 -07:00
Josh Wolfe 0b59afec56 fix typo 2015-11-25 12:19:10 -07:00
Andrew Kelley 09f68c7c33 support linker directives
now you can depend on libc in zig language instead of it being
hardcoded in the compiler.
2015-11-24 23:44:41 -07:00
Andrew Kelley 505317a12f debug/release mode 2015-11-24 22:32:26 -07:00
Andrew Kelley c7f4cadbc7 debug symbols implemented; debugging with gdb works 2015-11-24 19:54:38 -07:00
Andrew Kelley ca836191e1 debug information for functions 2015-11-24 19:07:33 -07:00
Andrew Kelley baf5167171 fix not using subtarget features 2015-11-24 15:01:37 -07:00
Andrew Kelley fefbee166d hello world example working 2015-11-24 13:51:36 -07:00
Andrew Kelley 925c805d4b add unreachable expression
now creating .o file from hello.zig correctly
2015-11-24 13:37:14 -07:00
Andrew Kelley c2e5d50027 write object file and fix void return type 2015-11-24 13:00:38 -07:00
Andrew Kelley e112818e25 codegen: fix param type of const strings 2015-11-24 03:06:10 -07:00
Andrew Kelley 4bbc074dd7 hello world IR code looks good 2015-11-24 02:43:45 -07:00
Andrew Kelley 7d22a89eec partial hello world codegen 2015-11-24 00:35:28 -07:00
Andrew Kelley 3b4a2afb65 semantic analysis checks for multiple definitions of functions 2015-11-23 22:47:25 -07:00