Merge branch 'rj/build-tweaks'

Various build tweaks, including CSPRNG selection on some platforms.

* rj/build-tweaks:
  config.mak.uname: set CSPRNG_METHOD to getrandom on Linux
  config.mak.uname: add arc4random to the cygwin build
  config.mak.uname: add sysinfo() configuration for cygwin
  builtin/gc.c: correct RAM calculation when using sysinfo
  config.mak.uname: add clock_gettime() to the cygwin build
  config.mak.uname: add HAVE_GETDELIM to the cygwin section
  config.mak.uname: only set NO_REGEX on cygwin for v1.7
  config.mak.uname: add a note about NO_STRLCPY for Linux
  Makefile: remove NEEDS_LIBRT build variable
  meson.build: set default help format to html on windows
  meson.build: only set build variables for non-default values
  Makefile: only set some BASIC_CFLAGS when RUNTIME_PREFIX is set
  meson.build: remove -DCURL_DISABLE_TYPECHECK
This commit is contained in:
Junio C Hamano
2025-04-24 17:25:34 -07:00
8 changed files with 94 additions and 34 deletions

View File

@@ -250,6 +250,16 @@ if docs_backend == 'asciidoc'
'--attribute=build_dir=' + meson.current_build_dir(),
]
pager_opt = get_option('default_pager')
if pager_opt != '' and pager_opt != 'less'
asciidoc_common_options += '-agit-default-pager=' + pager_opt
endif
editor_opt = get_option('default_editor')
if editor_opt != '' and editor_opt != 'vi'
asciidoc_common_options += '-agit-default-editor=' + editor_opt
endif
documentation_deps = [
asciidoc_conf,
]
@@ -287,6 +297,16 @@ elif docs_backend == 'asciidoctor'
'--require', 'asciidoctor-extensions',
]
pager_opt = get_option('default_pager')
if pager_opt != '' and pager_opt != 'less'
asciidoc_common_options += '-agit-default-pager=' + pager_opt
endif
editor_opt = get_option('default_editor')
if editor_opt != '' and editor_opt != 'vi'
asciidoc_common_options += '-agit-default-editor=' + editor_opt
endif
documentation_deps = [
asciidoctor_extensions,
]

View File

@@ -340,9 +340,6 @@ include shared.mak
#
# Define HAVE_SYNC_FILE_RANGE if your platform has sync_file_range.
#
# Define NEEDS_LIBRT if your platform requires linking with librt (glibc version
# before 2.17) for clock_gettime and CLOCK_MONOTONIC.
#
# Define HAVE_BSD_SYSCTL if your platform has a BSD-compatible sysctl function.
#
# Define HAVE_GETDELIM if your system has the getdelim() function.
@@ -2174,18 +2171,14 @@ ifdef HAVE_SYNC_FILE_RANGE
BASIC_CFLAGS += -DHAVE_SYNC_FILE_RANGE
endif
ifdef NEEDS_LIBRT
EXTLIBS += -lrt
ifdef HAVE_SYSINFO
BASIC_CFLAGS += -DHAVE_SYSINFO
endif
ifdef HAVE_BSD_SYSCTL
BASIC_CFLAGS += -DHAVE_BSD_SYSCTL
endif
ifdef HAVE_BSD_KERN_PROC_SYSCTL
BASIC_CFLAGS += -DHAVE_BSD_KERN_PROC_SYSCTL
endif
ifdef HAVE_GETDELIM
BASIC_CFLAGS += -DHAVE_GETDELIM
endif
@@ -2216,25 +2209,33 @@ ifneq ($(findstring openssl,$(CSPRNG_METHOD)),)
EXTLIBS += -lcrypto -lssl
endif
ifneq ($(PROCFS_EXECUTABLE_PATH),)
procfs_executable_path_SQ = $(subst ','\'',$(PROCFS_EXECUTABLE_PATH))
BASIC_CFLAGS += '-DPROCFS_EXECUTABLE_PATH="$(procfs_executable_path_SQ)"'
endif
ifndef HAVE_PLATFORM_PROCINFO
COMPAT_OBJS += compat/stub/procinfo.o
endif
ifdef HAVE_NS_GET_EXECUTABLE_PATH
BASIC_CFLAGS += -DHAVE_NS_GET_EXECUTABLE_PATH
endif
ifdef RUNTIME_PREFIX
ifdef HAVE_ZOS_GET_EXECUTABLE_PATH
BASIC_CFLAGS += -DHAVE_ZOS_GET_EXECUTABLE_PATH
endif
ifdef HAVE_BSD_KERN_PROC_SYSCTL
BASIC_CFLAGS += -DHAVE_BSD_KERN_PROC_SYSCTL
endif
ifneq ($(PROCFS_EXECUTABLE_PATH),)
pep_SQ = $(subst ','\'',$(PROCFS_EXECUTABLE_PATH))
BASIC_CFLAGS += '-DPROCFS_EXECUTABLE_PATH="$(pep_SQ)"'
endif
ifdef HAVE_NS_GET_EXECUTABLE_PATH
BASIC_CFLAGS += -DHAVE_NS_GET_EXECUTABLE_PATH
endif
ifdef HAVE_ZOS_GET_EXECUTABLE_PATH
BASIC_CFLAGS += -DHAVE_ZOS_GET_EXECUTABLE_PATH
endif
ifdef HAVE_WPGMPTR
BASIC_CFLAGS += -DHAVE_WPGMPTR
endif
ifdef HAVE_WPGMPTR
BASIC_CFLAGS += -DHAVE_WPGMPTR
endif
ifdef FILENO_IS_A_MACRO

