openwrt/include
Michael Pratt 39e8ef33bf build: add test for 64-bit time support
Several GNU tools such as tar, coreutils, and findutils
now build with support for 64-bit time by default
and otherwise require reconfiguring with a flag
--disable-year2038 in order to build without 64-bit time.

Some standard C libraries, for example,
certain older versions of glibc such as 2.31
have large file support but not long time bits support:

  checking for ... option to enable large file support... -D_FILE_OFFSET_BITS=64
  checking for ... option for timestamps after 2038... support not detected

This test using C code taken from largefile.m4 in gnulib
uses math and casting to check for overflow
with a macro and array pair that can only be defined
when 64-bit time support is present, and otherwise errors.
It is the exact same code used to test for 64-bit time
during the configure stage of building these tools,
so the results of this test before configure takes place
will always be in concordance with the results of
the test that takes place during the configure script.

Based on the test, the configure flag --disable-year2038
is added to every host tool build depending on the host system.

When the year 2038 problem finally comes around,
the effect of the test can be converted
from the toggling of a configure option into a build prerequisite,
requiring it to pass in order to continue building.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
Link: https://github.com/openwrt/openwrt/pull/15799
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-06-27 09:31:53 +02:00
..
site loongarch64: new target 2024-05-04 14:14:16 +08:00
autotools.mk autotools: add list of fake paths to tools 2023-05-04 06:07:26 +02:00
bpf.mk bpf: also include toolchain standard header as system header 2024-06-17 13:48:29 +02:00
cmake.mk treewide: make use of new toolchain define 2023-10-20 16:13:56 +02:00
debug.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
depends.mk build: make find_md5 reproducible with AUTOREMOVE 2022-09-30 22:26:51 +02:00
device_table.txt
download.mk download: don't overwrite VERSION variable 2024-04-29 08:39:25 +02:00
feeds.mk build: add APK package build capabilities 2024-05-17 23:21:26 +03:00
hardened-ld-pie.specs build: add hardened builds with PIE (ASLR) support 2018-01-27 16:46:45 +01:00
hardening.mk build: add option for building with stack-protector-all 2024-01-19 21:27:14 +01:00
host-build.mk build: add test for 64-bit time support 2024-06-27 09:31:53 +02:00
image-commands.mk build: move Build/buffalo-trx to image-commands.mk 2024-06-05 21:14:16 +02:00
image.mk build: add APK package build capabilities 2024-05-17 23:21:26 +03:00
kernel-5.15 kernel: bump 5.15 to 5.15.158 2024-05-12 12:16:18 +02:00
kernel-6.1 kernel: bump 6.1 to 6.1.95 2024-06-23 16:33:41 +02:00
kernel-6.6 kernel: bump 6.6 to 6.6.35 2024-06-22 16:50:57 +02:00
kernel-build.mk kernel-build.mk: add support for compiling only DTS 2024-02-08 19:57:28 +01:00
kernel-defaults.mk build: cache kernel module package compiling 2023-10-28 21:34:20 +02:00
kernel-version.mk kernel: fix wrong detection of Linux-Testing-Version in makefile DUMP 2023-05-31 20:28:40 +02:00
kernel.mk loongarch64: new target 2024-05-04 14:14:16 +08:00
logo.png include: update logo with better kerning 2021-01-18 09:31:39 -10:00
logo.svg include: update logo with better kerning 2021-01-18 09:31:39 -10:00
meson.mk tools/meson: static host and both libraries 2024-03-29 23:42:22 +01:00
netfilter.mk netfilter: add kmod-nf-conntrack 2023-02-18 17:12:30 +01:00
nls.mk nls.mk: fixup cmake packages 2022-11-27 00:52:06 +01:00
openssl-module.mk openssl: add legacy provider 2023-04-05 08:24:49 -03:00
package-bin.mk build: allow package to be built for all variants 2021-11-15 00:38:46 +01:00
package-defaults.mk treewide: use APK compatible version schema 2024-03-22 22:14:22 +01:00
package-dumpinfo.mk build: remove duplicate MAINTAINER from package-dumpinfo.mk 2024-05-07 22:24:10 +02:00
package-pack.mk Revert "apk: limit CONFIG_IPK_FILES_CHECKSUMS config to OPKG" 2024-06-20 05:52:05 +02:00
package-seccomp.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
package.mk build: add APK package build capabilities 2024-05-17 23:21:26 +03:00
prereq-build.mk Revert "prereq-build: add Python 3.12 support" 2023-11-13 23:33:40 +01:00
prereq.mk prereq: merge common cases in SetupHostCommand 2023-08-26 14:00:36 +02:00
quilt.mk quilt.mk: don't error on refresh/update if patches doesn't exist 2023-10-06 21:59:29 +02:00
rootfs.mk include/rootfs: improve readability of OPKG status fixup block 2024-06-11 23:58:12 +02:00
scan.awk build: propagate override information to .packageinfo 2015-02-09 12:09:31 +00:00
scan.mk scan.mk: do not silence output of dump phase 2023-11-13 14:01:24 +01:00
shell.sh build: use mkhash to replace various quirky md5sum/openssl calls 2017-01-05 11:09:12 +01:00
subdir.mk kernel-build.mk: add support for compiling only DTS 2024-02-08 19:57:28 +01:00
target.mk target.mk: improve handling of default enabled SECCOMP 2024-06-19 16:19:10 +02:00
toolchain-build.mk toolchain: fix dangling symlink to self in FixupLibdir 2022-07-01 19:17:36 +02:00
toplevel.mk toplevel.mk: make sure tmp exist for .packagedynamicdefault 2024-06-12 15:55:17 +02:00
trusted-firmware-a.mk include/trusted-firmware-a.mk: allow overriding package install template 2024-05-07 22:01:42 +02:00
u-boot.mk u-boot.mk: override default PATH to avoid pick hostpkg python 2024-03-02 14:17:31 +01:00
uclibc++.mk uclibc++: remove 2021-10-24 18:20:50 +02:00
unpack.mk include: use libdeflate's gzip to decompress 2023-01-17 21:40:18 +01:00
verbose.mk verbose.mk: fallback to standard file descriptors 2024-01-05 16:25:14 +01:00
version.mk treewide: remove implicit SUBTARGET 2024-04-08 21:53:05 +02:00