${NVIM_HEADERS})
# Log level (NVIM_LOG_DEBUG in log.h)
if(CI_BUILD)
# Don't debug log on CI, it gets too verbose in the main build log.
# TODO(bfredl): debug log level also exposes some errors with EXITFREE in ASAN build.
else()
# Minimize logging for release-type builds.
target_compile_definitions(nvim_bin PRIVATE $<$<CONFIG:Debug>:NVIM_LOG_DEBUG>)
endif()
if(ENABLE_ASAN_UBSAN OR ENABLE_MSAN OR ENABLE_TSAN)
target_compile_definitions(main_lib INTERFACE EXITFREE)
endif()
#-------------------------------------------------------------------------------
# Header generation
#-------------------------------------------------------------------------------
get_target_property(prop main_lib INTERFACE_COMPILE_DEFINITIONS)
if(NOT "${prop}" STREQUAL "prop-NOTFOUND")
foreach(gen_cdef ${prop})
if(NOT ${gen_cdef} MATCHES "INCLUDE_GENERATED_DECLARATIONS")
list(APPEND gen_cflags "-D${gen_cdef}")
endif()
endforeach()
endif()
get_directory_property(targets BUILDSYSTEM_TARGETS)
foreach(target ${targets})
get_target_property(prop ${target} INTERFACE_INCLUDE_DIRECTORIES)
if(NOT "${prop}" STREQUAL "prop-NOTFOUND")
message(STATUS "${target} props '${prop}'")
foreach(gen_include ${prop})
list(APPEND gen_cflags "-I${gen_include}")
list(APPEND TEST_INCLUDE_DIRS "${gen_include}")
endforeach()
endif()
endforeach()
list(REMOVE_DUPLICATES gen_cflags)
list(REMOVE_DUPLICATES TEST_INCLUDE_DIRS)
if(APPLE AND CMAKE_OSX_SYSROOT)
list(APPEND gen_cflags "-isysroot" "${CMAKE_OSX_SYSROOT}")
endif()
if(MSVC)
list(APPEND gen_cflags -wd4003)
endif()
set(NVIM_VERSION_GIT_H ${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef_git.h)
add_custom_target(update_version_stamp
COMMAND ${CMAKE_COMMAND}
-D NVIM_VERSION_MAJOR=${NVIM_VERSION_MAJOR}
-D NVIM_VERSION_MINOR=${NVIM_VERSION_MINOR}
-D NVIM_VERSION_PATCH=${NVIM_VERSION_PATCH}
-D NVIM_VERSION_PRERELEASE=${NVIM_VERSION_PRERELEASE}
-D OUTPUT=${NVIM_VERSION_GIT_H}
-D NVIM_SOURCE_DIR=${CMAKE_SOURCE_DIR}
-P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersion.cmake
BYPRODUCTS ${NVIM_VERSION_GIT_H})
set(NVIM_VERSION_DEF_H ${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h)
add_custom_command(
OUTPUT "${NVIM_VERSION_DEF_H}"
COMMAND "${CMAKE_COMMAND}"
-E copy
"${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef-$<CONFIG>.h"
"${NVIM_VERSION_DEF_H}"
DEPENDS "${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef-$<CONFIG>.h")
set(LUA_GEN ${LUA_GEN_PRG} ${GENERATOR_PRELOAD} ${PROJECT_SOURCE_DIR} $<TARGET_FILE:nlua0> ${PROJECT_BINARY_DIR})
set(LUA_GEN_DEPS ${GENERATOR_PRELOAD} $<TARGET_FILE:nlua0>)
# Like LUA_GEN but includes also vim.fn, vim.api, vim.uv, etc
set(NVIM_LUA $<TARGET_FILE:nvim_bin> -u NONE -l ${NVIM_LUA_PRELOAD} ${PROJECT_SOURCE_DIR})
# NVIM_GENERATED_FOR_HEADERS: generated headers to be included in headers
# NVIM_GENERATED_FOR_SOURCES: generated headers to be included in sources
# These lists must be mutually exclusive.
foreach(sfile ${NVIM_SOURCES}
${NVIM_HEADERS}
${GENERATED_API_DISPATCH}
"${GENERATED_UI_EVENTS_CALL}"
"${GENERATED_UI_EVENTS_REMOTE}"
"${GENERATED_UI_EVENTS_CLIENT}"
)
get_filename_component(full_d ${sfile} DIRECTORY)
file(RELATIVE_PATH d "${CMAKE_CURRENT_LIST_DIR}" "${full_d}")
if(${d} MATCHES "^[.][.]|auto/")
file(RELATIVE_PATH d "${GENERATED_DIR}" "${full_d}")
endif()
get_filename_component(f ${sfile} NAME)
get_filename_component(r ${sfile} NAME_WE)
get_filename_component(ext ${sfile} EXT)
if(NOT ${d} EQUAL ".")
set(f "${d}/${f}")
set(r "${d}/${r}")
endif()
if ("${ext}" STREQUAL ".c.h")
continue() # .c.h files are sussy baka, skip
elseif(${sfile} IN_LIST NVIM_HEADERS)
set(gf_basename "${r}.h.inline.generated.h")
set(gf_c_h "${GENERATED_INCLUDES_DIR}/${r}.h.inline.generated.h")
set(gf_h_h "SKIP")
set(gf_h_h_out "")
else()
set(gf_basename "${r}.c.generated.h")