aboutsummaryrefslogtreecommitdiff
path: root/cmake
AgeCommit message (Collapse)Author
2025-08-30build: update to LLVM 21Alex Rønne Petersen
Closes #20966.
2025-04-06Add lld path of linuxbrew installation (#23466)Ziyi Yan
Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
2025-04-04build: Update to LLVM/Clang 20.Alex Rønne Petersen
2025-04-04Change the lld path on macos homebrewDimitris Dinodimos
Homebrew now provides lld in a separate formula; it was part of llvm formula.
2024-09-19add missing clang and llvm library listingsAndrew Kelley
2024-09-19cmake: Update to LLVM 19.Alex Rønne Petersen
Co-authored-by: David Rubin <daviru007@icloud.com>
2024-08-17cmake: CLANG_LIBRARIES: find libclang-cpp.so.18.1Forest
This fixes the failure to find CLANG_LIBRARIES on debian, which packages the relevant .so file at these paths: libclang-cpp18: /usr/lib/llvm-18/lib/libclang-cpp.so.18.1 libclang-cpp18: /usr/lib/x86_64-linux-gnu/libclang-cpp.so.18.1 libclang-cpp18: /usr/lib/x86_64-linux-gnu/libclang-cpp.so.18 (The latter two paths are symlinks to the first.)
2024-07-06cmake/findllvm: fix incorrect lib dir setup for zig2Erik Arvstedt
Line `link_directories("${CMAKE_PREFIX_PATH}/lib")` was evaluated as `link_directories("/lib")` in the default case of `CMAKE_PREFIX_PATH` being empty. This caused cmake to add `-L/lib -Wl,-rpath,/lib` to the zig2 build flags. This could result in errors on systems where libraries set via `CMAKE_LIBRARY_PATH` had conflicting versions in `/lib`: - `-L/lib` could cause linking zig2 to fail - `-Wl,-rpath,/lib` adds `/lib` as the first entry of the zig2 `RPATH`. This could cause running zig2 (to build zig3) to fail. In case of conflicting lib dirs, cmake emitted this warning, which is now fixed: ``` Cannot generate a safe runtime search path for target zig2 because files in some directories may conflict with libraries in implicit directories: runtime library [libclang-cpp.so.18.1] in /nix/store/...-clang-18.1.5-lib/lib may be hidden by files in: /lib ```
2024-05-25Revert "cmake/llvm: Don't unset LLVM_CONFIG_EXE"Andrew Kelley
This reverts commit 28476a5ee94d311319941b54e9da66210690ce70. It also adds a comment to explain the purpose of this line, to prevent this mistake from being repeated.
2024-05-20cmake/llvm: Don't unset LLVM_CONFIG_EXERidai Govinda Pombo
2024-05-15CMake: try to fix CI failuresEric Joldasov
Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
2024-05-14CMake: clean `CMAKE_{SOURCE,BUILD}_DIR`Eric Joldasov
Replace `CMAKE_SOURCE_DIR` and `CMAKE_BUILD_DIR` with different variables, or in some cases just remove them. For some function arguments, prepended `CMAKE_SOURCE_DIR` was removed without replacement. This includes: * Sources for `add_library` and `add_executable` (`ZIG_CPP_SOURCES` and `ZIG_WASM2C_SOURCES`) * Inputs for `configure_file` and `target_include_directory` * For arguments above, CMake already prepends `CMAKE_CURRENT_SOURCE_DIR` to them by default, if they are relative paths. Additionaly, it was removed from arguments of commands that have `WORKING_DIRECTORY` set to `PROJECT_SOURCE_DIR`, they will be similarly converted by CMake for us. Also: * Move project declaration to the top so that these variables are available earlier. * Avoid calling "git" executable if ".git" directory does not exist. * Swap "--prefix" and `ZIG_BUILD_ARGS` arguments in cmake/install.cmake to match same "zig2 build" command in CMakeLists.txt and allow overriding "--prefix" argument Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
2024-05-14CMake: remove C/C++ flags override for static executableEric Joldasov
They were introduced in https://github.com/ziglang/zig/pull/3467 and 5b51f41ceed6604b388b63d73360a22d1ea95749 , and become obsolete since C++-based compiler was removed: all C or C++ sources built by CMake are just intermediate steps in bootstrapping. Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
2024-05-08add missing clang static library to the buildAndrew Kelley
2024-05-08update CMake files to LLVM 18Andrew Kelley
2023-09-19update LLVM static library list to 17Andrew Kelley
release/17.x branch, commit 8f4dd44097c9ae25dd203d5ac87f3b48f854bba8
2023-09-19update cmake files to LLVM 17Andrew Kelley
2023-01-29update Findllvm.cmake static lib list to LLVM 16Andrew Kelley
2023-01-25update cmake files to LLVM 16Andrew Kelley
2023-01-05Merge pull request #13514 from kcbanner/windows_build_fixesAndrew Kelley
Windows: Support building stage3, and bootstrapping via MSVC
2023-01-05cmake: move 'continue' statement to avoid cmake bugEric Joldasov
2023-01-04build: simplify llvm-config provided system library parsingkcbanner
- Revert the addition of CLANG_SYSTEM_LIBARIES and LLVM_SYSTEM_LIBRARIES - Change addCMakeLibraryList to parse non-absolute path .lib dependencies as system libraries
2023-01-04build: first pass on geting stage3 building under x64_64-windows-msvckcbanner
2023-01-04cmake: handle llvm system libraries separately from the llvm libraries ↵kcbanner
themselves, to fix path issues on windows
2022-12-27Revert "cmake: check llvm-config in separate function"Andrew Kelley
This reverts commit 55c3efcb58cc153fc3109a61c6949e470b57b81e. This caused a regression when building Zig with Homebrew. Also I don't like that it prints a message on success. Only when there is a problem should an error message be printed. closes #14093
2022-12-27cmake: check llvm-config in separate functionEric Joldasov
2022-10-18build: avoid compiling self-hosted twiceAndrew Kelley
build.zig: add a 'compile' step to compile the self-hosted compiler without installing it. Compilation: set cache mode to whole when using the LLVM backend and --enable-cache is passed. This makes `zig build` act the same as it does with stage1. Upside is that a second invocation of `zig build` on an unmodified source tree will avoid redoing the compilation again. Downside is that it will proliferate more garbage in the project-local cache (same as stage1). This can eventually be fixed when Zig's incremental compilation is more robust; we can go back to having LLVM use CacheMode.incremental and rely on it detecting no changes and avoiding doing the flush() step.
2022-10-18cmake: separate installing and building (again)Eric Joldasov
2022-08-29Merge remote-tracking branch 'origin/master' into llvm15Andrew Kelley
2022-08-28cmake: build stage3 by defaultAndrew Kelley
This is a simplification of the cmake build script which introduces a new "stage3" target that is built by default, which builds and installs a stage3 zig. It greatly simplifies the build instructions for Zig, making it conform to the regular cmake routine, while still producing a stage3 artifact.
2022-08-02build: add new clang libraries for LLVM 15 upgradeAndrew Kelley
2022-08-02update LLVM library list to LLVM 15Andrew Kelley
2022-07-31Merge remote-tracking branch 'origin/master' into llvm15Andrew Kelley
2022-07-31cmake: Print all LLVM config errors instead of just the last onesin-ack
If you have multiple llvm-config executables in your path, and all of them cause failures, then only the last failure will be printed. This can cause confusion when the multiple llvm-config executables are from different major LLVM versions, i.e. LLVM 13 and 14, which might mask an error that happened on the LLVM 14 llvm-config with an unrelated error. This commit makes it so that all errors are collected into a list and printed all at once; this way, you can see how each llvm-config executable failed to configure properly. Note that the failures still won't be printed if a successful configuration is found.
2022-07-28update to LLVM 15Andrew Kelley
release/15.x 37007475ca1b345b4c5d340e228bcd7a62732d81
2022-07-25CMake: Search for Clang in CMAKE_LIBRARY_PATH, CMAKE_PREFIX_PATH, and ↵Cody Tapscott
CMAKE_FRAMEWORK_PATH On some systems (esp. systems that use unique hashed file-paths for library-versions like Nix), we can't expect LLVM and Clang to share lib/bin directories. The best we can do is find the matching clang libraries in the CMAKE_LIBRARY_PATH provided by the environment
2022-07-23CMake: Search more permissively for LLDCody Tapscott
This change relaxes the restriction added in the prior commit that LLD should be alongside LLVM. This also leaves unresolved the issue of making sure the link mode (static or shared) of LLD matches that of LLVM/Clang. That would be an unfortunate restriction, since LLD seems to be provided only as a static lib on some distros.
2022-07-23CMake: Improve usage of `llvm-config`, esp. for consistent linkingCody Tapscott
This commit reworks the LLVM/Clang/LLD discovery process for CMake. The biggest changes are that: 1. We search for LLVM from most preferred directory to least, skipping any `llvm-config` that is the wrong version, or that doesn't support the requested link mode ("static" or "shared"). 2. `ZIG_PREFER_CLANG_CPP_DYLIB` has been renamed to `ZIG_SHARED_LLVM`, to better align with `ZIG_STATIC_LLVM`. 3. We only search for LLVM in the same directory alongside LLVM. 4. LLVM's link mode is forwarded to Clang, so that we can look for the appropriate shared/static libraries. 5. We use `--link-static` when querying `--system-libs` from llvm-config, so that this will include libz and other dependencies for statically linking LLD
2022-07-14CMake: Use NAMES_PER_DIR in all lookupsCody Tapscott
CMake has a surprising default behavior where looking up a library by multiple names gives the name order higher priority than the directory search order. For example, if your system provides "llvm-config-14" and CMAKE_PREFIX_PATH includes "llvm-config", CMake will always end up choosing the system-provided llvm-config-14. This change add NAMES_PER_DIR to request the more sensible behavior: directory search order has higher priority than name order, so CMAKE_PREFIX_PATH always wins over system-provided tools/libraries.
2022-07-03update build scripts to LLD and LLVM 14 librariesAndrew Kelley
2022-07-01LLD: there are fewer libraries to link against nowAndrew Kelley
2022-07-01Merge remote-tracking branch 'origin/master' into llvm14Andrew Kelley
2022-05-05cmake: add /usr/lib/llvm13 to searched pathsIsaac Freund
Alpine linux installs llvm to this path and currently patches zig's cmake file in order to build zig from source. https://git.alpinelinux.org/aports/tree/testing/zig/llvm-include.patch?id=0c3f7850bef38fb4c63fc6af5c14724e5311b0cc
2022-02-16ci: use zig-bootstrap for windowsAndrew Kelley
2022-02-04stage1: Fix missing LLD libraryKazuki Sakamoto
2022-02-03update cmake files to LLVM 14Andrew Kelley
2021-09-30fix the list of llvm librariesAndrew Kelley
not sure what "HelloNew" was doing in there
2021-09-15Merge remote-tracking branch 'origin/master' into llvm13Andrew Kelley
Conflicts: * cmake/Findclang.cmake * cmake/Findlld.cmake * cmake/Findllvm.cmake In master branch, more search paths were added to these files with "12" in the path. In this commit I updated them to "13". * src/stage1/codegen.cpp * src/zig_llvm.cpp * src/zig_llvm.h In master branch, ZigLLVMBuildCmpXchg is improved to add `is_single_threaded`. However, the LLVM 13 C API has this already, and in the llvm13 branch, ZigLLVMBuildCmpXchg is deleted in favor of the C API. In this commit I updated stage2 to use the LLVM 13 C API rather than depending on an improved ZigLLVMBuildCmpXchg. Additionally, src/target.zig largestAtomicBits needed to be updated to include the new m68k ISA.
2021-09-08cmake: also check Homebrew install paths when looking for LLVMFnControlOption
- On Intel Macs, the path is /usr/local/opt/llvm@12 - On Silicon Macs, the path is /opt/homebrew/opt/llvm@12 This makes specifying CMAKE_PREFIX_PATH optional for Homebrew LLVM.
2021-08-15cmake: update to LLVM 13 rc1Andrew Kelley
More precisely, aac4fe380d16a957627af2d6e5110ee35ad7e7e7 which is the current tip of release/13.x. Immediately following commits are tracking the same LLVM version.