aboutsummaryrefslogtreecommitdiff
path: root/cmake.config
Commit message (Collapse)AuthorAge
* test: port libvterm unit test to neovim test suitedundargoc2024-10-22
| | | | | | | These were imported from the v0.3.3 git tag https://github.com/neovim/libvterm/tree/v0.3.3 and not the latest commit. This is for compatibility reasons as the libvterm code was imported from v0.3.3.
* fix(build): remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAMEbfredl2024-10-11
| | | | | It stands to reason, you need to "fix" case-insensitive filenames if-and-only-if you have case-insensitive filenames.
* build: bump minimum cmake version to 3.16dundargoc2024-09-21
|
* refactor(build): make all generated c files headersbfredl2024-04-27
| | | | | | | | | | | | | | | There's no "rule" or bad practice or whatever that says we cannot generate c files. it is is just that we have ~20 generated headers and ~2 generated sources and there is nothing in these two generated source files which sets them aparts. Lua bindings are not different from rpc bindings, and pathdef is not different from versiondef. So to simplify build logic and ease the future port to build.zig, streamline the build to only have generated headers, no direct generated .c files. Also "nlua_add_api_functions" had its prototype duplicated twice which defeated the point of having mandatory prototypes (one source of truth).
* build: fix link error for `_BitScanForward64` (#28173)Famiu Haque2024-04-05
| | | | Problem: The usage of `_BitScanForward64` causes linking to fail on some systems. Solution: Correctly check if it exists using `check_c_source_compiles`.
* refactor(metadata): generate all metadata in luabfredl2024-02-28
| | | | | | | | Then we can just load metadata in C as a single msgpack blob. Which also can be used directly as binarly data, instead of first unpacking all the functions and ui_events metadata to immediately pack it again, which was a bit of a silly walk (and one extra usecase of `msgpack_rpc_from_object` which will get yak shaved in the next PR)
* build: create separate targets for nvim with and without runtime filesdundargoc2024-01-20
| | | | | | | This distinction is important for correct dependency management, as the nvim binary is used to create some runtime files. The nvim binary (and the target to build it) is thus called `nvim_bin` and the target to build all of nvim (binary+runtime) is called `nvim`.
* refactor(IWYU): fix headersdundargoc2024-01-11
| | | | | | Remove `export` pramgas from defs headers as it causes IWYU to believe that the definitions from the defs headers comes from main header, which is not what we really want.
* build: various improvementsdundargoc2023-12-30
| | | | | | | | | | - Use `#pragma once` for `cmake.config/config.h.in` - Remove unused variable `CACHED_GENERATED_DIR` - Reorganize and sort variables - Introduce `STYLUA_DIRS` variable to ensure the `formatlua` and `lintlua-stylua` operates on the same files. - Adjust variable scope to avoid using hacky directory properties. - Add more necessary runtime files as test dependencies
* refactor: run IWYU on entire repodundargoc2023-12-21
| | | | Reference: https://github.com/neovim/neovim/issues/6371.
* refactor: move non-symbols to defs.h headersdundargoc2023-12-17
|
* build: eliminate semicolons from --version stringDaiki Noda2023-12-17
| | | | Refactor the --version string to remove semicolons. Although semicolons are present in LINK_OPTIONS, they are not actually included during compilation.
* 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: rework --version generationdundargoc2023-12-15
| | | | | | | | Having a dynamically generated string is more maintainable than having multiple files. Also add linker flags and any potential LTO flags to the --version output.
* refactor: fix headers with IWYUdundargoc2023-11-28
|
* build(IWYU): export generated headersdundargoc2023-11-27
|
* build(IWYU): fix includes for func_attr.hdundargoc2023-11-27
|
* build: enable IWYU on macdundargoc2023-11-27
|
* build(IWYU): replace most private mappings with pragmas (#26247)zeertzjq2023-11-27
|
* refactor: move autocmd types to autocmd_defs.h (#26239)zeertzjq2023-11-27
|
* build(IWYU): replace public-to-public mappings with pragmas (#26237)zeertzjq2023-11-27
|
* build(IWYU): remove arabic_defs.h (#26235)dundargoc2023-11-27
| | | A _defs header is only needed if it's included by multiple files.
* build(IWYU): fix headers for arabic.hdundargoc2023-11-26
|
* refactor: move garray_T to garray_defs.h (#26227)zeertzjq2023-11-26
|
* build(IWYU): map everything in the C99 specificationdundargoc2023-11-26
|
* build: rework IWYU mapping filesdundargoc2023-11-25
| | | | | Create mapping to most of the C spec and some POSIX specific functions. This is more robust than relying files shipped with IWYU.
* refactor: iwyu (#26062)zeertzjq2023-11-16
|
* build: remove PVSdundargoc2023-11-12
| | | | | | | We already have an extensive suite of static analysis tools we use, which causes a fair bit of redundancy as we get duplicate warnings. PVS is also prone to give false warnings which creates a lot of work to identify and disable.
* refactor: combine regexp filesdundargoc2023-11-05
| | | | | | regext_bt.c and regexp_nfa.c are inlined into regexp.c instead of included as a header. This makes developer tools like clang-tidy and clangd be able to understand the code better.
* build: various cmake fixesdundargoc2023-11-04
| | | | | | | - silence false warnings on MSVC - merge `clang-tidy` cmake target into `lintc` and remove the corresponding make target - use cmake's built-in endianness detection
* build: add CMAKE_C_FLAGS to --version outputdundargoc2023-10-24
| | | | Closes https://github.com/neovim/neovim/issues/25754.
* refactor: move cmdline completion types to cmdexpand_defs.h (#25465)zeertzjq2023-10-02
|
* vim-patch:9.0.1963: Configure script may not detect xattrzeertzjq2023-09-30
| | | | | | | | | | | | | | Problem: Configure script may not detect xattr correctly Solution: include sys/xattr instead of attr/xattr, make Test_write_with_xattr_support() test xattr feature correctly This also applies to the Smack security feature, so change the include and configure script for it as well. closes: vim/vim#13229 https://github.com/vim/vim/commit/6de4e58cf27a3bb6e81653ca63b77e29d1bb46f2
* vim-patch:9.0.1962: No support for writing extended attributeszeertzjq2023-09-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: No support for writing extended attributes Solution: Add extended attribute support for linux It's been a long standing issue, that if you write a file with extended attributes and backupcopy is set to no, the file will loose the extended attributes. So this patch adds support for retrieving the extended attributes and copying it to the new file. It currently only works on linux, mainly because I don't know the different APIs for other systems (BSD, MacOSX and Solaris). On linux, this should be supported since Kernel 2.4 or something, so this should be pretty safe to use now. Enable the extended attribute support with normal builds. I also added it explicitly to the :version output as well as make it able to check using `:echo has("xattr")`, to have users easily check that this is available. In contrast to the similar support for SELINUX and SMACK support (which also internally uses extended attributes), I have made this a FEAT_XATTR define, instead of the similar HAVE_XATTR. Add a test and change CI to include relevant packages so that CI can test that extended attributes are correctly written. closes: vim/vim#306 closes: vim/vim#13203 https://github.com/vim/vim/commit/e085dfda5d8dde064b0332464040959479696d1c Co-authored-by: Christian Brabandt <cb@256bit.org>
* build(iwyu): add a few more _defs.h mappings (#25435)zeertzjq2023-09-30
|
* build: remove LOG_LIST_ACTIONS option and related codedundargoc2023-05-28
| | | | It has not been used for a long time and the likelihood of it still working is low.
* build: remove duplicate include directories in --version outputdundargoc2023-05-18
| | | | | | | Having the same directory listed multiple times makes the --version output needlessly complicated to visualize. This deduplication will only work for cmake version 3.15 and above, which should be the majority of neovim builds by now. For older cmake versions we default to the previous behavior of listing duplicate include directories.
* refactor(map): avoid duplicated khash_t types for valuesbfredl2023-05-17
| | | | | | | | | | | | | | | | | | | | | This reduces the total number of khash_t instantiations from 22 to 8. Make the khash internal functions take the size of values as a runtime parameter. This is abstracted with typesafe Map containers which are still specialized for both key, value type. Introduce `Set(key)` type for when there is no value. Refactor shada.c to use Map/Set instead of khash directly. This requires `map_ref` operation to be more flexible. Return pointers to both key and value, plus an indicator for new_item. As a bonus, `map_key` is now redundant. Instead of Map(cstr_t, FileMarks), use a pointer map as the FileMarks struct is humongous. Make `event_strings` actually work like an intern pool instead of wtf it was doing before.
* vim-patch:8.1.2094: the fileio.c file is too big Lewis Russell2023-04-19
| | | | | | | | | | Problem: The fileio.c file is too big. Solution: Move buf_write() to bufwrite.c. (Yegappan Lakshmanan, closes vim/vim#4990) https://github.com/vim/vim/commit/c079f0fed1c16495d726d616c5362edc04742a0d Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* build: show build type specific compiler flags when using --versiondundargoc2023-03-04
| | | | | The build type specific flags are defined in the variables CMAKE_C_FLAGS_<CONFIG>, where <CONFIG> can be DEBUG, RELEASE, RELWITHDEBINFO and MINSIZEREL.
* refactor(build): graduate HAVE_LOCALE_H featurebfredl2023-03-03
| | | | | | Merge locale.h into os/lang.h Having a source file with the same name as a system header we use is considered an anti-pattern.
* refactor(build): remove unused stdlib function and include checksbfredl2023-03-03
| | | | | | In addition: merge some checks for the same feature into one test_compile. This reduces the total number of test compiles which speeds up the cmake configure stage.
* fix: remove "Compiled by:" from :version/--version (#22316)dundargoc2023-02-18
| | | | The :version output is already crowded as is, the last thing we need is extraneous messages about who compiled it.
* build: use custom command to create single versiondef (#22290)Gregory Anders2023-02-16
| | | | | | | | When using a multi config generator, CMake generates an output file for each configuration when using file(GENERATE). When the contents of the file for each configuration are different, CMake fails. Instead, create separate files for each configuration and add a build time step to copy the configuration specific file to the generic path "auto/versiondef.h" which is included at build time.
* build: only use HOSTNAME_PRG if HOSTNAME is undefined (#22288)Gregory Anders2023-02-16
| | | | | Allow specifying the HOSTNAME variable by defining it with -D when invoking CMake, instead of overriding it with the output of HOSTNAME_RPG.
* build: mark uninteresting variables as advanced (#22208)dundargoc2023-02-10
| | | Only the most important variables should be shown by default.
* build: unbreak building neovim with multi-config generators (#22104)dundargoc2023-02-03
| | | | | | | file(GENERATE) has surprising behavior as it doesn't allow different file contents for configurations with the same file name. This results in an error when building neovim with a multi-config generator. Use a workaround for now where we set the build type for multi-config generators to "Unknown".
* build: stop relying on CMAKE_BUILD_TYPE to determine the build type (#22051)dundargoc2023-02-03
| | | | | | | | | | | | Any logic involving CMAKE_BUILD_TYPE is automatically broken as it won't work with multi-config generators. The only exception is if we explicitly check whether the current generator is single-config as well. Instead, use generator expressions or cmake variables that allows to set options for certain build types only such as INTERPROCEDURAL_OPTIMIZATION_<CONFIG>. Opt to generate all headers with optimization level O2 with no debug information for all build types as that is the simplest way to make it behave the same for all generators.
* refactor!: remove has("debug") (#22060)dundargoc2023-01-30
| | | | | This value can not be relied on as it doesn't work for multi-configuration generators. I don't think this undocumented option is used much, if at all, so I think we should remove it.
* feat!: make iconv a non-optional depLewis Russell2023-01-23
|