* [PATCH] newlib: libm: switch to autoconf long double macro
@ 2022-01-18 5:13 Mike Frysinger
2022-01-19 14:52 ` Corinna Vinschen
2022-01-21 3:49 ` [PATCH] newlib: " Mike Frysinger
0 siblings, 2 replies; 4+ messages in thread
From: Mike Frysinger @ 2022-01-18 5:13 UTC (permalink / raw)
To: newlib
Now that we require a recent version of autoconf, we can rely on this
macro working. We shift the call in configure.ac down a little to
help keep the generated diff minimal -- there should be no functional
difference otherwise. This is because the autoconf macros will call
a bunch of standard toolchain macros first, and arguably the current
code is incorrect in how it does its testing.
---
newlib/libm/configure | 102 ++++++++++++++++++++++-----------------
newlib/libm/configure.ac | 23 ++-------
2 files changed, 62 insertions(+), 63 deletions(-)
diff --git a/newlib/libm/configure b/newlib/libm/configure
index 4dde4f7f83fa..4820ad28b715 100755
--- a/newlib/libm/configure
+++ b/newlib/libm/configure
@@ -635,6 +635,8 @@ am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
LIBM_MACHINE_LIB
+HAVE_LONG_DOUBLE_FALSE
+HAVE_LONG_DOUBLE_TRUE
subdirs
CPP
OTOOL64
@@ -739,8 +741,6 @@ build
newlib_basedir
MAY_SUPPLY_SYSCALLS_FALSE
MAY_SUPPLY_SYSCALLS_TRUE
-HAVE_LONG_DOUBLE_FALSE
-HAVE_LONG_DOUBLE_TRUE
NEWLIB_HW_FP_FALSE
NEWLIB_HW_FP_TRUE
target_alias
@@ -2194,41 +2194,6 @@ else
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking long double support" >&5
-$as_echo_n "checking Checking long double support... " >&6; }
-if ${acnewlib_cv_type_long_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-return 0;
-}
-EOF
-if { ac_try='${CC} $CFLAGS $CPPFLAGS -c conftest.c 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- acnewlib_cv_type_long_double=yes
-else
- acnewlib_cv_type_long_double=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_type_long_double" >&5
-$as_echo "$acnewlib_cv_type_long_double" >&6; }
- if test x"$acnewlib_cv_type_long_double" = x"yes"; then
- HAVE_LONG_DOUBLE_TRUE=
- HAVE_LONG_DOUBLE_FALSE='#'
-else
- HAVE_LONG_DOUBLE_TRUE='#'
- HAVE_LONG_DOUBLE_FALSE=
-fi
-
-
ac_aux_dir=
for ac_dir in ../.. "$srcdir"/../..; do
if test -f "$ac_dir/install-sh"; then
@@ -11655,7 +11620,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11658 "configure"
+#line 11623 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11761,7 +11726,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11764 "configure"
+#line 11729 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12005,6 +11970,57 @@ fi
subdirs="$subdirs machine"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+$as_echo_n "checking for long double... " >&6; }
+if ${ac_cv_type_long_double+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$GCC" = yes; then
+ ac_cv_type_long_double=yes
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* The Stardent Vistra knows sizeof (long double), but does
+ not support it. */
+ long double foo = 0.0L;
+int
+main ()
+{
+static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ sizeof (double) <= sizeof (long double))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_type_long_double=yes
+else
+ ac_cv_type_long_double=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+$as_echo "$ac_cv_type_long_double" >&6; }
+ if test $ac_cv_type_long_double = yes; then
+
+$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+
+ fi
+
+ if test x"$ac_cv_type_long_double" = x"yes"; then
+ HAVE_LONG_DOUBLE_TRUE=
+ HAVE_LONG_DOUBLE_FALSE='#'
+else
+ HAVE_LONG_DOUBLE_TRUE='#'
+ HAVE_LONG_DOUBLE_FALSE=
+fi
+
+
LIBM_MACHINE_LIB=
if test -n "${libm_machine_dir}"; then
if test "${use_libtool}" = "yes"; then
@@ -12167,10 +12183,6 @@ if test -z "${NEWLIB_HW_FP_TRUE}" && test -z "${NEWLIB_HW_FP_FALSE}"; then
as_fn_error $? "conditional \"NEWLIB_HW_FP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_LONG_DOUBLE_TRUE}" && test -z "${HAVE_LONG_DOUBLE_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_LONG_DOUBLE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${MAY_SUPPLY_SYSCALLS_TRUE}" && test -z "${MAY_SUPPLY_SYSCALLS_FALSE}"; then
as_fn_error $? "conditional \"MAY_SUPPLY_SYSCALLS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -12231,6 +12243,10 @@ if test -z "${USE_LIBTOOL_TRUE}" && test -z "${USE_LIBTOOL_FALSE}"; then
as_fn_error $? "conditional \"USE_LIBTOOL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_LONG_DOUBLE_TRUE}" && test -z "${HAVE_LONG_DOUBLE_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_LONG_DOUBLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
diff --git a/newlib/libm/configure.ac b/newlib/libm/configure.ac
index c1b4dbb382c3..8887c49d21c8 100644
--- a/newlib/libm/configure.ac
+++ b/newlib/libm/configure.ac
@@ -13,26 +13,6 @@ AC_ARG_ENABLE(newlib_hw_fp,
esac],[newlib_hw_fp=false])
AM_CONDITIONAL(NEWLIB_HW_FP, test x$newlib_hw_fp = xtrue)
-dnl Autoconf 2.59 doesn't support the AC_TYPE_LONG_DOUBLE macro. Instead of:
-dnl AC_TYPE_LONG_DOUBLE
-dnl AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
-dnl we specify our own long double test.
-AC_CACHE_CHECK([Checking long double support], [acnewlib_cv_type_long_double],[dnl
-cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-return 0;
-}
-EOF
-if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c conftest.c 1>&AS_MESSAGE_LOG_FD])
-then
- acnewlib_cv_type_long_double=yes
-else
- acnewlib_cv_type_long_double=no
-fi
-rm -f conftest*])
-AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$acnewlib_cv_type_long_double" = x"yes")
-
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
AC_CONFIG_AUX_DIR(../..)
@@ -50,6 +30,9 @@ fi
AC_CONFIG_SUBDIRS(machine)
+AC_TYPE_LONG_DOUBLE
+AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
+
LIBM_MACHINE_LIB=
if test -n "${libm_machine_dir}"; then
if test "${use_libtool}" = "yes"; then
--
2.33.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] newlib: libm: switch to autoconf long double macro
2022-01-18 5:13 [PATCH] newlib: libm: switch to autoconf long double macro Mike Frysinger
@ 2022-01-19 14:52 ` Corinna Vinschen
2022-01-21 3:49 ` [PATCH] newlib: " Mike Frysinger
1 sibling, 0 replies; 4+ messages in thread
From: Corinna Vinschen @ 2022-01-19 14:52 UTC (permalink / raw)
To: newlib
On Jan 18 00:13, Mike Frysinger wrote:
> Now that we require a recent version of autoconf, we can rely on this
> macro working. We shift the call in configure.ac down a little to
> help keep the generated diff minimal -- there should be no functional
> difference otherwise. This is because the autoconf macros will call
> a bunch of standard toolchain macros first, and arguably the current
> code is incorrect in how it does its testing.
> ---
> newlib/libm/configure | 102 ++++++++++++++++++++++-----------------
> newlib/libm/configure.ac | 23 ++-------
> 2 files changed, 62 insertions(+), 63 deletions(-)
:+1:, please push.
Thanks,
Corinna
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] newlib: switch to autoconf long double macro
2022-01-18 5:13 [PATCH] newlib: libm: switch to autoconf long double macro Mike Frysinger
2022-01-19 14:52 ` Corinna Vinschen
@ 2022-01-21 3:49 ` Mike Frysinger
2022-01-21 11:19 ` Corinna Vinschen
1 sibling, 1 reply; 4+ messages in thread
From: Mike Frysinger @ 2022-01-21 3:49 UTC (permalink / raw)
To: newlib
Now that we require a recent version of autoconf, we can rely on this
macro working. This change was already made to libm, but these other
dirs were missed as I didn't notice it being duplicated in 3 places.
---
newlib/configure | 68 ++++++++++++++++++++++------------------
newlib/configure.ac | 35 +++------------------
newlib/libc/configure | 58 +++++++++++++++++++++-------------
newlib/libc/configure.ac | 21 ++-----------
newlib/newlib.hin | 3 ++
5 files changed, 84 insertions(+), 101 deletions(-)
diff --git a/newlib/configure b/newlib/configure
index 879392da80b0..2d015dbb6d5a 100755
--- a/newlib/configure
+++ b/newlib/configure
@@ -13315,46 +13315,54 @@ $as_echo "#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long double type exists" >&5
-$as_echo_n "checking whether long double type exists... " >&6; }
-if ${acnewlib_cv_type_long_double+:} false; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+$as_echo_n "checking for long double... " >&6; }
+if ${ac_cv_type_long_double+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat > conftest.c <<EOF
-/* Check two ways: float.h defines and direct type declaration. */
-#include <float.h>
-#if defined(LDBL_MANT_DIG)
- #define _HAVE_LONG_DOUBLE
- #else
- #error "LDBL != DBL"
-#endif
-long double test() {
-long double ld = 0.0L;
-return ld;
+ if test "$GCC" = yes; then
+ ac_cv_type_long_double=yes
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* The Stardent Vistra knows sizeof (long double), but does
+ not support it. */
+ long double foo = 0.0L;
+int
+main ()
+{
+static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ sizeof (double) <= sizeof (long double))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
}
-EOF
-if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- acnewlib_cv_type_long_double=yes;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_type_long_double=yes
else
- acnewlib_cv_type_long_double=no;
+ ac_cv_type_long_double=no
fi
-rm -f conftest*
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_type_long_double" >&5
-$as_echo "$acnewlib_cv_type_long_double" >&6; }
-if test $acnewlib_cv_type_long_double = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+$as_echo "$ac_cv_type_long_double" >&6; }
+ if test $ac_cv_type_long_double = yes; then
+
+$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+
+ fi
+
+if test $ac_cv_type_long_double = yes; then
$as_echo "#define _HAVE_LONG_DOUBLE 1" >>confdefs.h
fi
- if test x"$acnewlib_cv_type_long_double" = x"yes"; then
+ if test x"$ac_cv_type_long_double" = x"yes"; then
HAVE_LONG_DOUBLE_TRUE=
HAVE_LONG_DOUBLE_FALSE='#'
else
diff --git a/newlib/configure.ac b/newlib/configure.ac
index b4d11f5e3b57..c54d2047a38f 100644
--- a/newlib/configure.ac
+++ b/newlib/configure.ac
@@ -687,39 +687,12 @@ if test $libc_cv_cc_loop_to_function = yes; then
fi
AC_SUBST(libc_cv_cc_loop_to_function)
-dnl Autoconf 2.59 doesn't support the AC_TYPE_LONG_DOUBLE macro. Instead of:
-dnl AC_TYPE_LONG_DOUBLE
-dnl AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
-dnl we specify our own long double test.
-dnl Additionally, ac_cv_objext is broken so that AC_COMPILE_IFELSE cannot be
-dnl used, so use AC_TRY_COMMAND instead.
-AC_CACHE_CHECK(whether long double type exists,
- acnewlib_cv_type_long_double, [dnl
-cat > conftest.c <<EOF
-/* Check two ways: float.h defines and direct type declaration. */
-#include <float.h>
-#if defined(LDBL_MANT_DIG)
- #define _HAVE_LONG_DOUBLE
- #else
- #error "LDBL != DBL"
-#endif
-long double test() {
-long double ld = 0.0L;
-return ld;
-}
-EOF
-if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
- 1>&AS_MESSAGE_LOG_FD])
-then
- acnewlib_cv_type_long_double=yes;
-else
- acnewlib_cv_type_long_double=no;
-fi
-rm -f conftest*])
-if test $acnewlib_cv_type_long_double = yes; then
+AC_TYPE_LONG_DOUBLE
+dnl Export the setting for our installed headers to check.
+if test $ac_cv_type_long_double = yes; then
AC_DEFINE(_HAVE_LONG_DOUBLE, 1, [Define if the platform supports long double type.])
fi
-AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$acnewlib_cv_type_long_double" = x"yes")
+AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
AC_CACHE_CHECK(whether long double equals double,
newlib_cv_ldbl_eq_dbl, [dnl
diff --git a/newlib/libc/configure b/newlib/libc/configure
index 38eaf7a65b55..1afafab77473 100755
--- a/newlib/libc/configure
+++ b/newlib/libc/configure
@@ -12229,33 +12229,49 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking long double support" >&5
-$as_echo_n "checking Checking long double support... " >&6; }
-if ${acnewlib_cv_type_long_double+:} false; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+$as_echo_n "checking for long double... " >&6; }
+if ${ac_cv_type_long_double+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-return 0;
+ if test "$GCC" = yes; then
+ ac_cv_type_long_double=yes
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* The Stardent Vistra knows sizeof (long double), but does
+ not support it. */
+ long double foo = 0.0L;
+int
+main ()
+{
+static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ sizeof (double) <= sizeof (long double))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
}
-EOF
-if { ac_try='${CC} $CFLAGS $CPPFLAGS -c conftest.c 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- acnewlib_cv_type_long_double=yes
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_type_long_double=yes
else
- acnewlib_cv_type_long_double=no
+ ac_cv_type_long_double=no
fi
-rm -f conftest*
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_type_long_double" >&5
-$as_echo "$acnewlib_cv_type_long_double" >&6; }
- if test x"$acnewlib_cv_type_long_double" = x"yes"; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+$as_echo "$ac_cv_type_long_double" >&6; }
+ if test $ac_cv_type_long_double = yes; then
+
+$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+
+ fi
+
+ if test x"$ac_cv_type_long_double" = x"yes"; then
HAVE_LONG_DOUBLE_TRUE=
HAVE_LONG_DOUBLE_FALSE='#'
else
diff --git a/newlib/libc/configure.ac b/newlib/libc/configure.ac
index 29a839623f6f..c23282d08cb1 100644
--- a/newlib/libc/configure.ac
+++ b/newlib/libc/configure.ac
@@ -184,25 +184,8 @@ fi
AC_SUBST(LIBC_SYS_LIB)
AC_SUBST(sys_dir)
-dnl Autoconf 2.59 doesn't support the AC_TYPE_LONG_DOUBLE macro. Instead of:
-dnl AC_TYPE_LONG_DOUBLE
-dnl AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
-dnl we specify our own long double test.
-AC_CACHE_CHECK([Checking long double support], [acnewlib_cv_type_long_double],[dnl
-cat > conftest.c <<EOF
-int main() {
-long double x = 0.0L;
-return 0;
-}
-EOF
-if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c conftest.c 1>&AS_MESSAGE_LOG_FD])
-then
- acnewlib_cv_type_long_double=yes
-else
- acnewlib_cv_type_long_double=no
-fi
-rm -f conftest*])
-AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$acnewlib_cv_type_long_double" = x"yes")
+AC_TYPE_LONG_DOUBLE
+AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
dnl iconv library will be compiled if --enable-newlib-iconv option is enabled
AM_CONDITIONAL(ENABLE_NEWLIB_ICONV, test x${newlib_iconv} != x)
diff --git a/newlib/newlib.hin b/newlib/newlib.hin
index 69a7cb7a7480..feeb409bbeaf 100644
--- a/newlib/newlib.hin
+++ b/newlib/newlib.hin
@@ -14,6 +14,9 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
+/* Define to 1 if the system has the type `long double'. */
+#undef HAVE_LONG_DOUBLE
+
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] newlib: switch to autoconf long double macro
2022-01-21 3:49 ` [PATCH] newlib: " Mike Frysinger
@ 2022-01-21 11:19 ` Corinna Vinschen
0 siblings, 0 replies; 4+ messages in thread
From: Corinna Vinschen @ 2022-01-21 11:19 UTC (permalink / raw)
To: newlib
On Jan 20 22:49, Mike Frysinger wrote:
> Now that we require a recent version of autoconf, we can rely on this
> macro working. This change was already made to libm, but these other
> dirs were missed as I didn't notice it being duplicated in 3 places.
> ---
> newlib/configure | 68 ++++++++++++++++++++++------------------
> newlib/configure.ac | 35 +++------------------
> newlib/libc/configure | 58 +++++++++++++++++++++-------------
> newlib/libc/configure.ac | 21 ++-----------
> newlib/newlib.hin | 3 ++
> 5 files changed, 84 insertions(+), 101 deletions(-)
Looks obvious, please push.
Thanks,
Corinna
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-01-21 11:19 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-18 5:13 [PATCH] newlib: libm: switch to autoconf long double macro Mike Frysinger
2022-01-19 14:52 ` Corinna Vinschen
2022-01-21 3:49 ` [PATCH] newlib: " Mike Frysinger
2022-01-21 11:19 ` Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).