mirror of
https://github.com/neovim/neovim.git
synced 2025-10-08 19:06:31 +00:00
build: cmake cleanup (#22251)
- Remove unused code - Use consistent casing. Variable names such as LibLuV_LIBRARIES is needlessly jarring, even if the name might be technically correct. - Use title casing for packages. find_package(unibilium) requires the find_module to be named "Findunibilium.cmake", which makes it harder to spot when scanning the files. Instead, use "Unibilium".
This commit is contained in:
@@ -1,22 +1,19 @@
|
||||
add_library(main_lib INTERFACE)
|
||||
add_executable(nvim main.c)
|
||||
|
||||
add_library(libuv_lib INTERFACE)
|
||||
add_library(libuv INTERFACE)
|
||||
find_package(libuv CONFIG)
|
||||
if(TARGET libuv::uv_a)
|
||||
target_link_libraries(libuv_lib INTERFACE libuv::uv_a)
|
||||
target_link_libraries(libuv INTERFACE libuv::uv_a)
|
||||
mark_as_advanced(libuv_DIR)
|
||||
else()
|
||||
# Fall back to find module for older libuv versions that don't provide config file
|
||||
find_package(LibUV 1.28.0 REQUIRED MODULE)
|
||||
target_include_directories(libuv_lib SYSTEM BEFORE INTERFACE ${LIBUV_INCLUDE_DIRS})
|
||||
target_link_libraries(libuv_lib INTERFACE ${LIBUV_LIBRARIES})
|
||||
find_package(Libuv 1.28.0 REQUIRED MODULE)
|
||||
target_include_directories(libuv SYSTEM BEFORE INTERFACE ${LIBUV_INCLUDE_DIRS})
|
||||
target_link_libraries(libuv INTERFACE ${LIBUV_LIBRARIES})
|
||||
endif()
|
||||
|
||||
find_package(Msgpack 1.0.0 REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${MSGPACK_INCLUDE_DIRS})
|
||||
target_link_libraries(main_lib INTERFACE ${MSGPACK_LIBRARIES})
|
||||
|
||||
find_package(LibLUV 1.43.0 REQUIRED)
|
||||
find_package(Libluv 1.43.0 REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${LIBLUV_INCLUDE_DIRS})
|
||||
# Use "luv" as imported library, to work around CMake using "-lluv" for
|
||||
# "luv.so". #10407
|
||||
@@ -24,33 +21,28 @@ add_library(luv UNKNOWN IMPORTED)
|
||||
set_target_properties(luv PROPERTIES IMPORTED_LOCATION ${LIBLUV_LIBRARIES})
|
||||
target_link_libraries(main_lib INTERFACE luv)
|
||||
|
||||
find_package(TreeSitter REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${TreeSitter_INCLUDE_DIR})
|
||||
target_link_libraries(main_lib INTERFACE ${TreeSitter_LIBRARY})
|
||||
|
||||
find_package(unibilium 2.0 REQUIRED)
|
||||
target_link_libraries(main_lib INTERFACE unibilium)
|
||||
|
||||
find_package(LibTermkey 0.22 REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${LIBTERMKEY_INCLUDE_DIR})
|
||||
target_link_libraries(main_lib INTERFACE ${LIBTERMKEY_LIBRARY})
|
||||
|
||||
find_package(libvterm 0.3 REQUIRED)
|
||||
target_link_libraries(main_lib INTERFACE libvterm)
|
||||
|
||||
find_package(Iconv REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${ICONV_INCLUDE_DIR})
|
||||
if(ICONV_LIBRARY)
|
||||
target_link_libraries(main_lib INTERFACE ${ICONV_LIBRARY})
|
||||
endif()
|
||||
find_package(Libtermkey 0.22 REQUIRED)
|
||||
find_package(Libvterm 0.3 REQUIRED)
|
||||
find_package(Msgpack 1.0.0 REQUIRED)
|
||||
find_package(Treesitter REQUIRED)
|
||||
find_package(Unibilium 2.0 REQUIRED)
|
||||
|
||||
target_link_libraries(main_lib INTERFACE
|
||||
iconv
|
||||
libtermkey
|
||||
libvterm
|
||||
msgpack
|
||||
treesitter
|
||||
unibilium)
|
||||
|
||||
option(ENABLE_LIBINTL "enable libintl" ON)
|
||||
if(ENABLE_LIBINTL)
|
||||
# LibIntl (not Intl) selects our FindLibIntl.cmake script. #8464
|
||||
find_package(LibIntl REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${LibIntl_INCLUDE_DIR})
|
||||
if (LibIntl_LIBRARY)
|
||||
target_link_libraries(main_lib INTERFACE ${LibIntl_LIBRARY})
|
||||
# Libintl (not Intl) selects our FindLibintl.cmake script. #8464
|
||||
find_package(Libintl REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${LIBINTL_INCLUDE_DIR})
|
||||
if (LIBINTL_LIBRARY)
|
||||
target_link_libraries(main_lib INTERFACE ${LIBINTL_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -61,9 +53,9 @@ if(PREFER_LUA)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${LUA_INCLUDE_DIR})
|
||||
target_link_libraries(main_lib INTERFACE ${LUA_LIBRARIES})
|
||||
# Passive (not REQUIRED): if LUAJIT_FOUND is not set, fixtures for unittests is skipped.
|
||||
find_package(LuaJit)
|
||||
find_package(Luajit)
|
||||
else()
|
||||
find_package(LuaJit REQUIRED)
|
||||
find_package(Luajit REQUIRED)
|
||||
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${LUAJIT_INCLUDE_DIRS})
|
||||
target_link_libraries(main_lib INTERFACE ${LUAJIT_LIBRARIES})
|
||||
endif()
|
||||
@@ -191,52 +183,6 @@ if(UNSIGNED_CHAR)
|
||||
target_compile_options(main_lib INTERFACE -funsigned-char)
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES "${MSGPACK_INCLUDE_DIRS}")
|
||||
check_c_source_compiles("
|
||||
#include <msgpack.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
return MSGPACK_OBJECT_FLOAT32;
|
||||
}
|
||||
" MSGPACK_HAS_FLOAT32)
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES "${MSGPACK_INCLUDE_DIRS}")
|
||||
if(MSGPACK_HAS_FLOAT32)
|
||||
target_compile_definitions(main_lib INTERFACE NVIM_MSGPACK_HAS_FLOAT32)
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES "${TreeSitter_INCLUDE_DIRS}")
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES "${TreeSitter_LIBRARIES}")
|
||||
check_c_source_compiles("
|
||||
#include <tree_sitter/api.h>
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
TSQueryCursor *cursor = ts_query_cursor_new();
|
||||
ts_query_cursor_set_match_limit(cursor, 32);
|
||||
return 0;
|
||||
}
|
||||
" TS_HAS_SET_MATCH_LIMIT)
|
||||
if(TS_HAS_SET_MATCH_LIMIT)
|
||||
target_compile_definitions(main_lib INTERFACE NVIM_TS_HAS_SET_MATCH_LIMIT)
|
||||
endif()
|
||||
check_c_source_compiles("
|
||||
#include <stdlib.h>
|
||||
#include <tree_sitter/api.h>
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
ts_set_allocator(malloc, calloc, realloc, free);
|
||||
return 0;
|
||||
}
|
||||
" TS_HAS_SET_ALLOCATOR)
|
||||
if(TS_HAS_SET_ALLOCATOR)
|
||||
target_compile_definitions(main_lib INTERFACE NVIM_TS_HAS_SET_ALLOCATOR)
|
||||
endif()
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES "${TreeSitter_INCLUDE_DIRS}")
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "${TreeSitter_LIBRARIES}")
|
||||
|
||||
target_compile_definitions(main_lib INTERFACE INCLUDE_GENERATED_DECLARATIONS)
|
||||
|
||||
# Remove --sort-common from linker flags, as this seems to cause bugs (see #2641, #3374).
|
||||
@@ -260,7 +206,7 @@ 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)
|
||||
elseif(NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
elseif(NOT APPLE)
|
||||
target_link_libraries(nvim PRIVATE -Wl,--no-undefined)
|
||||
endif()
|
||||
|
||||
@@ -287,7 +233,7 @@ if(WIN32)
|
||||
# Enable wmain
|
||||
target_link_libraries(nvim PRIVATE -municode)
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
elseif(APPLE)
|
||||
target_link_libraries(nvim PRIVATE "-framework CoreServices")
|
||||
endif()
|
||||
|
||||
@@ -437,7 +383,7 @@ else()
|
||||
endif()
|
||||
|
||||
# Log level (MIN_LOG_LEVEL in log.h)
|
||||
if($ENV{CI} MATCHES "true")
|
||||
if($ENV{CI})
|
||||
set(MIN_LOG_LEVEL 3)
|
||||
endif()
|
||||
if("${MIN_LOG_LEVEL}" MATCHES "^$")
|
||||
@@ -466,7 +412,7 @@ get_target_property(prop main_lib INTERFACE_INCLUDE_DIRECTORIES)
|
||||
foreach(gen_include ${prop})
|
||||
list(APPEND gen_cflags "-I${gen_include}")
|
||||
endforeach()
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_SYSROOT)
|
||||
if(APPLE AND CMAKE_OSX_SYSROOT)
|
||||
list(APPEND gen_cflags "-isysroot")
|
||||
list(APPEND gen_cflags "${CMAKE_OSX_SYSROOT}")
|
||||
endif()
|
||||
@@ -718,7 +664,7 @@ if(${CMAKE_VERSION} VERSION_LESS 3.20)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
endif()
|
||||
|
||||
target_link_libraries(nvim PRIVATE main_lib PUBLIC libuv_lib)
|
||||
target_link_libraries(nvim PRIVATE main_lib PUBLIC libuv)
|
||||
install_helper(TARGETS nvim)
|
||||
if(MSVC)
|
||||
install(FILES $<TARGET_PDB_FILE:nvim> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
|
||||
@@ -829,12 +775,10 @@ if(WIN32)
|
||||
file(WRITE ${PROJECT_BINARY_DIR}/external_blobs.cmake ${EXTERNAL_BLOBS_SCRIPT})
|
||||
add_custom_target(external_blobs
|
||||
COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/external_blobs.cmake)
|
||||
set_target_properties(external_blobs PROPERTIES FOLDER deps)
|
||||
add_dependencies(nvim_runtime_deps external_blobs)
|
||||
else()
|
||||
add_custom_target(nvim_runtime_deps) # Stub target to avoid CMP0046.
|
||||
endif()
|
||||
set_target_properties(nvim_runtime_deps PROPERTIES FOLDER deps)
|
||||
|
||||
file(MAKE_DIRECTORY ${BINARY_LIB_DIR})
|
||||
|
||||
@@ -862,7 +806,7 @@ set_target_properties(
|
||||
OUTPUT_NAME ${LIBNVIM_NAME}
|
||||
)
|
||||
target_compile_definitions(libnvim PRIVATE MAKE_LIB)
|
||||
target_link_libraries(libnvim PRIVATE main_lib PUBLIC libuv_lib)
|
||||
target_link_libraries(libnvim PRIVATE main_lib PUBLIC libuv)
|
||||
|
||||
if(CLANG_ASAN_UBSAN)
|
||||
message(STATUS "Enabling Clang address sanitizer and undefined behavior sanitizer for nvim.")
|
||||
|
@@ -95,7 +95,6 @@ if(HAVE_WORKING_LIBINTL AND GETTEXT_FOUND AND XGETTEXT_PRG AND ICONV_PRG)
|
||||
COMMENT "Checking ${name}.po"
|
||||
VERBATIM
|
||||
DEPENDS ${poFile})
|
||||
set_target_properties(check-po-${name} PROPERTIES FOLDER po/check)
|
||||
endmacro()
|
||||
|
||||
macro(BuildPoIconvGenericWithCharset
|
||||
@@ -182,9 +181,7 @@ if(HAVE_WORKING_LIBINTL AND GETTEXT_FOUND AND XGETTEXT_PRG AND ICONV_PRG)
|
||||
|
||||
BuildMo(${LANGUAGE})
|
||||
endforeach()
|
||||
set_target_properties(${UPDATE_PO_TARGETS} PROPERTIES FOLDER po/update)
|
||||
|
||||
add_custom_target(translations ALL DEPENDS ${LANGUAGE_MO_FILES})
|
||||
add_custom_target(update-po DEPENDS ${UPDATE_PO_TARGETS})
|
||||
set_target_properties(translations update-po PROPERTIES FOLDER po)
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user