View File

@@ -424,8 +424,13 @@ static uint64_t total_ram(void)
#if defined(HAVE_SYSINFO)
struct sysinfo si;
if (!sysinfo(&si))
return si.totalram;
if (!sysinfo(&si)) {
uint64_t total = si.totalram;
if (si.mem_unit > 1)
total *= (uint64_t)si.mem_unit;
return total;
}
#elif defined(HAVE_BSD_SYSCTL) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM))
int64_t physical_memory;
int mib[2];

View File

@@ -48,18 +48,18 @@ ifeq ($(uname_S),OSF1)
endif
ifeq ($(uname_S),Linux)
HAVE_ALLOCA_H = YesPlease
# override in config.mak if you have glibc >= 2.38
NO_STRLCPY = YesPlease
CSPRNG_METHOD = getrandom
HAVE_PATHS_H = YesPlease
LIBC_CONTAINS_LIBINTL = YesPlease
HAVE_DEV_TTY = YesPlease
HAVE_CLOCK_GETTIME = YesPlease
HAVE_CLOCK_MONOTONIC = YesPlease
# -lrt is needed for clock_gettime on glibc <= 2.16
NEEDS_LIBRT = YesPlease
HAVE_SYNC_FILE_RANGE = YesPlease
HAVE_GETDELIM = YesPlease
FREAD_READS_DIRECTORIES = UnfortunatelyYes
BASIC_CFLAGS += -DHAVE_SYSINFO
HAVE_SYSINFO = YesPlease
PROCFS_EXECUTABLE_PATH = /proc/self/exe
HAVE_PLATFORM_PROCINFO = YesPlease
COMPAT_OBJS += compat/linux/procinfo.o
@@ -246,9 +246,16 @@ ifeq ($(uname_O),Cygwin)
# Try commenting this out if you suspect MMAP is more efficient
NO_MMAP = YesPlease
else
NO_REGEX = UnfortunatelyYes
ifeq ($(shell expr "$(uname_R)" : '1\.7\.'),4)
NO_REGEX = UnfortunatelyYes
endif
endif
HAVE_DEV_TTY = YesPlease
HAVE_GETDELIM = YesPlease
HAVE_CLOCK_GETTIME = YesPlease
HAVE_CLOCK_MONOTONIC = YesPlease
HAVE_SYSINFO = YesPlease
CSPRNG_METHOD = arc4random
HAVE_ALLOCA_H = YesPlease
NEEDS_LIBICONV = YesPlease
NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes

