aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
AgeCommit message (Collapse)Author
2023-02-22Merge pull request #14691 from jacobly0/ctypeAndrew Kelley
2023-02-21CBE: use CType for type definitionsJacob Young
2023-02-21CBE: remove typedef data structuresJacob Young
Adds a new mechanism for `@tagName` function generation that doesn't piggyback on the removed typedef system.
2023-02-20CBE: add CType interningJacob Young
2023-02-21Improve multi-module error messagesmlugg
- Fix assertion failure if AstGen failed on a multi-module file - Cap number of per-error reference notes and total multi-module errors each at 5 - Always put "root of package" reference notes first Resolves: #14499
2023-02-21Implement new module CLImlugg
2023-02-18update std lib and compiler sources to new for loop syntaxAndrew Kelley
2023-02-16[elf linker] add --sort-sectionMotiejus Jakštys
Tested by: created a "hello world" C file and compiled with: zig cc -v main.c -Wl,--sort-section=name -o main ... and verified the `--sort-section=name` is passed to ld.lld. Refs https://github.com/zigchroot/zig-chroot/issues/1
2023-02-14comp: reinstate -fcompiler-rt when used with build-obj as outputJakub Konka
When the following is specified ``` $ zig build-obj -fcompiler-rt example.zig ``` the resulting relocatable object file will have the compiler-rt unconditionally embedded inside. ``` $ nm example.o ... 0000000012345678 W __truncsfhf2 ... ```
2023-02-13Merge pull request #14571 from ziglang/more-build-zigAndrew Kelley
std.Build.ConfigHeaderStep: support sentinel-terminated strings
2023-02-13Add -ferror-tracing and -fno-error-tracing compile optionsAdamGoertz
2023-02-13move the cache system from compiler to std libAndrew Kelley
2023-02-08clone package table into custom test runnerDominic
Co-authored-by: Veikka Tuominen <git@vexu.eu>
2023-02-08allow custom test runners to import modulesdweiller
2023-02-08fix custom test runner package path resolutiondweiller
Fixes #13970. This fix makes test runners resolve package paths relative to the directory the test runner is in. This means it is not possible to import a file from outside the file tree root at the directory containing the test runner.
2023-02-03use build.zig.zon instead of build.zig.ini for the manifest fileAndrew Kelley
* improve error message when build manifest file is missing * update std.zig.Ast to support ZON * Compilation.AllErrors.Message: make the notes field a const slice * move build manifest parsing logic into src/Manifest.zig and add more checks, and make the checks integrate into the standard error reporting code so that reported errors look sexy closes #14290
2023-02-01link: decouple DI atoms from linker atoms, and manage them in Dwarf linkerJakub Konka
2023-01-23Merge pull request #13670 from mlugg/fix/astgen-ambiguous-packageVeikka Tuominen
AstGen: detect and error on files included in multiple packages
2023-01-22zig cc: add -Wno-overriding-t-option to clang on darwinAndrew Kelley
This avoids a warning that sometimes occurs when providing both a -target argument that contains a version as well as the -mmacosx-version-min argument. Zig provides the correct value in both places, so it doesn't matter which one gets overridden.
2023-01-22AstGen: detect and error on files included in multiple packagesmlugg
Previously, if a source file was referenced from multiple packages, it just became owned by the first one AstGen happened to reach; this was a problem, because it could lead to inconsistent behaviour in the compiler based on a race condition. This could be fixed by just analyzing such files multiple times - however, it was pointed out by Andrew that it might make more sense to enforce files being part of at most a single package. Having a file in multiple packages would not only impact compile times (due to Sema having to run multiple times on potentially a lot of code) but is also a confusing anti-pattern which more often than not is a mistake on the part of the user. Resolves: #13662
2023-01-22Package: store package name directlymlugg
By @Vexu's suggestion, since fetching the name from the parent package is error-prone and complex, and optimising Package for size isn't really a priority.
2023-01-13zig run/cc: recognize "-x language"Motiejus Jakštys
This commit adds support for "-x language" for a couple of hand-picked supported languages. There is no reason the list of supported languages to not grow (e.g. add "c-header"), but I'd like to keep it small at the start. Alternative 1 ------------- I first tried to add a new type "Language", and then add that to the `CSourceFile`. But oh boy what a change it turns out to be. So I am keeping myself tied to FileExt and see what you folks think. Alternative 2 ------------- I tried adding `Language: ?[]const u8` to `CSourceFile`. However, the language/ext, whatever we want to call it, still needs to be interpreted in the main loop: one kind of handling for source files, other kind of handling for everything else. Test case --------- *standalone.c* #include <iostream> int main() { std::cout << "elho\n"; } Compile and run: $ ./zig run -x c++ -lc++ standalone.c elho $ ./zig c++ -x c++ standalone.c -o standalone && ./standalone elho Fixes #10915
2023-01-05ELF linker: support common-page-size and max-page-size lld optsFrank Denis
These linker flags are required to build static ELF binaries that can run under the Blink emulator: https://github.com/jart/blink/issues/14
2023-01-04rebase fixupkcbanner
2023-01-04windows: fixes to support using zig cc/c++ with CMake on Windowskcbanner
Using zig cc with CMake on Windows was failing during compiler detection. -nostdinc was causing the crt not to be linked, and Coff/lld.zig assumed that wWinMainCRTStartup would be present in this case. -nostdlib did not prevent the default behaviour of linking libc++ when zig c++ was used. This caused libc++ to be built when CMake ran ABI detection using zig c++, which fails as libcxxabi cannot compile under MSVC. - Change the behaviour of COFF -nostdinc to set /entry to the function that the default CRT method for the specified subsystem would have called. - Fix -ENTRY being passed twice if it was specified explicitly and -nostdlib was present. - Add support for /pdb, /version, /implib, and /subsystem as linker args (passed by CMake) - Remove -Ddisable-zstd, no longer needed - Add -Ddisable-libcpp for use when bootstrapping on msvc
2023-01-04fixup formattingkcbanner
2023-01-04windows: supporting changes for boostrapping via msvckcbanner
- add support for passing through .def files to the linker, required for building libLTO.dll in LLVM - fixup libcpp linking conditionals - add option to skip linking zstd for use in bootstrapping (when building against an LLVM with LLVM_ENABLE_ZSTD=OFF)
2023-01-04build: first pass on geting stage3 building under x64_64-windows-msvckcbanner
2023-01-04Fix another LockViolation case on Windows (#14162)Casey Banner
- Add an assert that an exclusive lock is help to writeManifest - Only call writeManifest in updateCObject if an exclusive lock is held - cache: fixup test to verify hits don't take an exclusive lock, instead of writing the manifest
2023-01-04Merge pull request #13786 from ziglang/tty-detectionVeikka Tuominen
stage2: make --color on affect progress bar too
2023-01-03stage2: make --color on affect progress bar tooAndrew Kelley
Before, --color on would affect colored compile error printing but not affect terminal progress bar printing. It was intended for this option to affect both; now it does. This causes a failure when building the language reference, which contains code for parsing terminal output and rendering HTML. Now it must be expanded to handle 'K' and 'D' codes to simulate a terminal cursor moving, and the CI will fail until that capability is added in a later commit of this branch. I extracted this change from #13560 so that the idea is not lost but we can solve this issue separately.
2023-01-03add -fopt-bisect-limitGuillaume Wenzek
2023-01-02Compilation: better error message for file not foundAndrew Kelley
2023-01-02Compilation: fix merge conflict with previous commitAndrew Kelley
2023-01-02Revert "make a .rsp file for `zig clang`"Andrew Kelley
This reverts commit 9db293492bbbc5b8d70638bd9c59dea19d13596c. It's not OK to call `realpath` in the compiler. Reopens #12419
2022-12-28WebAssembly: don't append `--export` for functionsLuuk de Gram
No longer automatically append the `--export` flag for each exported function unconditionally. This was essentially a hack to prevent binary bloat caused by compiler-rt symbols being always included in the final binary as they were exported and therefore not garbage- collected. This is no longer needed as we now support the ability to set the visibility of exports. This essentially reverts 6d951aff7e32b1b0252d341e66517a9a9ee98a2d
2022-12-25WebAssembly: do not link with --allow-undefined unconditionallyFrank Denis
In #1622, when targeting WebAsembly, the --allow-undefined flag became unconditionally added to the linker. This is not always desirable. First, this is error prone. Code with references to unkown symbols will link just fine, but then fail at run-time. This behavior is inconsistent with all other targets. For freestanding wasm applications, and applications that only use WASI, undefined references are better reported at compile-time. This behavior is also inconsistent with clang itself. Autoconf and cmake scripts checking for function presence think that all tested functions exist, but then resulting application cannot run. For example, this is one of the reasons compilation of Ruby 3.2.0 to WASI fails with zig cc, while it works out of the box with clang. But all applications checking for symbol existence before compilation are affected. This reverts the behavior to the one Zig had before #1622, and introduces an `import_symbols` flag to ignore undefined symbols, assuming that the webassembly runtime will define them.
2022-12-19Sema: print notes and reference traces when using `--debug-compile-errors`Veikka Tuominen
2022-12-14Sema: display cimport errors from clangVeikka Tuominen
2022-12-13fix(terminal): handle some possible errors and resolve TODOsr00ster91
2022-12-10Compilation: revert asking for exclusive locks on cache hitsAndrew Kelley
We definitely want a shared lock on a cache hit. Without this, we get a deadlock when Zig is asked to compile the same C source file multiple times as part of the same compilation. This is a partial revert of 8ccb9a6ad327a4d7fbc321b33d4aa66a27a1f5ee. cc @kcbanner
2022-12-09Revert "coff: specify default base path for relative source paths in pdb"Jakub Konka
2022-12-07Merge pull request #13799 from ziglang/close-stage1-issuesAndrew Kelley
close stage1 issues
2022-12-06cache: Fix LockViolation during C compilation paths (#13591)Casey Banner
- C compilation flows didn't hold an exclusive lock on the cache manifest file when writing to it in all cases - On windows, explicitly unlock the file lock before closing it
2022-12-06remove most conditional compilation based on stage1Andrew Kelley
There are still a few occurrences of "stage1" in the standard library and self-hosted compiler source, however, these instances need a bit more careful inspection to ensure no breakage.
2022-12-06stage2: revert change to handling of --color onAndrew Kelley
This change has been extracted to #13786 and can be solved separately than this branch.
2022-12-06stage2: make --color override apply to std.ProgressAndrew Kelley
2022-12-06actually remove stage1Andrew Kelley
2022-12-06build: introduce -Dwasi-bootstrap optionAndrew Kelley
Also, make -Donly-c prevent Autodoc from being included in the binary. This produces a 2.6 MiB zig.wasm file. 781 KB if piped through zstd.
2022-12-06remove `-fstage1` optionAndrew Kelley
After this commit, the self-hosted compiler does not offer the option to use stage1 as a backend anymore.