diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 78 |
1 files changed, 59 insertions, 19 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 317d2a1a5b..7fdbad8fca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,9 @@ endif() # Point CMake at any custom modules we may ship list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") +# We don't support building in-tree. +include(PreventInTreeBuilds) + # Prefer our bundled versions of dependencies. set(DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/.deps/usr" CACHE PATH "Path prefix for finding dependencies") if(CMAKE_CROSSCOMPILING AND NOT UNIX) @@ -39,8 +42,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ") endif() +endif() - # Enable fixing case-insensitive filenames for Mac. +if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Darwin") + # Enable fixing case-insensitive filenames for Windows and Mac. set(USE_FNAME_CASE TRUE) endif() @@ -56,12 +61,17 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Dev" "Release" "MinSizeRel" "RelWithDebInfo") # If not in a git repo (e.g., a tarball) these tokens define the complete -# version string, else it is combined with the result of `git describe`. +# version string, else they are combined with the result of `git describe`. set(NVIM_VERSION_MAJOR 0) -set(NVIM_VERSION_MINOR 1) -set(NVIM_VERSION_PATCH 5) +set(NVIM_VERSION_MINOR 2) +set(NVIM_VERSION_PATCH 0) set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers +# API level +set(NVIM_API_LEVEL 1) # Bump this after any API change. +set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change. +set(NVIM_API_PRERELEASE false) + file(TO_CMAKE_PATH ${CMAKE_CURRENT_LIST_DIR}/.git FORCED_GIT_DIR) include(GetGitRevisionDescription) get_git_head_revision(GIT_REFSPEC NVIM_VERSION_COMMIT) @@ -247,12 +257,15 @@ if(HAS_DIAG_COLOR_FLAG) add_definitions(-fdiagnostics-color=auto) endif() -option( - TRAVIS_CI_BUILD "Travis CI build. Extra compilation flags will be set." OFF) +option(TRAVIS_CI_BUILD "Travis/QuickBuild CI. Extra flags will be set." OFF) if(TRAVIS_CI_BUILD) - message(STATUS "Travis CI build enabled.") + message(STATUS "Travis/QuickBuild CI build enabled.") add_definitions(-Werror) + if(DEFINED ENV{BUILD_32BIT}) + # Get some test coverage for unsigned char + add_definitions(-funsigned-char) + endif() endif() if(CMAKE_BUILD_TYPE MATCHES Debug) @@ -291,20 +304,25 @@ endif() include_directories("${PROJECT_BINARY_DIR}/config") include_directories("${PROJECT_SOURCE_DIR}/src") -# Modules used by platform auto-detection -include(CheckLibraryExists) - find_package(LibUV REQUIRED) include_directories(SYSTEM ${LIBUV_INCLUDE_DIRS}) find_package(Msgpack 1.0.0 REQUIRED) include_directories(SYSTEM ${MSGPACK_INCLUDE_DIRS}) -find_package(Unibilium REQUIRED) -include_directories(SYSTEM ${UNIBILIUM_INCLUDE_DIRS}) +if(UNIX) + option(FEAT_TUI "Enable the Terminal UI" ON) +else() + option(FEAT_TUI "Enable the Terminal UI" OFF) +endif() + +if(FEAT_TUI) + find_package(Unibilium REQUIRED) + include_directories(SYSTEM ${UNIBILIUM_INCLUDE_DIRS}) -find_package(LibTermkey REQUIRED) -include_directories(SYSTEM ${LIBTERMKEY_INCLUDE_DIRS}) + find_package(LibTermkey REQUIRED) + include_directories(SYSTEM ${LIBTERMKEY_INCLUDE_DIRS}) +endif() find_package(LibVterm REQUIRED) include_directories(SYSTEM ${LIBVTERM_INCLUDE_DIRS}) @@ -323,7 +341,12 @@ if((CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) AND NOT CMAKE_C_COMPILER_ID MA message(FATAL_ERROR "Sanitizers are only supported for Clang.") endif() -option(ENABLE_JEMALLOC "enable jemalloc" ON) +if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD|FreeBSD") + message(STATUS "detected OpenBSD/FreeBSD; disabled jemalloc. #5318") + option(ENABLE_JEMALLOC "enable jemalloc" OFF) +else() + option(ENABLE_JEMALLOC "enable jemalloc" ON) +endif() if (ENABLE_JEMALLOC) if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) @@ -366,7 +389,7 @@ endforeach() include(LuaHelpers) set(LUA_DEPENDENCIES lpeg mpack bit) if(NOT LUA_PRG) - foreach(CURRENT_LUA_PRG luajit lua) + foreach(CURRENT_LUA_PRG luajit lua5.1 lua5.2 lua) # If LUA_PRG is set find_program() will not search unset(LUA_PRG CACHE) unset(LUA_PRG_WORKS) @@ -390,14 +413,20 @@ endif() message(STATUS "Using the Lua interpreter ${LUA_PRG}.") # Setup busted. -find_program(BUSTED_PRG 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 "utfTerminal") + if(WIN32) + set(BUSTED_OUTPUT_TYPE "plainTerminal") + else() + set(BUSTED_OUTPUT_TYPE "utfTerminal") + endif() endif() find_program(LUACHECK_PRG luacheck) +find_program(GPERF_PRG gperf) + include(InstallHelpers) file(GLOB MANPAGES @@ -461,7 +490,10 @@ if(BUSTED_PRG) ${CMAKE_BINARY_DIR}/test/config/paths.lua) set(UNITTEST_PREREQS nvim-test unittest-headers) - set(FUNCTIONALTEST_PREREQS nvim tty-test shell-test) + set(FUNCTIONALTEST_PREREQS nvim printargs-test shell-test) + if(NOT WIN32) + list(APPEND FUNCTIONALTEST_PREREQS tty-test) + endif() set(BENCHMARK_PREREQS nvim tty-test) # Useful for automated build systems, if they want to manually run the tests. @@ -485,6 +517,7 @@ if(BUSTED_PRG) -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test -DBUILD_DIR=${CMAKE_BINARY_DIR} -DTEST_TYPE=unit + -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${UNITTEST_PREREQS} ${TEST_TARGET_ARGS}) @@ -496,12 +529,14 @@ if(BUSTED_PRG) 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 + -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${FUNCTIONALTEST_PREREQS} ${TEST_TARGET_ARGS}) @@ -509,12 +544,14 @@ if(BUSTED_PRG) 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 + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${BENCHMARK_PREREQS} ${TEST_TARGET_ARGS}) @@ -524,12 +561,14 @@ 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 + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${FUNCTIONALTEST_PREREQS} ${TEST_TARGET_ARGS}) @@ -540,6 +579,7 @@ if(LUACHECK_PRG) COMMAND ${CMAKE_COMMAND} -DLUACHECK_PRG=${LUACHECK_PRG} -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -P ${PROJECT_SOURCE_DIR}/cmake/RunTestsLint.cmake) endif() |