From: Heiko Schlittermann (HS12-RIPE) Date: Tue, 3 Dec 2019 06:23:25 +0000 (+0100) Subject: Build: Enable *GNU (Hurd) Bug 2476 X-Git-Url: https://git.exim.org/users/heiko/exim.git/commitdiff_plain/b30930a554edd087932dbff2d4d32f340de28ed1?ds=inline Build: Enable *GNU (Hurd) Bug 2476 --- diff --git a/src/OS/Makefile-Base b/src/OS/Makefile-Base index f8c6ebb53..9ecde1d3e 100644 --- a/src/OS/Makefile-Base +++ b/src/OS/Makefile-Base @@ -97,6 +97,7 @@ Makefile: ../OS/Makefile-Base ../OS/Makefile-Default \ os.h: $(SCRIPTS)/Configure-os.h \ $(O)/os.h-FreeBSD \ + $(O)/os.h-GNU \ $(O)/os.h-Linux \ $(O)/os.h-OpenBSD \ $(O)/os.h-SunOS5 @@ -113,6 +114,7 @@ os.h: $(SCRIPTS)/Configure-os.h \ os.c: ../src/os.c \ $(SCRIPTS)/Configure-os.c \ + $(O)/os.c-GNU \ $(O)/os.c-Linux $(SHELL) $(SCRIPTS)/Configure-os.c diff --git a/src/OS/Makefile-GNU b/src/OS/Makefile-GNU new file mode 100644 index 000000000..e46434187 --- /dev/null +++ b/src/OS/Makefile-GNU @@ -0,0 +1,29 @@ +# Exim: OS-specific make file for GNU and variants. + +HAVE_ICONV=yes + +BASENAME_COMMAND=look_for_it +CHOWN_COMMAND=look_for_it +CHGRP_COMMAND=look_for_it +CHMOD_COMMAND=look_for_it + +CFLAGS ?= -O -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE + +DBMLIB = -ldb +USE_DB = yes + +LIBS = -lnsl -lcrypt -lm +LIBRESOLV = -lresolv + +X11=/usr/X11R6 +XINCLUDE=-I$(X11)/include +XLFLAGS=-L$(X11)/lib +X11_LD_LIB=$(X11)/lib + +EXIWHAT_PS_ARG=ax +EXIWHAT_EGREP_ARG='/exim( |$$)' +EXIWHAT_MULTIKILL_CMD=killall +EXIWHAT_MULTIKILL_ARG=exim +EXIWHAT_KILL_SIGNAL=-USR1 + +# End diff --git a/src/OS/os.c-GNU b/src/OS/os.c-GNU new file mode 100644 index 000000000..e5d6ff66c --- /dev/null +++ b/src/OS/os.c-GNU @@ -0,0 +1,55 @@ +/************************************************* +* Exim - an Internet mail transport agent * +*************************************************/ + +/* See the file NOTICE for conditions of use and distribution. */ + +/* GNU-specific code. This is concatenated onto the generic src/os.c file. +GNU/Hurd has approximately the same way to determine the load average as NeXT, +so a variant of this could also be in the generic os.c file. See the GNU EMacs +getloadavg.c file, from which this snippet was derived. getloadavg.c from Emacs +is copyrighted by the FSF under the terms of the GPLv2 or any later version. +Changes are hereby placed under the same license, as requested by the GPL. */ + +#ifndef OS_LOAD_AVERAGE +#define OS_LOAD_AVERAGE + +#include + +static processor_set_t default_set; +static int getloadavg_initialized; + +int +os_getloadavg (void) +{ +host_t host; +struct processor_set_basic_info info; +unsigned info_count; + +if (!getloadavg_initialized) + { + if (processor_set_default (mach_host_self(), &default_set) == KERN_SUCCESS) + getloadavg_initialized = 1; + } + +if (getloadavg_initialized) + { + info_count = PROCESSOR_SET_BASIC_INFO_COUNT; + if (processor_set_info(default_set, PROCESSOR_SET_BASIC_INFO, &host, + (processor_set_info_t)&info, &info_count) != KERN_SUCCESS) + getloadavg_initialized = 0; + else + { + #if LOAD_SCALE == 1000 + return info.load_average; + #else + return (int) (((double) info.load_average * 1000) / LOAD_SCALE)); + #endif + } + } + +return -1; +} +#endif /* OS_LOAD_AVERAGE */ + +/* End of os.c-GNU */ diff --git a/src/OS/os.h-GNU b/src/OS/os.h-GNU new file mode 100644 index 000000000..44993163d --- /dev/null +++ b/src/OS/os.h-GNU @@ -0,0 +1,23 @@ +/* Exim: OS-specific C header file for GNU/Hurd */ + +#define CRYPT_H +#define GLIBC_IP_OPTIONS +#define HAVE_BSD_GETLOADAVG +#define HAVE_MMAP +#define HAVE_SYS_VFS_H +#define NO_IP_VAR_H +#define SIG_IGN_WORKS +#define SIOCGIFCONF_GIVES_ADDR + +#define F_FREESP O_TRUNC +typedef struct flock flock_t; + +#define os_strsignal strsignal +#define OS_STRSIGNAL + +/* Hurd-specific bits below */ + +/* default is non-const */ +#define ICONV_ARG2_TYPE const char ** + +/* End */ diff --git a/src/OS/unsupported/Makefile-GNU b/src/OS/unsupported/Makefile-GNU deleted file mode 100644 index e46434187..000000000 --- a/src/OS/unsupported/Makefile-GNU +++ /dev/null @@ -1,29 +0,0 @@ -# Exim: OS-specific make file for GNU and variants. - -HAVE_ICONV=yes - -BASENAME_COMMAND=look_for_it -CHOWN_COMMAND=look_for_it -CHGRP_COMMAND=look_for_it -CHMOD_COMMAND=look_for_it - -CFLAGS ?= -O -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE - -DBMLIB = -ldb -USE_DB = yes - -LIBS = -lnsl -lcrypt -lm -LIBRESOLV = -lresolv - -X11=/usr/X11R6 -XINCLUDE=-I$(X11)/include -XLFLAGS=-L$(X11)/lib -X11_LD_LIB=$(X11)/lib - -EXIWHAT_PS_ARG=ax -EXIWHAT_EGREP_ARG='/exim( |$$)' -EXIWHAT_MULTIKILL_CMD=killall -EXIWHAT_MULTIKILL_ARG=exim -EXIWHAT_KILL_SIGNAL=-USR1 - -# End diff --git a/src/OS/unsupported/os.c-GNU b/src/OS/unsupported/os.c-GNU deleted file mode 100644 index e5d6ff66c..000000000 --- a/src/OS/unsupported/os.c-GNU +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************* -* Exim - an Internet mail transport agent * -*************************************************/ - -/* See the file NOTICE for conditions of use and distribution. */ - -/* GNU-specific code. This is concatenated onto the generic src/os.c file. -GNU/Hurd has approximately the same way to determine the load average as NeXT, -so a variant of this could also be in the generic os.c file. See the GNU EMacs -getloadavg.c file, from which this snippet was derived. getloadavg.c from Emacs -is copyrighted by the FSF under the terms of the GPLv2 or any later version. -Changes are hereby placed under the same license, as requested by the GPL. */ - -#ifndef OS_LOAD_AVERAGE -#define OS_LOAD_AVERAGE - -#include - -static processor_set_t default_set; -static int getloadavg_initialized; - -int -os_getloadavg (void) -{ -host_t host; -struct processor_set_basic_info info; -unsigned info_count; - -if (!getloadavg_initialized) - { - if (processor_set_default (mach_host_self(), &default_set) == KERN_SUCCESS) - getloadavg_initialized = 1; - } - -if (getloadavg_initialized) - { - info_count = PROCESSOR_SET_BASIC_INFO_COUNT; - if (processor_set_info(default_set, PROCESSOR_SET_BASIC_INFO, &host, - (processor_set_info_t)&info, &info_count) != KERN_SUCCESS) - getloadavg_initialized = 0; - else - { - #if LOAD_SCALE == 1000 - return info.load_average; - #else - return (int) (((double) info.load_average * 1000) / LOAD_SCALE)); - #endif - } - } - -return -1; -} -#endif /* OS_LOAD_AVERAGE */ - -/* End of os.c-GNU */ diff --git a/src/OS/unsupported/os.h-GNU b/src/OS/unsupported/os.h-GNU deleted file mode 100644 index 44993163d..000000000 --- a/src/OS/unsupported/os.h-GNU +++ /dev/null @@ -1,23 +0,0 @@ -/* Exim: OS-specific C header file for GNU/Hurd */ - -#define CRYPT_H -#define GLIBC_IP_OPTIONS -#define HAVE_BSD_GETLOADAVG -#define HAVE_MMAP -#define HAVE_SYS_VFS_H -#define NO_IP_VAR_H -#define SIG_IGN_WORKS -#define SIOCGIFCONF_GIVES_ADDR - -#define F_FREESP O_TRUNC -typedef struct flock flock_t; - -#define os_strsignal strsignal -#define OS_STRSIGNAL - -/* Hurd-specific bits below */ - -/* default is non-const */ -#define ICONV_ARG2_TYPE const char ** - -/* End */