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:
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