aboutsummaryrefslogtreecommitdiff
path: root/cmake
Commit message (Collapse)AuthorAge
* ci: provide separate macos releases for intel and armdundargoc2024-03-24
| | | | | | This will immensely reduce the complexity required to support both architectures, reduce overall lines of code and unblock follow-up simplifications.
* build: use `GIT_REPOSITORY` for local URLsdundargoc2024-03-23
| | | | | | | `GIT_REPOSITORY` will cause cmake to rebuild if local dependency changes, which isn't the case for `URL`. Also document how to test a different commits of a dependency.
* build: introduce variable DEPS_IGNORE_SHA for skipping dependency hash checkdundargoc2024-03-19
| | | | | | | | This will reduce friction as developers no longer need to provide a hash when testing out different commits. To skip the hash check, set `DEPS_IGNORE_SHA` to `TRUE` in `cmake.deps/CMakeLists.txt`.
* build: set deps default build type to Release (#27495)Gregory Anders2024-02-16
| | | | | | | | | | | | | Debugging dependencies is rare so a Debug build type is usually not needed. In cases where it _is_ needed it is easy to rebuild in Debug mode. But since Release builds are more common, it makes more sense as a default. For Neovim itself we stick with a Debug build as a default, since rebuilding and debugging is done _much_ more frequently than with dependencies (which we _mostly_ expect to "just work"). Also remove the CMAKE_BUILD_TYPE variable in the Makefile, since this is set by default in CMake.
* fixup: raise TS min versionChristian Clason2024-01-25
|
* build: various build improvementsdundargoc2024-01-24
| | | | | | | | | | | | | | | | | | - remove "ran-" prefix from touch files as it's redundant since the they're already in the directory named `touches`. - Include `contrib` when formatting with `make formatlua`. - Use TARGET_FILE generator expression instead of assuming the executable location. - reuse logic that determines whether to use lua or luajit. - add translations to the `nvim` target. Makefile improvements: - rename variable `CMAKE_PRG` to `CMAKE` to make it more consistent with the builtin `MAKE` variable. - stop propagating flags to generator. Users should use cmake for non-standard use cases. - remove `+` prefix from targets. If the user for whatever reason wants to dry-run a target then they should be able to.
* fix(test): call separate_arguments() correctly to honor $BUSTED_ARGS (#26905)James McCoy2024-01-05
| | | | | separate_arguments() doesn't operate in place on a variable. It expects a string argument to parse and stores the results in the specified variable.
* build: cmake fixesdundargoc2023-12-16
| | | | | | | | | | | | | | - add EXTERNALPROJECT_OPTIONS variable to main build - use `REQUIRED` keyword for IWYU. - remove check_c_compiler_flag checks when `ENABLE_COMPILER_SUGGESTIONS` is `ON`. If we explicitly enable it then we probably want it to give an error if it doesn't exist, rather than silently skip it. - Move dependency interface libraries to their find module and use them as a pseudo-imported target. - Remove BUSTED_OUTPUT_TYPE. It's not used and we can reintroduce it again if something similar is needed. - Use LINK_OPTIONS intead of LINK_FLAGS when generating the `--version` output.
* build: bump minimum cmake version to 3.13dundargoc2023-12-16
| | | | | | | | | | | The benefits are primarily being able to use FetchContent, which allows for a more flexible dependency handling. Other various quality-of-life features such as `-B` and `-S` flags are also included. This also removes broken `--version` generation as it does not work for version 3.10 and 3.11 due to the `JOIN` generator expression. Reference: https://github.com/neovim/neovim/issues/24004
* build: remove config-specific find_package search for libuvdundargoc2023-12-09
| | | | Having two separate find_package calls makes it harder to maintain.
* build: rework formatting to use add_glob_targetdundargoc2023-12-04
| | | | | | | | | | | | This will ensure that we can pass flags and make adjustments from the top level cmake file instead of digging through the cmake directory. More importantly, this will only format files that have been changed. This has a slightly higher initial cost compared to previous solution as all files must be initially formatted, but the gained speed up should more than make up for it quickly. `make formatlua` is always run due to a quirk of stylua of always changing modification time of the file regardless if there were any changes. This is not a major blocker as stylua is very fast.
* build: vendor libtermkeydundargoc2023-11-30
| | | | | This is a proof of concept/WIP to evaluate the viability of vendoring libtermkey as it's been deprecated.
* docs: small fixes (#26154)dundargoc2023-11-27
|
* fixup: quick update, squash laterdundargoc2023-11-20
|
* build: disable all compiler warnings from dependenciesdundargoc2023-11-20
|
* build: bump required minimum libvterm version to 0.3.3dundargoc2023-10-28
| | | | Also add detection for libvterm patch version.
* build: enable formatting during rebasedundargoc2023-10-23
| | | | Closes https://github.com/neovim/neovim/issues/25654
* build: adjust how find order is prioritizeddundargoc2023-10-16
| | | | | | | | | | | | | | | | | | | Ensure bundled libraries and include directories are always searched first before any others. This will provide a more consistent experience as the search order of the builtin find_ functions can vary depending on system. This should make the build process faster when building with bundled deps as we limit the search to only the .deps directory. Separating the search between .deps and everything makes debugging find_-related problems simpler if you need to check how dependencies are found. For libraries, we divide the search process into the following order: 1. Only search in .deps directory and only search for static libraries. 2. Only search in .deps directory and search for all libraries. 3. Search everywhere and search for all libraries. Make an exception for FindLibintl.cmake as changing the search order seems to break some tests on macos.
* fix(tests): set SHELL=sh #24941Sergey Slipchenko2023-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Some tests fail with $SHELL=fish #6172 Related: https://github.com/neovim/neovim/pull/6176 Solution: Replace "echo -n" with "printf", because "echo" in sh may be provided as a shell builtin, which does not accept an "-n" flag to avoid a trailing newline (e.g. on macos). "printf" is more portable (defined by POSIX) and it does not output a trailing newline by itself. Fixes #6172 TODO: Other test failures may be related to "session leader" issue: https://github.com/neovim/neovim/issues/2354 Checked by running `:terminal ./build/bin/tty-test` from Nvim with `shell=/bin/fish` (inherited from `$SHELL`) and it indeed complains about "process does not own the terminal". With `shell=sh` it doesn't complain. And unsetting `$SHELL` seems to make `nvim` to fall back to `shell=sh`. FAILED test/functional/terminal/tui_spec.lua @ 1017: TUI paste: terminal mode test/functional/terminal/tui_spec.lua:1024: Row 1 did not match. Expected: |*tty ready | |*{1: } | |* | | | |{5:^^^^^^^ }| |{3:-- TERMINAL --} | |{3:-- TERMINAL --} | Actual: |*process does not own the terminal | |* | |*[Process exited 2]{1: } | | | |{5:^^^^^^^ }| |{3:-- TERMINAL --} | |{3:-- TERMINAL --} | To print the expect() call that would assert the current screen state, use screen:snapshot_util(). In case of non-deterministic failures, use screen:redraw_debug() to show all intermediate screen states. stack traceback: test/functional/ui/screen.lua:622: in function '_wait' test/functional/ui/screen.lua:352: in function 'expect' test/functional/terminal/tui_spec.lua:1024: in function <test/functional/terminal/tui_spec.lua:1017> FAILED test/functional/terminal/tui_spec.lua @ 1551: TUI forwards :term palette colors with termguicolors test/functional/terminal/tui_spec.lua:1567: Row 1 did not match. Expected: |*{1:t}ty ready | | | |* | | | |{2:^^^^^^^ }| | | |{3:-- TERMINAL --} | Actual: |*{1:p}rocess does not own the terminal | | | |*[Process exited 2] | | | |{2:^^^^^^^ }| | | |{3:-- TERMINAL --} | To print the expect() call that would assert the current screen state, use screen:snapshot_util(). In case of non-deterministic failures, use screen:redraw_debug() to show all intermediate screen states. stack traceback: test/functional/ui/screen.lua:622: in function '_wait' test/functional/ui/screen.lua:352: in function 'expect' test/functional/terminal/tui_spec.lua:1567: in function <test/functional/terminal/tui_spec.lua:1551>
* build: remove luarocksdundargoc2023-09-10
| | | | | Luarocks is no longer needed after 25e51d393a420765d5efd44c1b4be823a5cf280a.
* build(lua): vendor coxpcallbfredl2023-09-10
| | | | Do not require luarocks on PUC lua CI just because of this single lua file
* fix(deps): make sure --force-config takes effectSergey Slipchenko2023-09-09
| | | | | | | | | | | | | | Fixes #24881 --force-config passed to luarocks' configure script is only taken into account in case "make install" is used afterwards. But if "make bootstrap" is used then this flag has no effect. And it can actually copy an existing config on the system to the new installation. That existing config can have a different version of Lua set by default. In which case luarocks will install packages for that version instead of the one used in tests. And trying to run tests then will fail because of missing packages.
* refactor(build): derocksify luacheckbfredl2023-09-07
|
* build: various fixesdundargoc2023-09-04
| | | | | | | | | - simplify lua interpreter search - fix incorrect variable name in BuildLua.cmake - build PUC Lua with -O2 - silence non-mandatory find_package search for libuv - simplify Find modules - Prefer using the explicitly set CI_BUILD over relying on the environment variable "CI".
* build: download busted from own neovim/deps repositorydundargoc2023-09-03
| | | | | | | | Downloading the necessary files all at once instead of doing dependency handling with luarocks speeds up installation immensely. We speed up the process even more by using luv as a replacement for the C modules in the busted dependencies, which allows us to skip costly compilation times. Co-authored-by: bfredl <bjorn.linse@gmail.com>
* feat(version): unverbose ":version", ":verbose version" #24195Justin M. Keyes2023-07-01
| | | | | | | | | Problem: `nvim -v` and `:version` prints system vimrc, fallback files, and compilation info by default, which most people don't care about and just clutters up the output. Solution: Omit extra info unless 'verbose' is set.
* ci: introduce CI_LINT optiondundargoc2023-06-24
| | | | | | This will abort if lint programs are not found, and is meant primarily for the lint job in CI. Supersedes the REQUIRED argument in add_glob_target as it's a superior replacement by being a built-in solution.
* feat: report "build" in vim.version() #23925treatybreaker2023-06-11
| | | | | | | | | | Problem: Nvim version string typically has a "build" component but vim.version() doesn't report it. Solution: Add the "build" field to vim.version(). Closes #23863
* build: move luarocks and rocks installation to main builddundargoc2023-05-21
| | | | | | This will ensure luacheck and busted are only installed when they're actually needed. This cuts total build time by over 50%. Closes https://github.com/neovim/neovim/issues/22797.
* build: don't format deleted filesdundargoc2023-05-18
| | | Trying to format deleted files will otherwise throw an error.
* build: bundle uncrustifydundargoc2023-05-18
| | | | | | Uncrustify is sensitive to version changes, which causes friction for contributors that doesn't have that exact version. It's also simpler to download and install the correct version than to have bespoke version checking.
* build: cmake cleanupdundargoc2023-05-13
| | | | | | | | | | - Simplify error checking when using execute_process. - Set BUILD_SHARED_LIBS to OFF when building dependencies. This is normally not needed, but msgpack interprets an unset BUILD_SHARED_LIBS to build a shared library, which is the opposite of the cmake behavior. - Move function check_lua_module to Util.cmake. - Remove unnecessary code. - Make variable naming more consistent
* feat(treesitter): add support for setting query depthsLewis Russell2023-05-11
|
* build: make lpeg an imported librarydundargoc2023-04-30
| | | | | | | | | | | Cmake truncates the full link path to a shared library if it is missing an SONAME in some undocumented scenarios. This causes builds in some systems to fail if "lpeg" isn't a library on the system path. The path of imported libraries aren't modified by cmake, so we can use that as a workaround until a proper solution for this has been identified. Closes https://github.com/neovim/neovim/issues/23395.
* refactor(build): include lpeg as a librarybfredl2023-04-27
|
* build: find system luv on ubuntudundargoc2023-04-19
| | | Also use the system luv in CI for the with-external-deps job.
* build: cmake cleanupdundargoc2023-04-04
| | | | | | | - Change libtermkeyCMakeLists.txt to LibtermkeyCMakeLists.txt - Remove duplicate mark_as_advanced calls in FindLibuv.cmake - Fix "Enabling Clang sanitizer" messages as it's no longer clang-only - Simplify parser installation syntax - Rename tree-sitter to treesitter
* refactor(build): make installation of runtime/ more effectivebfredl2023-03-07
| | | | | | | | | | | | | | | | | | | Currently files to install in runtime/ is detected by recursive glob pattern which has two problems: - cmake needs to do a of work at config time and build/runtime/cmake_install.cmake becomes HUGE (2.5MB, biggest config file) - we need to explicitly specify each file suffix used in the entire runtime, which is duplication of information. These globs specify every single file in a subdirectory. Thus, we can just install every runtime/ subdirectory as a single install command. Furthermore, at the top-level, only .vim and .lua files need to be installed. Further possible refactor: we could move files which does not belong in $PREFIX/runtime out of $REPO/runtime. Then runtime could be installed with a single install_helper(DIRECTORY ...) command.
* build: remove workaround for incorrectly packaged libluvdundargoc2023-03-05
| | | | | | This removes a workaround for incorrectly packaged libluv in 90e44ecf1144cb32195da00e24d23afb111ea680 as it should not be needed anymore.
* build: silence git describe error outputBiswapriyo Nath2023-03-05
| | | | | This change will silence the warning from git describe command when the project is built using source tarball. The warning is fatal: not a git repository: 'neovim/.git'
* build(deps): bump msgpack-c to v6.0.0 (#22522)Christian Clason2023-03-04
| | | | | * Remove C++ requirement if test is disabled * Change CMake package name of C library to msgpack-c * Unified all C package, library, cmake, tarball name become msgpack-c.
* refactor(build): graduate unibilium VAR_FROM feature from 2017bfredl2023-03-03
|
* refactor(build): graduate msgpack-c FLOAT32 "feature" since foreverbfredl2023-03-03
|
* refactor(build): graduate libtreesitter features which are 1+ years oldbfredl2023-03-03
|
* build: cmake cleanup (#22251)dundargoc2023-03-02
| | | | | | | | - Remove unused code - Use consistent casing. Variable names such as LibLuV_LIBRARIES is needlessly jarring, even if the name might be technically correct. - Use title casing for packages. find_package(unibilium) requires the find_module to be named "Findunibilium.cmake", which makes it harder to spot when scanning the files. Instead, use "Unibilium".
* build: remove libfindmacros library (#22423)dundargoc2023-03-02
| | | | | | Large parts the library weren't being used, and the parts that were was overly abstracted for our use case. Additionally, part of its use case was to abstract pkgconfig boilerplate, which is no longer needed as pkgconfig has been removed in favor of relying on cmake alone in 09118052cee5aef978d6075db5287c1b6c27381a.
* build: remove pkgconfig-related code (#22422)dundargoc2023-02-26
| | | Cmake should already be able to find everything on its own.
* docs: fix typos (#21961)dundargoc2023-02-20
| | | Co-authored-by: Ben Morgan <cassava@iexu.de>
* build: use libuv config file (#22209)ii142023-02-16
| | | | | | | | | Libuv's recent changes in their pc file breaks cmake; they are using -l:libuv.a for the linker, and it seems cmake can't resolve that. Prefer using their cmake config file instead instead, and use the find module as a fall-back in case it fails. Closes https://github.com/neovim/neovim/issues/22271.
* ci: print DLL copy messages only in CI environment (#22260)Enan Ajmain2023-02-14
| | | In Windows, library DLL's are copied in the building process, and a message for each copy is printed. This is useful to have in the log of CI, but annoying to see when you're building and rebuilding nvim constantly. Work around this issue by only enabling the messages on CI.