mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
refactor(build): remove unused stdlib function and include checks
In addition: merge some checks for the same feature into one test_compile. This reduces the total number of test compiles which speeds up the cmake configure stage.
This commit is contained in:
@ -28,9 +28,7 @@ int main(void)
|
|||||||
check_type_size("int" SIZEOF_INT LANGUAGE C)
|
check_type_size("int" SIZEOF_INT LANGUAGE C)
|
||||||
check_type_size("long" SIZEOF_LONG LANGUAGE C)
|
check_type_size("long" SIZEOF_LONG LANGUAGE C)
|
||||||
check_type_size("intmax_t" SIZEOF_INTMAX_T 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("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_type_size("void *" SIZEOF_VOID_PTR LANGUAGE C)
|
||||||
|
|
||||||
check_symbol_exists(_NSGetEnviron crt_externs.h HAVE__NSGETENVIRON)
|
check_symbol_exists(_NSGetEnviron crt_externs.h HAVE__NSGETENVIRON)
|
||||||
@ -38,7 +36,6 @@ check_symbol_exists(_NSGetEnviron crt_externs.h HAVE__NSGETENVIRON)
|
|||||||
# Headers
|
# Headers
|
||||||
check_include_files(langinfo.h HAVE_LANGINFO_H)
|
check_include_files(langinfo.h HAVE_LANGINFO_H)
|
||||||
check_include_files(locale.h HAVE_LOCALE_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(strings.h HAVE_STRINGS_H)
|
||||||
check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H)
|
check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H)
|
||||||
check_include_files(termios.h HAVE_TERMIOS_H)
|
check_include_files(termios.h HAVE_TERMIOS_H)
|
||||||
@ -47,15 +44,8 @@ check_include_files(sys/sdt.h HAVE_SYS_SDT_H)
|
|||||||
|
|
||||||
# Functions
|
# Functions
|
||||||
check_function_exists(fseeko HAVE_FSEEKO)
|
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)
|
check_function_exists(readv HAVE_READV)
|
||||||
check_function_exists(opendir HAVE_OPENDIR)
|
|
||||||
check_function_exists(readlink HAVE_READLINK)
|
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(strnlen HAVE_STRNLEN)
|
||||||
check_function_exists(strcasecmp HAVE_STRCASECMP)
|
check_function_exists(strcasecmp HAVE_STRCASECMP)
|
||||||
check_function_exists(strncasecmp HAVE_STRNCASECMP)
|
check_function_exists(strncasecmp HAVE_STRNCASECMP)
|
||||||
@ -64,22 +54,28 @@ check_function_exists(strptime HAVE_STRPTIME)
|
|||||||
check_c_source_compiles("
|
check_c_source_compiles("
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <sys/file.h>
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
DIR *dir = opendir(\"dirname\");
|
DIR *dir = opendir(\"dirname\");
|
||||||
dirfd(dir);
|
dirfd(dir);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
" HAVE_DIRFD)
|
|
||||||
|
|
||||||
check_c_source_compiles("
|
|
||||||
#include <sys/file.h>
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
flock(10, LOCK_SH);
|
flock(10, LOCK_SH);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
" HAVE_FLOCK)
|
" HAVE_DIRFD_AND_FLOCK)
|
||||||
|
|
||||||
|
|
||||||
|
check_c_source_compiles("
|
||||||
|
#include <pwd.h>
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
getpwent();
|
||||||
|
getpwuid(0);
|
||||||
|
getpwnam(\"root\");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
" HAVE_PWD_FUNCS)
|
||||||
|
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||||
check_c_source_compiles("
|
check_c_source_compiles("
|
||||||
@ -101,11 +97,13 @@ if(HAVE_LANGINFO_H)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
check_include_files("endian.h" HAVE_ENDIAN_H)
|
check_include_files("endian.h" HAVE_ENDIAN_H)
|
||||||
check_include_files("sys/endian.h" HAVE_SYS_ENDIAN_H)
|
|
||||||
|
|
||||||
set(ENDIAN_INCLUDE_FILE "endian.h")
|
set(ENDIAN_INCLUDE_FILE "endian.h")
|
||||||
if(HAVE_SYS_ENDIAN_H AND NOT HAVE_ENDIAN_H)
|
if(NOT HAVE_ENDIAN_H)
|
||||||
set(ENDIAN_INCLUDE_FILE "sys/endian.h")
|
check_include_files("sys/endian.h" HAVE_SYS_ENDIAN_H)
|
||||||
|
if (HAVE_SYS_ENDIAN_H)
|
||||||
|
set(ENDIAN_INCLUDE_FILE "sys/endian.h")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SI "#include <stdint.h>\n")
|
set(SI "#include <stdint.h>\n")
|
||||||
|
@ -3,9 +3,7 @@
|
|||||||
|
|
||||||
#cmakedefine SIZEOF_INT @SIZEOF_INT@
|
#cmakedefine SIZEOF_INT @SIZEOF_INT@
|
||||||
#cmakedefine SIZEOF_INTMAX_T @SIZEOF_INTMAX_T@
|
#cmakedefine SIZEOF_INTMAX_T @SIZEOF_INTMAX_T@
|
||||||
#cmakedefine SIZEOF_INT32_T @SIZEOF_INT32_T@
|
|
||||||
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
||||||
#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
|
|
||||||
#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@
|
#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@
|
||||||
|
|
||||||
#if @SIZEOF_VOID_PTR@ == 8
|
#if @SIZEOF_VOID_PTR@ == 8
|
||||||
@ -19,18 +17,12 @@
|
|||||||
#cmakedefine HAVE__NSGETENVIRON
|
#cmakedefine HAVE__NSGETENVIRON
|
||||||
#cmakedefine HAVE_FD_CLOEXEC
|
#cmakedefine HAVE_FD_CLOEXEC
|
||||||
#cmakedefine HAVE_FSEEKO
|
#cmakedefine HAVE_FSEEKO
|
||||||
#cmakedefine HAVE_GETPWENT
|
|
||||||
#cmakedefine HAVE_GETPWNAM
|
|
||||||
#cmakedefine HAVE_GETPWUID
|
|
||||||
#cmakedefine HAVE_LANGINFO_H
|
#cmakedefine HAVE_LANGINFO_H
|
||||||
#cmakedefine HAVE_LOCALE_H
|
#cmakedefine HAVE_LOCALE_H
|
||||||
#cmakedefine HAVE_NL_LANGINFO_CODESET
|
#cmakedefine HAVE_NL_LANGINFO_CODESET
|
||||||
#cmakedefine HAVE_NL_MSG_CAT_CNTR
|
#cmakedefine HAVE_NL_MSG_CAT_CNTR
|
||||||
#cmakedefine HAVE_PWD_H
|
#cmakedefine HAVE_PWD_FUNCS
|
||||||
#cmakedefine HAVE_READLINK
|
#cmakedefine HAVE_READLINK
|
||||||
#cmakedefine HAVE_SETPGID
|
|
||||||
#cmakedefine HAVE_SETSID
|
|
||||||
#cmakedefine HAVE_SIGACTION
|
|
||||||
#cmakedefine HAVE_STRNLEN
|
#cmakedefine HAVE_STRNLEN
|
||||||
#cmakedefine HAVE_STRCASECMP
|
#cmakedefine HAVE_STRCASECMP
|
||||||
#cmakedefine HAVE_STRINGS_H
|
#cmakedefine HAVE_STRINGS_H
|
||||||
@ -51,8 +43,7 @@
|
|||||||
# undef HAVE_SYS_UIO_H
|
# undef HAVE_SYS_UIO_H
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#cmakedefine HAVE_DIRFD
|
#cmakedefine HAVE_DIRFD_AND_FLOCK
|
||||||
#cmakedefine HAVE_FLOCK
|
|
||||||
#cmakedefine HAVE_FORKPTY
|
#cmakedefine HAVE_FORKPTY
|
||||||
|
|
||||||
#ifndef UNIT_TESTING
|
#ifndef UNIT_TESTING
|
||||||
|
@ -240,13 +240,15 @@ endif()
|
|||||||
if(UNIX)
|
if(UNIX)
|
||||||
# -fstack-protector breaks non Unix builds even in Mingw-w64
|
# -fstack-protector breaks non Unix builds even in Mingw-w64
|
||||||
check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
||||||
check_c_compiler_flag(-fstack-protector HAS_FSTACK_PROTECTOR_FLAG)
|
|
||||||
if(HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
if(HAS_FSTACK_PROTECTOR_STRONG_FLAG)
|
||||||
target_compile_options(main_lib INTERFACE -fstack-protector-strong)
|
target_compile_options(main_lib INTERFACE -fstack-protector-strong)
|
||||||
target_link_libraries(main_lib INTERFACE -fstack-protector-strong)
|
target_link_libraries(main_lib INTERFACE -fstack-protector-strong)
|
||||||
elseif(HAS_FSTACK_PROTECTOR_FLAG)
|
else()
|
||||||
target_compile_options(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4)
|
check_c_compiler_flag(-fstack-protector HAS_FSTACK_PROTECTOR_FLAG)
|
||||||
target_link_libraries(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4)
|
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()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -1446,7 +1446,7 @@ long getdigits_long(char **pp, bool strict, long def)
|
|||||||
int32_t getdigits_int32(char **pp, bool strict, long def)
|
int32_t getdigits_int32(char **pp, bool strict, long def)
|
||||||
{
|
{
|
||||||
intmax_t number = getdigits(pp, strict, def);
|
intmax_t number = getdigits(pp, strict, def);
|
||||||
#if SIZEOF_INTMAX_T > SIZEOF_INT32_T
|
#if SIZEOF_INTMAX_T > 4
|
||||||
if (strict) {
|
if (strict) {
|
||||||
assert(number >= INT32_MIN && number <= INT32_MAX);
|
assert(number >= INT32_MIN && number <= INT32_MAX);
|
||||||
} else if (!(number >= INT32_MIN && number <= INT32_MAX)) {
|
} else if (!(number >= INT32_MIN && number <= INT32_MAX)) {
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
# include "nvim/charset.h"
|
# include "nvim/charset.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_FLOCK) && defined(HAVE_DIRFD)
|
#ifdef HAVE_DIRFD_AND_FLOCK
|
||||||
# include <dirent.h>
|
# include <dirent.h>
|
||||||
# include <sys/file.h>
|
# include <sys/file.h>
|
||||||
#endif
|
#endif
|
||||||
@ -5146,7 +5146,7 @@ void forward_slash(char *fname)
|
|||||||
|
|
||||||
/// Path to Nvim's own temp dir. Ends in a slash.
|
/// Path to Nvim's own temp dir. Ends in a slash.
|
||||||
static char *vim_tempdir = NULL;
|
static char *vim_tempdir = NULL;
|
||||||
#if defined(HAVE_FLOCK) && defined(HAVE_DIRFD)
|
#ifdef HAVE_DIRFD_AND_FLOCK
|
||||||
DIR *vim_tempdir_dp = NULL; ///< File descriptor of temp dir
|
DIR *vim_tempdir_dp = NULL; ///< File descriptor of temp dir
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -5316,7 +5316,7 @@ int delete_recursive(const char *name)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_FLOCK) && defined(HAVE_DIRFD)
|
#ifdef HAVE_DIRFD_AND_FLOCK
|
||||||
/// Open temporary directory and take file lock to prevent
|
/// Open temporary directory and take file lock to prevent
|
||||||
/// to be auto-cleaned.
|
/// to be auto-cleaned.
|
||||||
static void vim_opentempdir(void)
|
static void vim_opentempdir(void)
|
||||||
@ -5353,7 +5353,7 @@ void vim_deltempdir(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_FLOCK) && defined(HAVE_DIRFD)
|
#ifdef HAVE_DIRFD_AND_FLOCK
|
||||||
vim_closetempdir();
|
vim_closetempdir();
|
||||||
#endif
|
#endif
|
||||||
// remove the trailing path separator
|
// remove the trailing path separator
|
||||||
@ -5391,7 +5391,7 @@ static bool vim_settempdir(char *tempdir)
|
|||||||
vim_FullName(tempdir, buf, MAXPATHL, false);
|
vim_FullName(tempdir, buf, MAXPATHL, false);
|
||||||
add_pathsep(buf);
|
add_pathsep(buf);
|
||||||
vim_tempdir = xstrdup(buf);
|
vim_tempdir = xstrdup(buf);
|
||||||
#if defined(HAVE_FLOCK) && defined(HAVE_DIRFD)
|
#ifdef HAVE_DIRFD_AND_FLOCK
|
||||||
vim_opentempdir();
|
vim_opentempdir();
|
||||||
#endif
|
#endif
|
||||||
xfree(buf);
|
xfree(buf);
|
||||||
|
@ -36,10 +36,9 @@
|
|||||||
// Command-processing buffer. Use large buffers for all platforms.
|
// Command-processing buffer. Use large buffers for all platforms.
|
||||||
#define CMDBUFFSIZE 1024
|
#define CMDBUFFSIZE 1024
|
||||||
|
|
||||||
// Note: Some systems need both string.h and strings.h (Savage). However,
|
// Note: Some systems need both string.h and strings.h (Savage).
|
||||||
// some systems can't handle both, only use string.h in that case.
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#if defined(HAVE_STRINGS_H) && !defined(NO_STRINGS_WITH_STRING_H)
|
#ifdef HAVE_STRINGS_H
|
||||||
# include <strings.h>
|
# include <strings.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -399,8 +399,8 @@ int os_expand_wildcards(int num_pat, char **pat, int *num_file, char ***file, in
|
|||||||
fclose(fd);
|
fclose(fd);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
#if SIZEOF_LONG_LONG > SIZEOF_SIZE_T
|
#if 8 > SIZEOF_SIZE_T
|
||||||
assert(templen <= (long long)SIZE_MAX); // NOLINT(runtime/int)
|
assert(templen <= SIZE_MAX); // NOLINT(runtime/int)
|
||||||
#endif
|
#endif
|
||||||
len = (size_t)templen;
|
len = (size_t)templen;
|
||||||
fseek(fd, 0L, SEEK_SET);
|
fseek(fd, 0L, SEEK_SET);
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include "nvim/os/os.h"
|
#include "nvim/os/os.h"
|
||||||
#include "nvim/types.h"
|
#include "nvim/types.h"
|
||||||
#include "nvim/vim.h"
|
#include "nvim/vim.h"
|
||||||
#ifdef HAVE_PWD_H
|
#ifdef HAVE_PWD_FUNCS
|
||||||
# include <pwd.h>
|
# include <pwd.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef MSWIN
|
#ifdef MSWIN
|
||||||
@ -50,7 +50,7 @@ int os_get_usernames(garray_T *users)
|
|||||||
}
|
}
|
||||||
ga_init(users, sizeof(char *), 20);
|
ga_init(users, sizeof(char *), 20);
|
||||||
|
|
||||||
#if defined(HAVE_GETPWENT) && defined(HAVE_PWD_H)
|
#ifdef HAVE_PWD_FUNCS
|
||||||
{
|
{
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ int os_get_usernames(garray_T *users)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAVE_GETPWNAM)
|
#ifdef HAVE_PWD_FUNCS
|
||||||
{
|
{
|
||||||
const char *user_env = os_getenv("USER");
|
const char *user_env = os_getenv("USER");
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ int os_get_username(char *s, size_t len)
|
|||||||
/// @return OK if a username was found, else FAIL.
|
/// @return OK if a username was found, else FAIL.
|
||||||
int os_get_uname(uv_uid_t uid, char *s, size_t len)
|
int os_get_uname(uv_uid_t uid, char *s, size_t len)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWD_H) && defined(HAVE_GETPWUID)
|
#ifdef HAVE_PWD_FUNCS
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
|
|
||||||
if ((pw = getpwuid(uid)) != NULL // NOLINT(runtime/threadsafe_fn)
|
if ((pw = getpwuid(uid)) != NULL // NOLINT(runtime/threadsafe_fn)
|
||||||
@ -159,7 +159,7 @@ int os_get_uname(uv_uid_t uid, char *s, size_t len)
|
|||||||
/// Caller must free() the returned string.
|
/// Caller must free() the returned string.
|
||||||
char *os_get_userdir(const char *name)
|
char *os_get_userdir(const char *name)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
|
#ifdef HAVE_PWD_FUNCS
|
||||||
if (name == NULL || *name == NUL) {
|
if (name == NULL || *name == NUL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user