neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 964ae205a583807127eda75d9876fb6dfda6065c
parent 144279ef30a432ac8416746e3491f3120ae9b4e8
Author: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date:   Fri,  3 Feb 2023 10:53:57 +0100

build: unbreak building neovim with multi-config generators (#22104)

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".
Diffstat:
Mcmake.config/CMakeLists.txt | 16++++++++--------
Acmake.config/versiondef-multi.h.in | 21+++++++++++++++++++++
Dcmake.config/versiondef-old.h.in | 21---------------------
Mcmake.config/versiondef.h.in | 2+-
4 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/cmake.config/CMakeLists.txt b/cmake.config/CMakeLists.txt @@ -162,15 +162,15 @@ configure_file ( "${PROJECT_BINARY_DIR}/cmake.config/auto/config.h" ) -# Improved :version output on newer cmake versions -if(${CMAKE_VERSION} VERSION_LESS 3.14) - configure_file( - "${PROJECT_SOURCE_DIR}/cmake.config/versiondef-old.h.in" - "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h.gen") +# TODO(dundargoc): the following is a hack to work around the behavior of +# file(GENERATE) for multi-config generators, since it doesn't allow different +# output with the same filename. This should be fixed to be generator +# independent in the future. +get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(isMultiConfig) + configure_file(versiondef-multi.h.in auto/versiondef.h.gen) else() - configure_file( - "${PROJECT_SOURCE_DIR}/cmake.config/versiondef.h.in" - "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h.gen") + configure_file(versiondef.h.in auto/versiondef.h.gen) endif() file(GENERATE OUTPUT "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h" diff --git a/cmake.config/versiondef-multi.h.in b/cmake.config/versiondef-multi.h.in @@ -0,0 +1,21 @@ +#ifndef AUTO_VERSIONDEF_H +#define AUTO_VERSIONDEF_H + +#define NVIM_VERSION_MAJOR @NVIM_VERSION_MAJOR@ +#define NVIM_VERSION_MINOR @NVIM_VERSION_MINOR@ +#define NVIM_VERSION_PATCH @NVIM_VERSION_PATCH@ +#define NVIM_VERSION_PRERELEASE "@NVIM_VERSION_PRERELEASE@" + +#cmakedefine NVIM_VERSION_MEDIUM "@NVIM_VERSION_MEDIUM@" +#ifndef NVIM_VERSION_MEDIUM +# include "auto/versiondef_git.h" +#endif + +#define NVIM_API_LEVEL @NVIM_API_LEVEL@ +#define NVIM_API_LEVEL_COMPAT @NVIM_API_LEVEL_COMPAT@ +#define NVIM_API_PRERELEASE @NVIM_API_PRERELEASE@ + +#define NVIM_VERSION_CFLAGS "${CMAKE_C_COMPILER} $<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_OPTIONS>, > -I$<JOIN:$<TARGET_PROPERTY:nvim,INCLUDE_DIRECTORIES>, -I>" +#define NVIM_VERSION_BUILD_TYPE "Unknown" + +#endif // AUTO_VERSIONDEF_H diff --git a/cmake.config/versiondef-old.h.in b/cmake.config/versiondef-old.h.in @@ -1,21 +0,0 @@ -#ifndef AUTO_VERSIONDEF_H -#define AUTO_VERSIONDEF_H - -#define NVIM_VERSION_MAJOR @NVIM_VERSION_MAJOR@ -#define NVIM_VERSION_MINOR @NVIM_VERSION_MINOR@ -#define NVIM_VERSION_PATCH @NVIM_VERSION_PATCH@ -#define NVIM_VERSION_PRERELEASE "@NVIM_VERSION_PRERELEASE@" - -#cmakedefine NVIM_VERSION_MEDIUM "@NVIM_VERSION_MEDIUM@" -#ifndef NVIM_VERSION_MEDIUM -# include "auto/versiondef_git.h" -#endif - -#define NVIM_API_LEVEL @NVIM_API_LEVEL@ -#define NVIM_API_LEVEL_COMPAT @NVIM_API_LEVEL_COMPAT@ -#define NVIM_API_PRERELEASE @NVIM_API_PRERELEASE@ - -#define NVIM_VERSION_CFLAGS "${CMAKE_C_COMPILER} $<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_OPTIONS>, > -D$<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_DEFINITIONS>, -D> -I$<JOIN:$<TARGET_PROPERTY:nvim,INCLUDE_DIRECTORIES>, -I>" -#define NVIM_VERSION_BUILD_TYPE "$<CONFIG>" - -#endif // AUTO_VERSIONDEF_H diff --git a/cmake.config/versiondef.h.in b/cmake.config/versiondef.h.in @@ -15,7 +15,7 @@ #define NVIM_API_LEVEL_COMPAT @NVIM_API_LEVEL_COMPAT@ #define NVIM_API_PRERELEASE @NVIM_API_PRERELEASE@ -#define NVIM_VERSION_CFLAGS "${CMAKE_C_COMPILER} $<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_OPTIONS>, > -D$<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_DEFINITIONS>, -D> -I$<JOIN:$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:nvim,INCLUDE_DIRECTORIES>>, -I>" +#define NVIM_VERSION_CFLAGS "${CMAKE_C_COMPILER} $<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_OPTIONS>, > -D$<JOIN:$<TARGET_PROPERTY:nvim,COMPILE_DEFINITIONS>, -D> -I$<JOIN:$<TARGET_PROPERTY:nvim,INCLUDE_DIRECTORIES>, -I>" #define NVIM_VERSION_BUILD_TYPE "$<CONFIG>" #endif // AUTO_VERSIONDEF_H