mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
build: reorganize cmake files
Also add _GNU_SOURCE compiler definition for all non MSVC compilers. Closes https://github.com/neovim/neovim/issues/26087.
This commit is contained in:
parent
b4fee208ef
commit
78239f0bbc
@ -50,6 +50,10 @@ if(NOT CI_BUILD)
|
|||||||
set(CMAKE_INSTALL_MESSAGE NEVER)
|
set(CMAKE_INSTALL_MESSAGE NEVER)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS 3.20)
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Prefer our bundled versions of dependencies.
|
# Prefer our bundled versions of dependencies.
|
||||||
if(DEFINED ENV{DEPS_BUILD_DIR})
|
if(DEFINED ENV{DEPS_BUILD_DIR})
|
||||||
set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies")
|
set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies")
|
||||||
|
@ -1,6 +1,15 @@
|
|||||||
add_library(main_lib INTERFACE)
|
add_library(main_lib INTERFACE)
|
||||||
add_executable(nvim main.c)
|
add_executable(nvim main.c)
|
||||||
|
|
||||||
|
set_target_properties(nvim
|
||||||
|
PROPERTIES
|
||||||
|
EXPORT_COMPILE_COMMANDS ON
|
||||||
|
ENABLE_EXPORTS TRUE)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Dependencies
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
add_library(libuv INTERFACE)
|
add_library(libuv INTERFACE)
|
||||||
find_package(libuv CONFIG QUIET)
|
find_package(libuv CONFIG QUIET)
|
||||||
if(TARGET libuv::uv_a)
|
if(TARGET libuv::uv_a)
|
||||||
@ -70,6 +79,148 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Compiler and linker options
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Compiler specific options
|
||||||
|
if(MSVC)
|
||||||
|
target_compile_options(main_lib INTERFACE -W3)
|
||||||
|
|
||||||
|
# Disable warnings that give too many false positives.
|
||||||
|
target_compile_options(main_lib INTERFACE -wd4311 -wd4146 -wd4003 -wd4715)
|
||||||
|
target_compile_definitions(main_lib INTERFACE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
|
||||||
|
|
||||||
|
target_sources(main_lib INTERFACE ${CMAKE_CURRENT_LIST_DIR}/os/nvim.manifest)
|
||||||
|
elseif(MINGW)
|
||||||
|
# Use POSIX compatible stdio in Mingw
|
||||||
|
target_compile_definitions(main_lib INTERFACE __USE_MINGW_ANSI_STDIO)
|
||||||
|
|
||||||
|
# Enable wmain
|
||||||
|
target_link_libraries(nvim PRIVATE -municode)
|
||||||
|
elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
|
target_compile_options(main_lib INTERFACE -fno-common
|
||||||
|
$<$<CONFIG:Release>:-Wno-unused-result>
|
||||||
|
$<$<CONFIG:RelWithDebInfo>:-Wno-unused-result>
|
||||||
|
$<$<CONFIG:MinSizeRel>:-Wno-unused-result>)
|
||||||
|
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
# On FreeBSD 64 math.h uses unguarded C11 extension, which taints clang
|
||||||
|
# 3.4.1 used there.
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||||
|
target_compile_options(main_lib INTERFACE -Wno-c11-extensions)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# workaround for clang-11 on macOS, supported on later versions
|
||||||
|
if(NOT APPLE)
|
||||||
|
target_link_libraries(nvim PRIVATE -Wl,--no-undefined)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT MSVC)
|
||||||
|
target_compile_options(main_lib INTERFACE -Wall -Wextra -pedantic -Wno-unused-parameter
|
||||||
|
-Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wvla
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wmissing-noreturn
|
||||||
|
-Wmissing-format-attribute
|
||||||
|
-Wmissing-prototypes
|
||||||
|
-fsigned-char)
|
||||||
|
|
||||||
|
# For O_CLOEXEC, O_DIRECTORY, and O_NOFOLLOW flags on older systems
|
||||||
|
# (pre POSIX.1-2008: glibc 2.11 and earlier). #4042
|
||||||
|
# For ptsname(). #6743
|
||||||
|
target_compile_definitions(main_lib INTERFACE _GNU_SOURCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
target_compile_definitions(main_lib INTERFACE _WIN32_WINNT=0x0602 MSWIN)
|
||||||
|
target_link_libraries(main_lib INTERFACE netapi32)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
target_link_libraries(nvim PRIVATE "-framework CoreServices")
|
||||||
|
|
||||||
|
# Actually export symbols - symbols may not be visible even though
|
||||||
|
# ENABLE_EXPORTS is set to true. See
|
||||||
|
# https://github.com/neovim/neovim/issues/25295
|
||||||
|
set_target_properties(nvim PROPERTIES LINK_FLAGS "-Wl,-export_dynamic")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
|
||||||
|
target_link_libraries(main_lib INTERFACE pthread c++abi)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||||
|
target_link_libraries(nvim PRIVATE -lsocket)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(UNIX)
|
||||||
|
target_link_libraries(main_lib INTERFACE m)
|
||||||
|
if (NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||||
|
target_link_libraries(main_lib INTERFACE util)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# -fstack-protector breaks non Unix builds even in Mingw-w64
|
||||||
|
check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
||||||
|
if(HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
||||||
|
target_compile_options(main_lib INTERFACE -fstack-protector-strong)
|
||||||
|
target_link_libraries(main_lib INTERFACE -fstack-protector-strong)
|
||||||
|
else()
|
||||||
|
check_c_compiler_flag(-fstack-protector HAS_FSTACK_PROTECTOR_FLAG)
|
||||||
|
if(HAS_FSTACK_PROTECTOR_FLAG)
|
||||||
|
target_compile_options(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4)
|
||||||
|
target_link_libraries(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_c_compiler_flag(-Wimplicit-fallthrough HAVE_WIMPLICIT_FALLTHROUGH_FLAG)
|
||||||
|
if(HAVE_WIMPLICIT_FALLTHROUGH_FLAG)
|
||||||
|
target_compile_options(main_lib INTERFACE -Wimplicit-fallthrough)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_c_compiler_flag(-fdiagnostics-color=auto HAS_DIAG_COLOR_FLAG)
|
||||||
|
if(HAS_DIAG_COLOR_FLAG)
|
||||||
|
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||||
|
target_compile_options(main_lib INTERFACE -fdiagnostics-color=always)
|
||||||
|
else()
|
||||||
|
target_compile_options(main_lib INTERFACE -fdiagnostics-color=auto)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_compile_definitions(main_lib INTERFACE INCLUDE_GENERATED_DECLARATIONS)
|
||||||
|
|
||||||
|
# Remove --sort-common from linker flags, as this seems to cause bugs (see #2641, #3374).
|
||||||
|
# TODO: Figure out the root cause.
|
||||||
|
if(CMAKE_EXE_LINKER_FLAGS MATCHES "--sort-common" OR
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS MATCHES "--sort-common" OR
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS MATCHES "--sort-common")
|
||||||
|
message(STATUS "Removing --sort-common from linker flags")
|
||||||
|
string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
||||||
|
string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||||
|
string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||||
|
|
||||||
|
# If no linker flags remain for a -Wl argument, remove it.
|
||||||
|
# '-Wl$' will match LDFLAGS="-Wl,--sort-common",
|
||||||
|
# '-Wl ' will match LDFLAGS="-Wl,--sort-common -Wl,..."
|
||||||
|
string(REGEX REPLACE "-Wl($| )" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
||||||
|
string(REGEX REPLACE "-Wl($| )" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||||
|
string(REGEX REPLACE "-Wl($| )" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Cmake options
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
option(CI_BUILD "CI, extra flags will be set" OFF)
|
||||||
|
if(CI_BUILD)
|
||||||
|
message(STATUS "CI build enabled")
|
||||||
|
if(MSVC)
|
||||||
|
target_compile_options(main_lib INTERFACE -WX)
|
||||||
|
else()
|
||||||
|
target_compile_options(main_lib INTERFACE -Werror)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
option(ENABLE_IWYU "Run include-what-you-use with the compiler." OFF)
|
option(ENABLE_IWYU "Run include-what-you-use with the compiler." OFF)
|
||||||
if(ENABLE_IWYU)
|
if(ENABLE_IWYU)
|
||||||
find_program(IWYU_PRG NAMES include-what-you-use iwyu)
|
find_program(IWYU_PRG NAMES include-what-you-use iwyu)
|
||||||
@ -87,42 +238,6 @@ if(ENABLE_IWYU)
|
|||||||
target_compile_definitions(main_lib INTERFACE EXITFREE)
|
target_compile_definitions(main_lib INTERFACE EXITFREE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
target_compile_options(main_lib INTERFACE -W3)
|
|
||||||
|
|
||||||
# Disable warnings that give too many false positives.
|
|
||||||
target_compile_options(main_lib INTERFACE -wd4311 -wd4146 -wd4003 -wd4715)
|
|
||||||
target_compile_definitions(main_lib INTERFACE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
|
|
||||||
|
|
||||||
target_sources(main_lib INTERFACE ${CMAKE_CURRENT_LIST_DIR}/os/nvim.manifest)
|
|
||||||
else()
|
|
||||||
target_compile_options(main_lib INTERFACE -Wall -Wextra -pedantic -Wno-unused-parameter
|
|
||||||
-Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wvla
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Wmissing-noreturn
|
|
||||||
-Wmissing-format-attribute
|
|
||||||
-Wmissing-prototypes
|
|
||||||
-fsigned-char)
|
|
||||||
|
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
|
||||||
target_compile_options(main_lib INTERFACE -fno-common
|
|
||||||
$<$<CONFIG:Release>:-Wno-unused-result>
|
|
||||||
$<$<CONFIG:RelWithDebInfo>:-Wno-unused-result>
|
|
||||||
$<$<CONFIG:MinSizeRel>:-Wno-unused-result>)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# On FreeBSD 64 math.h uses unguarded C11 extension, which taints clang
|
|
||||||
# 3.4.1 used there.
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
||||||
target_compile_options(main_lib INTERFACE -Wno-c11-extensions)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
check_c_compiler_flag(-Wimplicit-fallthrough HAVE_WIMPLICIT_FALLTHROUGH_FLAG)
|
|
||||||
if(HAVE_WIMPLICIT_FALLTHROUGH_FLAG)
|
|
||||||
target_compile_options(main_lib INTERFACE -Wimplicit-fallthrough)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(ENABLE_COMPILER_SUGGESTIONS "Enable -Wsuggest compiler warnings" OFF)
|
option(ENABLE_COMPILER_SUGGESTIONS "Enable -Wsuggest compiler warnings" OFF)
|
||||||
if(ENABLE_COMPILER_SUGGESTIONS)
|
if(ENABLE_COMPILER_SUGGESTIONS)
|
||||||
# Clang doesn't have -Wsuggest-attribute so check for each one.
|
# Clang doesn't have -Wsuggest-attribute so check for each one.
|
||||||
@ -147,67 +262,6 @@ if(ENABLE_COMPILER_SUGGESTIONS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MINGW)
|
|
||||||
# Use POSIX compatible stdio in Mingw
|
|
||||||
target_compile_definitions(main_lib INTERFACE __USE_MINGW_ANSI_STDIO)
|
|
||||||
endif()
|
|
||||||
if(WIN32)
|
|
||||||
target_compile_definitions(main_lib INTERFACE _WIN32_WINNT=0x0602 MSWIN)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
check_c_compiler_flag(-fdiagnostics-color=auto HAS_DIAG_COLOR_FLAG)
|
|
||||||
if(HAS_DIAG_COLOR_FLAG)
|
|
||||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
|
||||||
target_compile_options(main_lib INTERFACE -fdiagnostics-color=always)
|
|
||||||
else()
|
|
||||||
target_compile_options(main_lib INTERFACE -fdiagnostics-color=auto)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(CI_BUILD "CI, extra flags will be set" OFF)
|
|
||||||
if(CI_BUILD)
|
|
||||||
message(STATUS "CI build enabled")
|
|
||||||
if(MSVC)
|
|
||||||
target_compile_options(main_lib INTERFACE -WX)
|
|
||||||
else()
|
|
||||||
target_compile_options(main_lib INTERFACE -Werror)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_compile_definitions(main_lib INTERFACE INCLUDE_GENERATED_DECLARATIONS)
|
|
||||||
|
|
||||||
# Remove --sort-common from linker flags, as this seems to cause bugs (see #2641, #3374).
|
|
||||||
# TODO: Figure out the root cause.
|
|
||||||
if(CMAKE_EXE_LINKER_FLAGS MATCHES "--sort-common" OR
|
|
||||||
CMAKE_SHARED_LINKER_FLAGS MATCHES "--sort-common" OR
|
|
||||||
CMAKE_MODULE_LINKER_FLAGS MATCHES "--sort-common")
|
|
||||||
message(STATUS "Removing --sort-common from linker flags")
|
|
||||||
string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
|
||||||
string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
|
||||||
string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
|
|
||||||
|
|
||||||
# If no linker flags remain for a -Wl argument, remove it.
|
|
||||||
# '-Wl$' will match LDFLAGS="-Wl,--sort-common",
|
|
||||||
# '-Wl ' will match LDFLAGS="-Wl,--sort-common -Wl,..."
|
|
||||||
string(REGEX REPLACE "-Wl($| )" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
|
||||||
string(REGEX REPLACE "-Wl($| )" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
|
||||||
string(REGEX REPLACE "-Wl($| )" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
|
||||||
target_link_libraries(nvim PRIVATE -Wl,--no-undefined -lsocket)
|
|
||||||
# workaround for clang-11 on macOS, supported on later versions:
|
|
||||||
elseif(NOT APPLE)
|
|
||||||
target_link_libraries(nvim PRIVATE -Wl,--no-undefined)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# For O_CLOEXEC, O_DIRECTORY, and O_NOFOLLOW flags on older systems
|
|
||||||
# (pre POSIX.1-2008: glibc 2.11 and earlier). #4042
|
|
||||||
# For ptsname(). #6743
|
|
||||||
target_compile_definitions(main_lib INTERFACE _GNU_SOURCE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(ENABLE_GCOV "Enable gcov support" OFF)
|
option(ENABLE_GCOV "Enable gcov support" OFF)
|
||||||
if(ENABLE_GCOV)
|
if(ENABLE_GCOV)
|
||||||
if(ENABLE_TSAN)
|
if(ENABLE_TSAN)
|
||||||
@ -220,34 +274,9 @@ if(ENABLE_GCOV)
|
|||||||
target_compile_definitions(main_lib INTERFACE USE_GCOV)
|
target_compile_definitions(main_lib INTERFACE USE_GCOV)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
#-------------------------------------------------------------------------------
|
||||||
if(MINGW)
|
# Variables
|
||||||
# Enable wmain
|
#-------------------------------------------------------------------------------
|
||||||
target_link_libraries(nvim PRIVATE -municode)
|
|
||||||
endif()
|
|
||||||
elseif(APPLE)
|
|
||||||
target_link_libraries(nvim PRIVATE "-framework CoreServices")
|
|
||||||
|
|
||||||
# Actually export symbols - symbols may not be visible even though
|
|
||||||
# ENABLE_EXPORTS is set to true. See
|
|
||||||
# https://github.com/neovim/neovim/issues/25295
|
|
||||||
set_target_properties(nvim PROPERTIES LINK_FLAGS "-Wl,-export_dynamic")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(UNIX)
|
|
||||||
# -fstack-protector breaks non Unix builds even in Mingw-w64
|
|
||||||
check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
|
||||||
if(HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
|
||||||
target_compile_options(main_lib INTERFACE -fstack-protector-strong)
|
|
||||||
target_link_libraries(main_lib INTERFACE -fstack-protector-strong)
|
|
||||||
else()
|
|
||||||
check_c_compiler_flag(-fstack-protector HAS_FSTACK_PROTECTOR_FLAG)
|
|
||||||
if(HAS_FSTACK_PROTECTOR_FLAG)
|
|
||||||
target_compile_options(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4)
|
|
||||||
target_link_libraries(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(GENERATOR_DIR ${CMAKE_CURRENT_LIST_DIR}/generators)
|
set(GENERATOR_DIR ${CMAKE_CURRENT_LIST_DIR}/generators)
|
||||||
set(GENERATED_DIR ${PROJECT_BINARY_DIR}/src/nvim/auto)
|
set(GENERATED_DIR ${PROJECT_BINARY_DIR}/src/nvim/auto)
|
||||||
@ -401,6 +430,10 @@ if(ENABLE_ASAN_UBSAN OR ENABLE_MSAN OR ENABLE_TSAN)
|
|||||||
target_compile_definitions(main_lib INTERFACE EXITFREE)
|
target_compile_definitions(main_lib INTERFACE EXITFREE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Header generation
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
get_target_property(prop main_lib INTERFACE_COMPILE_DEFINITIONS)
|
get_target_property(prop main_lib INTERFACE_COMPILE_DEFINITIONS)
|
||||||
foreach(gen_cdef DO_NOT_DEFINE_EMPTY_ATTRIBUTES ${prop})
|
foreach(gen_cdef DO_NOT_DEFINE_EMPTY_ATTRIBUTES ${prop})
|
||||||
if(NOT ${gen_cdef} MATCHES "INCLUDE_GENERATED_DECLARATIONS")
|
if(NOT ${gen_cdef} MATCHES "INCLUDE_GENERATED_DECLARATIONS")
|
||||||
@ -417,8 +450,7 @@ foreach(target ${targets})
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(APPLE AND CMAKE_OSX_SYSROOT)
|
if(APPLE AND CMAKE_OSX_SYSROOT)
|
||||||
list(APPEND gen_cflags "-isysroot")
|
list(APPEND gen_cflags "-isysroot" "${CMAKE_OSX_SYSROOT}")
|
||||||
list(APPEND gen_cflags "${CMAKE_OSX_SYSROOT}")
|
|
||||||
endif()
|
endif()
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
list(APPEND gen_cflags -wd4003)
|
list(APPEND gen_cflags -wd4003)
|
||||||
@ -629,21 +661,6 @@ foreach(hfile ${NVIM_GENERATED_FOR_HEADERS})
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
|
|
||||||
target_link_libraries(main_lib INTERFACE pthread c++abi)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_link_libraries(main_lib INTERFACE netapi32)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(UNIX)
|
|
||||||
target_link_libraries(main_lib INTERFACE m)
|
|
||||||
if (NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
|
||||||
target_link_libraries(main_lib INTERFACE util)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PREFER_LUA)
|
if(PREFER_LUA)
|
||||||
message(STATUS "luajit not used, skipping unit tests")
|
message(STATUS "luajit not used, skipping unit tests")
|
||||||
else()
|
else()
|
||||||
@ -663,15 +680,6 @@ target_sources(main_lib INTERFACE
|
|||||||
|
|
||||||
target_sources(nlua0 PUBLIC ${NLUA0_SOURCES})
|
target_sources(nlua0 PUBLIC ${NLUA0_SOURCES})
|
||||||
|
|
||||||
set_target_properties(nvim
|
|
||||||
PROPERTIES
|
|
||||||
EXPORT_COMPILE_COMMANDS ON
|
|
||||||
ENABLE_EXPORTS TRUE)
|
|
||||||
|
|
||||||
if(${CMAKE_VERSION} VERSION_LESS 3.20)
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(nvim PRIVATE main_lib PUBLIC libuv)
|
target_link_libraries(nvim PRIVATE main_lib PUBLIC libuv)
|
||||||
install_helper(TARGETS nvim)
|
install_helper(TARGETS nvim)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@ -768,6 +776,10 @@ set_target_properties(
|
|||||||
target_compile_definitions(libnvim PRIVATE MAKE_LIB)
|
target_compile_definitions(libnvim PRIVATE MAKE_LIB)
|
||||||
target_link_libraries(libnvim PRIVATE main_lib PUBLIC libuv)
|
target_link_libraries(libnvim PRIVATE main_lib PUBLIC libuv)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Cmake options
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
if(ENABLE_ASAN_UBSAN)
|
if(ENABLE_ASAN_UBSAN)
|
||||||
message(STATUS "Enabling address sanitizer and undefined behavior sanitizer for nvim.")
|
message(STATUS "Enabling address sanitizer and undefined behavior sanitizer for nvim.")
|
||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
@ -800,6 +812,10 @@ elseif(ENABLE_TSAN)
|
|||||||
target_link_libraries(nvim PRIVATE -fsanitize=thread)
|
target_link_libraries(nvim PRIVATE -fsanitize=thread)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Lint
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
find_program(CLANG_TIDY_PRG clang-tidy)
|
find_program(CLANG_TIDY_PRG clang-tidy)
|
||||||
set(EXCLUDE_CLANG_TIDY typval_encode.c.h ui_events.in.h)
|
set(EXCLUDE_CLANG_TIDY typval_encode.c.h ui_events.in.h)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
Loading…
Reference in New Issue
Block a user