aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-29 22:39:54 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-29 22:39:54 +0000
commit21cb7d04c387e4198ca8098a884c78b56ffcf4c2 (patch)
tree84fe5690df1551f0bb2bdfe1a13aacd29ebc1de7 /CMakeLists.txt
parentd9c904f85a23a496df4eb6be42aa43f007b22d50 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-colorcolchar.tar.gz
rneovim-colorcolchar.tar.bz2
rneovim-colorcolchar.zip
Merge remote-tracking branch 'upstream/master' into colorcolcharcolorcolchar
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt362
1 files changed, 105 insertions, 257 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 493c212996..475a1a2c3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@
# best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1
# pitfalls: https://izzys.casa/2019/02/everything-you-never-wanted-to-know-about-cmake/
-# Version should match the tested CMAKE_URL in .github/workflows/ci.yml.
+# Version should match the tested CMAKE_URL in .github/workflows/build.yml.
cmake_minimum_required(VERSION 3.10)
# Can be removed once minimum version is at least 3.15
@@ -16,40 +16,49 @@ project(nvim C)
if(POLICY CMP0075)
cmake_policy(SET CMP0075 NEW)
endif()
+if(POLICY CMP0135)
+ cmake_policy(SET CMP0135 NEW)
+endif()
# Point CMake at any custom modules we may ship
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(CheckCCompilerFlag)
include(CheckCSourceCompiles)
+include(CheckLibraryExists)
+include(ExternalProject)
+include(FindPackageHandleStandardArgs)
+include(GNUInstallDirs)
+
+include(Deps)
+include(Find)
include(InstallHelpers)
-include(LuaHelpers) # Find Lua interpreter
include(PreventInTreeBuilds)
include(Util)
+set_directory_properties(PROPERTIES
+ EP_PREFIX "${DEPS_BUILD_DIR}")
+
set(TOUCHES_DIR ${PROJECT_BINARY_DIR}/touches)
-set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+find_program(CCACHE_PRG ccache)
+if(CCACHE_PRG)
+ set(CMAKE_C_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env CCACHE_SLOPPINESS=pch_defines,time_macros ${CCACHE_PRG})
+endif()
+
+if(NOT CI_BUILD)
+ set(CMAKE_INSTALL_MESSAGE NEVER)
+endif()
+
+if(${CMAKE_VERSION} VERSION_LESS 3.20)
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+endif()
# Prefer our bundled versions of dependencies.
if(DEFINED ENV{DEPS_BUILD_DIR})
- if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
- # pkg-config 29.2 has a bug on OpenBSD which causes it to drop any paths that
- # *contain* system include paths. To avoid this, we prefix what would be
- # "/usr/include" as "/_usr/include".
- # This check is also performed in the cmake.deps/CMakeLists.txt and in the
- # else clause following here.
- # https://github.com/neovim/neovim/pull/14745#issuecomment-860201794
- set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/_usr" CACHE PATH "Path prefix for finding dependencies")
- else()
- set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies")
- endif()
+ set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies")
else()
- if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
- set(DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/.deps/_usr" CACHE PATH "Path prefix for finding dependencies")
- else()
- set(DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/.deps/usr" CACHE PATH "Path prefix for finding dependencies")
- endif()
+ set(DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/.deps/usr" CACHE PATH "Path prefix for finding dependencies")
# When running from within CLion or Visual Studio,
# build bundled dependencies automatically.
if(NOT EXISTS ${DEPS_PREFIX}
@@ -60,15 +69,15 @@ else()
file(MAKE_DIRECTORY ${DEPS_BUILD_DIR})
execute_process(
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
- -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
- -DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
- -DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
- -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
- -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
+ -D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
+ -D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -D CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+ -D CMAKE_C_FLAGS=${CMAKE_C_FLAGS}
+ -D CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
+ -D CMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
+ -D CMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
+ -D CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
+ -D CMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
${PROJECT_SOURCE_DIR}/cmake.deps
WORKING_DIRECTORY ${DEPS_BUILD_DIR})
execute_process(
@@ -79,9 +88,8 @@ else()
endif()
list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX})
-set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${DEPS_PREFIX}/lib/pkgconfig")
-if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+if(APPLE)
# If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET),
# fall back to local system version. Needs to be done both here and in cmake.deps.
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
@@ -93,7 +101,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
message(STATUS "Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}")
endif()
-if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+if(WIN32 OR APPLE)
# Ignore case when comparing filenames on Windows and Mac.
set(CASE_INSENSITIVE_FILENAME TRUE)
# Enable fixing case-insensitive filenames for Windows and Mac.
@@ -112,99 +120,47 @@ endif()
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
set_default_buildtype()
-if(CMAKE_BUILD_TYPE MATCHES Debug)
- set(DEBUG 1)
-else()
- set(DEBUG 0)
+get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(NOT isMultiConfig)
+ # Unlike build dependencies in cmake.deps, we assume we want dev dependencies
+ # such as Uncrustify to always be built with Release.
+ list(APPEND DEPS_CMAKE_ARGS -D CMAKE_BUILD_TYPE=Release)
endif()
# If not in a git repo (e.g., a tarball) these tokens define the complete
# version string, else they are combined with the result of `git describe`.
set(NVIM_VERSION_MAJOR 0)
-set(NVIM_VERSION_MINOR 9)
+set(NVIM_VERSION_MINOR 10)
set(NVIM_VERSION_PATCH 0)
set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
# API level
-set(NVIM_API_LEVEL 11) # Bump this after any API change.
+set(NVIM_API_LEVEL 12) # Bump this after any API change.
set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change.
set(NVIM_API_PRERELEASE true)
-set(NVIM_VERSION_BUILD_TYPE "${CMAKE_BUILD_TYPE}")
-# NVIM_VERSION_CFLAGS set further below.
-
-# Log level (MIN_LOG_LEVEL in log.h)
-if("${MIN_LOG_LEVEL}" MATCHES "^$")
- # Minimize logging for release-type builds.
- if(CMAKE_BUILD_TYPE STREQUAL "Release"
- OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"
- OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
- message(STATUS "MIN_LOG_LEVEL not specified, default is 3 (ERROR) for release builds")
- set(MIN_LOG_LEVEL 3)
- else()
- message(STATUS "MIN_LOG_LEVEL not specified, default is 1 (INFO)")
- set(MIN_LOG_LEVEL 1)
- endif()
-else()
- if(NOT MIN_LOG_LEVEL MATCHES "^[0-3]$")
- message(FATAL_ERROR "invalid MIN_LOG_LEVEL: " ${MIN_LOG_LEVEL})
- endif()
- message(STATUS "MIN_LOG_LEVEL=${MIN_LOG_LEVEL}")
-endif()
-
-# Default to -O2 on release builds.
-if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3")
- message(STATUS "Replacing -O3 in CMAKE_C_FLAGS_RELEASE with -O2")
- string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
-endif()
-
-if(CMAKE_C_COMPILER_ID MATCHES "GNU")
- check_c_compiler_flag(-Og HAS_OG_FLAG)
-else()
- set(HAS_OG_FLAG 0)
-endif()
-
-#
# Build-type: RelWithDebInfo
-#
-if(HAS_OG_FLAG)
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -Og -g")
+# /Og means something different in MSVC
+if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -Og -g")
endif()
# We _want_ assertions in RelWithDebInfo build-type.
if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG)
string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+ string(REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+ string(REPLACE " " " " CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") # Remove duplicate whitespace
endif()
-# gcc 4.0+ sets _FORTIFY_SOURCE=2 automatically. This currently
-# does not work with Neovim due to some uses of dynamically-sized structures.
-# https://github.com/neovim/neovim/issues/223
-
-# Include the build type's default flags in the check for _FORTIFY_SOURCE,
-# otherwise we may incorrectly identify the level as acceptable and find out
-# later that it was not when optimizations were enabled. CFLAGS is applied
-# even though you don't see it in CMAKE_REQUIRED_FLAGS.
-set(INIT_FLAGS_NAME CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE})
-string(TOUPPER ${INIT_FLAGS_NAME} INIT_FLAGS_NAME)
-if(${INIT_FLAGS_NAME})
- set(CMAKE_REQUIRED_FLAGS "${${INIT_FLAGS_NAME}}")
-endif()
-
-option(LOG_LIST_ACTIONS "Add list actions logging" OFF)
+option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
+option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
+option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
-option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
-option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
-option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
-
-if((CLANG_ASAN_UBSAN AND CLANG_MSAN)
- OR (CLANG_ASAN_UBSAN AND CLANG_TSAN)
- OR (CLANG_MSAN AND CLANG_TSAN))
+if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN)
+ OR (ENABLE_ASAN_UBSAN AND ENABLE_TSAN)
+ OR (ENABLE_MSAN AND ENABLE_TSAN))
message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously")
endif()
-if((CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) AND NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
- message(FATAL_ERROR "Sanitizers are only supported for Clang")
-endif()
-
# Place targets in bin/ or lib/ for all build configurations
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
@@ -216,30 +172,13 @@ foreach(CFGNAME ${CMAKE_CONFIGURATION_TYPES})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
endforeach()
-set(LUA_DEPENDENCIES lpeg mpack bit)
-if(NOT LUA_PRG)
- foreach(CURRENT_LUA_PRG luajit lua5.1 lua5.2 lua)
- unset(_CHECK_LUA_PRG CACHE)
- unset(LUA_PRG_WORKS)
- find_program(_CHECK_LUA_PRG ${CURRENT_LUA_PRG})
-
- if(_CHECK_LUA_PRG)
- check_lua_deps(${_CHECK_LUA_PRG} "${LUA_DEPENDENCIES}" LUA_PRG_WORKS)
- if(LUA_PRG_WORKS)
- set(LUA_PRG "${_CHECK_LUA_PRG}" CACHE FILEPATH "Path to a program.")
- break()
- endif()
- endif()
- endforeach()
- unset(_CHECK_LUA_PRG CACHE)
-else()
- check_lua_deps(${LUA_PRG} "${LUA_DEPENDENCIES}" LUA_PRG_WORKS)
+if(NOT PREFER_LUA)
+ find_program(LUA_PRG NAMES luajit)
endif()
-
-if(NOT LUA_PRG_WORKS)
+find_program(LUA_PRG NAMES lua5.1 lua5.2 lua)
+if(NOT LUA_PRG)
message(FATAL_ERROR "Failed to find a Lua 5.1-compatible interpreter")
endif()
-
message(STATUS "Using Lua interpreter: ${LUA_PRG}")
# Some of the code generation still relies on stable table ordering in order to
@@ -250,11 +189,9 @@ message(STATUS "Using Lua interpreter: ${LUA_PRG}")
if(NOT LUA_GEN_PRG)
set(LUA_GEN_PRG "${LUA_PRG}" CACHE FILEPATH "Path to the lua used for code generation.")
endif()
-
message(STATUS "Using Lua interpreter for code generation: ${LUA_GEN_PRG}")
option(COMPILE_LUA "Pre-compile Lua sources into bytecode (for sources that are included in the binary)" ON)
-
if(COMPILE_LUA AND NOT WIN32)
if(PREFER_LUA)
foreach(CURRENT_LUAC_PRG luac5.1 luac)
@@ -271,34 +208,38 @@ if(COMPILE_LUA AND NOT WIN32)
endif()
endif()
endif()
-
if(LUAC_PRG)
message(STATUS "Using Lua compiler: ${LUAC_PRG}")
endif()
-#
# Lint
-#
-find_program(LUACHECK_PRG luacheck)
-find_program(STYLUA_PRG stylua)
-find_program(UNCRUSTIFY_PRG uncrustify)
-find_program(SHELLCHECK_PRG shellcheck)
+option(CI_LINT "Abort if lint programs not found" OFF)
+if(CI_LINT)
+ set(LINT_REQUIRED "REQUIRED")
+endif()
+find_program(SHELLCHECK_PRG shellcheck ${LINT_REQUIRED})
+find_program(STYLUA_PRG stylua ${LINT_REQUIRED})
add_glob_target(
- REQUIRED
TARGET lintlua-luacheck
- COMMAND ${LUACHECK_PRG}
- FLAGS -q
+ COMMAND $<TARGET_FILE:nvim>
+ FLAGS -ll ${PROJECT_SOURCE_DIR}/test/lua_runner.lua ${CMAKE_BINARY_DIR}/usr luacheck -q
GLOB_DIRS runtime/ scripts/ src/ test/
GLOB_PAT *.lua
+ EXCLUDE
+ runtime/lua/vim/_meta/.*
+ runtime/lua/coxpcall.lua
TOUCH_STRATEGY SINGLE)
+add_dependencies(lintlua-luacheck lua-dev-deps)
add_glob_target(
TARGET lintlua-stylua
COMMAND ${STYLUA_PRG}
- FLAGS --color=always --check
+ FLAGS --color=always --check --respect-ignores
GLOB_DIRS runtime/
GLOB_PAT *.lua
+ EXCLUDE
+ /runtime/lua/vim/_meta
TOUCH_STRATEGY SINGLE)
add_custom_target(lintlua)
@@ -308,26 +249,18 @@ add_glob_target(
TARGET lintsh
COMMAND ${SHELLCHECK_PRG}
FLAGS -x -a
- GLOB_DIRS scripts ci
+ GLOB_DIRS scripts
GLOB_PAT *.sh
- EXCLUDE
- scripts/pvscheck.sh
- ci/common
- ci/snap
TOUCH_STRATEGY SINGLE)
add_custom_target(lintcommit
- COMMAND ${PROJECT_BINARY_DIR}/bin/nvim -u NONE -es -c [[lua require('scripts.lintcommit').main({trace=false})]]
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- VERBATIM)
+ COMMAND $<TARGET_FILE:nvim> -u NONE -l ${PROJECT_SOURCE_DIR}/scripts/lintcommit.lua main)
add_dependencies(lintcommit nvim)
add_custom_target(lint)
-add_dependencies(lint check-single-includes lintc lintlua lintsh lintcommit)
+add_dependencies(lint lintc lintlua lintsh lintcommit)
-#
# Format
-#
add_custom_target(formatlua
COMMAND ${CMAKE_COMMAND}
-D FORMAT_PRG=${STYLUA_PRG}
@@ -342,120 +275,10 @@ install_helper(
FILES ${CMAKE_SOURCE_DIR}/src/man/nvim.1
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
-#
-# Go down the tree.
-#
-
add_subdirectory(src/nvim)
-get_directory_property(NVIM_VERSION_CFLAGS DIRECTORY src/nvim DEFINITION NVIM_VERSION_CFLAGS)
add_subdirectory(cmake.config)
-add_subdirectory(test/functional/fixtures) # compile test programs
add_subdirectory(runtime)
-get_directory_property(GENERATED_HELP_TAGS DIRECTORY runtime DEFINITION GENERATED_HELP_TAGS)
-if(WIN32)
- install_helper(
- FILES ${DEPS_PREFIX}/share/nvim-qt/runtime/plugin/nvim_gui_shim.vim
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim-qt/runtime/plugin)
-endif()
-
-# Setup busted.
-find_program(BUSTED_PRG NAMES busted busted.bat)
-find_program(BUSTED_LUA_PRG busted-lua)
-if(NOT BUSTED_OUTPUT_TYPE)
- set(BUSTED_OUTPUT_TYPE "nvim")
-endif()
-
-# Setup some test-related bits. We do this after going down the tree because we
-# need some of the targets.
-if(BUSTED_PRG)
- get_target_property(TEST_INCLUDE_DIRS main_lib INTERFACE_INCLUDE_DIRECTORIES)
-
- set(UNITTEST_PREREQS nvim-test)
- set(FUNCTIONALTEST_PREREQS nvim printenv-test printargs-test shell-test pwsh-test streams-test tty-test ${GENERATED_HELP_TAGS})
- set(BENCHMARK_PREREQS nvim tty-test)
-
- check_lua_module(${LUA_PRG} "ffi" LUA_HAS_FFI)
- if(LUA_HAS_FFI)
- add_custom_target(unittest
- COMMAND ${CMAKE_COMMAND}
- -DBUSTED_PRG=${BUSTED_PRG}
- -DLUA_PRG=${LUA_PRG}
- -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
- -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
- -DBUILD_DIR=${CMAKE_BINARY_DIR}
- -DTEST_TYPE=unit
- -DCIRRUS_CI=$ENV{CIRRUS_CI}
- -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
- DEPENDS ${UNITTEST_PREREQS}
- USES_TERMINAL)
- set_target_properties(unittest PROPERTIES FOLDER test)
- else()
- message(WARNING "disabling unit tests: no Luajit FFI in ${LUA_PRG}")
- endif()
-
- if(LUA_HAS_FFI)
- set(TEST_LIBNVIM_PATH $<TARGET_FILE:nvim-test>)
- else()
- set(TEST_LIBNVIM_PATH "")
- endif()
- configure_file(
- ${CMAKE_SOURCE_DIR}/test/cmakeconfig/paths.lua.in
- ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua.gen)
- file(GENERATE
- OUTPUT ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua
- INPUT ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua.gen)
-
- add_custom_target(functionaltest
- COMMAND ${CMAKE_COMMAND}
- -DBUSTED_PRG=${BUSTED_PRG}
- -DLUA_PRG=${LUA_PRG}
- -DNVIM_PRG=$<TARGET_FILE:nvim>
- -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
- -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
- -DBUILD_DIR=${CMAKE_BINARY_DIR}
- -DTEST_TYPE=functional
- -DCIRRUS_CI=$ENV{CIRRUS_CI}
- -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
- DEPENDS ${FUNCTIONALTEST_PREREQS}
- USES_TERMINAL)
- set_target_properties(functionaltest PROPERTIES FOLDER test)
-
- add_custom_target(benchmark
- COMMAND ${CMAKE_COMMAND}
- -DBUSTED_PRG=${BUSTED_PRG}
- -DLUA_PRG=${LUA_PRG}
- -DNVIM_PRG=$<TARGET_FILE:nvim>
- -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
- -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
- -DBUILD_DIR=${CMAKE_BINARY_DIR}
- -DTEST_TYPE=benchmark
- -DCIRRUS_CI=$ENV{CIRRUS_CI}
- -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
- DEPENDS ${BENCHMARK_PREREQS}
- USES_TERMINAL)
- set_target_properties(benchmark PROPERTIES FOLDER test)
-endif()
-
-if(BUSTED_LUA_PRG)
- add_custom_target(functionaltest-lua
- COMMAND ${CMAKE_COMMAND}
- -DBUSTED_PRG=${BUSTED_LUA_PRG}
- -DLUA_PRG=${LUA_PRG}
- -DNVIM_PRG=$<TARGET_FILE:nvim>
- -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
- -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
- -DBUILD_DIR=${CMAKE_BINARY_DIR}
- -DTEST_TYPE=functional
- -DCIRRUS_CI=$ENV{CIRRUS_CI}
- -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
- DEPENDS ${FUNCTIONALTEST_PREREQS}
- USES_TERMINAL)
- set_target_properties(functionaltest-lua PROPERTIES FOLDER test)
-endif()
+add_subdirectory(test)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/UninstallHelper.cmake)
@@ -463,3 +286,28 @@ add_custom_target(uninstall
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(cmake.packaging)
endif()
+
+ExternalProject_Add(uncrustify
+ URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.78.1.tar.gz
+ URL_HASH SHA256=ecaf4c0adca14c36dfffa30bc28e69865115ecd602c90eb16a8cddccb41caad2
+ DOWNLOAD_NO_PROGRESS TRUE
+ DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify
+ CMAKE_ARGS ${DEPS_CMAKE_ARGS}
+ CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
+ EXCLUDE_FROM_ALL TRUE)
+
+option(USE_BUNDLED_BUSTED "Use bundled busted" ON)
+if(USE_BUNDLED_BUSTED)
+ ExternalProject_Add(lua-dev-deps
+ URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
+ URL_HASH SHA256=27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2
+ DOWNLOAD_NO_PROGRESS TRUE
+ DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-dev-deps
+ SOURCE_DIR ${DEPS_SHARE_DIR}
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ EXCLUDE_FROM_ALL TRUE)
+else()
+ add_custom_target(lua-dev-deps)
+endif()