mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +00:00
build: stop relying on CMAKE_BUILD_TYPE to determine the build type (#22051)
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.
This commit is contained in:
@ -162,11 +162,19 @@ configure_file (
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/config.h"
|
||||
)
|
||||
|
||||
# generate version definitions
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/versiondef.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.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")
|
||||
else()
|
||||
configure_file(
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/versiondef.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h.gen")
|
||||
endif()
|
||||
file(GENERATE
|
||||
OUTPUT "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h"
|
||||
INPUT "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h.gen")
|
||||
|
||||
# generate pathdef.c
|
||||
find_program(WHOAMI_PROG whoami)
|
||||
|
21
cmake.config/versiondef-old.h.in
Normal file
21
cmake.config/versiondef-old.h.in
Normal file
@ -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>, > -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
|
@ -15,7 +15,7 @@
|
||||
#define NVIM_API_LEVEL_COMPAT @NVIM_API_LEVEL_COMPAT@
|
||||
#define NVIM_API_PRERELEASE @NVIM_API_PRERELEASE@
|
||||
|
||||
#define NVIM_VERSION_CFLAGS "@NVIM_VERSION_CFLAGS@"
|
||||
#define NVIM_VERSION_BUILD_TYPE "@NVIM_VERSION_BUILD_TYPE@"
|
||||
#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_BUILD_TYPE "$<CONFIG>"
|
||||
|
||||
#endif // AUTO_VERSIONDEF_H
|
||||
|
Reference in New Issue
Block a user