View File

@@ -1066,6 +1066,14 @@ AC_CHECK_LIB([iconv], [locale_charset],
[AC_CHECK_LIB([charset], [locale_charset],
[CHARSET_LIB=-lcharset])])
GIT_CONF_SUBST([CHARSET_LIB])
#
# Define HAVE_SYSINFO=YesPlease if sysinfo is available.
GIT_CHECK_FUNC(sysinfo,
[HAVE_SYSINFO=YesPlease],
[HAVE_SYSINFO=])
GIT_CONF_SUBST([HAVE_SYSINFO])
#
# Define HAVE_CLOCK_GETTIME=YesPlease if clock_gettime is available.
GIT_CHECK_FUNC(clock_gettime,

View File

@@ -727,10 +727,7 @@ endif
# These variables are used for building libgit.a.
libgit_c_args = [
'-DBINDIR="' + get_option('bindir') + '"',
'-DDEFAULT_EDITOR="' + get_option('default_editor') + '"',
'-DDEFAULT_GIT_TEMPLATE_DIR="' + get_option('datadir') / 'git-core/templates' + '"',
'-DDEFAULT_HELP_FORMAT="' + get_option('default_help_format') + '"',
'-DDEFAULT_PAGER="' + get_option('default_pager') + '"',
'-DETC_GITATTRIBUTES="' + get_option('gitattributes') + '"',
'-DETC_GITCONFIG="' + get_option('gitconfig') + '"',
'-DFALLBACK_RUNTIME_PREFIX="' + get_option('prefix') + '"',
@@ -742,6 +739,29 @@ libgit_c_args = [
'-DPAGER_ENV="' + get_option('pager_environment') + '"',
'-DSHELL_PATH="' + fs.as_posix(target_shell.full_path()) + '"',
]
editor_opt = get_option('default_editor')
if editor_opt != '' and editor_opt != 'vi'
libgit_c_args += '-DDEFAULT_EDITOR="' + editor_opt + '"'
endif
pager_opt = get_option('default_pager')
if pager_opt != '' and pager_opt != 'less'
libgit_c_args += '-DDEFAULT_PAGER="' + pager_opt + '"'
endif
help_format_opt = get_option('default_help_format')
if help_format_opt == 'platform'
if host_machine.system() == 'windows'
help_format_opt = 'html'
else
help_format_opt = 'man'
endif
endif
if help_format_opt != 'man'
libgit_c_args += '-DDEFAULT_HELP_FORMAT="' + help_format_opt + '"'
endif
libgit_include_directories = [ '.' ]
libgit_dependencies = [ ]
@@ -1012,7 +1032,6 @@ if curl.found()
# Most executables don't have to link against libcurl, but we still need its
# include directories so that we can resolve LIBCURL_VERSION in "help.c".
libgit_dependencies += curl.partial_dependency(includes: true)
libgit_c_args += '-DCURL_DISABLE_TYPECHECK'
build_options_config.set('NO_CURL', '')
else
libgit_c_args += '-DNO_CURL'

View File

@@ -95,7 +95,7 @@ option('highlight_bin', type: 'string', value: 'highlight')
# Documentation.
option('docs', type: 'array', choices: ['man', 'html'], value: [],
description: 'Which documenattion formats to build and install.')
option('default_help_format', type: 'combo', choices: ['man', 'html'], value: 'man',
option('default_help_format', type: 'combo', choices: ['man', 'html', 'platform'], value: 'platform',
description: 'Default format used when executing git-help(1).')
option('docs_backend', type: 'combo', choices: ['asciidoc', 'asciidoctor', 'auto'], value: 'auto',
description: 'Which backend to use to generate documentation.')

View File

@@ -63,7 +63,7 @@ test_expect_success 'git grep ile a' '
git grep ile a
'
test_expect_failure 'git grep .fi a' '
test_expect_failure !CYGWIN 'git grep .fi a' '
git grep .fi a
'