mirror of
https://github.com/neovim/neovim.git
synced 2025-09-05 19:08:15 +00:00
build: rename build-related dirs
Problem: Dirs "config", "packaging", and "third-party" are all closely related but this is not obvious from the layout. This adds friction for new contributors. Solution: - rename config/ to cmake.config/ - rename test/config/ to test/cmakeconfig/ because it is used in Lua tests: require('test.cmakeconfig.paths'). - rename packaging/ to cmake.packaging/ - rename third-party/ to cmake.deps/ (parallel with .deps/)
This commit is contained in:
163
cmake.config/CMakeLists.txt
Normal file
163
cmake.config/CMakeLists.txt
Normal file
@@ -0,0 +1,163 @@
|
||||
include(CheckTypeSize)
|
||||
include(CheckSymbolExists)
|
||||
include(CheckFunctionExists)
|
||||
include(CheckIncludeFiles)
|
||||
include(CheckCSourceRuns)
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
check_type_size("int" SIZEOF_INT LANGUAGE C)
|
||||
check_type_size("long" SIZEOF_LONG LANGUAGE C)
|
||||
check_type_size("intmax_t" SIZEOF_INTMAX_T LANGUAGE C)
|
||||
check_type_size("int32_t" SIZEOF_INT32_T LANGUAGE C)
|
||||
check_type_size("size_t" SIZEOF_SIZE_T LANGUAGE C)
|
||||
check_type_size("long long" SIZEOF_LONG_LONG LANGUAGE C)
|
||||
check_type_size("void *" SIZEOF_VOID_PTR LANGUAGE C)
|
||||
|
||||
check_symbol_exists(_NSGetEnviron crt_externs.h HAVE__NSGETENVIRON)
|
||||
|
||||
# Headers
|
||||
check_include_files(langinfo.h HAVE_LANGINFO_H)
|
||||
check_include_files(locale.h HAVE_LOCALE_H)
|
||||
check_include_files(pwd.h HAVE_PWD_H)
|
||||
check_include_files(strings.h HAVE_STRINGS_H)
|
||||
check_include_files(sys/wait.h HAVE_SYS_WAIT_H)
|
||||
if(NOT HAVE_SYS_WAIT_H AND UNIX)
|
||||
# See if_cscope.c
|
||||
message(SEND_ERROR "header sys/wait.h is required for Unix")
|
||||
endif()
|
||||
check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H)
|
||||
check_include_files(termios.h HAVE_TERMIOS_H)
|
||||
check_include_files(sys/uio.h HAVE_SYS_UIO_H)
|
||||
check_include_files(sys/sdt.h HAVE_SYS_SDT_H)
|
||||
|
||||
# Functions
|
||||
check_function_exists(fseeko HAVE_FSEEKO)
|
||||
check_function_exists(getpwent HAVE_GETPWENT)
|
||||
check_function_exists(getpwnam HAVE_GETPWNAM)
|
||||
check_function_exists(getpwuid HAVE_GETPWUID)
|
||||
check_function_exists(readv HAVE_READV)
|
||||
|
||||
if(Iconv_FOUND)
|
||||
set(HAVE_ICONV 1)
|
||||
endif()
|
||||
|
||||
check_function_exists(opendir HAVE_OPENDIR)
|
||||
check_function_exists(readlink HAVE_READLINK)
|
||||
check_function_exists(setpgid HAVE_SETPGID)
|
||||
check_function_exists(setsid HAVE_SETSID)
|
||||
check_function_exists(sigaction HAVE_SIGACTION)
|
||||
check_function_exists(strnlen HAVE_STRNLEN)
|
||||
check_function_exists(strcasecmp HAVE_STRCASECMP)
|
||||
check_function_exists(strncasecmp HAVE_STRNCASECMP)
|
||||
check_function_exists(strptime HAVE_STRPTIME)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
check_c_source_compiles("
|
||||
#include <termios.h>
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
return forkpty(0, NULL, NULL, NULL);
|
||||
}
|
||||
" HAVE_FORKPTY)
|
||||
else()
|
||||
set(HAVE_FORKPTY 1)
|
||||
endif()
|
||||
|
||||
# Symbols
|
||||
check_symbol_exists(FD_CLOEXEC "fcntl.h" HAVE_FD_CLOEXEC)
|
||||
if(HAVE_LANGINFO_H)
|
||||
check_symbol_exists(CODESET "langinfo.h" HAVE_NL_LANGINFO_CODESET)
|
||||
endif()
|
||||
|
||||
check_include_files("endian.h" HAVE_ENDIAN_H)
|
||||
check_include_files("sys/endian.h" HAVE_SYS_ENDIAN_H)
|
||||
|
||||
set(ENDIAN_INCLUDE_FILE "endian.h")
|
||||
if(HAVE_SYS_ENDIAN_H AND NOT HAVE_ENDIAN_H)
|
||||
set(ENDIAN_INCLUDE_FILE "sys/endian.h")
|
||||
endif()
|
||||
|
||||
set(SI "#include <stdint.h>\n")
|
||||
set(MS "int main(int argc,char**argv)\n{\n uint64_t i=0x0102030405060708ULL;")
|
||||
set(ME "}")
|
||||
check_c_source_compiles("
|
||||
#define _BSD_SOURCE 1
|
||||
#define _DEFAULT_SOURCE 1
|
||||
${SI}
|
||||
#include <${ENDIAN_INCLUDE_FILE}>
|
||||
#ifndef be64toh
|
||||
# error No be64toh macros
|
||||
#endif
|
||||
${MS}
|
||||
uint64_t j = be64toh(i);
|
||||
return (j == 0); // j must not be zero
|
||||
${ME}"
|
||||
HAVE_BE64TOH_MACROS)
|
||||
if(NOT "${HAVE_BE64TOH_MACROS}")
|
||||
check_function_exists(be64toh HAVE_BE64TOH_FUNC)
|
||||
endif()
|
||||
if("${HAVE_BE64TOH_MACROS}" OR "${HAVE_BE64TOH_FUNC}")
|
||||
set(HAVE_BE64TOH 1)
|
||||
endif()
|
||||
if (NOT "${HAVE_BE64TOH}")
|
||||
if (NOT "${CMAKE_CROSSCOMPILING}")
|
||||
# It is safe to make ORDER_BIG_ENDIAN not defined if
|
||||
# - HAVE_BE64TOH is true. In this case be64toh will be used unconditionally in
|
||||
# any case and ORDER_BIG_ENDIAN will not be examined.
|
||||
# - CMAKE_CROSSCOMPILING *and* HAVE_BE64TOH are both false. In this case
|
||||
# be64toh function which uses cycle and arithmetic operations is used which
|
||||
# will work regardless of endianness. Function is sub-optimal though.
|
||||
check_c_source_runs("
|
||||
${SI}
|
||||
${MS}
|
||||
char *s = (char *) &i;
|
||||
return (
|
||||
s[0] == 0x01
|
||||
&& s[1] == 0x02
|
||||
&& s[2] == 0x03
|
||||
&& s[3] == 0x04
|
||||
&& s[4] == 0x05
|
||||
&& s[5] == 0x06
|
||||
&& s[6] == 0x07
|
||||
&& s[7] == 0x08) ? 0 : 1;
|
||||
${ME}"
|
||||
ORDER_BIG_ENDIAN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# generate configuration header and update include directories
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/config.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/config.h"
|
||||
)
|
||||
|
||||
# generate version definitions
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/versiondef.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h"
|
||||
)
|
||||
|
||||
# generate pathdef.c
|
||||
find_program(WHOAMI_PROG whoami)
|
||||
find_program(HOSTNAME_PROG hostname)
|
||||
|
||||
if (DEFINED ENV{USERNAME})
|
||||
set(USERNAME $ENV{USERNAME})
|
||||
elseif (NOT DEFINED USERNAME AND EXISTS ${WHOAMI_PROG})
|
||||
execute_process(COMMAND ${WHOAMI_PROG}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE USERNAME)
|
||||
endif()
|
||||
if (DEFINED ENV{HOSTNAME})
|
||||
set(HOSTNAME $ENV{HOSTNAME})
|
||||
elseif (EXISTS ${HOSTNAME_PROG})
|
||||
execute_process(COMMAND ${HOSTNAME_PROG}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE HOSTNAME)
|
||||
endif()
|
||||
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/pathdef.c.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/pathdef.c"
|
||||
ESCAPE_QUOTES)
|
73
cmake.config/config.h.in
Normal file
73
cmake.config/config.h.in
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef AUTO_CONFIG_H
|
||||
#define AUTO_CONFIG_H
|
||||
|
||||
#cmakedefine DEBUG
|
||||
|
||||
#cmakedefine SIZEOF_INT @SIZEOF_INT@
|
||||
#cmakedefine SIZEOF_INTMAX_T @SIZEOF_INTMAX_T@
|
||||
#cmakedefine SIZEOF_INT32_T @SIZEOF_INT32_T@
|
||||
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
||||
#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
|
||||
#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@
|
||||
|
||||
#if @SIZEOF_VOID_PTR@ == 8
|
||||
#define ARCH_64
|
||||
#elif @SIZEOF_VOID_PTR@ == 4
|
||||
#define ARCH_32
|
||||
#endif
|
||||
|
||||
#cmakedefine PROJECT_NAME "@PROJECT_NAME@"
|
||||
|
||||
#cmakedefine HAVE__NSGETENVIRON
|
||||
#cmakedefine HAVE_FD_CLOEXEC
|
||||
#cmakedefine HAVE_FSEEKO
|
||||
#cmakedefine HAVE_GETPWENT
|
||||
#cmakedefine HAVE_GETPWNAM
|
||||
#cmakedefine HAVE_GETPWUID
|
||||
#cmakedefine HAVE_ICONV
|
||||
#cmakedefine HAVE_LANGINFO_H
|
||||
#cmakedefine HAVE_LOCALE_H
|
||||
#cmakedefine HAVE_NL_LANGINFO_CODESET
|
||||
#cmakedefine HAVE_NL_MSG_CAT_CNTR
|
||||
#cmakedefine HAVE_PWD_H
|
||||
#cmakedefine HAVE_READLINK
|
||||
#cmakedefine HAVE_SETPGID
|
||||
#cmakedefine HAVE_SETSID
|
||||
#cmakedefine HAVE_SIGACTION
|
||||
#cmakedefine HAVE_STRNLEN
|
||||
#cmakedefine HAVE_STRCASECMP
|
||||
#cmakedefine HAVE_STRINGS_H
|
||||
#cmakedefine HAVE_STRNCASECMP
|
||||
#cmakedefine HAVE_STRPTIME
|
||||
#cmakedefine HAVE_SYS_SDT_H
|
||||
#cmakedefine HAVE_SYS_UTSNAME_H
|
||||
#cmakedefine HAVE_SYS_WAIT_H
|
||||
#cmakedefine HAVE_TERMIOS_H
|
||||
#cmakedefine HAVE_WORKING_LIBINTL
|
||||
#cmakedefine UNIX
|
||||
#cmakedefine CASE_INSENSITIVE_FILENAME
|
||||
#cmakedefine USE_FNAME_CASE
|
||||
#cmakedefine HAVE_SYS_UIO_H
|
||||
#ifdef HAVE_SYS_UIO_H
|
||||
#cmakedefine HAVE_READV
|
||||
# ifndef HAVE_READV
|
||||
# undef HAVE_SYS_UIO_H
|
||||
# endif
|
||||
#endif
|
||||
#cmakedefine HAVE_FORKPTY
|
||||
|
||||
#cmakedefine FEAT_TUI
|
||||
|
||||
#ifndef UNIT_TESTING
|
||||
#cmakedefine LOG_LIST_ACTIONS
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_BE64TOH
|
||||
#cmakedefine ORDER_BIG_ENDIAN
|
||||
#define ENDIAN_INCLUDE_FILE <@ENDIAN_INCLUDE_FILE@>
|
||||
|
||||
#cmakedefine HAVE_EXECINFO_BACKTRACE
|
||||
#cmakedefine HAVE_BUILTIN_ADD_OVERFLOW
|
||||
#cmakedefine HAVE_WIMPLICIT_FALLTHROUGH_FLAG
|
||||
|
||||
#endif // AUTO_CONFIG_H
|
8
cmake.config/pathdef.c.in
Normal file
8
cmake.config/pathdef.c.in
Normal file
@@ -0,0 +1,8 @@
|
||||
// This is an open source non-commercial project. Dear PVS-Studio, please check
|
||||
// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
||||
#include "${PROJECT_SOURCE_DIR}/src/nvim/vim.h"
|
||||
char *default_vim_dir = "${CMAKE_INSTALL_FULL_DATAROOTDIR}/nvim";
|
||||
char *default_vimruntime_dir = "";
|
||||
char *default_lib_dir = "${CMAKE_INSTALL_FULL_LIBDIR}/nvim";
|
||||
char_u *compiled_user = (char_u *)"${USERNAME}";
|
||||
char_u *compiled_sys = (char_u *)"${HOSTNAME}";
|
21
cmake.config/versiondef.h.in
Normal file
21
cmake.config/versiondef.h.in
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef AUTO_VERSIONDEF_H
|
||||
#define AUTO_VERSIONDEF_H
|
||||
|
||||
#define NVIM_VERSION_MAJOR @NVIM_VERSION_MAJOR@
|
||||
#define NVIM_VERSION_MINOR @NVIM_VERSION_MINOR@
|
||||
#define NVIM_VERSION_PATCH @NVIM_VERSION_PATCH@
|
||||
#define NVIM_VERSION_PRERELEASE "@NVIM_VERSION_PRERELEASE@"
|
||||
|
||||
#cmakedefine NVIM_VERSION_MEDIUM "@NVIM_VERSION_MEDIUM@"
|
||||
#ifndef NVIM_VERSION_MEDIUM
|
||||
# include "auto/versiondef_git.h"
|
||||
#endif
|
||||
|
||||
#define NVIM_API_LEVEL @NVIM_API_LEVEL@
|
||||
#define NVIM_API_LEVEL_COMPAT @NVIM_API_LEVEL_COMPAT@
|
||||
#define NVIM_API_PRERELEASE @NVIM_API_PRERELEASE@
|
||||
|
||||
#define NVIM_VERSION_CFLAGS "@NVIM_VERSION_CFLAGS@"
|
||||
#define NVIM_VERSION_BUILD_TYPE "@NVIM_VERSION_BUILD_TYPE@"
|
||||
|
||||
#endif // AUTO_VERSIONDEF_H
|
Reference in New Issue
Block a user