Integrate Red Bear boot and packaging updates

This commit is contained in:
2026-04-22 10:22:09 +01:00
parent dd68c4ba03
commit b5ae8b2760
77 changed files with 259225 additions and 16971 deletions
+1 -1
View File
@@ -102,7 +102,7 @@ include mk/redbear.mk
# Ensure Red Bear OS integration runs before repo cook and disk image creation
$(BUILD)/harddrive.img: $(REDBEAR_TAG)
$(BUILD)/redbear-live.iso: $(REDBEAR_TAG)
$(LIVE_ISO): $(REDBEAR_TAG)
$(REPO_TAG): $(REDBEAR_TAG)
env: prefix FORCE $(CONTAINER_TAG)
+2 -2
View File
@@ -78,7 +78,7 @@ Red Bear OS now treats AMD and Intel machines as equal-priority hardware targets
language in historical integration notes should be read as earlier sequencing context, not as the
current platform policy.
The tracked desktop-capable target surface is now `redbear-full` / `redbear-live-full`, and
The tracked desktop-capable target surface is now `redbear-full` / `redbear-live`, and
runtime support claims remain evidence-qualified until compositor/session proof is stronger.
## Historical Phase Snapshot
@@ -178,7 +178,7 @@ Requires a Linux x86_64 host with Rust nightly, QEMU, and standard build tools.
make all CONFIG_NAME=redbear-full # Tracked desktop-capable target
make all CONFIG_NAME=redbear-mini # Tracked minimal non-desktop target
make all CONFIG_NAME=redbear-full-grub # Broader integration slice with GRUB boot manager
make live CONFIG_NAME=redbear-live-full # Live install ISO for real bare metal (redbear-live.iso)
make live CONFIG_NAME=redbear-live # Full live ISO for real bare metal
make live CONFIG_NAME=redbear-live-mini # Tiny bare-metal live ISO for minimal/recovery use (~256 MiB image)
make qemu CONFIG_NAME=redbear-full # Boot the tracked desktop-capable target in QEMU
```
+1 -1
View File
@@ -36,7 +36,7 @@ echo " Defaults to the basename of FILESYSTEM_CONFIG, or 'redbear-
echo " config/ARCH/CONFIG.toml"
echo " If you specify both CONFIG and FILESYSTEM_CONFIG, it is not"
echo " necessary that they match, but it is recommended."
echo " Examples: ./build.sh -c demo live - make build/x86_64/demo/redbear-live.iso"
echo " Examples: ./build.sh -c demo live - make build/x86_64/demo.iso"
echo " ./build.sh -6 qemu - make build/i686/redbear-kde/harddrive.img and"
echo " and run it in qemu"
echo " NOTE: If you do not change ARCH or CONFIG very often, edit mk/config.mk"
+9
View File
@@ -0,0 +1,9 @@
# Red Bear OS GRUB Live Mini Configuration
# Canonical GRUB-backed live ISO for the stripped console/recovery target.
#
# Build: make live CONFIG_NAME=redbear-grub-live-mini
include = ["redbear-live-mini.toml", "redbear-grub.toml"]
[general]
efi_partition_size = 16
+4 -11
View File
@@ -1,14 +1,7 @@
# Red Bear OS Live Full Configuration
# Live ISO variant for the primary full desktop/session target on real bare metal.
# Legacy compatibility alias for the canonical full live target.
#
# Build: make live CONFIG_NAME=redbear-live-full
# This ISO is for real bare-metal boot/install/recovery, not VM/QEMU use.
# Preferred build: make live CONFIG_NAME=redbear-live
# Legacy build: make live CONFIG_NAME=redbear-live-full
include = ["redbear-full.toml"]
[general]
filesystem_size = 4096
[packages]
cub = {}
redbear-meta = {}
include = ["redbear-live.toml"]
+4 -3
View File
@@ -1,6 +1,7 @@
# Red Bear OS Live Mini Configuration with GRUB Boot Manager
# Live ISO for stripped console/recovery target with installer-native GRUB chainload.
# Legacy compatibility alias for the canonical GRUB mini live target.
#
# Build: make live CONFIG_NAME=redbear-live-mini-grub
# Preferred build: make live CONFIG_NAME=redbear-grub-live-mini
# Legacy build: make live CONFIG_NAME=redbear-live-mini-grub
include = ["redbear-live-mini.toml", "redbear-grub.toml"]
include = ["redbear-grub-live-mini.toml"]
+100 -53
View File
@@ -4,70 +4,117 @@
# Build: make live CONFIG_NAME=redbear-live-mini
#
# Target contract:
# - keep full non-graphics system surface from redbear-full
# - strip graphics/desktop session stack
# - strip network firmware payload
# - keep a text-login live/recovery surface only
# - avoid the shared firmware/input/device-service stack from redbear-minimal
# - ship no graphics packages/services and no linux-firmware payload
include = ["redbear-full.toml"]
include = ["minimal.toml", "redbear-legacy-base.toml", "redbear-netctl.toml"]
[general]
filesystem_size = 3072
filesystem_size = 768
[packages]
# Strip firmware payload from mini live image.
redbear-firmware = "ignore"
firmware-loader = "ignore"
# Red Bear OS branding and host utilities.
redbear-release = {}
redbear-hwutils = {}
# Strip graphics/session surface.
installer-gui = "ignore"
redbear-authd = "ignore"
redbear-session-launch = "ignore"
redbear-greeter = "ignore"
libwayland = "ignore"
wayland-protocols = "ignore"
libxkbcommon = "ignore"
xkeyboard-config = "ignore"
libevdev = "ignore"
libinput = "ignore"
seatd = "ignore"
qtbase = "ignore"
qtdeclarative = "ignore"
qtsvg = "ignore"
qtwayland = "ignore"
qt6-wayland-smoke = "ignore"
kf6-extra-cmake-modules = "ignore"
kf6-kcoreaddons = "ignore"
kf6-kconfig = "ignore"
kf6-ki18n = "ignore"
kf6-kcolorscheme = "ignore"
kf6-kauth = "ignore"
kf6-kwindowsystem = "ignore"
kf6-knotifications = "ignore"
kf6-kconfigwidgets = "ignore"
kf6-kcrash = "ignore"
kf6-kdbusaddons = "ignore"
kf6-kglobalaccel = "ignore"
kf6-kservice = "ignore"
kf6-kpackage = "ignore"
kf6-kiconthemes = "ignore"
kirigami = "ignore"
kf6-kio = "ignore"
kf6-kdeclarative = "ignore"
kf6-kcmutils = "ignore"
kf6-kwayland = "ignore"
kdecoration = "ignore"
kwin = "ignore"
redox-drm = "ignore"
mesa = "ignore"
libdrm = "ignore"
# Redox-native netctl tooling.
redbear-netctl = {}
redbear-netctl-console = {}
redbear-netstat = {}
redbear-traceroute = {}
redbear-mtr = {}
redbear-nmap = {}
# Diagnostics and shell-side utilities.
mc = {}
redbear-info = {}
# Keep package builder utility in live environment.
cub = {}
[[files]]
path = "/usr/lib/init.d/20_display.service"
path = "/etc/netctl/active"
data = "wired-dhcp\n"
[[files]]
path = "/usr/lib/init.d/30_console"
data = ""
[[files]]
path = "/usr/lib/init.d/20_greeter.service"
data = ""
path = "/usr/lib/init.d/29_activate_console.service"
data = """
[unit]
description = "Activate console (text-only no-op)"
requires_weak = [
"00_base.target",
]
[service]
cmd = "true"
type = "oneshot"
"""
[[files]]
path = "/usr/lib/init.d/30_console.service"
data = """
[unit]
description = "Console terminals"
requires_weak = [
"29_activate_console.service",
]
[service]
cmd = "getty"
args = ["/scheme/tty"]
type = "oneshot_async"
"""
[[files]]
path = "/usr/lib/init.d/31_debug_console.service"
data = """
[unit]
description = "Debug console"
requires_weak = [
"00_base.target",
]
[service]
cmd = "getty"
args = ["/scheme/debug/no-preserve", "-J"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/motd"
data = """
########## Red Bear OS ##########
# Login with the following: #
# `user` #
# `root`:`password` #
##################################
"""
[[files]]
path = "/etc/pcid.d/ihdgd.toml"
data = """
# redbear-live-mini: text-only image, disable Intel HD graphics auto-spawn
[[drivers]]
name = "disabled ihdgd sentinel"
class = 0xFF
vendor = 0xFFFF
device = 0xFFFF
command = ["ihdgd"]
"""
[[files]]
path = "/etc/pcid.d/virtio-gpud.toml"
data = """
# redbear-live-mini: text-only image, disable virtio GPU auto-spawn
[[drivers]]
name = "disabled virtio-gpud sentinel"
class = 0xFF
vendor = 0xFFFF
device = 0xFFFF
command = ["virtio-gpud"]
"""
+15
View File
@@ -0,0 +1,15 @@
# Red Bear OS Live Configuration
# Canonical full live ISO target for the desktop/session surface on real bare metal.
#
# Build: make live CONFIG_NAME=redbear-live
# This ISO is for real bare-metal boot/install/recovery, not VM/QEMU use.
include = ["redbear-full.toml"]
[general]
filesystem_size = 3072
efi_partition_size = 1
[packages]
cub = {}
redbear-meta = {}
+9
View File
@@ -129,6 +129,15 @@ The success criterion is therefore:
> We can pull renewed upstream sources every day, reapply Red Bears local overlays, and still
> build the project successfully.
### Local recipe priority vs upstream WIP
When Red Bear maintains a local recipe and upstream contains a package with the same name under
`recipes/wip/*`, Red Bear must prefer the local recipe unconditionally.
- Use the local overlay symlink in `recipes/*/<name> -> ../../local/recipes/...`
- Do not switch back to upstream WIP for active Red Bear builds
- Re-evaluate only when upstream package exits WIP and becomes a normal maintained package
```bash
# Automated sync (preferred):
./local/scripts/sync-upstream.sh # Fetch + rebase + check patches
@@ -0,0 +1,97 @@
diff --git a/src/main.rs b/src/main.rs
index b2e2736..a6a9474 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -500,33 +500,62 @@ pub extern "C" fn main() -> ! {
print!("live: 0/{} MiB", size / MIBI as u64);
- let ptr = os.alloc_zeroed_page_aligned(size as usize);
- if ptr.is_null() {
- panic!("Failed to allocate memory for live");
- }
-
- let live = unsafe { slice::from_raw_parts_mut(ptr, size as usize) };
-
- let mut i = 0;
- for chunk in live.chunks_mut(MIBI) {
- print!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
- i += unsafe {
- fs.disk
- .read_at(fs.block + i / redoxfs::BLOCK_SIZE, chunk)
- .expect("Failed to read live disk") as u64
- };
- }
- println!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
-
- println!("Switching to live disk");
- unsafe {
- LIVE_OPT = Some((fs.block, slice::from_raw_parts_mut(ptr, size as usize)));
- }
+ let live_size = match usize::try_from(size) {
+ Ok(live_size) => live_size,
+ Err(_) => {
+ println!("\rlive: disabled (image too large for bootloader address space)");
+ live = false;
+ 0
+ }
+ };
- area_add(OsMemoryEntry {
- base: live.as_ptr() as u64,
- size: live.len() as u64,
- kind: OsMemoryKind::Reserved,
- });
+ let ptr = if live {
+ os.alloc_zeroed_page_aligned(live_size)
+ } else {
+ ptr::null_mut()
+ };
+
+ if live && ptr.is_null() {
+ println!(
+ "\rlive: disabled (unable to allocate {} MiB upfront)",
+ size / MIBI as u64
+ );
+ live = false;
+ }
+
+ let live = if live {
+ Some(unsafe { slice::from_raw_parts_mut(ptr, live_size) })
+ } else {
+ println!("Continuing without live preload");
+ None
+ };
+
+ if let Some(live) = live {
+ let mut i = 0;
+ for chunk in live.chunks_mut(MIBI) {
+ print!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
+ i += unsafe {
+ fs.disk
+ .read_at(fs.block + i / redoxfs::BLOCK_SIZE, chunk)
+ .expect("Failed to read live disk") as u64
+ };
+ }
+ println!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
+
+ println!("Switching to live disk");
+ unsafe {
+ LIVE_OPT = Some((fs.block, slice::from_raw_parts_mut(ptr, live_size)));
+ }
+
+ area_add(OsMemoryEntry {
+ base: live.as_ptr() as u64,
+ size: live.len() as u64,
+ kind: OsMemoryKind::Reserved,
+ });
+
+ Some(live)
+ } else {
+ None
+ }
-
- Some(live)
} else {
None
};
@@ -0,0 +1,60 @@
diff --git a/src/os/uefi/device.rs b/src/os/uefi/device.rs
index 4b0bf31..90a97b8 100644
--- a/src/os/uefi/device.rs
+++ b/src/os/uefi/device.rs
@@ -46,6 +46,8 @@ fn device_path_relation(a_path: &DevicePath, b_path: &DevicePath) -> DevicePath
}
fn esp_live_image(esp_handle: Handle, esp_device_path: &DevicePath) -> Option<Vec<u8>> {
+ const MAX_LIVE_IMAGE_PRELOAD: usize = 128 * 1024 * 1024;
+
let mut esp_fs = match FileSystem::handle_protocol(esp_handle) {
Ok(esp_fs) => esp_fs,
Err(err) => {
@@ -87,9 +89,37 @@ fn esp_live_image(esp_handle: Handle, esp_device_path: &DevicePath) -> Option<V
};
let mut buffer = Vec::new();
+ let mut chunk = [0_u8; 64 * 1024];
+
+ loop {
+ let read = match live_image.read(&mut chunk) {
+ Ok(read) => read,
+ Err(err) => {
+ log::warn!(
+ "Failed while reading {}\\redox-live.iso: {:?}",
+ device_path_to_string(esp_device_path),
+ err
+ );
+ return None;
+ }
+ };
+
+ if read == 0 {
+ break;
+ }
- live_image.read_to_end(&mut buffer).unwrap();
+ if buffer.len().saturating_add(read) > MAX_LIVE_IMAGE_PRELOAD {
+ log::warn!(
+ "Skipping {}\\redox-live.iso preload: file exceeds {} MiB safety limit",
+ device_path_to_string(esp_device_path),
+ MAX_LIVE_IMAGE_PRELOAD / 1024 / 1024
+ );
+ return None;
+ }
+
+ buffer.extend_from_slice(&chunk[..read]);
+ }
Some(buffer)
}
@@ -130,7 +160,7 @@ pub fn disk_device_priority() -> Vec<DiskDevice> {
return vec![DiskDevice {
handle: esp_handle,
// Support both a copy of livedisk.iso and a standalone redoxfs partition
- partition_offset: if &buffer[512..520] == b"EFI PART" {
+ partition_offset: if buffer.len() >= 520 && &buffer[512..520] == b"EFI PART" {
//TODO: get block from partition table
2 * crate::MIBI as u64
} else {
+53 -28
View File
@@ -5,7 +5,7 @@
# The resulting grub.efi chainloads the Redox bootloader.
#
# Output: /usr/lib/boot/grub.efi, /usr/lib/boot/grub.cfg
# Required local module: local/recipes/core/grub/modules/redoxfs.mod
# Required local source: ../grub-redoxfs/src/{redoxfs.c,redoxfs.h,seahash.c}
#
# Build: make r.grub
# Install into image (Phase 1): ./local/scripts/install-grub.sh build/x86_64/harddrive.img
@@ -37,6 +37,15 @@ for tool in gcc make bison flex; do
fi
done
# We patch Makefile.core.def for local RedoxFS support. Regenerate autotools
# files once to avoid version-skew failures in incremental rebuild rules.
for tool in autoreconf automake aclocal autoconf; do
if ! command -v "${tool}" &>/dev/null; then
echo "ERROR: Required host autotools component '${tool}' not found" >&2
exit 1
fi
done
# Out-of-tree build (GRUB requires this for some configurations)
mkdir -p "${COOKBOOK_BUILD}/grub-build" || exit 1
cd "${COOKBOOK_BUILD}/grub-build" || exit 1
@@ -44,6 +53,44 @@ cd "${COOKBOOK_BUILD}/grub-build" || exit 1
# GRUB release tarballs miss extra_deps.lst (normally generated by autogen.sh)
touch "${COOKBOOK_SOURCE}/grub-core/extra_deps.lst" || exit 1
# Inject local RedoxFS GRUB module source from sibling tree: ../grub-redoxfs
RBOS_ROOT="$(cd "${COOKBOOK_RECIPE}/../../../.." && pwd)"
GRUB_REDOXFS_ROOT="${RBOS_ROOT}/../grub-redoxfs"
GRUB_REDOXFS_SRC="${GRUB_REDOXFS_ROOT}/src"
for f in redoxfs.c redoxfs.h seahash.c; do
if [ ! -f "${GRUB_REDOXFS_SRC}/${f}" ]; then
echo "ERROR: missing ${GRUB_REDOXFS_SRC}/${f}" >&2
echo "grub-redoxfs source tree must exist at: ${GRUB_REDOXFS_ROOT}" >&2
exit 1
fi
done
cp "${GRUB_REDOXFS_SRC}/redoxfs.c" "${COOKBOOK_SOURCE}/grub-core/fs/redoxfs.c"
cp "${GRUB_REDOXFS_SRC}/seahash.c" "${COOKBOOK_SOURCE}/grub-core/fs/seahash.c"
cp "${GRUB_REDOXFS_SRC}/redoxfs.h" "${COOKBOOK_SOURCE}/grub-core/fs/redoxfs.h"
mkdir -p "${COOKBOOK_SOURCE}/include/grub"
cp "${GRUB_REDOXFS_SRC}/redoxfs.h" "${COOKBOOK_SOURCE}/include/grub/redoxfs.h"
echo "Injected GRUB RedoxFS sources from ${GRUB_REDOXFS_SRC}"
MAKEFILE_CORE_DEF="${COOKBOOK_SOURCE}/grub-core/Makefile.core.def"
if ! grep -q "name = redoxfs;" "${MAKEFILE_CORE_DEF}"; then
cat >> "${MAKEFILE_CORE_DEF}" <<'EOF'
module = {
name = redoxfs;
common = fs/redoxfs.c;
cflags = '-DGRUB_BUILD';
};
EOF
echo "Registered redoxfs module in Makefile.core.def"
fi
(
cd "${COOKBOOK_SOURCE}"
autoreconf -fiv
)
# Configure for host, targeting x86_64 EFI platform output.
# --target=x86_64 means "produce boot images for x86_64"
# --with-platform=efi means "EFI platform output"
@@ -118,34 +165,12 @@ for m in \
add_mod "${m}"
done
# RedoxFS module is mandatory for Red Bear GRUB first-class support.
# Prefer local tree artifact, then fall back to staged sysroot copy.
REDOXFS_MOD_CANDIDATES=(
"${COOKBOOK_RECIPE}/modules/redoxfs.mod"
"${COOKBOOK_SYSROOT}/usr/lib/grub/x86_64-efi/redoxfs.mod"
)
REDOXFS_MOD=""
for cand in "${REDOXFS_MOD_CANDIDATES[@]}"; do
if [ -f "${cand}" ]; then
REDOXFS_MOD="${cand}"
break
fi
done
if [ -z "${REDOXFS_MOD}" ]; then
echo "ERROR: redoxfs.mod not found." >&2
echo "Expected one of:" >&2
for cand in "${REDOXFS_MOD_CANDIDATES[@]}"; do
echo " - ${cand}" >&2
done
exit 1
fi
cp "${REDOXFS_MOD}" "${MOD_DIR}/redoxfs.mod"
echo "Using mandatory RedoxFS GRUB module: ${REDOXFS_MOD}"
if ! printf '%s\n' "${SELECTED_MODULES[@]}" | grep -qx "redoxfs"; then
if has_mod "redoxfs"; then
SELECTED_MODULES+=("redoxfs")
else
echo "ERROR: redoxfs.mod was not produced by GRUB build" >&2
echo "Expected at: ${MOD_DIR}/redoxfs.mod" >&2
exit 1
fi
if [ "${#SELECTED_MODULES[@]}" -eq 0 ]; then
+325 -300
View File
@@ -1,355 +1,380 @@
-*- Text -*-
Installation Instructions
*************************
This is the GRUB. Welcome.
Basic Installation
==================
This file contains instructions for compiling and installing the GRUB.
The following shell commands:
Where this document refers to packages names, they are named according to the
Debian 11 package repositories. These packages can be found by searching
https://packages.debian.org/.
test -f configure || ./bootstrap
./configure
make
make install
The Requirements
================
should configure, build, and install this package. The first line,
which bootstraps, is intended for developers; when building from
distribution tarballs it does nothing and can be skipped. A package
might name the bootstrapping script differently; if the name is
autogen.sh, for example, the first line should say ./autogen.sh
instead of ./bootstrap.
GRUB depends on some software packages installed into your system. If
you don't have any of them, please obtain and install them before
configuring the GRUB.
The following more-detailed instructions are generic; see the
README file for instructions specific to this package. Some packages
provide this INSTALL file but do not implement all of the features
documented below. The lack of an optional feature in a given package is
not necessarily a bug. More recommendations for GNU packages can be
found in the GNU Coding Standards.
* GCC 5.1.0 or later
Experimental support for clang 8.0.0 or later (results in much bigger binaries)
for i386, x86_64, arm (including thumb), arm64, mips(el), powerpc, sparc64
* GNU Make
* GNU Bison 2.3 or later
* GNU gettext
* GNU binutils 2.9.1.0.23 or later
* Flex 2.5.35 or later
* pkg-config
* GNU patch
* Other standard GNU/Unix tools
* a libc with large file support (e.g. glibc 2.1 or later)
Many packages have scripts meant for developers instead of ordinary
builders, as they may use developer tools that are less commonly
installed, or they may access the network, which has privacy
implications. These scripts attempt to bootstrap by building the
configure script and related files, possibly using developer tools or
the network. Because the output of bootstrapping is system-independent,
it is normally run by a package developer so that its output can be put
into the distribution tarball and ordinary builders and users need not
bootstrap. Some packages have commands like ./autopull.sh and
./autogen.sh that you can run instead of ./bootstrap, for more
fine-grained control over bootstrapping.
On GNU/Linux, you also need:
The configure script attempts to guess correct values for various
system-dependent variables used during compilation. It uses those
values to create a Makefile in each directory of the package. It may
also create one or more .h files containing system-dependent
definitions. Finally, it creates a script config.status that you can
run in the future to recreate the current configuration, and a file
config.log containing output useful for debugging configure.
* libdevmapper 1.02.34 or later (recommended)
It can also use an optional file (typically called config.cache and
enabled with --cache-file=config.cache or simply -C) that saves the
results of its tests to speed up reconfiguring. Caching is disabled by
default to prevent problems with accidental use of stale cache files.
For optional grub-emu features, you need:
If you need to do unusual things to compile the package, please try
to figure out how configure could check whether to do them, and mail
diffs or instructions to the address given in the README so they can
be considered for the next release. If you are using the cache, and at
some point config.cache contains results you dont want to keep, you
may remove or edit it.
* SDL (recommended)
* libpciaccess (optional)
The autoconf program generates configure from the file
configure.ac. Normally you should edit configure.ac instead of
editing configure directly.
To build GRUB's graphical terminal (gfxterm), you need:
The simplest way to compile this package is:
* FreeType 2.1.5 or later
* GNU Unifont
1. cd to the directory containing the packages source code.
To build grub-mkfont the unicode fonts are required (xfonts-unifont package
on Debian).
2. If this is a developer checkout and file configure does not yet
exist, run the bootstrapping script (typically ./bootstrap or
./autogen.sh) to bootstrap and create the file. You may need
special developer tools and network access to bootstrap, and the
network access may have privacy implications.
If you use a development snapshot or want to hack on GRUB you may
need the following.
3. Type ./configure to configure the package for your system. This
might take a while. While running, configure prints messages
telling which features it is checking for.
* Python 3 (NOTE: python 2.6 should still work, but it's not tested)
* Autoconf 2.64 or later
* Automake 1.14 or later
4. Type make to compile the package.
Your distro may package cross-compiling toolchains such as the following
incomplete list on Debian: gcc-aarch64-linux-gnu, gcc-arm-linux-gnueabihf,
gcc-mips-linux-gnu, gcc-mipsel-linux-gnu, gcc-powerpc64-linux-gnu,
gcc-riscv64-linux-gnu, gcc-sparc64-linux-gnu, mingw-w64 and mingw-w64-tools.
5. Optionally, type make check to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
More cross compiling toolchains can be found at the following trusted sites:
6. Type make install to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the make install phase executed with root
privileges.
* https://mirrors.kernel.org/pub/tools/crosstool/
* https://toolchains.bootlin.com/
7. Optionally, type make installcheck to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior make install required
root privileges, verifies that the installation completed
correctly.
Prerequisites for make-check:
8. You can remove the program binaries and object files from the
source code directory by typing make clean. To also remove the
files that configure created (so you can compile the package for
a different kind of computer), type make distclean. There is
also a make maintainer-clean target, but that is intended mainly
for the packages developers. If you use it, you may have to
bootstrap again.
* qemu, specifically the binary "qemu-system-ARCH" where ARCH is the
architecture GRUB has been built for; the "qemu-system" package on Debian
will install all needed qemu architectures
* OVMF, for EFI platforms (packages ovmf, ovmf-ia32, qemu-efi-arm, and
qemu-efi-aarch64)
* OpenBIOS, for ieee1275 platforms (packages openbios-ppc and openbios-sparc)
* xorriso 1.2.9 or later, for grub-mkrescue and grub-shell
* wamerican, for grub-fs-tester
* mtools, FAT tools for EFI platforms
* xfonts-unifont, for the functional tests
9. If the package follows the GNU Coding Standards, you can type make
uninstall to remove the installed files.
* If running a Linux kernel the following modules must be loaded:
- fuse, loop
- btrfs, ext4, f2fs, fat, hfs, hfsplus, jfs, mac-roman, minix, nilfs2,
reiserfs, udf, xfs
- On newer kernels, the exfat kernel modules may be used instead of the
exfat FUSE filesystem
* The following are Debian named packages required mostly for the full
suite of filesystem testing (but some are needed by other tests as well):
- btrfs-progs, dosfstools, e2fsprogs, exfat-utils, f2fs-tools, genromfs,
hfsprogs, jfsutils, nilfs-tools, ntfs-3g, reiserfsprogs, squashfs-tools,
reiserfsprogs, udftools, xfsprogs, zfs-fuse
- exfat-fuse, if not using the exfat kernel module
- gzip, lzop, xz-utils
- attr, cpio, g++, gawk, parted, recode, tar, util-linux
Installation Prerequisites
==========================
Note that `make check' will run and many tests may complete successfully
with only a subset of these prerequisites. However, some tests may be
skipped or fail due to missing prerequisites.
Installation requires a POSIX-like environment with a shell and at
least the following standard utilities:
To build the documentation you'll need:
* texinfo, for the info and html documentation
* texlive, for building the dvi and pdf documentation (optional)
awk cat cp diff echo expr false ls mkdir mv printf pwd rm rmdir sed
sort test tr
To use the gdb_grub GDB script you'll need:
* readelf (binutils package)
* objdump (binutils package)
* GNU Debugger > 7, built with python support (gdb package)
* Python >= 3.5 (python3 package)
This packages installation may need other standard utilities such as
grep, make, sleep and touch, along with compilers like gcc.
Configuring the GRUB
====================
Compilers and Options
=====================
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, a
file `config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').
Some systems require unusual options for compilation or linking that
the configure script does not know about. Run ./configure --help
for details on some of the pertinent environment variables.
If you need to do unusual things to compile the package, please try to
figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.
You can give configure initial values for configuration parameters
by setting variables in the command line or in the environment. Here is
an example:
The file `configure.ac' is used to create `configure' by a program
called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
./configure CC=gcc CFLAGS=-g LIBS=-lposix
Building the GRUB
=================
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code.
2. Skip this and following step if you use release tarball and proceed to
step 4. If you want translations type `./linguas.sh'.
3. Type `./bootstrap'.
The autogen.sh (called by bootstrap) uses python. By default autodetect
it, but it can be overridden by setting the PYTHON variable.
4. Type `./configure' to configure the package for your system.
If you're using `csh' on an old version of System V, you might
need to type `sh ./configure' instead to prevent `csh' from trying
to execute `configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
6. Type `make' to compile the package.
7. Optionally, type `make check' to run any self-tests that come with
the package. Note that many of the tests require root privileges in
order to run.
8. Type `make install' to install the programs and any data files and
documentation.
9. Type `make html' or `make pdf' to generate the html or pdf
documentation. Note, these are not built by default.
10. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Cross-compiling the GRUB
========================
GRUB defines 3 platforms:
- "Build" is the one which build systems runs on.
- "Host" is where you execute GRUB utils.
- "Target" is where GRUB itself runs.
For grub-emu host and target must be the same but may differ from build.
If build and host are different make check isn't available.
If build and host are different man pages are not generated.
As an example imagine you have a build system running on FreeBSD on sparc
which prepares packages for developers running amd64 GNU/Linux laptop and
they need to make images for ARM board running U-boot. In this case:
build=sparc64-freebsd
host=amd64-linux-gnu
target=arm-uboot
For this example the configure line might look like (more details below)
(some options are optional and included here for completeness but some rarely
used options are omitted):
./configure --build=sparc64-freebsd --host=x86_64-linux-gnu \
--target=arm-linux-gnueabihf --with-platform=efi \
BUILD_CC=gcc BUILD_PKG_CONFIG=pkg-config \
HOST_CC=x86_64-linux-gnu-gcc HOST_CFLAGS='-g -O2' \
PKG_CONFIG=x86_64-linux-gnu-pkg-config TARGET_CC=arm-linux-gnueabihf-gcc \
TARGET_CFLAGS='-Os -march=armv8.3-a' TARGET_CCASFLAGS='-march=armv8.3-a' \
TARGET_OBJCOPY=arm-linux-gnueabihf-objcopy \
TARGET_STRIP=arm-linux-gnueabihf-strip TARGET_NM=arm-linux-gnueabihf-nm \
TARGET_RANLIB=arm-linux-gnueabihf-ranlib LEX=flex
Note, that the autoconf 2.65 manual states that when using the --host argument
to configure, the --build argument should be specified as well. Not sending
--build, enters a compatibility mode that will be removed in the future.
Normally, for building a GRUB on amd64 with tools to run on amd64 to
generate images to run on ARM, using your Linux distribution's
packaged cross compiler, the following would suffice:
./configure --target=arm-linux-gnueabihf --with-platform=efi
You need to use following options to specify tools and platforms. For minimum
version look at prerequisites. All tools not mentioned in this section under
corresponding platform are not needed for the platform in question.
- For build
1. --build= to autoconf name of build.
2. BUILD_CC= to gcc able to compile for build. This is used, for
example, to compile build-gentrigtables which is then run to
generate sin and cos tables.
3. BUILD_CFLAGS= for C options for build.
4. BUILD_CPPFLAGS= for C preprocessor options for build.
5. BUILD_LDFLAGS= for linker options for build.
6. BUILD_PKG_CONFIG= for pkg-config for build (optional).
- For host
1. --host= to autoconf name of host.
2. CC= for gcc able to compile for host.
3. CFLAGS= for C options for host.
4. HOST_CC= for gcc able to compile for host.
5. HOST_CFLAGS= for C options for host.
6. HOST_CPPFLAGS= for C preprocessor options for host.
7. HOST_LDFLAGS= for linker options for host.
8. PKG_CONFIG= for pkg-config for host (optional).
9. Libdevmapper if any must be in standard linker folders (-ldevmapper) (optional).
10. Libfuse if any must be in standard linker folders (-lfuse) (optional).
11. Libzfs if any must be in standard linker folders (-lzfs) (optional).
12. Liblzma if any must be in standard linker folders (-llzma) (optional).
Note: The HOST_* variables override not prefixed variables.
- For target
1. --target= to autoconf cpu name of target.
2. --with-platform to choose firmware.
3. TARGET_CC= for gcc able to compile for target.
4. TARGET_CFLAGS= for C options for target.
5. TARGET_CPPFLAGS= for C preprocessor options for target.
6. TARGET_CCASFLAGS= for assembler options for target.
7. TARGET_LDFLAGS= for linker options for target.
8. TARGET_OBJCOPY= for objcopy for target.
9. TARGET_STRIP= for strip for target.
10. TARGET_NM= for nm for target.
11. TARGET_RANLIB= for ranlib for target.
Note: If the TARGET_* variables are not specified then they will default
to be the same as the host variables. If host variables are not
specified then the TARGET_* variables will default to be the same
as not prefixed variables.
- Additionally for emu, for host and target.
1. SDL is looked for in standard linker directories (-lSDL) (optional)
2. libpciaccess is looked for in standard linker directories (-lpciaccess) (optional)
- Platform-agnostic tools and data.
1. make is the tool you execute after ./configure.
2. Bison is specified in YACC= variable
3. Flex is specified in LEX= variable
4. GNU unifont and Djvu sans are looked for in standard directories.
See “Defining Variables” for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. `cd' to the directory where you want the object files
and executables to go and run the `configure' script. `configure'
automatically checks for the source code in the directory that
`configure' is in and in `..'.
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each system in their own
directory. To do this, you can use GNU make. cd to the directory
where you want the object files and executables to go and run the
configure script. configure automatically checks for the source
code in the directory that configure is in and in ... This is known
as a “VPATH” build.
With a non-GNU make, it is safer to compile the package for one
system at a time in the source code directory. After you have installed
the package for one system, use make distclean before reconfiguring
for another system.
Some platforms, notably macOS, support “fat” or “universal” binaries,
where a single binary can execute on different architectures. On these
platforms you can configure and compile just once, with options specific
to that platform.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix by giving `configure' the option `--prefix=PATH'.
By default, make install installs the packages commands under
/usr/local/bin, include files under /usr/local/include, etc. You
can specify an installation prefix other than /usr/local by giving
configure the option --prefix=PREFIX, where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If
you give `configure' the option `--exec-prefix=PATH', the package will
use PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option --exec-prefix=PREFIX to configure, the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for
particular kinds of files. Run `configure --help' for a list of the
directories you can set and what kinds of files go in them.
In addition, if you use an unusual directory layout you can give
options like --bindir=DIR to specify different values for particular
kinds of files. Run configure --help for a list of the directories
you can set and what kinds of files go in them. In general, the default
for these options is expressed in terms of ${prefix}, so that
specifying just --prefix will affect all of the other directory
specifications that were not explicitly provided.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure'
the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
The most portable way to affect installation locations is to pass the
correct locations to configure; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
make install command line to change installation locations without
having to reconfigure or recompile.
Please note, however, that the GRUB knows where it is located in the
filesystem. If you have installed it in an unusual location, the
system might not work properly, or at all. The chief utility of these
options for the GRUB is to allow you to "install" in some alternate
location, and then copy these to the actual root filesystem later.
The first method involves providing an override variable for each
affected directory. For example, make install
prefix=/alternate/directory will choose an alternate location for all
directory configuration variables that were expressed in terms of
${prefix}. Any directories that were specified during configure,
but not in terms of ${prefix}, must each be overridden at install time
for the entire installation to be relocated. The approach of makefile
variable overrides for each directory variable is required by the GNU
Coding Standards, and ideally causes no recompilation. However, some
platforms have known limitations with the semantics of shared libraries
that end up requiring recompilation when using this method, particularly
noticeable in packages that use GNU Libtool.
The second method involves providing the DESTDIR variable. For
example, make install DESTDIR=/alternate/directory will prepend
/alternate/directory before all installation names. The approach of
DESTDIR overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of ${prefix}
at configure time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving configure the
option --program-prefix=PREFIX or --program-suffix=SUFFIX.
Some packages pay attention to --enable-FEATURE and
--disable-FEATURE options to configure, where FEATURE indicates an
optional part of the package. They may also pay attention to
--with-PACKAGE and --without-PACKAGE options, where PACKAGE is
something like gnu-ld. ./configure --help should mention the
--enable-... and --with-... options that the package recognizes.
Some packages offer the ability to configure how verbose the
execution of make will be. For these packages, running ./configure
--enable-silent-rules sets the default to minimal output, which can be
overridden with make V=1; while running ./configure
--disable-silent-rules sets the default to verbose, which can be
overridden with make V=0.
Specifying a System Type
========================
By default configure builds for the current system. To create
binaries that can run on a different system type, specify a
--host=TYPE option along with compiler variables that specify how to
generate object code for TYPE. For example, to create binaries intended
to run on a 64-bit ARM processor:
./configure --host=aarch64-linux-gnu \
CC=aarch64-linux-gnu-gcc \
CXX=aarch64-linux-gnu-g++
If done on a machine that can execute these binaries (e.g., via
qemu-aarch64, $QEMU_LD_PREFIX, and Linuxs binfmt_misc
capability), the build behaves like a native build. Otherwise it is a
cross-build: configure will make cross-compilation guesses instead of
running test programs, and make check will not work.
A system type can either be a short name like mingw64, or a
canonical name like x86_64-pc-linux-gnu. Canonical names have the
form CPU-COMPANY-SYSTEM where SYSTEM is either OS or KERNEL-OS. To
canonicalize and validate a system type, you can run the command
config.sub, which is often squirreled away in a subdirectory like
build-aux. For example:
$ build-aux/config.sub arm64-linux
aarch64-unknown-linux-gnu
$ build-aux/config.sub riscv-lnx
Invalid configuration 'riscv-lnx': OS 'lnx' not recognized
You can look at the config.sub file to see which types are recognized.
If the file is absent, this package does not need the system type.
If configure fails with the diagnostic “cannot guess build type”.
config.sub did not recognize your systems type. In this case, first
fetch the newest versions of these files from the GNU config package
(https://savannah.gnu.org/projects/config). If that fixes things,
please report it to the maintainers of the package containing
configure. Otherwise, you can try the configure option --build=TYPE
where TYPE comes close to your system type; also, please report the
problem to <config-patches@gnu.org>.
For more details about configuring system types, see the Autoconf
documentation.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
If you want to set default values for configure scripts to share,
you can create a site shell script called config.site that gives
default values for variables like CC, cache_file, and prefix.
configure looks for PREFIX/share/config.site if it exists, then
PREFIX/etc/config.site if it exists. Or, you can set the
CONFIG_SITE environment variable to the location of the site script.
A warning: not all configure scripts look for a site script.
Operation Controls
Defining Variables
==================
`configure' recognizes the following options to control how it
Variables not defined in a site shell script can be set in the
environment passed to configure. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the configure command line, using VAR=value. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for CONFIG_SHELL due to an
Autoconf limitation. Until the limitation is lifted, you can use this
workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
configure Invocation
======================
configure recognizes the following options to control how it
operates.
`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.
--help
-h
Print a summary of all of the options to configure, and exit.
`--help'
Print a summary of the options to `configure', and exit.
--help=short
--help=recursive
Print a summary of the options unique to this packages
configure, and exit. The short variant lists options used only
in the top level, while the recursive variant lists options also
present in any nested packages.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made.
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--version'
Print the version of Autoconf used to generate the `configure'
--version
-V
Print the version of Autoconf used to generate the configure
script, and exit.
--cache-file=FILE
Enable the cache: use and save the results of the tests in FILE,
traditionally config.cache. FILE defaults to /dev/null to
disable caching.
--config-cache
-C
Alias for --cache-file=config.cache.
--srcdir=DIR
Look for the packages source code in directory DIR. Usually
configure can determine that directory automatically.
--prefix=DIR
Use DIR as the installation prefix. See “Installation Names” for
more details, including other options available for fine-tuning the
installation locations.
--host=TYPE
Build binaries for system TYPE. See “Specifying a System Type”.
--enable-FEATURE
--disable-FEATURE
Enable or disable the optional FEATURE. See “Optional Features”.
--with-PACKAGE
--without-PACKAGE
Use or omit PACKAGE when building. See “Optional Features”.
--quiet
--silent
-q
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to /dev/null (any error
messages will still be shown).
--no-create
-n
Run the configure checks, but stop before creating any output
files.
configure also recognizes several environment variables, and accepts
some other, less widely useful, options. Run configure --help for
more details.
Copyright notice
================
Copyright © 19941996, 19992002, 20042017, 20202025 Free Software
Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,961 @@
# This file was generated by Autom4te 2.72.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.ac'
],
{
'AC_CANONICAL_BUILD' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_CONFIG_FILES' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FC_FREEFORM' => 1,
'AC_FC_PP_DEFINE' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AC_FC_SRCEXT' => 1,
'AC_INIT' => 1,
'AC_LIBSOURCE' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_SUBST' => 1,
'AC_SUBST_TRACE' => 1,
'AH_OUTPUT' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_CONDITIONAL' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'AM_GNU_GETTEXT' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AM_NLS' => 1,
'AM_PATH_GUILE' => 1,
'AM_POT_TOOLS' => 1,
'AM_PROG_AR' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_CXX_C_O' => 1,
'AM_PROG_F77_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_PROG_MOC' => 1,
'AM_SILENT_RULES' => 1,
'AM_XGETTEXT_OPTION' => 1,
'GTK_DOC_CHECK' => 1,
'IT_PROG_INTLTOOL' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'LT_INIT' => 1,
'LT_SUPPORTED_TAG' => 1,
'_AM_COND_ELSE' => 1,
'_AM_COND_ENDIF' => 1,
'_AM_COND_IF' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_m4_warn' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1,
'm4_sinclude' => 1,
'sinclude' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'/usr/share/aclocal-1.18/internal/ac-config-macro-dirs.m4',
'/usr/share/aclocal/lt~obsolete.m4',
'/usr/share/aclocal/pkg.m4',
'/usr/share/aclocal-1.18/amversion.m4',
'/usr/share/aclocal-1.18/as.m4',
'/usr/share/aclocal-1.18/auxdir.m4',
'/usr/share/aclocal-1.18/cond-if.m4',
'/usr/share/aclocal-1.18/cond.m4',
'/usr/share/aclocal-1.18/depend.m4',
'/usr/share/aclocal-1.18/depout.m4',
'/usr/share/aclocal-1.18/init.m4',
'/usr/share/aclocal-1.18/install-sh.m4',
'/usr/share/aclocal-1.18/lead-dot.m4',
'/usr/share/aclocal-1.18/make.m4',
'/usr/share/aclocal-1.18/missing.m4',
'/usr/share/aclocal-1.18/options.m4',
'/usr/share/aclocal-1.18/prog-cc-c-o.m4',
'/usr/share/aclocal-1.18/python.m4',
'/usr/share/aclocal-1.18/rmf.m4',
'/usr/share/aclocal-1.18/runlog.m4',
'/usr/share/aclocal-1.18/sanity.m4',
'/usr/share/aclocal-1.18/silent.m4',
'/usr/share/aclocal-1.18/strip.m4',
'/usr/share/aclocal-1.18/substnot.m4',
'/usr/share/aclocal-1.18/tar.m4',
'/usr/share/aclocal-1.18/xargsn.m4',
'm4/00gnulib.m4',
'm4/__inline.m4',
'm4/absolute-header.m4',
'm4/alloca.m4',
'm4/argp.m4',
'm4/base64.m4',
'm4/btowc.m4',
'm4/builtin-expect.m4',
'm4/calloc.m4',
'm4/chdir-long.m4',
'm4/close.m4',
'm4/codeset.m4',
'm4/ctype_h.m4',
'm4/dirent_h.m4',
'm4/dirfd.m4',
'm4/double-slash-root.m4',
'm4/dup2.m4',
'm4/eealloc.m4',
'm4/errno_h.m4',
'm4/error.m4',
'm4/exponentd.m4',
'm4/extensions.m4',
'm4/extern-inline.m4',
'm4/fchdir.m4',
'm4/fcntl-o.m4',
'm4/fcntl.m4',
'm4/fcntl_h.m4',
'm4/filenamecat.m4',
'm4/flexmember.m4',
'm4/float_h.m4',
'm4/fnmatch.m4',
'm4/fnmatch_h.m4',
'm4/free.m4',
'm4/fstat.m4',
'm4/getcwd.m4',
'm4/getdelim.m4',
'm4/getdtablesize.m4',
'm4/getline.m4',
'm4/getopt.m4',
'm4/getprogname.m4',
'm4/gettext.m4',
'm4/glibc2.m4',
'm4/glibc21.m4',
'm4/gnulib-common.m4',
'm4/gnulib-comp.m4',
'm4/iconv.m4',
'm4/include_next.m4',
'm4/intdiv0.m4',
'm4/intl.m4',
'm4/intlmacosx.m4',
'm4/intmax.m4',
'm4/intmax_t.m4',
'm4/inttypes-pri.m4',
'm4/inttypes.m4',
'm4/inttypes_h.m4',
'm4/isblank.m4',
'm4/langinfo_h.m4',
'm4/largefile.m4',
'm4/lcmessage.m4',
'm4/lib-ld.m4',
'm4/lib-link.m4',
'm4/lib-prefix.m4',
'm4/libunistring-base.m4',
'm4/limits-h.m4',
'm4/localcharset.m4',
'm4/locale-fr.m4',
'm4/locale-ja.m4',
'm4/locale-zh.m4',
'm4/locale_h.m4',
'm4/localeconv.m4',
'm4/lock.m4',
'm4/longlong.m4',
'm4/lstat.m4',
'm4/malloc.m4',
'm4/malloca.m4',
'm4/math_h.m4',
'm4/mbrtowc.m4',
'm4/mbsinit.m4',
'm4/mbsrtowcs.m4',
'm4/mbstate_t.m4',
'm4/mbswidth.m4',
'm4/mbtowc.m4',
'm4/memchr.m4',
'm4/mempcpy.m4',
'm4/memrchr.m4',
'm4/mmap-anon.m4',
'm4/mode_t.m4',
'm4/msvc-inval.m4',
'm4/msvc-nothrow.m4',
'm4/multiarch.m4',
'm4/nl_langinfo.m4',
'm4/nls.m4',
'm4/nocrash.m4',
'm4/off_t.m4',
'm4/open-cloexec.m4',
'm4/open-slash.m4',
'm4/open.m4',
'm4/openat.m4',
'm4/pathmax.m4',
'm4/pid_t.m4',
'm4/pipe.m4',
'm4/po.m4',
'm4/printf-posix.m4',
'm4/printf.m4',
'm4/progtest.m4',
'm4/pthread_rwlock_rdlock.m4',
'm4/rawmemchr.m4',
'm4/realloc.m4',
'm4/reallocarray.m4',
'm4/regex.m4',
'm4/save-cwd.m4',
'm4/setlocale_null.m4',
'm4/size_max.m4',
'm4/sleep.m4',
'm4/ssize_t.m4',
'm4/stat-time.m4',
'm4/stat.m4',
'm4/std-gnu11.m4',
'm4/stdalign.m4',
'm4/stdbool.m4',
'm4/stddef_h.m4',
'm4/stdint.m4',
'm4/stdint_h.m4',
'm4/stdio_h.m4',
'm4/stdlib_h.m4',
'm4/strcase.m4',
'm4/strchrnul.m4',
'm4/strdup.m4',
'm4/strerror.m4',
'm4/string_h.m4',
'm4/strings_h.m4',
'm4/strndup.m4',
'm4/strnlen.m4',
'm4/sys_socket_h.m4',
'm4/sys_stat_h.m4',
'm4/sys_types_h.m4',
'm4/sysexits.m4',
'm4/threadlib.m4',
'm4/time_h.m4',
'm4/uintmax_t.m4',
'm4/unistd-safer.m4',
'm4/unistd_h.m4',
'm4/vararrays.m4',
'm4/vasnprintf.m4',
'm4/visibility.m4',
'm4/vsnprintf.m4',
'm4/warn-on-use.m4',
'm4/wchar_h.m4',
'm4/wchar_t.m4',
'm4/wcrtomb.m4',
'm4/wctype_h.m4',
'm4/wcwidth.m4',
'm4/wint_t.m4',
'm4/wmemchr.m4',
'm4/wmempcpy.m4',
'm4/xsize.m4',
'm4/year2038.m4',
'm4/zzgnulib.m4',
'acinclude.m4',
'configure.ac'
],
{
'AC_' => 1,
'AC_CHECK_HEADER_STDBOOL' => 1,
'AC_CHECK_INCLUDES_DEFAULT' => 1,
'AC_CONFIG_MACRO_DIR' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_C_FLEXIBLE_ARRAY_MEMBER' => 1,
'AC_C_PROTOTYPES' => 1,
'AC_C_RESTRICT' => 1,
'AC_C_VARARRAYS' => 1,
'AC_DEFUN' => 1,
'AC_DEFUN_ONCE' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'AC_FUNC_MBRTOWC' => 1,
'AC_HEADER_MAJOR' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AC_LIBTOOL_SETUP' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AC_LIB_APPENDTOVAR' => 1,
'AC_LIB_ARG_WITH' => 1,
'AC_LIB_FROMPACKAGE' => 1,
'AC_LIB_HAVE_LINKFLAGS' => 1,
'AC_LIB_LINKFLAGS' => 1,
'AC_LIB_LINKFLAGS_BODY' => 1,
'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
'AC_LIB_PREFIX' => 1,
'AC_LIB_PREPARE_MULTILIB' => 1,
'AC_LIB_PREPARE_PREFIX' => 1,
'AC_LIB_PROG_LD' => 1,
'AC_LIB_PROG_LD_GNU' => 1,
'AC_LIB_RPATH' => 1,
'AC_LIB_WITH_FINAL_PREFIX' => 1,
'AC_LTDL_ENABLE_INSTALL' => 1,
'AC_LTDL_OBJDIR' => 1,
'AC_LTDL_PREOPEN' => 1,
'AC_PATH_MAGIC' => 1,
'AC_PROG_CC' => 1,
'AC_PROG_CC_C89' => 1,
'AC_PROG_CC_C99' => 1,
'AC_PROG_CC_STDC' => 1,
'AC_PROG_CXX' => 1,
'AC_PROG_EGREP' => 1,
'AC_PROG_LD_GNU' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'AC_SYS_LARGEFILE' => 1,
'AC_TYPE_LONG_LONG_INT' => 1,
'AC_TYPE_MBSTATE_T' => 1,
'AC_TYPE_PID_T' => 1,
'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
'AC_USE_SYSTEM_EXTENSIONS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'AM_CONDITIONAL' => 1,
'AM_COND_IF' => 1,
'AM_DEP_TRACK' => 1,
'AM_GNU_GETTEXT' => 1,
'AM_GNU_GETTEXT_NEED' => 1,
'AM_GNU_GETTEXT_VERSION' => 1,
'AM_ICONV' => 1,
'AM_ICONV_LINK' => 1,
'AM_ICONV_LINKFLAGS_BODY' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_INTL_SUBDIR' => 1,
'AM_LANGINFO_CODESET' => 1,
'AM_MAKE_INCLUDE' => 1,
'AM_MISSING_HAS_RUN' => 1,
'AM_MISSING_PROG' => 1,
'AM_NLS' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AM_PATH_PROG_WITH_TEST' => 1,
'AM_PATH_PYTHON' => 1,
'AM_POSTPROCESS_PO_MAKEFILE' => 1,
'AM_PO_SUBDIRS' => 1,
'AM_PROG_AS' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'AM_PYTHON_CHECK_VERSION' => 1,
'AM_RUN_LOG' => 1,
'AM_SANITY_CHECK' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AM_SET_DEPDIR' => 1,
'AM_SET_LEADING_DOT' => 1,
'AM_SILENT_RULES' => 1,
'AM_SUBST_NOTMAKE' => 1,
'AM_XGETTEXT_OPTION' => 1,
'AM_XGETTEXT_OPTION_INIT' => 1,
'AU_DEFUN' => 1,
'GL_MDA_DEFINES' => 1,
'GL_NOCRASH' => 1,
'LTOBSOLETE_VERSION' => 1,
'LT_AC_PROG_EGREP' => 1,
'LT_AC_PROG_SED' => 1,
'PKG_CHECK_EXISTS' => 1,
'PKG_CHECK_MODULES' => 1,
'PKG_CHECK_MODULES_STATIC' => 1,
'PKG_CHECK_VAR' => 1,
'PKG_HAVE_DEFINE_WITH_MODULES' => 1,
'PKG_HAVE_WITH_MODULES' => 1,
'PKG_INSTALLDIR' => 1,
'PKG_NOARCH_INSTALLDIR' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'PKG_WITH_MODULES' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'_AC_CXX_CXX11_TEST_BODY' => 1,
'_AC_CXX_CXX11_TEST_HEADER' => 1,
'_AC_CXX_CXX98_TEST_BODY' => 1,
'_AC_CXX_CXX98_TEST_HEADER' => 1,
'_AC_CXX_STD_TRY' => 1,
'_AC_C_C99_TEST_BODY' => 1,
'_AC_C_C99_TEST_HEADER' => 1,
'_AC_C_STD_TRY' => 1,
'_AC_FUNC_CALLOC_IF' => 1,
'_AC_FUNC_MALLOC_IF' => 1,
'_AC_FUNC_REALLOC_IF' => 1,
'_AC_PROG_CC_C11' => 1,
'_AC_PROG_CC_C99' => 1,
'_AC_PROG_CXX_CXX11' => 1,
'_AC_PROG_CXX_CXX98' => 1,
'_AC_PROG_LIBTOOL' => 1,
'_AC_TYPE_LONG_LONG_SNIPPET' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'_AM_CONFIG_MACRO_DIRS' => 1,
'_AM_DEPENDENCIES' => 1,
'_AM_FILESYSTEM_TIMESTAMP_RESOLUTION' => 1,
'_AM_IF_OPTION' => 1,
'_AM_MANGLE_OPTION' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'_AM_PROG_CC_C_O' => 1,
'_AM_PROG_RM_F' => 1,
'_AM_PROG_TAR' => 1,
'_AM_PROG_XARGS_N' => 1,
'_AM_SET_OPTION' => 1,
'_AM_SET_OPTIONS' => 1,
'_AM_SILENT_RULES' => 1,
'_AM_SLEEP_FRACTIONAL_SECONDS' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_GL_MDA_DEFINES' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'_LT_AC_LANG_CXX' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'_LT_AC_LANG_F77' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'_LT_AC_LANG_GCJ' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'_LT_AC_LOCK' => 1,
'_LT_AC_PROG_CXXCPP' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'_LT_AC_SHELL_INIT' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_LT_AC_TAGVAR' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'_LT_CC_BASENAME' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
'_LT_PROG_CXX' => 1,
'_LT_PROG_ECHO_BACKSLASH' => 1,
'_LT_PROG_F77' => 1,
'_LT_PROG_FC' => 1,
'_LT_PROG_LTMAIN' => 1,
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
'_PKG_SHORT_ERRORS_SUPPORTED' => 1,
'_m4_warn' => 1,
'gl_00GNULIB' => 1,
'gl_ABSOLUTE_HEADER' => 1,
'gl_ABSOLUTE_HEADER_ONE' => 1,
'gl_AC_HEADER_INTTYPES_H' => 1,
'gl_AC_HEADER_STDINT_H' => 1,
'gl_AC_TYPE_INTMAX_T' => 1,
'gl_AC_TYPE_UINTMAX_T' => 1,
'gl_ANYTHREADLIB_EARLY' => 1,
'gl_ARGP' => 1,
'gl_ASSERT_NO_GNULIB_POSIXCHECK' => 1,
'gl_ASSERT_NO_GNULIB_TESTS' => 1,
'gl_AVOID_WINPTHREAD' => 1,
'gl_BIGENDIAN' => 1,
'gl_CACHE_VAL_SILENT' => 1,
'gl_CC_ALLOW_WARNINGS' => 1,
'gl_CC_GNULIB_WARNINGS' => 1,
'gl_CHECK_MALLOC_POSIX' => 1,
'gl_CHECK_MALLOC_PTRDIFF' => 1,
'gl_CHECK_NEXT_HEADERS' => 1,
'gl_CHECK_TYPES_SIGNED' => 1,
'gl_CHECK_TYPE_STRUCT_TIMESPEC' => 1,
'gl_COMMON' => 1,
'gl_COMMON_BODY' => 1,
'gl_COMPILER_CLANG' => 1,
'gl_COMPILER_PREPARE_CHECK_DECL' => 1,
'gl_CONDITIONAL' => 1,
'gl_CONDITIONAL_HEADER' => 1,
'gl_CTYPE_H' => 1,
'gl_CTYPE_H_DEFAULTS' => 1,
'gl_CTYPE_H_REQUIRE_DEFAULTS' => 1,
'gl_CTYPE_MODULE_INDICATOR' => 1,
'gl_CXX_ALLOW_WARNINGS' => 1,
'gl_DIRENT_H' => 1,
'gl_DIRENT_H_DEFAULTS' => 1,
'gl_DIRENT_H_REQUIRE_DEFAULTS' => 1,
'gl_DIRENT_MODULE_INDICATOR' => 1,
'gl_DISABLE_THREADS' => 1,
'gl_DOUBLE_EXPONENT_LOCATION' => 1,
'gl_DOUBLE_SLASH_ROOT' => 1,
'gl_EARLY' => 1,
'gl_EEALLOC' => 1,
'gl_EEMALLOC' => 1,
'gl_EEREALLOC' => 1,
'gl_ERROR' => 1,
'gl_EXTERN_INLINE' => 1,
'gl_FCNTL_H' => 1,
'gl_FCNTL_H_DEFAULTS' => 1,
'gl_FCNTL_H_REQUIRE_DEFAULTS' => 1,
'gl_FCNTL_MODULE_INDICATOR' => 1,
'gl_FCNTL_O_FLAGS' => 1,
'gl_FEATURES_H' => 1,
'gl_FILE_LIST' => 1,
'gl_FILE_NAME_CONCAT' => 1,
'gl_FILE_NAME_CONCAT_LGPL' => 1,
'gl_FLOAT_H' => 1,
'gl_FNMATCH_H' => 1,
'gl_FNMATCH_H_DEFAULTS' => 1,
'gl_FNMATCH_H_REQUIRE_DEFAULTS' => 1,
'gl_FNMATCH_MODULE_INDICATOR' => 1,
'gl_FUNC_ALLOCA' => 1,
'gl_FUNC_BASE64' => 1,
'gl_FUNC_BTOWC' => 1,
'gl_FUNC_CALLOC_GNU' => 1,
'gl_FUNC_CALLOC_POSIX' => 1,
'gl_FUNC_CHDIR_LONG' => 1,
'gl_FUNC_CLOSE' => 1,
'gl_FUNC_DIRFD' => 1,
'gl_FUNC_DUP2' => 1,
'gl_FUNC_FCHDIR' => 1,
'gl_FUNC_FCNTL' => 1,
'gl_FUNC_FNMATCH_GNU' => 1,
'gl_FUNC_FNMATCH_POSIX' => 1,
'gl_FUNC_FREE' => 1,
'gl_FUNC_FSTAT' => 1,
'gl_FUNC_GETCWD' => 1,
'gl_FUNC_GETCWD_LGPL' => 1,
'gl_FUNC_GETCWD_NULL' => 1,
'gl_FUNC_GETCWD_SIGNATURE' => 1,
'gl_FUNC_GETDELIM' => 1,
'gl_FUNC_GETDTABLESIZE' => 1,
'gl_FUNC_GETLINE' => 1,
'gl_FUNC_GETOPT_GNU' => 1,
'gl_FUNC_GETOPT_POSIX' => 1,
'gl_FUNC_GETPROGNAME' => 1,
'gl_FUNC_ISBLANK' => 1,
'gl_FUNC_LOCALECONV' => 1,
'gl_FUNC_LSTAT' => 1,
'gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
'gl_FUNC_MALLOC_GNU' => 1,
'gl_FUNC_MALLOC_POSIX' => 1,
'gl_FUNC_MALLOC_PTRDIFF' => 1,
'gl_FUNC_MBRTOWC' => 1,
'gl_FUNC_MBSINIT' => 1,
'gl_FUNC_MBSRTOWCS' => 1,
'gl_FUNC_MBTOWC' => 1,
'gl_FUNC_MEMCHR' => 1,
'gl_FUNC_MEMPCPY' => 1,
'gl_FUNC_MEMRCHR' => 1,
'gl_FUNC_MMAP_ANON' => 1,
'gl_FUNC_NL_LANGINFO' => 1,
'gl_FUNC_OPEN' => 1,
'gl_FUNC_OPENAT' => 1,
'gl_FUNC_PIPE' => 1,
'gl_FUNC_RAWMEMCHR' => 1,
'gl_FUNC_REALLOCARRAY' => 1,
'gl_FUNC_REALLOC_GNU' => 1,
'gl_FUNC_REALLOC_POSIX' => 1,
'gl_FUNC_SETLOCALE_NULL' => 1,
'gl_FUNC_SLEEP' => 1,
'gl_FUNC_STAT' => 1,
'gl_FUNC_STRCASECMP' => 1,
'gl_FUNC_STRCHRNUL' => 1,
'gl_FUNC_STRDUP' => 1,
'gl_FUNC_STRDUP_POSIX' => 1,
'gl_FUNC_STRERROR' => 1,
'gl_FUNC_STRERROR_0' => 1,
'gl_FUNC_STRNCASECMP' => 1,
'gl_FUNC_STRNDUP' => 1,
'gl_FUNC_STRNLEN' => 1,
'gl_FUNC_VASNPRINTF' => 1,
'gl_FUNC_VSNPRINTF' => 1,
'gl_FUNC_WCRTOMB' => 1,
'gl_FUNC_WCWIDTH' => 1,
'gl_FUNC_WMEMCHR' => 1,
'gl_FUNC_WMEMPCPY' => 1,
'gl_GETOPT_CHECK_HEADERS' => 1,
'gl_GETOPT_SUBSTITUTE_HEADER' => 1,
'gl_GLIBC21' => 1,
'gl_HEADER_ERRNO_H' => 1,
'gl_INCLUDE_NEXT' => 1,
'gl_INIT' => 1,
'gl_INTEGER_TYPE_SUFFIX' => 1,
'gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION' => 1,
'gl_INTTYPES_H' => 1,
'gl_INTTYPES_H_DEFAULTS' => 1,
'gl_INTTYPES_H_REQUIRE_DEFAULTS' => 1,
'gl_INTTYPES_INCOMPLETE' => 1,
'gl_INTTYPES_MODULE_INDICATOR' => 1,
'gl_INTTYPES_PRI_SCN' => 1,
'gl_LANGINFO_H' => 1,
'gl_LANGINFO_H_DEFAULTS' => 1,
'gl_LANGINFO_H_REQUIRE_DEFAULTS' => 1,
'gl_LANGINFO_MODULE_INDICATOR' => 1,
'gl_LARGEFILE' => 1,
'gl_LIBOBJ' => 1,
'gl_LIBSOURCES' => 1,
'gl_LIBUNISTRING_LIBHEADER' => 1,
'gl_LIBUNISTRING_LIB_PREPARE' => 1,
'gl_LIBUNISTRING_MODULE' => 1,
'gl_LIBUNISTRING_VERSION_CMP' => 1,
'gl_LIMITS_H' => 1,
'gl_LOCALCHARSET' => 1,
'gl_LOCALE_H' => 1,
'gl_LOCALE_H_DEFAULTS' => 1,
'gl_LOCALE_H_REQUIRE_DEFAULTS' => 1,
'gl_LOCALE_MODULE_INDICATOR' => 1,
'gl_LOCALE_T' => 1,
'gl_LOCK' => 1,
'gl_LONG_DOUBLE_VS_DOUBLE' => 1,
'gl_MALLOCA' => 1,
'gl_MATH_H' => 1,
'gl_MATH_H_DEFAULTS' => 1,
'gl_MATH_H_REQUIRE_DEFAULTS' => 1,
'gl_MATH_MODULE_INDICATOR' => 1,
'gl_MBRTOWC_C_LOCALE' => 1,
'gl_MBRTOWC_EMPTY_INPUT' => 1,
'gl_MBRTOWC_INCOMPLETE_STATE' => 1,
'gl_MBRTOWC_NULL_ARG1' => 1,
'gl_MBRTOWC_NULL_ARG2' => 1,
'gl_MBRTOWC_NUL_RETVAL' => 1,
'gl_MBRTOWC_RETVAL' => 1,
'gl_MBRTOWC_SANITYCHECK' => 1,
'gl_MBRTOWC_STORES_INCOMPLETE' => 1,
'gl_MBSRTOWCS_WORKS' => 1,
'gl_MBSTATE_T_BROKEN' => 1,
'gl_MBSWIDTH' => 1,
'gl_MODULE_INDICATOR' => 1,
'gl_MODULE_INDICATOR_FOR_TESTS' => 1,
'gl_MODULE_INDICATOR_INIT_VARIABLE' => 1,
'gl_MODULE_INDICATOR_SET_VARIABLE' => 1,
'gl_MODULE_INDICATOR_SET_VARIABLE_AUX' => 1,
'gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR' => 1,
'gl_MSVC_INVAL' => 1,
'gl_MSVC_NOTHROW' => 1,
'gl_MULTIARCH' => 1,
'gl_NEXT_HEADERS' => 1,
'gl_NEXT_HEADERS_INTERNAL' => 1,
'gl_OPEN_TRAILING_SLASH_BUG' => 1,
'gl_PATHMAX' => 1,
'gl_PATHMAX_SNIPPET' => 1,
'gl_PATHMAX_SNIPPET_PREREQ' => 1,
'gl_PREPROC_O_CLOEXEC' => 1,
'gl_PREREQ_ALLOCA' => 1,
'gl_PREREQ_ASNPRINTF' => 1,
'gl_PREREQ_BASE64' => 1,
'gl_PREREQ_BTOWC' => 1,
'gl_PREREQ_CHDIR_LONG' => 1,
'gl_PREREQ_DIRFD' => 1,
'gl_PREREQ_DUP2' => 1,
'gl_PREREQ_ERROR' => 1,
'gl_PREREQ_FCHDIR' => 1,
'gl_PREREQ_FNMATCH' => 1,
'gl_PREREQ_FREE' => 1,
'gl_PREREQ_FSTAT' => 1,
'gl_PREREQ_GETCWD' => 1,
'gl_PREREQ_GETDELIM' => 1,
'gl_PREREQ_GETDTABLESIZE' => 1,
'gl_PREREQ_GETLINE' => 1,
'gl_PREREQ_LOCALECONV' => 1,
'gl_PREREQ_LOCK' => 1,
'gl_PREREQ_LSTAT' => 1,
'gl_PREREQ_MBRTOWC' => 1,
'gl_PREREQ_MBSINIT' => 1,
'gl_PREREQ_MBSRTOWCS' => 1,
'gl_PREREQ_MBTOWC' => 1,
'gl_PREREQ_MBTOWC_LOCK' => 1,
'gl_PREREQ_MEMCHR' => 1,
'gl_PREREQ_MEMPCPY' => 1,
'gl_PREREQ_MEMRCHR' => 1,
'gl_PREREQ_NL_LANGINFO_LOCK' => 1,
'gl_PREREQ_OPEN' => 1,
'gl_PREREQ_OPENAT' => 1,
'gl_PREREQ_PRINTF_ARGS' => 1,
'gl_PREREQ_PRINTF_PARSE' => 1,
'gl_PREREQ_RAWMEMCHR' => 1,
'gl_PREREQ_REALLOCARRAY' => 1,
'gl_PREREQ_REGEX' => 1,
'gl_PREREQ_SETLOCALE_LOCK' => 1,
'gl_PREREQ_STAT' => 1,
'gl_PREREQ_STAT_W32' => 1,
'gl_PREREQ_STRCASECMP' => 1,
'gl_PREREQ_STRCHRNUL' => 1,
'gl_PREREQ_STRDUP' => 1,
'gl_PREREQ_STRNCASECMP' => 1,
'gl_PREREQ_STRNLEN' => 1,
'gl_PREREQ_SYS_H_SOCKET' => 1,
'gl_PREREQ_SYS_H_WINSOCK2' => 1,
'gl_PREREQ_SYS_H_WS2TCPIP' => 1,
'gl_PREREQ_VASNPRINTF' => 1,
'gl_PREREQ_VASNPRINTF_DIRECTIVE_A' => 1,
'gl_PREREQ_VASNPRINTF_DIRECTIVE_F' => 1,
'gl_PREREQ_VASNPRINTF_DIRECTIVE_LS' => 1,
'gl_PREREQ_VASNPRINTF_ENOMEM' => 1,
'gl_PREREQ_VASNPRINTF_FLAG_GROUPING' => 1,
'gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST' => 1,
'gl_PREREQ_VASNPRINTF_FLAG_ZERO' => 1,
'gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE' => 1,
'gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE' => 1,
'gl_PREREQ_VASNPRINTF_LONG_DOUBLE' => 1,
'gl_PREREQ_VASNPRINTF_PRECISION' => 1,
'gl_PREREQ_VASNPRINTF_WITH_EXTRAS' => 1,
'gl_PREREQ_VSNPRINTF' => 1,
'gl_PREREQ_WCRTOMB' => 1,
'gl_PREREQ_WCWIDTH' => 1,
'gl_PRINTF_DIRECTIVE_A' => 1,
'gl_PRINTF_DIRECTIVE_F' => 1,
'gl_PRINTF_DIRECTIVE_LS' => 1,
'gl_PRINTF_DIRECTIVE_N' => 1,
'gl_PRINTF_ENOMEM' => 1,
'gl_PRINTF_FLAG_GROUPING' => 1,
'gl_PRINTF_FLAG_LEFTADJUST' => 1,
'gl_PRINTF_FLAG_ZERO' => 1,
'gl_PRINTF_INFINITE' => 1,
'gl_PRINTF_INFINITE_LONG_DOUBLE' => 1,
'gl_PRINTF_LONG_DOUBLE' => 1,
'gl_PRINTF_POSITIONS' => 1,
'gl_PRINTF_PRECISION' => 1,
'gl_PRINTF_SIZES_C99' => 1,
'gl_PROG_AR_RANLIB' => 1,
'gl_PROG_CC_C99' => 1,
'gl_PROMOTED_TYPE_MODE_T' => 1,
'gl_PTHREADLIB' => 1,
'gl_PTHREADLIB_BODY' => 1,
'gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER' => 1,
'gl_REGEX' => 1,
'gl_REPLACE_ERRNO_VALUE' => 1,
'gl_REPLACE_FCNTL' => 1,
'gl_REPLACE_FNMATCH_H' => 1,
'gl_REPLACE_FUNCS' => 1,
'gl_REPLACE_GETOPT_ALWAYS' => 1,
'gl_REPLACE_LIMITS_H' => 1,
'gl_REPLACE_VASNPRINTF' => 1,
'gl_REPLACE_VSNPRINTF' => 1,
'gl_SAVE_CWD' => 1,
'gl_SET_LARGEFILE_SOURCE' => 1,
'gl_SILENT' => 1,
'gl_SIZE_MAX' => 1,
'gl_SNPRINTF_DIRECTIVE_N' => 1,
'gl_SNPRINTF_PRESENCE' => 1,
'gl_SNPRINTF_RETVAL_C99' => 1,
'gl_SNPRINTF_SIZE1' => 1,
'gl_SNPRINTF_TRUNCATION_C99' => 1,
'gl_STAT_BIRTHTIME' => 1,
'gl_STAT_TIME' => 1,
'gl_STDALIGN_H' => 1,
'gl_STDBOOL_H' => 1,
'gl_STDDEF_H' => 1,
'gl_STDDEF_H_DEFAULTS' => 1,
'gl_STDDEF_H_REQUIRE_DEFAULTS' => 1,
'gl_STDDEF_MODULE_INDICATOR' => 1,
'gl_STDINT_BITSIZEOF' => 1,
'gl_STDINT_H' => 1,
'gl_STDINT_INCLUDES' => 1,
'gl_STDINT_TYPE_PROPERTIES' => 1,
'gl_STDIO_H' => 1,
'gl_STDIO_H_DEFAULTS' => 1,
'gl_STDIO_H_REQUIRE_DEFAULTS' => 1,
'gl_STDIO_MODULE_INDICATOR' => 1,
'gl_STDLIB_H' => 1,
'gl_STDLIB_H_DEFAULTS' => 1,
'gl_STDLIB_H_REQUIRE_DEFAULTS' => 1,
'gl_STDLIB_MODULE_INDICATOR' => 1,
'gl_STDTHREADLIB' => 1,
'gl_STDTHREADLIB_BODY' => 1,
'gl_STRCASE' => 1,
'gl_STRINGS_H' => 1,
'gl_STRINGS_H_DEFAULTS' => 1,
'gl_STRINGS_H_REQUIRE_DEFAULTS' => 1,
'gl_STRINGS_MODULE_INDICATOR' => 1,
'gl_STRING_H' => 1,
'gl_STRING_H_DEFAULTS' => 1,
'gl_STRING_H_REQUIRE_DEFAULTS' => 1,
'gl_STRING_MODULE_INDICATOR' => 1,
'gl_SYSEXITS' => 1,
'gl_SYS_SOCKET_H' => 1,
'gl_SYS_SOCKET_H_DEFAULTS' => 1,
'gl_SYS_SOCKET_H_REQUIRE_DEFAULTS' => 1,
'gl_SYS_SOCKET_MODULE_INDICATOR' => 1,
'gl_SYS_STAT_H' => 1,
'gl_SYS_STAT_H_DEFAULTS' => 1,
'gl_SYS_STAT_H_REQUIRE_DEFAULTS' => 1,
'gl_SYS_STAT_MODULE_INDICATOR' => 1,
'gl_SYS_TYPES_H' => 1,
'gl_SYS_TYPES_H_DEFAULTS' => 1,
'gl_SYS_TYPES_H_REQUIRE_DEFAULTS' => 1,
'gl_TEST_FCHDIR' => 1,
'gl_THREADLIB' => 1,
'gl_THREADLIB_BODY' => 1,
'gl_THREADLIB_EARLY' => 1,
'gl_THREADLIB_EARLY_BODY' => 1,
'gl_TIME_H' => 1,
'gl_TIME_H_DEFAULTS' => 1,
'gl_TIME_H_REQUIRE_DEFAULTS' => 1,
'gl_TIME_MODULE_INDICATOR' => 1,
'gl_TYPE_OFF_T' => 1,
'gl_TYPE_WINT_T_PREREQ' => 1,
'gl_UNISTD_H' => 1,
'gl_UNISTD_H_DEFAULTS' => 1,
'gl_UNISTD_H_REQUIRE_DEFAULTS' => 1,
'gl_UNISTD_MODULE_INDICATOR' => 1,
'gl_UNISTD_SAFER' => 1,
'gl_USE_SYSTEM_EXTENSIONS' => 1,
'gl_VISIBILITY' => 1,
'gl_VSNPRINTF_ZEROSIZE_C99' => 1,
'gl_W' => 1,
'gl_WARN_ON_USE_PREPARE' => 1,
'gl_WCHAR_H' => 1,
'gl_WCHAR_H_DEFAULTS' => 1,
'gl_WCHAR_H_INLINE_OK' => 1,
'gl_WCHAR_H_REQUIRE_DEFAULTS' => 1,
'gl_WCHAR_MODULE_INDICATOR' => 1,
'gl_WCTYPE_H' => 1,
'gl_WCTYPE_H_DEFAULTS' => 1,
'gl_WCTYPE_H_REQUIRE_DEFAULTS' => 1,
'gl_WCTYPE_MODULE_INDICATOR' => 1,
'gl_WEAK_SYMBOLS' => 1,
'gl_XSIZE' => 1,
'gl_YEAR2038' => 1,
'gl_YEAR2038_BODY' => 1,
'gl_YEAR2038_EARLY' => 1,
'gl_YEAR2038_TEST_INCLUDES' => 1,
'gl_ZZGNULIB' => 1,
'gl___BUILTIN_EXPECT' => 1,
'gl___INLINE' => 1,
'gltests_LIBOBJ' => 1,
'gltests_LIBSOURCES' => 1,
'gltests_REPLACE_FUNCS' => 1,
'grub_ASM_USCORE' => 1,
'grub_CHECK_BSS_START_SYMBOL' => 1,
'grub_CHECK_END_SYMBOL' => 1,
'grub_CHECK_LINK_DIR' => 1,
'grub_CHECK_LINK_PIE' => 1,
'grub_CHECK_NO_PIE' => 1,
'grub_CHECK_NO_PIE_ONEWORD' => 1,
'grub_CHECK_PIC' => 1,
'grub_CHECK_PIE' => 1,
'grub_CHECK_STACK_ARG_PROBE' => 1,
'grub_CHECK_STACK_PROTECTOR' => 1,
'grub_PROG_LD_BUILD_ID_NONE' => 1,
'grub_PROG_NM_DEFINED_ONLY' => 1,
'grub_PROG_NM_MINUS_P' => 1,
'grub_PROG_NM_WORKS' => 1,
'grub_PROG_OBJCOPY_ABSOLUTE' => 1,
'grub_PROG_TARGET_CC' => 1,
'grub_TRANSFORM' => 1,
'gt_AC_TYPE_INTMAX_T' => 1,
'gt_GLIBC2' => 1,
'gt_INTDIV0' => 1,
'gt_INTL_MACOSX' => 1,
'gt_INTL_SUBDIR_CORE' => 1,
'gt_INTTYPES_PRI' => 1,
'gt_LC_MESSAGES' => 1,
'gt_LOCALE_FR' => 1,
'gt_LOCALE_FR_UTF8' => 1,
'gt_LOCALE_JA' => 1,
'gt_LOCALE_ZH_CN' => 1,
'gt_PRINTF_POSIX' => 1,
'gt_TYPE_INTMAX_T' => 1,
'gt_TYPE_SSIZE_T' => 1,
'gt_TYPE_WCHAR_T' => 1,
'gt_TYPE_WINT_T' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1
}
], 'Autom4te::Request' ),
bless( [
'2',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'/usr/share/autoconf/autoconf/trailer.m4',
'configure.ac'
],
{
'AC_CANONICAL_BUILD' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'AC_CONFIG_FILES' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FC_FREEFORM' => 1,
'AC_FC_PP_DEFINE' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AC_FC_SRCEXT' => 1,
'AC_INIT' => 1,
'AC_LIBSOURCE' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_SUBST' => 1,
'AC_SUBST_TRACE' => 1,
'AH_OUTPUT' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_CONDITIONAL' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'AM_GNU_GETTEXT' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AM_NLS' => 1,
'AM_PATH_GUILE' => 1,
'AM_POT_TOOLS' => 1,
'AM_PROG_AR' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_CXX_C_O' => 1,
'AM_PROG_F77_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_PROG_MOC' => 1,
'AM_SILENT_RULES' => 1,
'AM_XGETTEXT_OPTION' => 1,
'GTK_DOC_CHECK' => 1,
'IT_PROG_INTLTOOL' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'LT_INIT' => 1,
'LT_SUPPORTED_TAG' => 1,
'_AM_COND_ELSE' => 1,
'_AM_COND_ENDIF' => 1,
'_AM_COND_IF' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_m4_warn' => 1,
'include' => 1,
'm4_include' => 1,
'm4_pattern_allow' => 1,
'm4_pattern_forbid' => 1,
'm4_sinclude' => 1,
'sinclude' => 1
}
], 'Autom4te::Request' )
);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+364
View File
@@ -0,0 +1,364 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2025-06-18.21; # UTC
# Copyright (C) 1999-2025 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file unneeded_conversions
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no
# conversion will take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then
# MSYS2 environment.
file_conv=cygwin
else
# Original MinGW environment.
file_conv=mingw
fi
;;
MSYS*)
# Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell.
file_conv=cygwin
;;
CYGWIN*)
# Cygwin environment.
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
# This is the optimization mentioned above:
# If UNNEEDED_CONVERSIONS contains $file_conv, don't convert.
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -w "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.lo | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
GNU Automake home page: <https://www.gnu.org/software/automake/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
EOF
exit $?
;;
-v | --v*)
echo "compile (GNU Automake) $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
+86 -25
View File
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2022 Free Software Foundation, Inc.
# Copyright 1992-2024 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
timestamp='2022-01-09'
timestamp='2024-07-27'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
Output the configuration name of the system '$me' is run on.
Options:
-h, --help print this help, then exit
@@ -60,13 +60,13 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2022 Free Software Foundation, Inc.
Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -102,8 +102,8 @@ GUESS=
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
# use 'HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
@@ -123,7 +123,7 @@ set_cc_for_build() {
dummy=$tmp/dummy
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
,,) echo "int x;" > "$dummy.c"
for driver in cc gcc c89 c99 ; do
for driver in cc gcc c17 c99 c89 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD=$driver
break
@@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
set_cc_for_build
cat <<-EOF > "$dummy.c"
#if defined(__ANDROID__)
LIBC=android
#else
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -162,6 +165,8 @@ Linux|GNU|GNU/*)
LIBC=dietlibc
#elif defined(__GLIBC__)
LIBC=gnu
#elif defined(__LLVM_LIBC__)
LIBC=llvm
#else
#include <stdarg.h>
/* First heuristic to detect musl libc. */
@@ -169,6 +174,7 @@ Linux|GNU|GNU/*)
LIBC=musl
#endif
#endif
#endif
EOF
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
eval "$cc_set_libc"
@@ -459,7 +465,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
# Japanese Language versions have a version number like '4.1.3-JL'.
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
GUESS=sparc-sun-sunos$SUN_REL
;;
@@ -628,7 +634,8 @@ EOF
sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
main()
int
main ()
{
if (!__power_pc())
exit(1);
@@ -712,7 +719,8 @@ EOF
#include <stdlib.h>
#include <unistd.h>
int main ()
int
main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
@@ -904,7 +912,7 @@ EOF
fi
;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
@@ -966,11 +974,37 @@ EOF
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
;;
x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
;;
*:[Mm]anagarm:*:*)
GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
;;
*:Minix:*:*)
GUESS=$UNAME_MACHINE-unknown-minix
;;
aarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
set_cc_for_build
CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
ABI=64
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __ARM_EABI__
#ifdef __ARM_PCS_VFP
ABI=eabihf
#else
ABI=eabi
#endif
#endif
EOF
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
eval "$cc_set_abi"
case $ABI in
eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
esac
fi
GUESS=$CPU-unknown-linux-$LIBCABI
;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
@@ -1036,7 +1070,16 @@ EOF
k1om:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
kvx:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
kvx:cos:*:*)
GUESS=$UNAME_MACHINE-unknown-cos
;;
kvx:mbr:*:*)
GUESS=$UNAME_MACHINE-unknown-mbr
;;
loongarch32:Linux:*:* | loongarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
m32r*:Linux:*:*)
@@ -1151,16 +1194,27 @@ EOF
;;
x86_64:Linux:*:*)
set_cc_for_build
CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_X32 >/dev/null
then
LIBCABI=${LIBC}x32
fi
ABI=64
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __i386__
ABI=x86
#else
#ifdef __ILP32__
ABI=x32
#endif
#endif
EOF
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
eval "$cc_set_abi"
case $ABI in
x86) CPU=i686 ;;
x32) LIBCABI=${LIBC}x32 ;;
esac
fi
GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
GUESS=$CPU-pc-linux-$LIBCABI
;;
xtensa*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
@@ -1180,7 +1234,7 @@ EOF
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# If we were able to find 'uname', then EMX Unix compatibility
# is probably installed.
GUESS=$UNAME_MACHINE-pc-os2-emx
;;
@@ -1321,7 +1375,7 @@ EOF
GUESS=ns32k-sni-sysv
fi
;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
GUESS=i586-unisys-sysv4
;;
@@ -1367,8 +1421,11 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
GUESS=i586-pc-haiku
;;
x86_64:Haiku:*:*)
GUESS=x86_64-unknown-haiku
ppc:Haiku:*:*) # Haiku running on Apple PowerPC
GUESS=powerpc-apple-haiku
;;
*:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
GUESS=$UNAME_MACHINE-unknown-haiku
;;
SX-4:SUPER-UX:*:*)
GUESS=sx4-nec-superux$UNAME_RELEASE
@@ -1540,6 +1597,9 @@ EOF
*:Unleashed:*:*)
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
;;
*:Ironclad:*:*)
GUESS=$UNAME_MACHINE-unknown-ironclad
;;
esac
# Do we have a guess based on uname results?
@@ -1563,6 +1623,7 @@ cat > "$dummy.c" <<EOF
#endif
#endif
#endif
int
main ()
{
#if defined (sony)
File diff suppressed because it is too large Load Diff
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2018-03-07.03; # UTC
scriptversion=2025-06-18.21; # UTC
# Copyright (C) 1999-2022 Free Software Foundation, Inc.
# Copyright (C) 1999-2025 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -47,11 +47,13 @@ Environment variables:
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
GNU Automake home page: <https://www.gnu.org/software/automake/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
echo "depcomp (GNU Automake) $scriptversion"
exit $?
;;
esac
@@ -127,7 +129,7 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Avoid interferences from the environment.
# Avoid interference from the environment.
gccflag= dashmflag=
# Some modes work just like other modes, but use different flags. We
@@ -197,8 +199,8 @@ gcc3)
;;
gcc)
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
## Note that this doesn't just cater to obsolete pre-3.x GCC compilers.
## but also to in-use compilers like IBM xlc/xlC and the HP C compiler.
## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
@@ -782,9 +784,9 @@ exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2020-11-14.01; # UTC
scriptversion=2025-06-18.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -124,9 +124,9 @@ it's up to you to specify -f if you want it.
If -S is not specified, no backups are attempted.
Email bug reports to bug-automake@gnu.org.
Automake home page: https://www.gnu.org/software/automake/
"
Report bugs to <bug-automake@gnu.org>.
GNU Automake home page: <https://www.gnu.org/software/automake/>.
General help using GNU software: <https://www.gnu.org/gethelp/>."
while test $# -ne 0; do
case $1 in
@@ -170,7 +170,7 @@ while test $# -ne 0; do
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--version) echo "$0 (GNU Automake) $scriptversion"; exit $?;;
--) shift
break;;
@@ -345,7 +345,7 @@ do
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directly in world-writable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
@@ -353,7 +353,7 @@ do
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# Check for POSIX incompatibility with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
@@ -533,9 +533,9 @@ do
done
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
@@ -1,9 +1,10 @@
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.
# Get modification time of a file or directory, or value of
# $SOURCE_DATE_EPOCH, and pretty-print it, formatted like 1 January 2000.
scriptversion=2018-03-07.03; # UTC
scriptversion=2025-06-25.21; # UTC
# Copyright (C) 1995-2022 Free Software Foundation, Inc.
# Copyright (C) 1995-2025 Free Software Foundation, Inc.
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
#
# This program is free software; you can redistribute it and/or modify
@@ -50,21 +51,46 @@ Pretty-print the modification day of FILE, in the format:
1 January 1970
Report bugs to <bug-automake@gnu.org>.
GNU Automake home page: <https://www.gnu.org/software/automake/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
EOF
exit $?
;;
-v | --v*)
echo "mdate-sh $scriptversion"
echo "mdate-sh (GNU Automake) $scriptversion"
exit $?
;;
esac
# Warn if more than one file given.
if test $# -ne 1; then
echo "$0: warning: multiple files given, using first: $*" >&2
fi
error ()
{
echo "$0: $1" >&2
exit 1
}
# set $month ("January") and $nummonth (1) given arg MON ("Jan").
mon_to_month ()
{
case $1 in
Jan) month=January; nummonth=1;;
Feb) month=February; nummonth=2;;
Mar) month=March; nummonth=3;;
Apr) month=April; nummonth=4;;
May) month=May; nummonth=5;;
Jun) month=June; nummonth=6;;
Jul) month=July; nummonth=7;;
Aug) month=August; nummonth=8;;
Sep) month=September; nummonth=9;;
Oct) month=October; nummonth=10;;
Nov) month=November; nummonth=11;;
Dec) month=December; nummonth=12;;
esac
}
# Prevent date giving response in another language.
LANG=C
@@ -78,6 +104,7 @@ export LC_TIME
TZ=UTC0
export TZ
#
# GNU ls changes its time format in response to the TIME_STYLE
# variable. Since we cannot assume 'unset' works, revert this
# variable to its documented default.
@@ -123,20 +150,7 @@ do
shift
# Add another shift to the command.
command="$command shift;"
case $1 in
Jan) month=January; nummonth=1;;
Feb) month=February; nummonth=2;;
Mar) month=March; nummonth=3;;
Apr) month=April; nummonth=4;;
May) month=May; nummonth=5;;
Jun) month=June; nummonth=6;;
Jul) month=July; nummonth=7;;
Aug) month=August; nummonth=8;;
Sep) month=September; nummonth=9;;
Oct) month=October; nummonth=10;;
Nov) month=November; nummonth=11;;
Dec) month=December; nummonth=12;;
esac
mon_to_month $1
done
test -n "$month" || error "failed parsing '$ls_command /' output"
@@ -150,7 +164,6 @@ eval $command
# Because of the dummy argument above, month is in $2.
#
# On a POSIX system, we should have
#
# $# = 5
# $1 = file size
# $2 = month
@@ -159,7 +172,6 @@ eval $command
# $5 = filename
#
# On Darwin 7.7.0 and 7.6.0, we have
#
# $# = 4
# $1 = day
# $2 = month
@@ -167,20 +179,7 @@ eval $command
# $4 = filename
# Get the month.
case $2 in
Jan) month=January; nummonth=1;;
Feb) month=February; nummonth=2;;
Mar) month=March; nummonth=3;;
Apr) month=April; nummonth=4;;
May) month=May; nummonth=5;;
Jun) month=June; nummonth=6;;
Jul) month=July; nummonth=7;;
Aug) month=August; nummonth=8;;
Sep) month=September; nummonth=9;;
Oct) month=October; nummonth=10;;
Nov) month=November; nummonth=11;;
Dec) month=December; nummonth=12;;
esac
mon_to_month $2
case $3 in
???*) day=$1;;
@@ -205,9 +204,9 @@ case $3 in
Nov) nummonthtod=11;;
Dec) nummonthtod=12;;
esac
# For the first six month of the year the time notation can also
# For the first six months of the year the time notation can also
# be used for files modified in the last year.
if (expr $nummonth \> $nummonthtod) > /dev/null;
if (expr $nummonth \> $nummonthtod) >/dev/null;
then
year=`expr $year - 1`
fi;;
@@ -220,9 +219,9 @@ echo $day $month $year
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
@@ -1,9 +1,11 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
# Common wrapper for a few potentially missing GNU and other programs.
scriptversion=2013-10-28.13; # UTC
scriptversion=2025-06-18.21; # UTC
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells
# Copyright (C) 1996-2025 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +19,7 @@ scriptversion=2013-10-28.13; # UTC
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -54,18 +56,20 @@ Options:
-v, --version output version information and exit
Supported PROGRAM values:
aclocal autoconf autoheader autom4te automake makeinfo
bison yacc flex lex help2man
aclocal autoconf autogen autoheader autom4te automake autoreconf
bison flex help2man lex makeinfo perl yacc
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
Report bugs to <bug-automake@gnu.org>.
GNU Automake home page: <https://www.gnu.org/software/automake/>.
General help using GNU software: <https://www.gnu.org/gethelp/>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
echo "missing (GNU Automake) $scriptversion"
exit $?
;;
@@ -101,14 +105,14 @@ else
exit $st
fi
perl_URL=http://www.perl.org/
flex_URL=http://flex.sourceforge.net/
gnu_software_URL=http://www.gnu.org/software
perl_URL=https://www.perl.org/
flex_URL=https://github.com/westes/flex
gnu_software_URL=https://www.gnu.org/software
program_details ()
{
case $1 in
aclocal|automake)
aclocal|automake|autoreconf)
echo "The '$1' program is part of the GNU Automake package:"
echo "<$gnu_software_URL/automake>"
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
@@ -123,6 +127,9 @@ program_details ()
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
*)
:
;;
esac
}
@@ -137,48 +144,55 @@ give_advice ()
printf '%s\n' "'$1' is $msg."
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
autoheader_deps="'acconfig.h'"
automake_deps="'Makefile.am'"
aclocal_deps="'acinclude.m4'"
case $normalized_program in
aclocal*)
echo "You should only need it if you modified $aclocal_deps or"
echo "$configure_deps."
;;
autoconf*)
echo "You should only need it if you modified 'configure.ac',"
echo "or m4 files included by it."
program_details 'autoconf'
echo "You should only need it if you modified $configure_deps."
;;
autogen*)
echo "You should only need it if you modified a '.def' or '.tpl' file."
echo "You may want to install the GNU AutoGen package:"
echo "<$gnu_software_URL/autogen/>"
;;
autoheader*)
echo "You should only need it if you modified 'acconfig.h' or"
echo "You should only need it if you modified $autoheader_deps or"
echo "$configure_deps."
program_details 'autoheader'
;;
automake*)
echo "You should only need it if you modified 'Makefile.am' or"
echo "You should only need it if you modified $automake_deps or"
echo "$configure_deps."
program_details 'automake'
;;
aclocal*)
echo "You should only need it if you modified 'acinclude.m4' or"
echo "$configure_deps."
program_details 'aclocal'
;;
autom4te*)
autom4te*)
echo "You might have modified some maintainer files that require"
echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
autoreconf*)
echo "You should only need it if you modified $aclocal_deps or"
echo "$automake_deps or $autoheader_deps or $automake_deps or"
echo "$configure_deps."
;;
bison*|yacc*)
echo "You should only need it if you modified a '.y' file."
echo "You may want to install the GNU Bison package:"
echo "<$gnu_software_URL/bison/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
help2man*)
echo "You should only need it if you modified a dependency" \
"of a man page."
echo "You may want to install the GNU Help2man package:"
echo "<$gnu_software_URL/help2man/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
makeinfo*)
echo "You should only need it if you modified a '.texi' file, or"
echo "any other file indirectly affecting the aspect of the manual."
@@ -189,6 +203,12 @@ give_advice ()
echo "want to install GNU make:"
echo "<$gnu_software_URL/make/>"
;;
perl*)
echo "You should only need it to run GNU Autoconf, GNU Automake, "
echo " assorted other tools, or if you modified a Perl source file."
echo "You may want to install the Perl 5 language interpreter:"
echo "<$perl_URL>"
;;
*)
echo "You might have modified some files without having the proper"
echo "tools for further handling them. Check the 'README' file, it"
@@ -197,6 +217,7 @@ give_advice ()
echo "case some other package contains this missing '$1' program."
;;
esac
program_details "$normalized_program"
}
give_advice "$1" | sed -e '1s/^/WARNING: /' \
@@ -207,9 +228,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \
exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
@@ -1,9 +1,9 @@
#! /bin/sh
# test-driver - basic testsuite driver script.
scriptversion=2013-07-13.22; # UTC
scriptversion=2025-06-18.21; # UTC
# Copyright (C) 2011-2014 Free Software Foundation, Inc.
# Copyright (C) 2011-2025 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2013-07-13.22; # UTC
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -42,11 +42,18 @@ print_usage ()
{
cat <<END
Usage:
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
[--expect-failure={yes|no}] [--color-tests={yes|no}]
[--enable-hard-errors={yes|no}] [--]
test-driver --test-name NAME --log-file PATH --trs-file PATH
[--expect-failure {yes|no}] [--color-tests {yes|no}]
[--collect-skipped-logs {yes|no}]
[--enable-hard-errors {yes|no}] [--]
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
See the GNU Automake documentation for information.
Report bugs to <bug-automake@gnu.org>.
GNU Automake home page: <https://www.gnu.org/software/automake/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
END
}
@@ -55,15 +62,17 @@ log_file= # Where to save the output of the test script.
trs_file= # Where to save the metadata of the test run.
expect_failure=no
color_tests=no
collect_skipped_logs=yes
enable_hard_errors=yes
while test $# -gt 0; do
case $1 in
--help) print_usage; exit $?;;
--version) echo "test-driver $scriptversion"; exit $?;;
--version) echo "test-driver (GNU Automake) $scriptversion"; exit $?;;
--test-name) test_name=$2; shift;;
--log-file) log_file=$2; shift;;
--trs-file) trs_file=$2; shift;;
--color-tests) color_tests=$2; shift;;
--collect-skipped-logs) collect_skipped_logs=$2; shift;;
--expect-failure) expect_failure=$2; shift;;
--enable-hard-errors) enable_hard_errors=$2; shift;;
--) shift; break;;
@@ -103,8 +112,11 @@ trap "st=130; $do_exit" 2
trap "st=141; $do_exit" 13
trap "st=143; $do_exit" 15
# Test script is run here.
"$@" >$log_file 2>&1
# Test script is run here. We create the file first, then append to it,
# to ameliorate tests themselves also writing to the log file. Our tests
# don't, but others can (automake bug#35762).
: >"$log_file"
"$@" >>"$log_file" 2>&1
estatus=$?
if test $enable_hard_errors = no && test $estatus -eq 99; then
@@ -116,7 +128,7 @@ fi
case $tweaked_estatus:$expect_failure in
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
0:*) col=$grn res=PASS recheck=no gcopy=no;;
77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
77:*) col=$blu res=SKIP recheck=no gcopy=$collect_skipped_logs;;
99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
*:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
@@ -126,7 +138,7 @@ esac
# know whether the test passed or failed simply by looking at the '.log'
# file, without the need of also peaking into the corresponding '.trs'
# file (automake bug#11814).
echo "$res $test_name (exit status: $estatus)" >>$log_file
echo "$res $test_name (exit status: $estatus)" >>"$log_file"
# Report outcome to console.
echo "${col}${res}${std}: $test_name"
@@ -140,9 +152,9 @@ echo ":copy-in-global-log: $gcopy" >> $trs_file
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-format: "%Y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+13435 -10036
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+51 -39
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am.
# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -69,6 +69,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
am__rm_f = rm -f $(am__rm_f_notfound)
am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -139,9 +141,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/open-cloexec.m4 \
$(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \
$(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
$(top_srcdir)/m4/pid_t.m4 $(top_srcdir)/m4/pipe.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
$(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/pipe.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
$(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/reallocarray.m4 $(top_srcdir)/m4/regex.m4 \
@@ -149,28 +150,27 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/setlocale_null.m4 \
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/std-gnu11.m4 \
$(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stdbool.m4 \
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
$(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
$(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdalign.m4 \
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \
$(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/threadlib.m4 \
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/unistd-safer.m4 \
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vararrays.m4 \
$(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/visibility.m4 \
$(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/warn-on-use.m4 \
$(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
$(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
$(top_srcdir)/m4/wcwidth.m4 $(top_srcdir)/m4/wint_t.m4 \
$(top_srcdir)/m4/wmemchr.m4 $(top_srcdir)/m4/wmempcpy.m4 \
$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/year2038.m4 \
$(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \
$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/vsnprintf.m4 \
$(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcrtomb.m4 \
$(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/wmemchr.m4 \
$(top_srcdir)/m4/wmempcpy.m4 $(top_srcdir)/m4/xsize.m4 \
$(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \
@@ -263,10 +263,9 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
{ test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(grub_TEXINFOS) $(srcdir)/Makefile.in \
@@ -314,6 +313,8 @@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
CMP = @CMP@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
@@ -335,6 +336,7 @@ ENOLINK_VALUE = @ENOLINK_VALUE@
EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
ERRNO_H = @ERRNO_H@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FLOAT_H = @FLOAT_H@
FNMATCH_H = @FNMATCH_H@
@@ -1356,8 +1358,10 @@ ac_ct_TARGET_CC = @ac_ct_TARGET_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
am__xargs_n = @am__xargs_n@
bindir = @bindir@
bootdirname = @bootdirname@
build = @build@
@@ -1469,8 +1473,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -1507,13 +1511,13 @@ $(am__aclocal_m4_deps):
.texi.dvi:
$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
$(TEXI2DVI) $(AM_TEXI2FLAGS) -I $(srcdir) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
$<
.texi.pdf:
$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
$(TEXI2PDF) $(AM_TEXI2FLAGS) -I $(srcdir) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
$<
.texi.html:
@@ -1654,12 +1658,10 @@ dist-info: $(INFO_DEPS)
done
mostlyclean-aminfo:
-rm -rf grub.t2d grub.t2p grub-dev.t2d grub-dev.t2p
-$(am__rm_rf) grub.t2d grub.t2p grub-dev.t2d grub-dev.t2p
clean-aminfo:
-test -z "grub.dvi grub.pdf grub.ps grub.html grub-dev.dvi grub-dev.pdf \
grub-dev.ps grub-dev.html" \
|| rm -rf grub.dvi grub.pdf grub.ps grub.html grub-dev.dvi grub-dev.pdf \
-$(am__rm_rf) grub.dvi grub.pdf grub.ps grub.html grub-dev.dvi grub-dev.pdf \
grub-dev.ps grub-dev.html
maintainer-clean-aminfo:
@@ -1675,7 +1677,10 @@ ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -1739,8 +1744,8 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -1929,3 +1934,10 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# Tell GNU make to disable its built-in pattern rules.
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
@@ -23466,6 +23466,26 @@ bli.marker: $(bli_module_SOURCES) $(nodist_bli_module_SOURCES)
$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bli_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)
grep 'MARKER' $@.new | grep -v '^#' > $@; rm -f $@.new
endif
platform_PROGRAMS += redoxfs.module
MODULE_FILES += redoxfs.module$(EXEEXT)
redoxfs_module_SOURCES = fs/redoxfs.c ## platform sources
nodist_redoxfs_module_SOURCES = ## platform nodist sources
redoxfs_module_LDADD =
redoxfs_module_CFLAGS = $(AM_CFLAGS) $(CFLAGS_MODULE) -DGRUB_BUILD
redoxfs_module_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MODULE)
redoxfs_module_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE)
redoxfs_module_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE)
redoxfs_module_DEPENDENCIES = $(TARGET_OBJ2ELF)
dist_noinst_DATA +=
BUILT_SOURCES += $(nodist_redoxfs_module_SOURCES)
CLEANFILES += $(nodist_redoxfs_module_SOURCES)
MOD_FILES += redoxfs.mod
MARKER_FILES += redoxfs.marker
CLEANFILES += redoxfs.marker
redoxfs.marker: $(redoxfs_module_SOURCES) $(nodist_redoxfs_module_SOURCES)
$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redoxfs_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)
grep 'MARKER' $@.new | grep -v '^#' > $@; rm -f $@.new
platform_PROGRAMS += gcry_arcfour.module
MODULE_FILES += gcry_arcfour.module$(EXEEXT)
gcry_arcfour_module_SOURCES = lib/libgcrypt-grub/cipher/arcfour.c ## platform sources
@@ -2595,3 +2595,9 @@ module = {
efi = commands/bli.c;
enable = efi;
};
module = {
name = redoxfs;
common = fs/redoxfs.c;
cflags = '-DGRUB_BUILD';
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,312 @@
#ifndef GRUB_REDOXFS_H
#define GRUB_REDOXFS_H
#include <stddef.h>
#if defined(GRUB_BUILD) || defined(GRUB_MACHINE) || defined(GRUB_MACHINE_EFI)
#include <grub/err.h>
#include <grub/types.h>
#else
#include <stdint.h>
typedef uint64_t grub_uint64_t;
typedef uint32_t grub_uint32_t;
typedef uint16_t grub_uint16_t;
typedef uint8_t grub_uint8_t;
typedef int64_t grub_int64_t;
typedef uint64_t grub_off_t;
typedef uint64_t grub_disk_addr_t;
typedef int64_t grub_ssize_t;
typedef uint64_t grub_size_t;
/* On x86 (our test host), these are identity — on big-endian they byte-swap. */
#define grub_le_to_cpu16(x) (x)
#define grub_le_to_cpu32(x) (x)
#define grub_le_to_cpu64(x) (x)
typedef enum {
GRUB_ERR_NONE = 0,
GRUB_ERR_BAD_FS,
GRUB_ERR_OUT_OF_RANGE,
GRUB_ERR_READ_ERROR,
GRUB_ERR_FILE_NOT_FOUND,
GRUB_ERR_OUT_OF_MEMORY,
} grub_err_t;
#define GRUB_MAX_ERRMSG 256
extern grub_err_t grub_errno;
extern char grub_errmsg[GRUB_MAX_ERRMSG];
#endif
#ifndef GRUB_PACKED
#define GRUB_PACKED __attribute__((packed))
#endif
#define REDOXFS_BLOCK_SIZE 4096
#define REDOXFS_SIGNATURE "RedoxFS"
#define REDOXFS_VERSION 8
#define REDOXFS_RECORD_LEVEL 5
#define REDOXFS_RECORD_SIZE (REDOXFS_BLOCK_SIZE << REDOXFS_RECORD_LEVEL)
#define REDOXFS_DIR_ENTRY_MAX_LENGTH 252
#define REDOXFS_TREE_LIST_ENTRIES 254
#define REDOXFS_BLOCK_LIST_ENTRIES 256
#define REDOXFS_HTREE_IDX_ENTRIES 204
#define REDOXFS_NODE_LEVEL0_COUNT 128
#define REDOXFS_NODE_LEVEL1_COUNT 64
#define REDOXFS_NODE_LEVEL2_COUNT 32
#define REDOXFS_NODE_LEVEL3_COUNT 16
#define REDOXFS_NODE_LEVEL4_COUNT 8
#define REDOXFS_MODE_TYPE 0xF000
#define REDOXFS_MODE_FILE 0x8000
#define REDOXFS_MODE_DIR 0x4000
#define REDOXFS_MODE_SYMLINK 0xA000
#define REDOXFS_FLAG_INLINE_DATA 0x1
struct grub_redoxfs_blockptr {
grub_uint64_t addr;
grub_uint64_t hash;
} GRUB_PACKED;
struct grub_redoxfs_treeptr {
grub_uint32_t id;
} GRUB_PACKED;
struct grub_redoxfs_header {
grub_uint8_t signature[8];
grub_uint64_t version;
grub_uint8_t uuid[16];
grub_uint64_t size;
grub_uint64_t generation;
struct grub_redoxfs_blockptr tree;
struct grub_redoxfs_blockptr alloc;
grub_uint8_t key_slots[3072];
struct grub_redoxfs_blockptr release;
grub_uint8_t padding[904];
grub_uint8_t encrypted_hash[16];
grub_uint64_t hash;
} GRUB_PACKED;
struct grub_redoxfs_node {
grub_uint16_t mode;
grub_uint32_t uid;
grub_uint32_t gid;
grub_uint32_t links;
grub_uint64_t size;
grub_uint64_t blocks;
grub_uint64_t ctime;
grub_uint32_t ctime_nsec;
grub_uint64_t mtime;
grub_uint32_t mtime_nsec;
grub_uint64_t atime;
grub_uint32_t atime_nsec;
grub_uint32_t record_level;
grub_uint32_t flags;
grub_uint8_t padding[54];
grub_uint8_t level_data[3968];
} GRUB_PACKED;
struct grub_redoxfs_treelist {
struct grub_redoxfs_blockptr ptrs[REDOXFS_TREE_LIST_ENTRIES];
grub_uint8_t full_flags[32];
} GRUB_PACKED;
struct grub_redoxfs_htreeptr {
grub_uint32_t htree_hash;
struct grub_redoxfs_blockptr ptr;
} GRUB_PACKED;
struct grub_redoxfs_htreenode {
struct grub_redoxfs_htreeptr ptrs[REDOXFS_HTREE_IDX_ENTRIES];
grub_uint8_t padding[16];
} GRUB_PACKED;
struct grub_redoxfs_dirlist {
grub_uint8_t entry_bytes[4092];
grub_uint16_t count;
grub_uint16_t entry_bytes_len;
} GRUB_PACKED;
struct grub_redoxfs_blocklist {
struct grub_redoxfs_blockptr ptrs[REDOXFS_BLOCK_LIST_ENTRIES];
} GRUB_PACKED;
struct grub_redoxfs_data {
struct grub_redoxfs_header header;
void *disk;
};
struct grub_fshelp_node {
struct grub_redoxfs_data *data;
struct grub_redoxfs_node node;
};
static inline grub_uint64_t
grub_redoxfs_blockptr_addr (const struct grub_redoxfs_blockptr *ptr)
{
return grub_le_to_cpu64 (ptr->addr);
}
static inline grub_uint64_t
grub_redoxfs_blockptr_hash (const struct grub_redoxfs_blockptr *ptr)
{
return grub_le_to_cpu64 (ptr->hash);
}
static inline int
grub_redoxfs_blockptr_is_null (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_redoxfs_blockptr_addr (ptr) >> 8) == 0;
}
static inline int
grub_redoxfs_blockptr_is_marker (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_redoxfs_blockptr_addr (ptr) | 0xFULL) == 0xFFFFFFFFFFFFFFFFULL
&& grub_redoxfs_blockptr_hash (ptr) == 0xFFFFFFFFFFFFFFFFULL;
}
static inline grub_uint64_t
grub_redoxfs_blockptr_block_index (const struct grub_redoxfs_blockptr *ptr)
{
return grub_redoxfs_blockptr_addr (ptr) >> 8;
}
static inline grub_uint8_t
grub_redoxfs_blockptr_level (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_uint8_t) (grub_redoxfs_blockptr_addr (ptr) & 0xF);
}
static inline grub_uint8_t
grub_redoxfs_blockptr_decomp_level (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_uint8_t) ((grub_redoxfs_blockptr_addr (ptr) >> 4) & 0xF);
}
static inline grub_disk_addr_t
grub_redoxfs_blockptr_sector (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_disk_addr_t) grub_redoxfs_blockptr_block_index (ptr)
* (REDOXFS_BLOCK_SIZE / 512);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i3 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) ((grub_le_to_cpu32 (ptr->id) >> 24) & 0xFF);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i2 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) ((grub_le_to_cpu32 (ptr->id) >> 16) & 0xFF);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i1 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) ((grub_le_to_cpu32 (ptr->id) >> 8) & 0xFF);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i0 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) (grub_le_to_cpu32 (ptr->id) & 0xFF);
}
static inline int
grub_redoxfs_header_is_encrypted (const struct grub_redoxfs_header *hdr)
{
grub_uint8_t expected[16] = { 0 };
grub_uint64_t h = grub_le_to_cpu64 (hdr->hash);
grub_size_t i;
for (i = 0; i < 8; i++)
expected[i] = (grub_uint8_t) (h >> (8 * i));
for (i = 0; i < 16; i++)
if (hdr->encrypted_hash[i] != expected[i])
return 1;
return 0;
}
grub_uint64_t grub_redoxfs_seahash (const void *data, grub_size_t size);
grub_err_t grub_redoxfs_probe (void *disk);
struct grub_redoxfs_data *grub_redoxfs_mount (void *disk);
void grub_redoxfs_unmount (struct grub_redoxfs_data *data);
grub_err_t grub_redoxfs_read_block (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_blockptr *ptr,
void *buf);
grub_err_t grub_redoxfs_read_block_cap (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_blockptr *ptr,
void *buf, grub_size_t buf_cap);
grub_err_t grub_redoxfs_read_tree (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_treeptr *tptr,
void *buf);
grub_err_t grub_redoxfs_read_node (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_treeptr *tptr,
struct grub_redoxfs_node *node);
grub_err_t grub_redoxfs_read_root (const struct grub_redoxfs_data *data,
struct grub_redoxfs_node *node);
grub_uint32_t grub_redoxfs_htree_hash (const char *name, grub_size_t namelen);
grub_err_t grub_redoxfs_dir_get_info (const struct grub_redoxfs_node *dir,
int *depth_out,
struct grub_redoxfs_blockptr *root_ptr_out);
grub_err_t grub_redoxfs_dir_lookup (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *dir,
const char *name,
struct grub_redoxfs_treeptr *result);
typedef int (*grub_redoxfs_dir_iter_hook_t) (const char *name,
grub_size_t namelen,
const struct grub_redoxfs_treeptr *ptr,
void *hook_data);
grub_err_t grub_redoxfs_dir_iterate (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *dir,
grub_redoxfs_dir_iter_hook_t hook,
void *hook_data);
grub_err_t path_lookup (const struct grub_redoxfs_data *data,
const char *path,
int follow_symlinks,
int symlink_depth,
struct grub_redoxfs_node *out_node);
grub_err_t grub_redoxfs_read_record (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *node,
grub_uint64_t record_index,
grub_uint32_t record_level,
void *buf);
grub_ssize_t grub_redoxfs_read_file_data (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *node,
grub_off_t offset,
void *buf,
grub_size_t len);
#ifndef GRUB_BUILD
grub_err_t grub_disk_read (void *disk, grub_disk_addr_t sector,
grub_off_t offset, grub_size_t size, void *buf);
#endif
_Static_assert (sizeof (struct grub_redoxfs_blockptr) == 16,
"grub_redoxfs_blockptr must be 16 bytes");
_Static_assert (sizeof (struct grub_redoxfs_htreeptr) == 20,
"grub_redoxfs_htreeptr must be 20 bytes");
_Static_assert (sizeof (struct grub_redoxfs_header) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_header must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_node) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_node must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_treelist) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_treelist must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_htreenode) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_htreenode must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_dirlist) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_dirlist must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_blocklist) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_blocklist must be 4096 bytes");
#endif
@@ -0,0 +1,62 @@
#include "redoxfs.h"
static inline grub_uint64_t
seahash_diffuse (grub_uint64_t x)
{
grub_uint64_t a;
grub_uint64_t b;
x *= 0x6eed0e9da4d94a4fULL;
a = x >> 32;
b = x >> 60;
x ^= a >> b;
x *= 0x6eed0e9da4d94a4fULL;
return x;
}
static inline grub_uint64_t
seahash_read_le64 (const grub_uint8_t *buf, grub_size_t len)
{
grub_uint64_t x = 0;
grub_size_t i;
for (i = 0; i < len; i++)
x |= (grub_uint64_t) buf[i] << (8 * i);
return x;
}
grub_uint64_t
grub_redoxfs_seahash (const void *data, grub_size_t size)
{
const grub_uint8_t *buf = (const grub_uint8_t *) data;
grub_uint64_t a = 0x16f11fe89b0d677cULL;
grub_uint64_t b = 0xb480a793d8e6c86cULL;
grub_uint64_t c = 0x6fe2e5aaf078ebc9ULL;
grub_uint64_t d = 0x14f994a4c5259381ULL;
grub_size_t i = 0;
for (; i + 8 <= size; i += 8)
{
grub_uint64_t n = seahash_read_le64 (buf + i, 8);
grub_uint64_t new_a = seahash_diffuse (a ^ n);
a = b;
b = c;
c = d;
d = new_a;
}
if (i < size)
{
grub_uint64_t n = seahash_read_le64 (buf + i, size - i);
grub_uint64_t new_a = seahash_diffuse (a ^ n);
a = b;
b = c;
c = d;
d = new_a;
}
return seahash_diffuse (a ^ b ^ c ^ d ^ (grub_uint64_t) size);
}
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am.
# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -120,6 +120,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
am__rm_f = rm -f $(am__rm_f_notfound)
am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -248,9 +250,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/open-cloexec.m4 \
$(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \
$(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
$(top_srcdir)/m4/pid_t.m4 $(top_srcdir)/m4/pipe.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
$(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/pipe.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
$(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/reallocarray.m4 $(top_srcdir)/m4/regex.m4 \
@@ -258,28 +259,27 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/setlocale_null.m4 \
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/std-gnu11.m4 \
$(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stdbool.m4 \
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
$(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
$(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdalign.m4 \
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \
$(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/threadlib.m4 \
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/unistd-safer.m4 \
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vararrays.m4 \
$(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/visibility.m4 \
$(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/warn-on-use.m4 \
$(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
$(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
$(top_srcdir)/m4/wcwidth.m4 $(top_srcdir)/m4/wint_t.m4 \
$(top_srcdir)/m4/wmemchr.m4 $(top_srcdir)/m4/wmempcpy.m4 \
$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/year2038.m4 \
$(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \
$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/vsnprintf.m4 \
$(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcrtomb.m4 \
$(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/wmemchr.m4 \
$(top_srcdir)/m4/wmempcpy.m4 $(top_srcdir)/m4/xsize.m4 \
$(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -289,11 +289,13 @@ CONFIG_HEADER = $(top_builddir)/config-util.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
LTLIBRARIES = $(noinst_LTLIBRARIES)
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
am__v_AR_0 = @echo " AR " $@;
am__v_AR_1 =
libgnu_a_AR = $(AR) $(ARFLAGS)
libgnu_a_RANLIB = $(RANLIB)
am__DEPENDENCIES_1 =
am__libgnu_a_SOURCES_DIST = argp.h argp-ba.c argp-eexst.c \
argp-fmtstream.c argp-fmtstream.h argp-fs-xinl.c argp-help.c \
@@ -447,7 +449,6 @@ am_libgnu_a_OBJECTS = libgnu_a-argp-ba.$(OBJEXT) \
$(am__objects_56) $(am__objects_57) $(am__objects_58) \
libgnu_a-xsize.$(OBJEXT)
libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
LTLIBRARIES = $(noinst_LTLIBRARIES)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -462,7 +463,115 @@ am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__depfiles_maybe = depfiles
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/alloca.Po \
./$(DEPDIR)/libgnu_a-alloca.Po ./$(DEPDIR)/libgnu_a-argp-ba.Po \
./$(DEPDIR)/libgnu_a-argp-eexst.Po \
./$(DEPDIR)/libgnu_a-argp-fmtstream.Po \
./$(DEPDIR)/libgnu_a-argp-fs-xinl.Po \
./$(DEPDIR)/libgnu_a-argp-help.Po \
./$(DEPDIR)/libgnu_a-argp-parse.Po \
./$(DEPDIR)/libgnu_a-argp-pin.Po \
./$(DEPDIR)/libgnu_a-argp-pv.Po \
./$(DEPDIR)/libgnu_a-argp-pvh.Po \
./$(DEPDIR)/libgnu_a-argp-xinl.Po \
./$(DEPDIR)/libgnu_a-asnprintf.Po \
./$(DEPDIR)/libgnu_a-base64.Po \
./$(DEPDIR)/libgnu_a-basename-lgpl.Po \
./$(DEPDIR)/libgnu_a-btowc.Po ./$(DEPDIR)/libgnu_a-calloc.Po \
./$(DEPDIR)/libgnu_a-chdir-long.Po \
./$(DEPDIR)/libgnu_a-cloexec.Po ./$(DEPDIR)/libgnu_a-close.Po \
./$(DEPDIR)/libgnu_a-dirfd.Po \
./$(DEPDIR)/libgnu_a-dup-safer-flag.Po \
./$(DEPDIR)/libgnu_a-dup-safer.Po ./$(DEPDIR)/libgnu_a-dup2.Po \
./$(DEPDIR)/libgnu_a-error.Po ./$(DEPDIR)/libgnu_a-exitfail.Po \
./$(DEPDIR)/libgnu_a-fchdir.Po ./$(DEPDIR)/libgnu_a-fcntl.Po \
./$(DEPDIR)/libgnu_a-fd-hook.Po \
./$(DEPDIR)/libgnu_a-fd-safer-flag.Po \
./$(DEPDIR)/libgnu_a-fd-safer.Po \
./$(DEPDIR)/libgnu_a-filenamecat-lgpl.Po \
./$(DEPDIR)/libgnu_a-float.Po ./$(DEPDIR)/libgnu_a-fnmatch.Po \
./$(DEPDIR)/libgnu_a-fnmatch_loop.Po \
./$(DEPDIR)/libgnu_a-free.Po ./$(DEPDIR)/libgnu_a-fstat.Po \
./$(DEPDIR)/libgnu_a-getcwd-lgpl.Po \
./$(DEPDIR)/libgnu_a-getdelim.Po \
./$(DEPDIR)/libgnu_a-getdtablesize.Po \
./$(DEPDIR)/libgnu_a-getline.Po ./$(DEPDIR)/libgnu_a-getopt.Po \
./$(DEPDIR)/libgnu_a-getopt1.Po \
./$(DEPDIR)/libgnu_a-getprogname.Po \
./$(DEPDIR)/libgnu_a-hard-locale.Po \
./$(DEPDIR)/libgnu_a-ialloc.Po ./$(DEPDIR)/libgnu_a-isblank.Po \
./$(DEPDIR)/libgnu_a-itold.Po \
./$(DEPDIR)/libgnu_a-lc-charset-dispatch.Po \
./$(DEPDIR)/libgnu_a-localcharset.Po \
./$(DEPDIR)/libgnu_a-localeconv.Po \
./$(DEPDIR)/libgnu_a-malloc.Po ./$(DEPDIR)/libgnu_a-malloca.Po \
./$(DEPDIR)/libgnu_a-mbrtowc.Po \
./$(DEPDIR)/libgnu_a-mbsinit.Po \
./$(DEPDIR)/libgnu_a-mbsrtowcs-state.Po \
./$(DEPDIR)/libgnu_a-mbsrtowcs.Po \
./$(DEPDIR)/libgnu_a-mbswidth.Po \
./$(DEPDIR)/libgnu_a-mbtowc-lock.Po \
./$(DEPDIR)/libgnu_a-mbtowc.Po ./$(DEPDIR)/libgnu_a-memchr.Po \
./$(DEPDIR)/libgnu_a-mempcpy.Po \
./$(DEPDIR)/libgnu_a-memrchr.Po \
./$(DEPDIR)/libgnu_a-msvc-inval.Po \
./$(DEPDIR)/libgnu_a-msvc-nothrow.Po \
./$(DEPDIR)/libgnu_a-nl_langinfo-lock.Po \
./$(DEPDIR)/libgnu_a-nl_langinfo.Po \
./$(DEPDIR)/libgnu_a-open.Po \
./$(DEPDIR)/libgnu_a-openat-die.Po \
./$(DEPDIR)/libgnu_a-openat-proc.Po \
./$(DEPDIR)/libgnu_a-openat.Po \
./$(DEPDIR)/libgnu_a-pipe-safer.Po \
./$(DEPDIR)/libgnu_a-pipe.Po \
./$(DEPDIR)/libgnu_a-printf-args.Po \
./$(DEPDIR)/libgnu_a-printf-parse.Po \
./$(DEPDIR)/libgnu_a-progname.Po \
./$(DEPDIR)/libgnu_a-rawmemchr.Po \
./$(DEPDIR)/libgnu_a-realloc.Po \
./$(DEPDIR)/libgnu_a-reallocarray.Po \
./$(DEPDIR)/libgnu_a-regcomp.Po ./$(DEPDIR)/libgnu_a-regex.Po \
./$(DEPDIR)/libgnu_a-regex_internal.Po \
./$(DEPDIR)/libgnu_a-regexec.Po \
./$(DEPDIR)/libgnu_a-save-cwd.Po \
./$(DEPDIR)/libgnu_a-setlocale-lock.Po \
./$(DEPDIR)/libgnu_a-setlocale_null.Po \
./$(DEPDIR)/libgnu_a-sleep.Po \
./$(DEPDIR)/libgnu_a-stat-time.Po \
./$(DEPDIR)/libgnu_a-stat-w32.Po ./$(DEPDIR)/libgnu_a-stat.Po \
./$(DEPDIR)/libgnu_a-stdio-read.Po \
./$(DEPDIR)/libgnu_a-stdio-write.Po \
./$(DEPDIR)/libgnu_a-strcasecmp.Po \
./$(DEPDIR)/libgnu_a-strchrnul.Po \
./$(DEPDIR)/libgnu_a-strdup.Po \
./$(DEPDIR)/libgnu_a-strerror-override.Po \
./$(DEPDIR)/libgnu_a-strerror.Po \
./$(DEPDIR)/libgnu_a-strncasecmp.Po \
./$(DEPDIR)/libgnu_a-strndup.Po \
./$(DEPDIR)/libgnu_a-strnlen.Po \
./$(DEPDIR)/libgnu_a-strnlen1.Po \
./$(DEPDIR)/libgnu_a-unistd.Po \
./$(DEPDIR)/libgnu_a-vasnprintf.Po \
./$(DEPDIR)/libgnu_a-vsnprintf.Po \
./$(DEPDIR)/libgnu_a-wcrtomb.Po \
./$(DEPDIR)/libgnu_a-wctype-h.Po \
./$(DEPDIR)/libgnu_a-wcwidth.Po \
./$(DEPDIR)/libgnu_a-windows-mutex.Po \
./$(DEPDIR)/libgnu_a-windows-once.Po \
./$(DEPDIR)/libgnu_a-windows-recmutex.Po \
./$(DEPDIR)/libgnu_a-windows-rwlock.Po \
./$(DEPDIR)/libgnu_a-wmemchr.Po \
./$(DEPDIR)/libgnu_a-wmempcpy.Po ./$(DEPDIR)/libgnu_a-xsize.Po \
glthread/$(DEPDIR)/libgnu_a-lock.Po \
glthread/$(DEPDIR)/libgnu_a-threadlib.Po \
malloc/$(DEPDIR)/libgnu_a-dynarray-skeleton.Po \
malloc/$(DEPDIR)/libgnu_a-dynarray_at_failure.Po \
malloc/$(DEPDIR)/libgnu_a-dynarray_emplace_enlarge.Po \
malloc/$(DEPDIR)/libgnu_a-dynarray_finalize.Po \
malloc/$(DEPDIR)/libgnu_a-dynarray_resize.Po \
malloc/$(DEPDIR)/libgnu_a-dynarray_resize_clear.Po \
uniwidth/$(DEPDIR)/libgnu_a-width.Po
am__mv = mv -f
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -503,7 +612,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
distdir distdir-am
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@@ -521,8 +630,6 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/depcomp alloca.c
@@ -593,6 +700,8 @@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
CMP = @CMP@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
@@ -614,6 +723,7 @@ ENOLINK_VALUE = @ENOLINK_VALUE@
EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
ERRNO_H = @ERRNO_H@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FLOAT_H = @FLOAT_H@
FNMATCH_H = @FNMATCH_H@
@@ -1635,8 +1745,10 @@ ac_ct_TARGET_CC = @ac_ct_TARGET_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
am__xargs_n = @am__xargs_n@
bindir = @bindir@
bootdirname = @bootdirname@
build = @build@
@@ -1890,8 +2002,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -1904,13 +2016,22 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-$(am__rm_f) $(noinst_LIBRARIES)
clean-noinstLTLIBRARIES:
-$(am__rm_f) $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
echo rm -f $${locs}; \
$(am__rm_f) $${locs}
malloc/$(am__dirstamp):
@$(MKDIR_P) malloc
@: > malloc/$(am__dirstamp)
@: >>malloc/$(am__dirstamp)
malloc/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) malloc/$(DEPDIR)
@: > malloc/$(DEPDIR)/$(am__dirstamp)
@: >>malloc/$(DEPDIR)/$(am__dirstamp)
malloc/libgnu_a-dynarray_at_failure.$(OBJEXT): malloc/$(am__dirstamp) \
malloc/$(DEPDIR)/$(am__dirstamp)
malloc/libgnu_a-dynarray_emplace_enlarge.$(OBJEXT): \
@@ -1923,20 +2044,20 @@ malloc/libgnu_a-dynarray_resize_clear.$(OBJEXT): \
malloc/$(am__dirstamp) malloc/$(DEPDIR)/$(am__dirstamp)
glthread/$(am__dirstamp):
@$(MKDIR_P) glthread
@: > glthread/$(am__dirstamp)
@: >>glthread/$(am__dirstamp)
glthread/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) glthread/$(DEPDIR)
@: > glthread/$(DEPDIR)/$(am__dirstamp)
@: >>glthread/$(DEPDIR)/$(am__dirstamp)
glthread/libgnu_a-lock.$(OBJEXT): glthread/$(am__dirstamp) \
glthread/$(DEPDIR)/$(am__dirstamp)
glthread/libgnu_a-threadlib.$(OBJEXT): glthread/$(am__dirstamp) \
glthread/$(DEPDIR)/$(am__dirstamp)
uniwidth/$(am__dirstamp):
@$(MKDIR_P) uniwidth
@: > uniwidth/$(am__dirstamp)
@: >>uniwidth/$(am__dirstamp)
uniwidth/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) uniwidth/$(DEPDIR)
@: > uniwidth/$(DEPDIR)/$(am__dirstamp)
@: >>uniwidth/$(DEPDIR)/$(am__dirstamp)
uniwidth/libgnu_a-width.$(OBJEXT): uniwidth/$(am__dirstamp) \
uniwidth/$(DEPDIR)/$(am__dirstamp)
malloc/libgnu_a-dynarray-skeleton.$(OBJEXT): malloc/$(am__dirstamp) \
@@ -1945,18 +2066,7 @@ malloc/libgnu_a-dynarray-skeleton.$(OBJEXT): malloc/$(am__dirstamp) \
libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES)
$(AM_V_at)-rm -f libgnu.a
$(AM_V_AR)$(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
$(AM_V_at)$(RANLIB) libgnu.a
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
$(AM_V_at)$(libgnu_a_RANLIB) libgnu.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -1967,129 +2077,135 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-alloca.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-ba.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-eexst.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-fmtstream.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-fs-xinl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-help.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-parse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-pin.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-pv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-pvh.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-xinl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-asnprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-base64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-basename-lgpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-btowc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-calloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-chdir-long.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-cloexec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-close.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dirfd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dup-safer-flag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dup-safer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dup2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-error.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-exitfail.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fchdir.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fcntl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fd-hook.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fd-safer-flag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fd-safer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-filenamecat-lgpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-float.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fnmatch.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fnmatch_loop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-free.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fstat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getcwd-lgpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getdelim.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getdtablesize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getline.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getopt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getopt1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getprogname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-hard-locale.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-ialloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-isblank.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-itold.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-lc-charset-dispatch.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-localcharset.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-localeconv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-malloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-malloca.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbrtowc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbsinit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbsrtowcs-state.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbsrtowcs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbswidth.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbtowc-lock.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbtowc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-memchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mempcpy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-memrchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-msvc-inval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-msvc-nothrow.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-nl_langinfo-lock.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-nl_langinfo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-open.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat-die.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat-proc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-pipe-safer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-pipe.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-printf-args.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-printf-parse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-progname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-rawmemchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-realloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-reallocarray.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regcomp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regex_internal.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regexec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-save-cwd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-setlocale-lock.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-setlocale_null.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-sleep.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stat-time.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stat-w32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stdio-read.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stdio-write.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strcasecmp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strchrnul.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strdup.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strerror-override.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strerror.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strncasecmp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strndup.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strnlen.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strnlen1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-unistd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-vasnprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-vsnprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wcrtomb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wctype-h.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wcwidth.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-mutex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-once.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-recmutex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-rwlock.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wmemchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wmempcpy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-xsize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/libgnu_a-lock.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/libgnu_a-threadlib.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray-skeleton.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_at_failure.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_emplace_enlarge.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_finalize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_resize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_resize_clear.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/libgnu_a-width.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-alloca.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-ba.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-eexst.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-fmtstream.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-fs-xinl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-help.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-parse.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-pin.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-pv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-pvh.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-argp-xinl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-asnprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-base64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-basename-lgpl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-btowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-calloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-chdir-long.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-cloexec.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-close.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dirfd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dup-safer-flag.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dup-safer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-dup2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-error.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-exitfail.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fchdir.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fcntl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fd-hook.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fd-safer-flag.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fd-safer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-filenamecat-lgpl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-float.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fnmatch.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fnmatch_loop.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-free.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fstat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getcwd-lgpl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getdelim.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getdtablesize.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getline.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getopt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getopt1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getprogname.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-hard-locale.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-ialloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-isblank.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-itold.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-lc-charset-dispatch.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-localcharset.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-localeconv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-malloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-malloca.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbrtowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbsinit.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbsrtowcs-state.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbsrtowcs.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbswidth.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbtowc-lock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mbtowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-memchr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mempcpy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-memrchr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-msvc-inval.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-msvc-nothrow.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-nl_langinfo-lock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-nl_langinfo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-open.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat-die.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat-proc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-pipe-safer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-pipe.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-printf-args.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-printf-parse.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-progname.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-rawmemchr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-realloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-reallocarray.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regcomp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regex.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regex_internal.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-regexec.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-save-cwd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-setlocale-lock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-setlocale_null.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-sleep.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stat-time.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stat-w32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stdio-read.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-stdio-write.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strcasecmp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strchrnul.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strerror-override.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strerror.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strncasecmp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strndup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strnlen.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-strnlen1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-unistd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-vasnprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-vsnprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wcrtomb.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wctype-h.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wcwidth.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-mutex.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-once.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-recmutex.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-windows-rwlock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wmemchr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-wmempcpy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-xsize.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/libgnu_a-lock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/libgnu_a-threadlib.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray-skeleton.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_at_failure.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_emplace_enlarge.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_finalize.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_resize.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_a-dynarray_resize_clear.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/libgnu_a-width.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@: >>$@
am--depfiles: $(am__depfiles_remade)
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -3914,7 +4030,10 @@ cscopelist-am: $(am__tagged_files)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -3977,7 +4096,8 @@ installdirs: installdirs-recursive
installdirs-am:
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
install-exec: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
@@ -3996,34 +4116,156 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-$(am__rm_f) $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-$(am__rm_f) $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-rm -f glthread/$(DEPDIR)/$(am__dirstamp)
-rm -f glthread/$(am__dirstamp)
-rm -f malloc/$(DEPDIR)/$(am__dirstamp)
-rm -f malloc/$(am__dirstamp)
-rm -f uniwidth/$(DEPDIR)/$(am__dirstamp)
-rm -f uniwidth/$(am__dirstamp)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
-$(am__rm_f) $(DISTCLEANFILES)
-$(am__rm_f) glthread/$(DEPDIR)/$(am__dirstamp)
-$(am__rm_f) glthread/$(am__dirstamp)
-$(am__rm_f) malloc/$(DEPDIR)/$(am__dirstamp)
-$(am__rm_f) malloc/$(am__dirstamp)
-$(am__rm_f) uniwidth/$(DEPDIR)/$(am__dirstamp)
-$(am__rm_f) uniwidth/$(am__dirstamp)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-$(am__rm_f) $(BUILT_SOURCES)
-$(am__rm_f) $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-recursive
-rm -rf $(DEPDIR) ./$(DEPDIR) glthread/$(DEPDIR) malloc/$(DEPDIR) uniwidth/$(DEPDIR)
-rm -f ./$(DEPDIR)/alloca.Po
-rm -f ./$(DEPDIR)/libgnu_a-alloca.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-ba.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-eexst.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-fmtstream.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-fs-xinl.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-help.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-parse.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-pin.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-pv.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-pvh.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-xinl.Po
-rm -f ./$(DEPDIR)/libgnu_a-asnprintf.Po
-rm -f ./$(DEPDIR)/libgnu_a-base64.Po
-rm -f ./$(DEPDIR)/libgnu_a-basename-lgpl.Po
-rm -f ./$(DEPDIR)/libgnu_a-btowc.Po
-rm -f ./$(DEPDIR)/libgnu_a-calloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-chdir-long.Po
-rm -f ./$(DEPDIR)/libgnu_a-cloexec.Po
-rm -f ./$(DEPDIR)/libgnu_a-close.Po
-rm -f ./$(DEPDIR)/libgnu_a-dirfd.Po
-rm -f ./$(DEPDIR)/libgnu_a-dup-safer-flag.Po
-rm -f ./$(DEPDIR)/libgnu_a-dup-safer.Po
-rm -f ./$(DEPDIR)/libgnu_a-dup2.Po
-rm -f ./$(DEPDIR)/libgnu_a-error.Po
-rm -f ./$(DEPDIR)/libgnu_a-exitfail.Po
-rm -f ./$(DEPDIR)/libgnu_a-fchdir.Po
-rm -f ./$(DEPDIR)/libgnu_a-fcntl.Po
-rm -f ./$(DEPDIR)/libgnu_a-fd-hook.Po
-rm -f ./$(DEPDIR)/libgnu_a-fd-safer-flag.Po
-rm -f ./$(DEPDIR)/libgnu_a-fd-safer.Po
-rm -f ./$(DEPDIR)/libgnu_a-filenamecat-lgpl.Po
-rm -f ./$(DEPDIR)/libgnu_a-float.Po
-rm -f ./$(DEPDIR)/libgnu_a-fnmatch.Po
-rm -f ./$(DEPDIR)/libgnu_a-fnmatch_loop.Po
-rm -f ./$(DEPDIR)/libgnu_a-free.Po
-rm -f ./$(DEPDIR)/libgnu_a-fstat.Po
-rm -f ./$(DEPDIR)/libgnu_a-getcwd-lgpl.Po
-rm -f ./$(DEPDIR)/libgnu_a-getdelim.Po
-rm -f ./$(DEPDIR)/libgnu_a-getdtablesize.Po
-rm -f ./$(DEPDIR)/libgnu_a-getline.Po
-rm -f ./$(DEPDIR)/libgnu_a-getopt.Po
-rm -f ./$(DEPDIR)/libgnu_a-getopt1.Po
-rm -f ./$(DEPDIR)/libgnu_a-getprogname.Po
-rm -f ./$(DEPDIR)/libgnu_a-hard-locale.Po
-rm -f ./$(DEPDIR)/libgnu_a-ialloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-isblank.Po
-rm -f ./$(DEPDIR)/libgnu_a-itold.Po
-rm -f ./$(DEPDIR)/libgnu_a-lc-charset-dispatch.Po
-rm -f ./$(DEPDIR)/libgnu_a-localcharset.Po
-rm -f ./$(DEPDIR)/libgnu_a-localeconv.Po
-rm -f ./$(DEPDIR)/libgnu_a-malloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-malloca.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbrtowc.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbsinit.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbsrtowcs-state.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbsrtowcs.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbswidth.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbtowc-lock.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbtowc.Po
-rm -f ./$(DEPDIR)/libgnu_a-memchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-mempcpy.Po
-rm -f ./$(DEPDIR)/libgnu_a-memrchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-msvc-inval.Po
-rm -f ./$(DEPDIR)/libgnu_a-msvc-nothrow.Po
-rm -f ./$(DEPDIR)/libgnu_a-nl_langinfo-lock.Po
-rm -f ./$(DEPDIR)/libgnu_a-nl_langinfo.Po
-rm -f ./$(DEPDIR)/libgnu_a-open.Po
-rm -f ./$(DEPDIR)/libgnu_a-openat-die.Po
-rm -f ./$(DEPDIR)/libgnu_a-openat-proc.Po
-rm -f ./$(DEPDIR)/libgnu_a-openat.Po
-rm -f ./$(DEPDIR)/libgnu_a-pipe-safer.Po
-rm -f ./$(DEPDIR)/libgnu_a-pipe.Po
-rm -f ./$(DEPDIR)/libgnu_a-printf-args.Po
-rm -f ./$(DEPDIR)/libgnu_a-printf-parse.Po
-rm -f ./$(DEPDIR)/libgnu_a-progname.Po
-rm -f ./$(DEPDIR)/libgnu_a-rawmemchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-realloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-reallocarray.Po
-rm -f ./$(DEPDIR)/libgnu_a-regcomp.Po
-rm -f ./$(DEPDIR)/libgnu_a-regex.Po
-rm -f ./$(DEPDIR)/libgnu_a-regex_internal.Po
-rm -f ./$(DEPDIR)/libgnu_a-regexec.Po
-rm -f ./$(DEPDIR)/libgnu_a-save-cwd.Po
-rm -f ./$(DEPDIR)/libgnu_a-setlocale-lock.Po
-rm -f ./$(DEPDIR)/libgnu_a-setlocale_null.Po
-rm -f ./$(DEPDIR)/libgnu_a-sleep.Po
-rm -f ./$(DEPDIR)/libgnu_a-stat-time.Po
-rm -f ./$(DEPDIR)/libgnu_a-stat-w32.Po
-rm -f ./$(DEPDIR)/libgnu_a-stat.Po
-rm -f ./$(DEPDIR)/libgnu_a-stdio-read.Po
-rm -f ./$(DEPDIR)/libgnu_a-stdio-write.Po
-rm -f ./$(DEPDIR)/libgnu_a-strcasecmp.Po
-rm -f ./$(DEPDIR)/libgnu_a-strchrnul.Po
-rm -f ./$(DEPDIR)/libgnu_a-strdup.Po
-rm -f ./$(DEPDIR)/libgnu_a-strerror-override.Po
-rm -f ./$(DEPDIR)/libgnu_a-strerror.Po
-rm -f ./$(DEPDIR)/libgnu_a-strncasecmp.Po
-rm -f ./$(DEPDIR)/libgnu_a-strndup.Po
-rm -f ./$(DEPDIR)/libgnu_a-strnlen.Po
-rm -f ./$(DEPDIR)/libgnu_a-strnlen1.Po
-rm -f ./$(DEPDIR)/libgnu_a-unistd.Po
-rm -f ./$(DEPDIR)/libgnu_a-vasnprintf.Po
-rm -f ./$(DEPDIR)/libgnu_a-vsnprintf.Po
-rm -f ./$(DEPDIR)/libgnu_a-wcrtomb.Po
-rm -f ./$(DEPDIR)/libgnu_a-wctype-h.Po
-rm -f ./$(DEPDIR)/libgnu_a-wcwidth.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-mutex.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-once.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-recmutex.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-rwlock.Po
-rm -f ./$(DEPDIR)/libgnu_a-wmemchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-wmempcpy.Po
-rm -f ./$(DEPDIR)/libgnu_a-xsize.Po
-rm -f glthread/$(DEPDIR)/libgnu_a-lock.Po
-rm -f glthread/$(DEPDIR)/libgnu_a-threadlib.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray-skeleton.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_at_failure.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_emplace_enlarge.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_finalize.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_resize.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_resize_clear.Po
-rm -f uniwidth/$(DEPDIR)/libgnu_a-width.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-local distclean-tags
@@ -4069,7 +4311,129 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -rf $(DEPDIR) ./$(DEPDIR) glthread/$(DEPDIR) malloc/$(DEPDIR) uniwidth/$(DEPDIR)
-rm -f ./$(DEPDIR)/alloca.Po
-rm -f ./$(DEPDIR)/libgnu_a-alloca.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-ba.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-eexst.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-fmtstream.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-fs-xinl.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-help.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-parse.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-pin.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-pv.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-pvh.Po
-rm -f ./$(DEPDIR)/libgnu_a-argp-xinl.Po
-rm -f ./$(DEPDIR)/libgnu_a-asnprintf.Po
-rm -f ./$(DEPDIR)/libgnu_a-base64.Po
-rm -f ./$(DEPDIR)/libgnu_a-basename-lgpl.Po
-rm -f ./$(DEPDIR)/libgnu_a-btowc.Po
-rm -f ./$(DEPDIR)/libgnu_a-calloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-chdir-long.Po
-rm -f ./$(DEPDIR)/libgnu_a-cloexec.Po
-rm -f ./$(DEPDIR)/libgnu_a-close.Po
-rm -f ./$(DEPDIR)/libgnu_a-dirfd.Po
-rm -f ./$(DEPDIR)/libgnu_a-dup-safer-flag.Po
-rm -f ./$(DEPDIR)/libgnu_a-dup-safer.Po
-rm -f ./$(DEPDIR)/libgnu_a-dup2.Po
-rm -f ./$(DEPDIR)/libgnu_a-error.Po
-rm -f ./$(DEPDIR)/libgnu_a-exitfail.Po
-rm -f ./$(DEPDIR)/libgnu_a-fchdir.Po
-rm -f ./$(DEPDIR)/libgnu_a-fcntl.Po
-rm -f ./$(DEPDIR)/libgnu_a-fd-hook.Po
-rm -f ./$(DEPDIR)/libgnu_a-fd-safer-flag.Po
-rm -f ./$(DEPDIR)/libgnu_a-fd-safer.Po
-rm -f ./$(DEPDIR)/libgnu_a-filenamecat-lgpl.Po
-rm -f ./$(DEPDIR)/libgnu_a-float.Po
-rm -f ./$(DEPDIR)/libgnu_a-fnmatch.Po
-rm -f ./$(DEPDIR)/libgnu_a-fnmatch_loop.Po
-rm -f ./$(DEPDIR)/libgnu_a-free.Po
-rm -f ./$(DEPDIR)/libgnu_a-fstat.Po
-rm -f ./$(DEPDIR)/libgnu_a-getcwd-lgpl.Po
-rm -f ./$(DEPDIR)/libgnu_a-getdelim.Po
-rm -f ./$(DEPDIR)/libgnu_a-getdtablesize.Po
-rm -f ./$(DEPDIR)/libgnu_a-getline.Po
-rm -f ./$(DEPDIR)/libgnu_a-getopt.Po
-rm -f ./$(DEPDIR)/libgnu_a-getopt1.Po
-rm -f ./$(DEPDIR)/libgnu_a-getprogname.Po
-rm -f ./$(DEPDIR)/libgnu_a-hard-locale.Po
-rm -f ./$(DEPDIR)/libgnu_a-ialloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-isblank.Po
-rm -f ./$(DEPDIR)/libgnu_a-itold.Po
-rm -f ./$(DEPDIR)/libgnu_a-lc-charset-dispatch.Po
-rm -f ./$(DEPDIR)/libgnu_a-localcharset.Po
-rm -f ./$(DEPDIR)/libgnu_a-localeconv.Po
-rm -f ./$(DEPDIR)/libgnu_a-malloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-malloca.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbrtowc.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbsinit.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbsrtowcs-state.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbsrtowcs.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbswidth.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbtowc-lock.Po
-rm -f ./$(DEPDIR)/libgnu_a-mbtowc.Po
-rm -f ./$(DEPDIR)/libgnu_a-memchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-mempcpy.Po
-rm -f ./$(DEPDIR)/libgnu_a-memrchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-msvc-inval.Po
-rm -f ./$(DEPDIR)/libgnu_a-msvc-nothrow.Po
-rm -f ./$(DEPDIR)/libgnu_a-nl_langinfo-lock.Po
-rm -f ./$(DEPDIR)/libgnu_a-nl_langinfo.Po
-rm -f ./$(DEPDIR)/libgnu_a-open.Po
-rm -f ./$(DEPDIR)/libgnu_a-openat-die.Po
-rm -f ./$(DEPDIR)/libgnu_a-openat-proc.Po
-rm -f ./$(DEPDIR)/libgnu_a-openat.Po
-rm -f ./$(DEPDIR)/libgnu_a-pipe-safer.Po
-rm -f ./$(DEPDIR)/libgnu_a-pipe.Po
-rm -f ./$(DEPDIR)/libgnu_a-printf-args.Po
-rm -f ./$(DEPDIR)/libgnu_a-printf-parse.Po
-rm -f ./$(DEPDIR)/libgnu_a-progname.Po
-rm -f ./$(DEPDIR)/libgnu_a-rawmemchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-realloc.Po
-rm -f ./$(DEPDIR)/libgnu_a-reallocarray.Po
-rm -f ./$(DEPDIR)/libgnu_a-regcomp.Po
-rm -f ./$(DEPDIR)/libgnu_a-regex.Po
-rm -f ./$(DEPDIR)/libgnu_a-regex_internal.Po
-rm -f ./$(DEPDIR)/libgnu_a-regexec.Po
-rm -f ./$(DEPDIR)/libgnu_a-save-cwd.Po
-rm -f ./$(DEPDIR)/libgnu_a-setlocale-lock.Po
-rm -f ./$(DEPDIR)/libgnu_a-setlocale_null.Po
-rm -f ./$(DEPDIR)/libgnu_a-sleep.Po
-rm -f ./$(DEPDIR)/libgnu_a-stat-time.Po
-rm -f ./$(DEPDIR)/libgnu_a-stat-w32.Po
-rm -f ./$(DEPDIR)/libgnu_a-stat.Po
-rm -f ./$(DEPDIR)/libgnu_a-stdio-read.Po
-rm -f ./$(DEPDIR)/libgnu_a-stdio-write.Po
-rm -f ./$(DEPDIR)/libgnu_a-strcasecmp.Po
-rm -f ./$(DEPDIR)/libgnu_a-strchrnul.Po
-rm -f ./$(DEPDIR)/libgnu_a-strdup.Po
-rm -f ./$(DEPDIR)/libgnu_a-strerror-override.Po
-rm -f ./$(DEPDIR)/libgnu_a-strerror.Po
-rm -f ./$(DEPDIR)/libgnu_a-strncasecmp.Po
-rm -f ./$(DEPDIR)/libgnu_a-strndup.Po
-rm -f ./$(DEPDIR)/libgnu_a-strnlen.Po
-rm -f ./$(DEPDIR)/libgnu_a-strnlen1.Po
-rm -f ./$(DEPDIR)/libgnu_a-unistd.Po
-rm -f ./$(DEPDIR)/libgnu_a-vasnprintf.Po
-rm -f ./$(DEPDIR)/libgnu_a-vsnprintf.Po
-rm -f ./$(DEPDIR)/libgnu_a-wcrtomb.Po
-rm -f ./$(DEPDIR)/libgnu_a-wctype-h.Po
-rm -f ./$(DEPDIR)/libgnu_a-wcwidth.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-mutex.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-once.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-recmutex.Po
-rm -f ./$(DEPDIR)/libgnu_a-windows-rwlock.Po
-rm -f ./$(DEPDIR)/libgnu_a-wmemchr.Po
-rm -f ./$(DEPDIR)/libgnu_a-wmempcpy.Po
-rm -f ./$(DEPDIR)/libgnu_a-xsize.Po
-rm -f glthread/$(DEPDIR)/libgnu_a-lock.Po
-rm -f glthread/$(DEPDIR)/libgnu_a-threadlib.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray-skeleton.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_at_failure.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_emplace_enlarge.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_finalize.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_resize.Po
-rm -f malloc/$(DEPDIR)/libgnu_a-dynarray_resize_clear.Po
-rm -f uniwidth/$(DEPDIR)/libgnu_a-width.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic \
maintainer-clean-local
@@ -4090,22 +4454,22 @@ ps-am:
uninstall-am:
.MAKE: $(am__recursive_targets) all check install install-am \
install-strip
install-exec install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
check-am clean clean-generic clean-noinstLIBRARIES \
clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \
distclean-compile distclean-generic distclean-local \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-local mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-local pdf pdf-am ps ps-am tags \
tags-am uninstall uninstall-am
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--depfiles check check-am clean clean-generic \
clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-local distclean-tags distdir dvi dvi-am html html-am \
info info-am install install-am install-data install-data-am \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
install-man install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-local mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \
pdf-am ps ps-am tags tags-am uninstall uninstall-am
.PRECIOUS: Makefile
@@ -5376,3 +5740,10 @@ maintainer-clean-local: distclean-gnulib-libobjs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# Tell GNU make to disable its built-in pattern rules.
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
@@ -0,0 +1,312 @@
#ifndef GRUB_REDOXFS_H
#define GRUB_REDOXFS_H
#include <stddef.h>
#if defined(GRUB_BUILD) || defined(GRUB_MACHINE) || defined(GRUB_MACHINE_EFI)
#include <grub/err.h>
#include <grub/types.h>
#else
#include <stdint.h>
typedef uint64_t grub_uint64_t;
typedef uint32_t grub_uint32_t;
typedef uint16_t grub_uint16_t;
typedef uint8_t grub_uint8_t;
typedef int64_t grub_int64_t;
typedef uint64_t grub_off_t;
typedef uint64_t grub_disk_addr_t;
typedef int64_t grub_ssize_t;
typedef uint64_t grub_size_t;
/* On x86 (our test host), these are identity — on big-endian they byte-swap. */
#define grub_le_to_cpu16(x) (x)
#define grub_le_to_cpu32(x) (x)
#define grub_le_to_cpu64(x) (x)
typedef enum {
GRUB_ERR_NONE = 0,
GRUB_ERR_BAD_FS,
GRUB_ERR_OUT_OF_RANGE,
GRUB_ERR_READ_ERROR,
GRUB_ERR_FILE_NOT_FOUND,
GRUB_ERR_OUT_OF_MEMORY,
} grub_err_t;
#define GRUB_MAX_ERRMSG 256
extern grub_err_t grub_errno;
extern char grub_errmsg[GRUB_MAX_ERRMSG];
#endif
#ifndef GRUB_PACKED
#define GRUB_PACKED __attribute__((packed))
#endif
#define REDOXFS_BLOCK_SIZE 4096
#define REDOXFS_SIGNATURE "RedoxFS"
#define REDOXFS_VERSION 8
#define REDOXFS_RECORD_LEVEL 5
#define REDOXFS_RECORD_SIZE (REDOXFS_BLOCK_SIZE << REDOXFS_RECORD_LEVEL)
#define REDOXFS_DIR_ENTRY_MAX_LENGTH 252
#define REDOXFS_TREE_LIST_ENTRIES 254
#define REDOXFS_BLOCK_LIST_ENTRIES 256
#define REDOXFS_HTREE_IDX_ENTRIES 204
#define REDOXFS_NODE_LEVEL0_COUNT 128
#define REDOXFS_NODE_LEVEL1_COUNT 64
#define REDOXFS_NODE_LEVEL2_COUNT 32
#define REDOXFS_NODE_LEVEL3_COUNT 16
#define REDOXFS_NODE_LEVEL4_COUNT 8
#define REDOXFS_MODE_TYPE 0xF000
#define REDOXFS_MODE_FILE 0x8000
#define REDOXFS_MODE_DIR 0x4000
#define REDOXFS_MODE_SYMLINK 0xA000
#define REDOXFS_FLAG_INLINE_DATA 0x1
struct grub_redoxfs_blockptr {
grub_uint64_t addr;
grub_uint64_t hash;
} GRUB_PACKED;
struct grub_redoxfs_treeptr {
grub_uint32_t id;
} GRUB_PACKED;
struct grub_redoxfs_header {
grub_uint8_t signature[8];
grub_uint64_t version;
grub_uint8_t uuid[16];
grub_uint64_t size;
grub_uint64_t generation;
struct grub_redoxfs_blockptr tree;
struct grub_redoxfs_blockptr alloc;
grub_uint8_t key_slots[3072];
struct grub_redoxfs_blockptr release;
grub_uint8_t padding[904];
grub_uint8_t encrypted_hash[16];
grub_uint64_t hash;
} GRUB_PACKED;
struct grub_redoxfs_node {
grub_uint16_t mode;
grub_uint32_t uid;
grub_uint32_t gid;
grub_uint32_t links;
grub_uint64_t size;
grub_uint64_t blocks;
grub_uint64_t ctime;
grub_uint32_t ctime_nsec;
grub_uint64_t mtime;
grub_uint32_t mtime_nsec;
grub_uint64_t atime;
grub_uint32_t atime_nsec;
grub_uint32_t record_level;
grub_uint32_t flags;
grub_uint8_t padding[54];
grub_uint8_t level_data[3968];
} GRUB_PACKED;
struct grub_redoxfs_treelist {
struct grub_redoxfs_blockptr ptrs[REDOXFS_TREE_LIST_ENTRIES];
grub_uint8_t full_flags[32];
} GRUB_PACKED;
struct grub_redoxfs_htreeptr {
grub_uint32_t htree_hash;
struct grub_redoxfs_blockptr ptr;
} GRUB_PACKED;
struct grub_redoxfs_htreenode {
struct grub_redoxfs_htreeptr ptrs[REDOXFS_HTREE_IDX_ENTRIES];
grub_uint8_t padding[16];
} GRUB_PACKED;
struct grub_redoxfs_dirlist {
grub_uint8_t entry_bytes[4092];
grub_uint16_t count;
grub_uint16_t entry_bytes_len;
} GRUB_PACKED;
struct grub_redoxfs_blocklist {
struct grub_redoxfs_blockptr ptrs[REDOXFS_BLOCK_LIST_ENTRIES];
} GRUB_PACKED;
struct grub_redoxfs_data {
struct grub_redoxfs_header header;
void *disk;
};
struct grub_fshelp_node {
struct grub_redoxfs_data *data;
struct grub_redoxfs_node node;
};
static inline grub_uint64_t
grub_redoxfs_blockptr_addr (const struct grub_redoxfs_blockptr *ptr)
{
return grub_le_to_cpu64 (ptr->addr);
}
static inline grub_uint64_t
grub_redoxfs_blockptr_hash (const struct grub_redoxfs_blockptr *ptr)
{
return grub_le_to_cpu64 (ptr->hash);
}
static inline int
grub_redoxfs_blockptr_is_null (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_redoxfs_blockptr_addr (ptr) >> 8) == 0;
}
static inline int
grub_redoxfs_blockptr_is_marker (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_redoxfs_blockptr_addr (ptr) | 0xFULL) == 0xFFFFFFFFFFFFFFFFULL
&& grub_redoxfs_blockptr_hash (ptr) == 0xFFFFFFFFFFFFFFFFULL;
}
static inline grub_uint64_t
grub_redoxfs_blockptr_block_index (const struct grub_redoxfs_blockptr *ptr)
{
return grub_redoxfs_blockptr_addr (ptr) >> 8;
}
static inline grub_uint8_t
grub_redoxfs_blockptr_level (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_uint8_t) (grub_redoxfs_blockptr_addr (ptr) & 0xF);
}
static inline grub_uint8_t
grub_redoxfs_blockptr_decomp_level (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_uint8_t) ((grub_redoxfs_blockptr_addr (ptr) >> 4) & 0xF);
}
static inline grub_disk_addr_t
grub_redoxfs_blockptr_sector (const struct grub_redoxfs_blockptr *ptr)
{
return (grub_disk_addr_t) grub_redoxfs_blockptr_block_index (ptr)
* (REDOXFS_BLOCK_SIZE / 512);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i3 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) ((grub_le_to_cpu32 (ptr->id) >> 24) & 0xFF);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i2 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) ((grub_le_to_cpu32 (ptr->id) >> 16) & 0xFF);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i1 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) ((grub_le_to_cpu32 (ptr->id) >> 8) & 0xFF);
}
static inline grub_uint8_t
grub_redoxfs_treeptr_i0 (const struct grub_redoxfs_treeptr *ptr)
{
return (grub_uint8_t) (grub_le_to_cpu32 (ptr->id) & 0xFF);
}
static inline int
grub_redoxfs_header_is_encrypted (const struct grub_redoxfs_header *hdr)
{
grub_uint8_t expected[16] = { 0 };
grub_uint64_t h = grub_le_to_cpu64 (hdr->hash);
grub_size_t i;
for (i = 0; i < 8; i++)
expected[i] = (grub_uint8_t) (h >> (8 * i));
for (i = 0; i < 16; i++)
if (hdr->encrypted_hash[i] != expected[i])
return 1;
return 0;
}
grub_uint64_t grub_redoxfs_seahash (const void *data, grub_size_t size);
grub_err_t grub_redoxfs_probe (void *disk);
struct grub_redoxfs_data *grub_redoxfs_mount (void *disk);
void grub_redoxfs_unmount (struct grub_redoxfs_data *data);
grub_err_t grub_redoxfs_read_block (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_blockptr *ptr,
void *buf);
grub_err_t grub_redoxfs_read_block_cap (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_blockptr *ptr,
void *buf, grub_size_t buf_cap);
grub_err_t grub_redoxfs_read_tree (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_treeptr *tptr,
void *buf);
grub_err_t grub_redoxfs_read_node (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_treeptr *tptr,
struct grub_redoxfs_node *node);
grub_err_t grub_redoxfs_read_root (const struct grub_redoxfs_data *data,
struct grub_redoxfs_node *node);
grub_uint32_t grub_redoxfs_htree_hash (const char *name, grub_size_t namelen);
grub_err_t grub_redoxfs_dir_get_info (const struct grub_redoxfs_node *dir,
int *depth_out,
struct grub_redoxfs_blockptr *root_ptr_out);
grub_err_t grub_redoxfs_dir_lookup (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *dir,
const char *name,
struct grub_redoxfs_treeptr *result);
typedef int (*grub_redoxfs_dir_iter_hook_t) (const char *name,
grub_size_t namelen,
const struct grub_redoxfs_treeptr *ptr,
void *hook_data);
grub_err_t grub_redoxfs_dir_iterate (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *dir,
grub_redoxfs_dir_iter_hook_t hook,
void *hook_data);
grub_err_t path_lookup (const struct grub_redoxfs_data *data,
const char *path,
int follow_symlinks,
int symlink_depth,
struct grub_redoxfs_node *out_node);
grub_err_t grub_redoxfs_read_record (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *node,
grub_uint64_t record_index,
grub_uint32_t record_level,
void *buf);
grub_ssize_t grub_redoxfs_read_file_data (const struct grub_redoxfs_data *data,
const struct grub_redoxfs_node *node,
grub_off_t offset,
void *buf,
grub_size_t len);
#ifndef GRUB_BUILD
grub_err_t grub_disk_read (void *disk, grub_disk_addr_t sector,
grub_off_t offset, grub_size_t size, void *buf);
#endif
_Static_assert (sizeof (struct grub_redoxfs_blockptr) == 16,
"grub_redoxfs_blockptr must be 16 bytes");
_Static_assert (sizeof (struct grub_redoxfs_htreeptr) == 20,
"grub_redoxfs_htreeptr must be 20 bytes");
_Static_assert (sizeof (struct grub_redoxfs_header) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_header must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_node) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_node must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_treelist) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_treelist must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_htreenode) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_htreenode must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_dirlist) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_dirlist must be 4096 bytes");
_Static_assert (sizeof (struct grub_redoxfs_blocklist) == REDOXFS_BLOCK_SIZE,
"grub_redoxfs_blocklist must be 4096 bytes");
#endif
@@ -1,121 +1,61 @@
dnl 'extern inline' a la ISO C99.
dnl Copyright 2012-2022 Free Software Foundation, Inc.
dnl Copyright 2012-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_EXTERN_INLINE],
[
AC_CACHE_CHECK([whether ctype.h defines __header_inline],
[gl_cv_have___header_inline],
[AC_PREPROC_IFELSE(
[AC_LANG_SOURCE([[#include <ctype.h>
#ifndef __header_inline
#error "<ctype.h> does not define __header_inline"
#endif
]])],
[gl_cv_have___header_inline=yes],
[gl_cv_have___header_inline=no])])
if test "$gl_cv_have___header_inline" = yes; then
AC_DEFINE([HAVE___HEADER_INLINE], [1],
[Define to 1 if ctype.h defines __header_inline.])
fi
AH_VERBATIM([HAVE___HEADER_INLINE_1],
AH_VERBATIM([extern_inline],
[/* Please see the Gnulib manual for how to use these macros.
Suppress extern inline with HP-UX cc, as it appears to be broken; see
<https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
<http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
Suppress extern inline with Sun C in standards-conformance mode, as it
mishandles inline functions that call each other. E.g., for 'inline void f
(void) { } inline void g (void) { f (); }', c99 incorrectly complains
'reference to static identifier "f" in extern inline function'.
This bug was observed with Oracle Developer Studio 12.6
(Sun C 5.15 SunOS_sparc 2017/05/30).
This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
on configurations that mistakenly use 'static inline' to implement
functions or macros in standard C headers like <ctype.h>. For example,
if isdigit is mistakenly implemented via a static inline function,
a program containing an extern inline function that calls isdigit
may not work since the C standard prohibits extern inline functions
from calling static functions (ISO C 99 section 6.7.4.(3).
This bug is known to occur on:
OS X 10.8 and earlier; see:
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
DragonFly; see
http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
FreeBSD; see:
https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
Assume DragonFly and FreeBSD will be similar.
GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
inline semantics, unless -fgnu89-inline is used. It defines a macro
__GNUC_STDC_INLINE__ to indicate this situation or a macro
__GNUC_GNU_INLINE__ to indicate the opposite situation.
GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
semantics but warns, unless -fgnu89-inline is used:
warning: C99 inline functions are not supported; using GNU89
warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
*/
#if (((defined __APPLE__ && defined __MACH__) \
|| defined __DragonFly__ || defined __FreeBSD__) \
&& (defined HAVE___HEADER_INLINE \
? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
&& ! defined __clang__) \
: ((! defined _DONT_USE_CTYPE_INLINE_ \
&& (defined __GNUC__ || defined __cplusplus)) \
|| (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
&& defined __GNUC__ && ! defined __cplusplus))))
# define _GL_EXTERN_INLINE_STDHEADER_BUG
#endif
Suppress the use of extern inline on Apple's platforms, as Libc at least
through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g.,
<http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
Perhaps Apple will fix this some day. */
#if ((__GNUC__ \
? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
: (199901L <= __STDC_VERSION__ \
&& !defined __HP_cc \
&& !defined __PGI \
&& !(defined __SUNPRO_C && __STDC__))) \
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
&& !defined __APPLE__)
# define _GL_INLINE inline
# define _GL_EXTERN_INLINE extern inline
# define _GL_EXTERN_INLINE_IN_USE
#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
&& !defined __APPLE__)
# if __GNUC_GNU_INLINE__
/* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
# else
# define _GL_INLINE extern inline
# endif
# define _GL_EXTERN_INLINE extern
# define _GL_EXTERN_INLINE_IN_USE
#else
# define _GL_INLINE _GL_UNUSED static
# define _GL_EXTERN_INLINE _GL_UNUSED static
# define _GL_INLINE static _GL_UNUSED
# define _GL_EXTERN_INLINE static _GL_UNUSED
#endif
/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
suppress bogus "no previous prototype for 'FOO'"
and "no previous declaration for 'FOO'" diagnostics,
when FOO is an inline function in the header; see
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
# define _GL_INLINE_HEADER_CONST_PRAGMA
# else
# define _GL_INLINE_HEADER_CONST_PRAGMA \
_Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
# endif
/* Suppress GCC's bogus "no previous prototype for 'FOO'"
and "no previous declaration for 'FOO'" diagnostics,
when FOO is an inline function in the header; see
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>. */
# define _GL_INLINE_HEADER_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
@@ -0,0 +1,130 @@
dnl 'extern inline' a la ISO C99.
dnl Copyright 2012-2022 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_EXTERN_INLINE],
[
AC_CACHE_CHECK([whether ctype.h defines __header_inline],
[gl_cv_have___header_inline],
[AC_PREPROC_IFELSE(
[AC_LANG_SOURCE([[#include <ctype.h>
#ifndef __header_inline
#error "<ctype.h> does not define __header_inline"
#endif
]])],
[gl_cv_have___header_inline=yes],
[gl_cv_have___header_inline=no])])
if test "$gl_cv_have___header_inline" = yes; then
AC_DEFINE([HAVE___HEADER_INLINE], [1],
[Define to 1 if ctype.h defines __header_inline.])
fi
AH_VERBATIM([HAVE___HEADER_INLINE_1],
[/* Please see the Gnulib manual for how to use these macros.
Suppress extern inline with HP-UX cc, as it appears to be broken; see
<https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
Suppress extern inline with Sun C in standards-conformance mode, as it
mishandles inline functions that call each other. E.g., for 'inline void f
(void) { } inline void g (void) { f (); }', c99 incorrectly complains
'reference to static identifier "f" in extern inline function'.
This bug was observed with Oracle Developer Studio 12.6
(Sun C 5.15 SunOS_sparc 2017/05/30).
Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
on configurations that mistakenly use 'static inline' to implement
functions or macros in standard C headers like <ctype.h>. For example,
if isdigit is mistakenly implemented via a static inline function,
a program containing an extern inline function that calls isdigit
may not work since the C standard prohibits extern inline functions
from calling static functions (ISO C 99 section 6.7.4.(3).
This bug is known to occur on:
OS X 10.8 and earlier; see:
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
DragonFly; see
http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
FreeBSD; see:
https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
Assume DragonFly and FreeBSD will be similar.
GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
inline semantics, unless -fgnu89-inline is used. It defines a macro
__GNUC_STDC_INLINE__ to indicate this situation or a macro
__GNUC_GNU_INLINE__ to indicate the opposite situation.
GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
semantics but warns, unless -fgnu89-inline is used:
warning: C99 inline functions are not supported; using GNU89
warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
*/
#if (((defined __APPLE__ && defined __MACH__) \
|| defined __DragonFly__ || defined __FreeBSD__) \
&& (defined HAVE___HEADER_INLINE \
? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
&& ! defined __clang__) \
: ((! defined _DONT_USE_CTYPE_INLINE_ \
&& (defined __GNUC__ || defined __cplusplus)) \
|| (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
&& defined __GNUC__ && ! defined __cplusplus))))
# define _GL_EXTERN_INLINE_STDHEADER_BUG
#endif
#if ((__GNUC__ \
? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
: (199901L <= __STDC_VERSION__ \
&& !defined __HP_cc \
&& !defined __PGI \
&& !(defined __SUNPRO_C && __STDC__))) \
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
# define _GL_INLINE inline
# define _GL_EXTERN_INLINE extern inline
# define _GL_EXTERN_INLINE_IN_USE
#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
/* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
# else
# define _GL_INLINE extern inline
# endif
# define _GL_EXTERN_INLINE extern
# define _GL_EXTERN_INLINE_IN_USE
#else
# define _GL_INLINE _GL_UNUSED static
# define _GL_EXTERN_INLINE _GL_UNUSED static
#endif
/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
suppress bogus "no previous prototype for 'FOO'"
and "no previous declaration for 'FOO'" diagnostics,
when FOO is an inline function in the header; see
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
# define _GL_INLINE_HEADER_CONST_PRAGMA
# else
# define _GL_INLINE_HEADER_CONST_PRAGMA \
_Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
# endif
# define _GL_INLINE_HEADER_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
_Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
_GL_INLINE_HEADER_CONST_PRAGMA
# define _GL_INLINE_HEADER_END \
_Pragma ("GCC diagnostic pop")
#else
# define _GL_INLINE_HEADER_BEGIN
# define _GL_INLINE_HEADER_END
#endif])
])
@@ -0,0 +1,34 @@
# glibc21.m4 serial 5
dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
# Test for the GNU C Library, version 2.1 or newer, or uClibc.
# From Bruno Haible.
AC_DEFUN([gl_GLIBC21],
[
AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
[ac_cv_gnu_library_2_1],
[AC_EGREP_CPP([Lucky],
[
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
Lucky GNU user
#endif
#endif
#ifdef __UCLIBC__
Lucky user
#endif
],
[ac_cv_gnu_library_2_1=yes],
[ac_cv_gnu_library_2_1=no])
]
)
AC_SUBST([GLIBC21])
GLIBC21="$ac_cv_gnu_library_2_1"
]
)
@@ -0,0 +1,113 @@
# longlong.m4 serial 17
dnl Copyright (C) 1999-2007, 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_LONG_LONG_INT if 'long long int' works.
# This fixes a bug in Autoconf 2.61, and can be faster
# than what's in Autoconf 2.62 through 2.68.
# Note: If the type 'long long int' exists but is only 32 bits large
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
# defined. In this case you can treat 'long long int' like 'long int'.
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
[
AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
[ac_cv_type_long_long_int=yes
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
if test $ac_cv_type_long_long_int = yes; then
dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
dnl If cross compiling, assume the bug is not important, since
dnl nobody cross compiles for this platform as far as we know.
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[@%:@include <limits.h>
@%:@ifndef LLONG_MAX
@%:@ define HALF \
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
@%:@ define LLONG_MAX (HALF - 1 + HALF)
@%:@endif]],
[[long long int n = 1;
int i;
for (i = 0; ; i++)
{
long long int m = n << i;
if (m >> i != n)
return 1;
if (LLONG_MAX / 2 < m)
break;
}
return 0;]])],
[],
[ac_cv_type_long_long_int=no],
[:])
fi
fi])
if test $ac_cv_type_long_long_int = yes; then
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
[Define to 1 if the system has the type 'long long int'.])
fi
])
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
# This fixes a bug in Autoconf 2.61, and can be faster
# than what's in Autoconf 2.62 through 2.68.
# Note: If the type 'unsigned long long int' exists but is only 32 bits
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
# will not be defined. In this case you can treat 'unsigned long long int'
# like 'unsigned long int'.
AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
[
AC_CACHE_CHECK([for unsigned long long int],
[ac_cv_type_unsigned_long_long_int],
[ac_cv_type_unsigned_long_long_int=yes
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
AC_LINK_IFELSE(
[_AC_TYPE_LONG_LONG_SNIPPET],
[],
[ac_cv_type_unsigned_long_long_int=no])
fi])
if test $ac_cv_type_unsigned_long_long_int = yes; then
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
[Define to 1 if the system has the type 'unsigned long long int'.])
fi
])
# Expands to a C program that can be used to test for simultaneous support
# of 'long long' and 'unsigned long long'. We don't want to say that
# 'long long' is available if 'unsigned long long' is not, or vice versa,
# because too many programs rely on the symmetry between signed and unsigned
# integer types (excluding 'bool').
AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
[
AC_LANG_PROGRAM(
[[/* For now, do not test the preprocessor; as of 2007 there are too many
implementations with broken preprocessors. Perhaps this can
be revisited in 2012. In the meantime, code should not expect
#if to work with literals wider than 32 bits. */
/* Test literals. */
long long int ll = 9223372036854775807ll;
long long int nll = -9223372036854775807LL;
unsigned long long int ull = 18446744073709551615ULL;
/* Test constant expressions. */
typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
? 1 : -1)];
typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
? 1 : -1)];
int i = 63;]],
[[/* Test availability of runtime routines for shift and division. */
long long int llmax = 9223372036854775807ll;
unsigned long long int ullmax = 18446744073709551615ull;
return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
| (llmax / ll) | (llmax % ll)
| (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
| (ullmax / ull) | (ullmax % ull));]])
])
@@ -16,7 +16,7 @@ VERSION = @VERSION@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
SED = @SED@
SHELL = @SHELL@
SHELL = /bin/sh
@SET_MAKE@
srcdir = @srcdir@
@@ -84,13 +84,13 @@ CATALOGS = @CATALOGS@
.po.mo:
@echo "$(MSGFMT) -c -o $@ $<"; \
$(MSGFMT) --endianness=little -c -o t-$@ $< && mv t-$@ $@
$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
.po.gmo:
@lang=`echo $* | sed -e 's,.*/,,'`; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) --endianness=little -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) --endianness=little -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
.sin.sed:
sed -e '/^#/d' $< > t-$@
@@ -142,7 +142,7 @@ stamp-po: $(srcdir)/$(DOMAIN).pot
# The determination of whether the package xyz is a GNU one is based on the
# heuristic whether some file in the top level directory mentions "GNU xyz".
# If GNU 'find' is available, we avoid grepping through monster files.
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in $(srcdir)/POTFILES-shell.in remove-potcdate.sed
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
else \
@@ -175,32 +175,8 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in $(srcdir)/POTFILES-shell
--package-version='@VERSION@' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
esac; \
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: @XGETTEXT_EXTRA_OPTIONS@ \
--files-from=$(srcdir)/POTFILES-shell.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \
--join-existing --language=Shell \
--keyword=gettext_quoted --keyword=gettext_printf \
;; \
*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: @XGETTEXT_EXTRA_OPTIONS@ \
--files-from=$(srcdir)/POTFILES-shell.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--package-name="$${package_gnu}@PACKAGE@" \
--package-version='@VERSION@' \
--msgid-bugs-address="$$msgid_bugs_address" \
--join-existing --language=Shell \
--keyword=gettext_quoted --keyword=gettext_printf \
;; \
esac; \
esac
test ! -f $(DOMAIN).po || { \
sed -f grub.d.sed < $(DOMAIN).po > $(DOMAIN).1po && \
mv $(DOMAIN).1po $(DOMAIN).po; \
if test -f $(srcdir)/$(DOMAIN).pot; then \
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
@@ -0,0 +1,478 @@
# Makefile for PO directory in any package using GNU gettext.
# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext
# functionality.
# Please note that the actual code of GNU gettext is covered by the GNU
# General Public License and is *not* in the public domain.
#
# Origin: gettext-0.18.3
GETTEXT_MACRO_VERSION = 0.18
PACKAGE = @PACKAGE@
VERSION = @VERSION@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
SED = @SED@
SHELL = @SHELL@
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
datadir = @datadir@
localedir = @localedir@
gettextsrcdir = $(datadir)/gettext/po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
# We use $(mkdir_p).
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
# @install_sh@ does not start with $(SHELL), so we add it.
# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
# versions, $(mkinstalldirs) and $(install_sh) are unused.
mkinstalldirs = $(SHELL) @install_sh@ -d
install_sh = $(SHELL) @install_sh@
MKDIR_P = @MKDIR_P@
mkdir_p = @mkdir_p@
GMSGFMT_ = @GMSGFMT@
GMSGFMT_no = @GMSGFMT@
GMSGFMT_yes = @GMSGFMT_015@
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
MSGFMT_ = @MSGFMT@
MSGFMT_no = @MSGFMT@
MSGFMT_yes = @MSGFMT_015@
MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
XGETTEXT_ = @XGETTEXT@
XGETTEXT_no = @XGETTEXT@
XGETTEXT_yes = @XGETTEXT_015@
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
MSGMERGE = msgmerge
MSGMERGE_UPDATE = @MSGMERGE@ --update
MSGINIT = msginit
MSGCONV = msgconv
MSGFILTER = msgfilter
POFILES = @POFILES@
GMOFILES = @GMOFILES@
UPDATEPOFILES = @UPDATEPOFILES@
DUMMYPOFILES = @DUMMYPOFILES@
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
$(POFILES) $(GMOFILES) \
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
POTFILES = \
CATALOGS = @CATALOGS@
# Makevars gets inserted here. (Don't remove this line!)
.SUFFIXES:
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
.po.mo:
@echo "$(MSGFMT) -c -o $@ $<"; \
$(MSGFMT) --endianness=little -c -o t-$@ $< && mv t-$@ $@
.po.gmo:
@lang=`echo $* | sed -e 's,.*/,,'`; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) --endianness=little -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) --endianness=little -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
.sin.sed:
sed -e '/^#/d' $< > t-$@
mv t-$@ $@
all: all-@USE_NLS@
all-yes: stamp-po
all-no:
# Ensure that the gettext macros and this Makefile.in.in are in sync.
CHECK_MACRO_VERSION = \
test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
exit 1; \
}
# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
# we don't want to bother translators with empty POT files). We assume that
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
# In this case, stamp-po is a nop (i.e. a phony target).
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
# been loosely updated. Its purpose is that when a developer or translator
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
# invocations of "make" will do nothing. This timestamp would not be necessary
# if updating the $(CATALOGS) would always touch them; however, the rule for
# $(POFILES) has been designed to not touch files that don't need to be
# changed.
stamp-po: $(srcdir)/$(DOMAIN).pot
@$(CHECK_MACRO_VERSION)
test ! -f $(srcdir)/$(DOMAIN).pot || \
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
echo "touch stamp-po" && \
echo timestamp > stamp-poT && \
mv stamp-poT stamp-po; \
}
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
# otherwise packages like GCC can not be built if only parts of the source
# have been downloaded.
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
# The determination of whether the package xyz is a GNU one is based on the
# heuristic whether some file in the top level directory mentions "GNU xyz".
# If GNU 'find' is available, we avoid grepping through monster files.
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in $(srcdir)/POTFILES-shell.in remove-potcdate.sed
if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
else \
LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
fi; \
} | grep -v 'libtool:' >/dev/null; then \
package_gnu='GNU '; \
else \
package_gnu=''; \
fi; \
if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
else \
msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
fi; \
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--package-name="$${package_gnu}@PACKAGE@" \
--package-version='@VERSION@' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
esac; \
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: @XGETTEXT_EXTRA_OPTIONS@ \
--files-from=$(srcdir)/POTFILES-shell.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \
--join-existing --language=Shell \
--keyword=gettext_quoted --keyword=gettext_printf \
;; \
*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: @XGETTEXT_EXTRA_OPTIONS@ \
--files-from=$(srcdir)/POTFILES-shell.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--package-name="$${package_gnu}@PACKAGE@" \
--package-version='@VERSION@' \
--msgid-bugs-address="$$msgid_bugs_address" \
--join-existing --language=Shell \
--keyword=gettext_quoted --keyword=gettext_printf \
;; \
esac; \
test ! -f $(DOMAIN).po || { \
sed -f grub.d.sed < $(DOMAIN).po > $(DOMAIN).1po && \
mv $(DOMAIN).1po $(DOMAIN).po; \
if test -f $(srcdir)/$(DOMAIN).pot; then \
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
else \
rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
fi; \
else \
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
fi; \
}
# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
# every "make" invocation, only create it when it is missing.
# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
$(srcdir)/$(DOMAIN).pot:
$(MAKE) $(DOMAIN).pot-update
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
# Note that a PO file is not touched if it doesn't need to be changed.
$(POFILES): $(srcdir)/$(DOMAIN).pot
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
if test -f "$(srcdir)/$${lang}.po"; then \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
cd $(srcdir) \
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
*) \
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
esac; \
}; \
else \
$(MAKE) $${lang}.po-create; \
fi
install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
if test "$(PACKAGE)" = "gettext-tools"; then \
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
for file in $(DISTFILES.common) Makevars.template; do \
$(INSTALL_DATA) $(srcdir)/$$file \
$(DESTDIR)$(gettextsrcdir)/$$file; \
done; \
for file in Makevars; do \
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
done; \
else \
: ; \
fi
install-data-no: all
install-data-yes: all
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
dir=$(localedir)/$$lang/LC_MESSAGES; \
$(mkdir_p) $(DESTDIR)$$dir; \
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
if test -n "$$lc"; then \
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
for file in *; do \
if test -f $$file; then \
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
fi; \
done); \
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
else \
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
:; \
else \
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
fi; \
fi; \
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
fi; \
done; \
done
install-strip: install
installdirs: installdirs-exec installdirs-data
installdirs-exec:
installdirs-data: installdirs-data-@USE_NLS@
if test "$(PACKAGE)" = "gettext-tools"; then \
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
else \
: ; \
fi
installdirs-data-no:
installdirs-data-yes:
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
dir=$(localedir)/$$lang/LC_MESSAGES; \
$(mkdir_p) $(DESTDIR)$$dir; \
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
if test -n "$$lc"; then \
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
for file in *; do \
if test -f $$file; then \
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
fi; \
done); \
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
else \
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
:; \
else \
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
fi; \
fi; \
fi; \
done; \
done
# Define this as empty until I found a useful application.
installcheck:
uninstall: uninstall-exec uninstall-data
uninstall-exec:
uninstall-data: uninstall-data-@USE_NLS@
if test "$(PACKAGE)" = "gettext-tools"; then \
for file in $(DISTFILES.common) Makevars.template; do \
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
done; \
else \
: ; \
fi
uninstall-data-no:
uninstall-data-yes:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
done; \
done
check: all
info dvi ps pdf html tags TAGS ctags CTAGS ID:
mostlyclean:
rm -f remove-potcdate.sed
rm -f stamp-poT
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
rm -fr *.o
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f stamp-po $(GMOFILES)
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir:
$(MAKE) update-po
@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
dist2: stamp-po $(DISTFILES)
dists="$(DISTFILES)"; \
if test "$(PACKAGE)" = "gettext-tools"; then \
dists="$$dists Makevars.template"; \
fi; \
if test -f $(srcdir)/$(DOMAIN).pot; then \
dists="$$dists $(DOMAIN).pot stamp-po"; \
fi; \
if test -f $(srcdir)/ChangeLog; then \
dists="$$dists ChangeLog"; \
fi; \
for i in 0 1 2 3 4 5 6 7 8 9; do \
if test -f $(srcdir)/ChangeLog.$$i; then \
dists="$$dists ChangeLog.$$i"; \
fi; \
done; \
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
for file in $$dists; do \
if test -f $$file; then \
cp -p $$file $(distdir) || exit 1; \
else \
cp -p $(srcdir)/$$file $(distdir) || exit 1; \
fi; \
done
update-po: Makefile
$(MAKE) $(DOMAIN).pot-update
test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
$(MAKE) update-gmo
# General rule for creating PO files.
.nop.po-create:
@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
exit 1
# General rule for updating PO files.
.nop.po-update:
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
tmpdir=`pwd`; \
echo "$$lang:"; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
cd $(srcdir); \
if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
$(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
*) \
$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
esac; \
}; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
:; \
else \
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
exit 1; \
fi; \
fi; \
else \
echo "msgmerge for $$lang.po failed!" 1>&2; \
rm -f $$tmpdir/$$lang.new.po; \
fi
$(DUMMYPOFILES):
update-gmo: Makefile $(GMOFILES)
@:
# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
# because execution permission bits may not work on the current file system.
# Use @SHELL@, which is the shell determined by autoconf for the use by its
# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
cd $(top_builddir) \
&& @SHELL@ ./config.status $(subdir)/$@.in po-directories
force:
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
@@ -0,0 +1,53 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS =
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
# context. Possible values are "yes" and "no". Set this to yes if the
# package uses functions taking also a message context, like pgettext(), or
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
USE_MSGCTXT = no
# These options get passed to msgmerge.
# Useful options are in particular:
# --previous to keep previous msgids of translated messages,
# --quiet to reduce the verbosity.
MSGMERGE_OPTIONS =
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15 from Makefile.am.
# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -70,6 +70,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
am__rm_f = rm -f $(am__rm_f_notfound)
am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -140,9 +142,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/open-cloexec.m4 \
$(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \
$(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
$(top_srcdir)/m4/pid_t.m4 $(top_srcdir)/m4/pipe.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
$(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/pipe.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
$(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/reallocarray.m4 $(top_srcdir)/m4/regex.m4 \
@@ -150,28 +151,27 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/setlocale_null.m4 \
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/std-gnu11.m4 \
$(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stdbool.m4 \
$(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
$(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
$(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdalign.m4 \
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
$(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \
$(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/threadlib.m4 \
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/unistd-safer.m4 \
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vararrays.m4 \
$(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/visibility.m4 \
$(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/warn-on-use.m4 \
$(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
$(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
$(top_srcdir)/m4/wcwidth.m4 $(top_srcdir)/m4/wint_t.m4 \
$(top_srcdir)/m4/wmemchr.m4 $(top_srcdir)/m4/wmempcpy.m4 \
$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/year2038.m4 \
$(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \
$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/vsnprintf.m4 \
$(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcrtomb.m4 \
$(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/wmemchr.m4 \
$(top_srcdir)/m4/wmempcpy.m4 $(top_srcdir)/m4/xsize.m4 \
$(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -220,10 +220,9 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
{ test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
am__installdirs = "$(DESTDIR)$(bashcompletiondir)"
DATA = $(bashcompletion_DATA)
@@ -271,6 +270,8 @@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
CMP = @CMP@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
@@ -292,6 +293,7 @@ ENOLINK_VALUE = @ENOLINK_VALUE@
EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
ERRNO_H = @ERRNO_H@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FLOAT_H = @FLOAT_H@
FNMATCH_H = @FNMATCH_H@
@@ -1313,8 +1315,10 @@ ac_ct_TARGET_CC = @ac_ct_TARGET_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
am__xargs_n = @am__xargs_n@
bindir = @bindir@
bootdirname = @bootdirname@
build = @build@
@@ -1425,8 +1429,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -1465,7 +1469,10 @@ ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -1524,11 +1531,11 @@ install-strip:
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-$(am__rm_f) $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -1622,3 +1629,10 @@ $(bash_completion_script): $(bash_completion_source) $(top_builddir)/config.stat
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# Tell GNU make to disable its built-in pattern rules.
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
@@ -40,6 +40,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
# shall we use DBus?
# enabled per default on Linux & BSD systems
@@ -33,6 +33,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
@@ -42,6 +42,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(KF6Codecs ${KF_DEP_VERSION} REQUIRED)
find_package(KF6Config ${KF_DEP_VERSION} REQUIRED)
@@ -30,6 +30,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
# shall we use DBus?
# enabled per default on Linux & BSD systems
@@ -49,6 +49,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6Svg ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
# shall we use DBus?
@@ -17,6 +17,8 @@
#include <QHostInfo>
#include <QHostInfo>
#include <QHostInfo>
#include "usernotificationhandler_p.h"
#include "workerbase.h"
@@ -31,6 +31,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
@@ -31,6 +31,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
if(NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU)
option(WITH_X11 "Build with support for QX11Info::appUserTime()" ON)
@@ -42,6 +42,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)
if (WITH_TEXT_TO_SPEECH)
find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED TextToSpeech)
@@ -50,6 +50,7 @@ find_package(Qt6WaylandClientPrivate REQUIRED)
find_package(Qt6WaylandClientPrivate REQUIRED)
find_package(Qt6WaylandClientPrivate REQUIRED)
find_package(Qt6WaylandClientPrivate REQUIRED)
find_package(Qt6WaylandClientPrivate REQUIRED)
set_package_properties(Wayland PROPERTIES
TYPE REQUIRED
)
@@ -74,10 +74,10 @@ void initializeLanguages()
// Ideally setting the LANGUAGE would change the default QLocale too
// but unfortunately this is too late since the QCoreApplication constructor
// already created a QLocale at this stage so we need to set the reset it
////////////////////////////////////////////////// // by triggering the creation and destruction of a QSystemLocale
//////////////////////////////////////////////////// // by triggering the creation and destruction of a QSystemLocale
// this is highly dependent on Qt internals, so may break, but oh well
////////////////////////////////////////////////// QSystemLocale *dummy = new QSystemLocale();
////////////////////////////////////////////////// delete dummy;
//////////////////////////////////////////////////// QSystemLocale *dummy = new QSystemLocale();
//////////////////////////////////////////////////// delete dummy;
}
}
@@ -78,7 +78,7 @@ set_package_properties(PList PROPERTIES
if (CMAKE_SYSTEM_NAME MATCHES Linux)
# Used by the UDisks backend on Linux
#############################find_package(LibMount)
##############################find_package(LibMount)
set_package_properties(LibMount PROPERTIES
TYPE REQUIRED)
endif()
+44 -10
View File
@@ -5,8 +5,9 @@
# ./local/scripts/build-redbear.sh # Default: redbear-full
# ./local/scripts/build-redbear.sh redbear-mini # Minimal validation baseline
# ./local/scripts/build-redbear.sh redbear-full # Full Red Bear desktop/session target
# ./local/scripts/build-redbear.sh redbear-live-mini # Live ISO for minimal target
# ./local/scripts/build-redbear.sh redbear-live-full # Live ISO for full target
# ./local/scripts/build-redbear.sh redbear-live # Canonical full live profile config
# ./local/scripts/build-redbear.sh redbear-live-mini # Text-only mini live profile config
# ./local/scripts/build-redbear.sh redbear-grub-live-mini # Text-only GRUB mini live profile config
# ./local/scripts/build-redbear.sh --upstream redbear-full # Allow Redox/upstream recipe refresh
# APPLY_PATCHES=0 ./local/scripts/build-redbear.sh # Skip patch application
#
@@ -24,6 +25,23 @@ JOBS="${JOBS:-$(nproc)}"
APPLY_PATCHES="${APPLY_PATCHES:-1}"
ALLOW_UPSTREAM=0
canonicalize_config() {
case "$1" in
redbear-mini)
printf '%s\n' "redbear-minimal"
;;
redbear-live-full)
printf '%s\n' "redbear-live"
;;
redbear-live-mini-grub)
printf '%s\n' "redbear-grub-live-mini"
;;
*)
printf '%s\n' "$1"
;;
esac
}
usage() {
cat <<EOF
Usage: $(basename "$0") [OPTIONS] [CONFIG]
@@ -35,7 +53,7 @@ Options:
-h, --help Show this help
Configs:
redbear-mini, redbear-live-mini, redbear-full, redbear-live-full
redbear-mini, redbear-full, redbear-live, redbear-live-mini, redbear-grub-live-mini
EOF
}
@@ -69,18 +87,22 @@ fi
[ ${#POSITIONAL[@]} -eq 1 ] && CONFIG="${POSITIONAL[0]}"
CONFIG="$(canonicalize_config "$CONFIG")"
case "$CONFIG" in
redbear-mini)
CONFIG="redbear-minimal"
redbear-minimal)
;;
redbear-live)
;;
redbear-live-mini)
CONFIG="redbear-live-minimal"
;;
redbear-minimal|redbear-full|redbear-live-minimal|redbear-live-full)
redbear-grub-live-mini)
;;
redbear-full)
;;
*)
echo "ERROR: Unknown config '$CONFIG'"
echo "Supported: redbear-mini, redbear-live-mini, redbear-full, redbear-live-full"
echo "Supported: redbear-mini, redbear-full, redbear-live, redbear-live-mini, redbear-grub-live-mini"
exit 1
;;
esac
@@ -98,6 +120,12 @@ echo ""
cd "$PROJECT_ROOT"
if [ -x "$PROJECT_ROOT/local/scripts/verify-overlay-integrity.sh" ]; then
echo ">>> Verifying overlay integrity (auto-repair)..."
"$PROJECT_ROOT/local/scripts/verify-overlay-integrity.sh" --repair
echo ""
fi
stash_nested_repo_if_dirty() {
local target_dir="$1"
local label="$2"
@@ -193,17 +221,23 @@ if [ "$APPLY_PATCHES" = "1" ]; then
echo ""
fi
if [ -x "$PROJECT_ROOT/local/scripts/verify-overlay-integrity.sh" ]; then
echo ">>> Verifying overlay integrity (strict)..."
"$PROJECT_ROOT/local/scripts/verify-overlay-integrity.sh"
echo ""
fi
if [ ! -f "target/release/repo" ]; then
echo ">>> Building cookbook binary..."
cargo build --release
fi
if [ "$CONFIG" = "redbear-full" ] || [ "$CONFIG" = "redbear-live-full" ]; then
if [ "$CONFIG" = "redbear-full" ] || [ "$CONFIG" = "redbear-live" ]; then
ensure_relibc_desktop_surface
fi
FW_AMD_DIR="$PROJECT_ROOT/local/firmware/amdgpu"
if [ "$CONFIG" != "redbear-minimal" ]; then
if [ "$CONFIG" != "redbear-minimal" ] && [ "$CONFIG" != "redbear-live-mini" ] && [ "$CONFIG" != "redbear-grub-live-mini" ]; then
if [ -d "$FW_AMD_DIR" ] && [ -n "$(ls -A "$FW_AMD_DIR" 2>/dev/null)" ]; then
FW_COUNT=$(ls "$FW_AMD_DIR"/*.bin 2>/dev/null | wc -l)
echo ">>> Found $FW_COUNT AMD firmware blobs"
+5
View File
@@ -160,6 +160,11 @@ else
ls -la recipes/core/kernel/redox.patch recipes/core/base/redox.patch
fi
if [ -x local/scripts/verify-overlay-integrity.sh ]; then
echo "==> Verifying overlay integrity..."
local/scripts/verify-overlay-integrity.sh --repair
fi
echo ""
echo "==> Sync complete."
echo " Previous HEAD: $PREV_HEAD"
+83
View File
@@ -0,0 +1,83 @@
#!/usr/bin/env bash
# test-live-iso-qemu.sh — bounded QEMU smoke test for Red Bear live ISOs.
set -euo pipefail
canonicalize_live_config() {
case "$1" in
redbear-live-full)
printf '%s\n' "redbear-live"
;;
redbear-live-mini-grub)
printf '%s\n' "redbear-grub-live-mini"
;;
*)
printf '%s\n' "$1"
;;
esac
}
usage() {
cat <<'USAGE'
Usage: test-live-iso-qemu.sh [CONFIG_NAME ...]
Boot one or more Red Bear live ISO targets in QEMU/UEFI and verify that each reaches a text
`login:` prompt on the serial console.
Defaults:
redbear-live redbear-live-mini redbear-grub-live-mini
USAGE
}
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" || "${1:-}" == "help" ]]; then
usage
exit 0
fi
configs=("$@")
if [[ ${#configs[@]} -eq 0 ]]; then
configs=(redbear-live redbear-live-mini redbear-grub-live-mini)
fi
for i in "${!configs[@]}"; do
configs[$i]="$(canonicalize_live_config "${configs[$i]}")"
done
for config in "${configs[@]}"; do
case "$config" in
redbear-live|redbear-live-mini|redbear-grub-live-mini)
;;
*)
echo "ERROR: unsupported live ISO target $config" >&2
usage >&2
exit 1
;;
esac
done
arch="${ARCH:-$(uname -m)}"
for config in "${configs[@]}"; do
image="build/$arch/$config.iso"
if [[ ! -f "$image" ]]; then
echo "ERROR: missing ISO $image" >&2
echo "Build it first with: ./scripts/build-iso.sh $config" >&2
exit 1
fi
done
for config in "${configs[@]}"; do
echo "=== Boot-testing $config ==="
expect <<EOF
log_user 1
set timeout 420
spawn make qemu CONFIG_NAME=$config live=yes serial=yes gpu=no net=no
expect "login:"
send "root\r"
expect "assword:"
send "password\r"
expect "Type 'help' for available commands."
send "shutdown\r"
expect eof
EOF
done
+143
View File
@@ -0,0 +1,143 @@
#!/usr/bin/env bash
# verify-overlay-integrity.sh — ensure Red Bear overlay is present and repairable.
#
# Usage:
# ./local/scripts/verify-overlay-integrity.sh
# ./local/scripts/verify-overlay-integrity.sh --repair
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
REPAIR=0
if [ "${1:-}" = "--repair" ]; then
REPAIR=1
fi
cd "$REPO_ROOT"
fail() {
echo "overlay-integrity: ERROR: $*" >&2
exit 1
}
need_file() {
local path="$1"
[ -f "$path" ] || fail "missing file: $path"
}
need_symlink_target() {
local link="$1"
local expected="$2"
local current
if [ ! -L "$link" ]; then
return 1
fi
current="$(readlink "$link")"
[ "$current" = "$expected" ]
}
ensure_link() {
local link="$1"
local target="$2"
if ! need_symlink_target "$link" "$target"; then
if [ "$REPAIR" -eq 1 ] && [ -x "$REPO_ROOT/local/scripts/apply-patches.sh" ]; then
"$REPO_ROOT/local/scripts/apply-patches.sh" >/dev/null
fi
need_symlink_target "$link" "$target" || fail "bad symlink: $link -> expected $target"
fi
}
has_marker() {
local file="$1"
local pattern="$2"
[ -f "$file" ] && grep -q "$pattern" "$file"
}
ensure_marker() {
local file="$1"
local pattern="$2"
if ! has_marker "$file" "$pattern"; then
if [ "$REPAIR" -eq 1 ]; then
if [ -x "$REPO_ROOT/local/scripts/apply-patches.sh" ]; then
"$REPO_ROOT/local/scripts/apply-patches.sh" >/dev/null || true
fi
apply_patch_dir "$REPO_ROOT/local/patches/base" "$REPO_ROOT/recipes/core/base/source"
apply_patch_dir "$REPO_ROOT/local/patches/kernel" "$REPO_ROOT/recipes/core/kernel/source"
apply_patch_dir "$REPO_ROOT/local/patches/relibc" "$REPO_ROOT/recipes/core/relibc/source"
fi
fi
has_marker "$file" "$pattern" || fail "missing marker in $file: $pattern"
}
check_local_over_wip_priority() {
local local_dir
local rel
local name
local wip_match
local active_path
for local_dir in "$REPO_ROOT"/local/recipes/*/*; do
[ -d "$local_dir" ] || continue
rel="${local_dir#"$REPO_ROOT/local/recipes/"}"
name="${local_dir##*/}"
wip_match="$(find "$REPO_ROOT/recipes/wip" -mindepth 2 -maxdepth 2 -type d -name "$name" 2>/dev/null | head -n1 || true)"
# Policy: if local package conflicts with an upstream WIP package of the same name,
# the active recipe must be our local overlay (symlink in recipes/*/<name>).
[ -n "$wip_match" ] || continue
active_path="$(find "$REPO_ROOT/recipes" -mindepth 2 -maxdepth 2 -type l -name "$name" ! -path "$REPO_ROOT/recipes/wip/*" 2>/dev/null | head -n1 || true)"
# Only enforce for actively mounted local overlays.
[ -n "$active_path" ] || continue
if [ "$(readlink "$active_path")" != "../../local/recipes/${rel}" ]; then
fail "local-over-wip policy violated: '$active_path' does not point to ../../local/recipes/${rel}"
fi
done
}
apply_patch_dir() {
local patch_dir="$1"
local target_dir="$2"
local patch_file
[ -d "$patch_dir" ] || return 0
[ -d "$target_dir" ] || return 0
for patch_file in "$patch_dir"/*.patch; do
[ -f "$patch_file" ] || continue
if patch --dry-run -p1 -d "$target_dir" < "$patch_file" >/dev/null 2>&1; then
patch -p1 -d "$target_dir" < "$patch_file" >/dev/null 2>&1 || true
fi
done
}
need_file "local/patches/kernel/redox.patch"
need_file "local/patches/base/redox.patch"
need_file "local/patches/relibc/redox.patch"
ensure_link "recipes/core/kernel/redox.patch" "../../../local/patches/kernel/redox.patch"
ensure_link "recipes/core/base/redox.patch" "../../../local/patches/base/redox.patch"
ensure_link "recipes/core/bootloader/P2-live-preload-guard.patch" "../../../local/patches/bootloader/P2-live-preload-guard.patch"
ensure_link "recipes/core/bootloader/P3-uefi-live-image-safe-read.patch" "../../../local/patches/bootloader/P3-uefi-live-image-safe-read.patch"
ensure_link "recipes/core/grub" "../../local/recipes/core/grub"
check_local_over_wip_priority
# Critical runtime markers in source trees (if sources are present locally).
if [ -d "recipes/core/base/source" ]; then
ensure_marker \
"recipes/core/base/source/drivers/acpid/src/acpi.rs" \
"AML interpreter requires PCI registration before initialization"
ensure_marker \
"recipes/core/base/source/drivers/acpid/src/scheme.rs" \
"wait_for_pci_ready"
ensure_marker \
"recipes/core/base/source/drivers/input/ps2d/src/controller.rs" \
"continuing without second port"
fi
echo "overlay-integrity: OK"
+3 -3
View File
@@ -17,12 +17,12 @@ ci-img: FORCE
# The name of the target must match the name of the filesystem config file
server desktop demo: FORCE
rm -f "build/$(ARCH)/$@/harddrive.img" "build/$(ARCH)/$@/redbear-live.iso"
rm -f "build/$(ARCH)/$@/harddrive.img" "build/$(ARCH)/$@.iso"
export $(CI_COOKBOOK_CONFIG) REPO_NONSTOP=0 && \
$(MAKE) CONFIG_NAME=$@ build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@/redbear-live.iso
$(MAKE) CONFIG_NAME=$@ build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@.iso
mkdir -p $(IMG_DIR)
cp "build/$(ARCH)/$@/harddrive.img" "$(IMG_DIR)/redbear_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img"
cp "build/$(ARCH)/$@/redbear-live.iso" "$(IMG_DIR)/redbear_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso"
cp "build/$(ARCH)/$@.iso" "$(IMG_DIR)/redbear_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso"
ci-os-test: FORCE
make CONFIG_NAME=os-test unmount
+4 -35
View File
@@ -13,7 +13,7 @@ else
FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \
fi && \
truncate -s "$$FILESYSTEM_SIZE"m $@.partial
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $@.partial
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) --no-mount -c $(FILESYSTEM_CONFIG) $@.partial
mv $@.partial $@
endif
@@ -22,14 +22,14 @@ ifeq ($(FSTOOLS_IN_PODMAN),1)
$(PODMAN_RUN) make $@
else
mkdir -p $(LIVE_BUILD)
rm -rf $@ $@.partial
rm -rf $@ $@.partial
-$(FUMOUNT) /tmp/redox_installer || true
FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \
if [ -z "$$FILESYSTEM_SIZE" ] ; then \
FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \
fi && \
truncate -s "$$FILESYSTEM_SIZE"m $@.partial
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) --write-bootloader="$(LIVE_BOOTLOADER)" --live $@.partial
umask 002 && $(INSTALLER) $(INSTALLER_OPTS) --no-mount -c $(FILESYSTEM_CONFIG) --write-bootloader="$(LIVE_BOOTLOADER)" --live $@.partial
mv $@.partial $@
endif
@@ -39,38 +39,7 @@ ifeq ($(FSTOOLS_IN_PODMAN),1)
else
mkdir -p $(LIVE_BUILD)
rm -rf $@ $@.partial
tmpdir="$$(mktemp -d)"; \
esp_img="$$tmpdir/efiboot.img"; \
trap 'rm -rf "$$tmpdir"' EXIT; \
mkdir -p "$$tmpdir/EFI/BOOT"; \
BOOTLOADER_LIVE_BIOS=""; \
for path in recipes/core/bootloader/target/*/stage/usr/lib/boot/bootloader-live.bios repo/*/*/bootloader/*/usr/lib/boot/bootloader-live.bios; do \
if [ -f "$$path" ]; then \
BOOTLOADER_LIVE_BIOS="$$path"; \
break; \
fi; \
done; \
live_size="$$(stat -c%s "$(LIVE_IMG)")"; \
esp_size="$$((live_size + 64 * 1024 * 1024))"; \
truncate -s "$$esp_size" "$$esp_img"; \
mkfs.fat -F 32 "$$esp_img" >/dev/null; \
python3 local/scripts/fat_tool.py mkdir "$$esp_img" 0 EFI; \
python3 local/scripts/fat_tool.py mkdir "$$esp_img" 0 EFI/BOOT; \
python3 local/scripts/fat_tool.py cp-in "$$esp_img" 0 "$(LIVE_BOOTLOADER)" EFI/BOOT/BOOTX64.EFI; \
python3 local/scripts/fat_tool.py cp-in "$$esp_img" 0 "$(LIVE_IMG)" redox-live.iso; \
cp "$(LIVE_BOOTLOADER)" "$$tmpdir/EFI/BOOT/BOOTX64.EFI"; \
cp redbear.ipxe "$$tmpdir/redbear.ipxe"; \
if [ -n "$$BOOTLOADER_LIVE_BIOS" ]; then \
cp "$$BOOTLOADER_LIVE_BIOS" "$$tmpdir/bootloader-live.bios"; \
xorriso -as mkisofs -R -J -V "REDBEARLIVE" -o $@.partial \
-b bootloader-live.bios -no-emul-boot \
-eltorito-alt-boot -e efiboot.img -no-emul-boot \
"$$tmpdir" >/dev/null; \
else \
xorriso -as mkisofs -R -J -V "REDBEARLIVE" -o $@.partial \
-eltorito-alt-boot -e efiboot.img -no-emul-boot \
"$$tmpdir" >/dev/null; \
fi
cp "$(LIVE_IMG)" $@.partial
mv $@.partial $@
cp redbear.ipxe $(LIVE_IPXE)
endif
+1
View File
@@ -0,0 +1 @@
../../../local/patches/bootloader/P2-live-preload-guard.patch
@@ -0,0 +1 @@
../../../local/patches/bootloader/P3-uefi-live-image-safe-read.patch
+1 -1
View File
@@ -1,6 +1,6 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/bootloader.git"
patches = ["redox.patch"]
patches = ["redox.patch", "P2-live-preload-guard.patch", "P3-uefi-live-image-safe-read.patch"]
[build]
template = "custom"
+35
View File
@@ -6,6 +6,20 @@ CONFIG_NAME="redbear-live"
ARCH="x86_64"
ALLOW_UPSTREAM=0
canonicalize_live_config() {
case "$1" in
redbear-live-full)
printf '%s\n' "redbear-live"
;;
redbear-live-mini-grub)
printf '%s\n' "redbear-grub-live-mini"
;;
*)
printf '%s\n' "$1"
;;
esac
}
usage() {
cat <<EOF
Usage: $(basename "$0") [OPTIONS] [CONFIG_NAME] [ARCH]
@@ -20,6 +34,15 @@ Options:
--upstream Allow Redox/upstream recipe source refresh during build
-h, --help Show this help
Supported live ISO targets:
redbear-live Full live ISO
redbear-live-mini Text-only mini live ISO
redbear-grub-live-mini Text-only mini live ISO with GRUB bootloader
Legacy compatibility aliases:
redbear-live-full
redbear-live-mini-grub
Defaults:
CONFIG_NAME=redbear-live
ARCH=x86_64
@@ -62,6 +85,18 @@ fi
[ ${#POSITIONAL[@]} -ge 1 ] && CONFIG_NAME="${POSITIONAL[0]}"
[ ${#POSITIONAL[@]} -ge 2 ] && ARCH="${POSITIONAL[1]}"
CONFIG_NAME="$(canonicalize_live_config "$CONFIG_NAME")"
case "$CONFIG_NAME" in
redbear-live|redbear-live-mini|redbear-grub-live-mini)
;;
*)
echo "ERROR: Unsupported live ISO target '$CONFIG_NAME'" >&2
usage >&2
exit 1
;;
esac
if [ -z "${CI:-}" ] && { [ ! -t 0 ] || [ ! -t 1 ]; }; then
export CI=1
fi
+3 -1
View File
@@ -9,7 +9,9 @@ set -ex
trap 'kill -HUP 0' EXIT
eval $(make setenv)
make "${BUILD}/redbear-live.iso"
LIVE_IMAGE="build/${ARCH}/${CONFIG_NAME}.iso"
make "${LIVE_IMAGE}"
ln -sf "$(realpath "${LIVE_IMAGE}")" "${BUILD}/redbear-live.iso"
echo "Allowing packet forwarding"
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
+1 -1
View File
@@ -24,7 +24,7 @@ for ARCH in "${ARCHS[@]}"
do
for CONFIG_NAME in "${CONFIGS[@]}"
do
IMAGE="build/${ARCH}/${CONFIG_NAME}/redbear-live.iso"
IMAGE="build/${ARCH}/${CONFIG_NAME}.iso"
make ARCH="${ARCH}" CONFIG_NAME="${CONFIG_NAME}" "${IMAGE}"
cp -v "${IMAGE}" "${VENTOY}/redbear-${CONFIG_NAME}-${ARCH}.iso"
done
+31
View File
@@ -21,6 +21,7 @@ use pkg::SourceIdentifier;
use pkg::net_backend::DownloadBackendWriter;
use std::cell::RefCell;
use std::collections::BTreeMap;
use std::env;
use std::fs;
use std::fs::File;
use std::io::Read;
@@ -34,6 +35,27 @@ pub struct FetchResult {
pub cached: bool,
}
fn redbear_protected_recipe(name: &str) -> bool {
matches!(
name,
"relibc"
| "bootloader"
| "kernel"
| "base"
| "base-initfs"
| "installer"
| "redoxfs"
| "grub"
)
}
fn redbear_allow_protected_fetch() -> bool {
matches!(
env::var("REDBEAR_ALLOW_PROTECTED_FETCH").ok().as_deref(),
Some("1" | "true" | "TRUE" | "yes" | "YES")
)
}
impl FetchResult {
pub fn new(source_dir: PathBuf, ident: String, cached: bool) -> Self {
Self {
@@ -139,6 +161,15 @@ pub fn fetch_offline(recipe: &CookRecipe, logger: &PtyOut) -> Result<FetchResult
}
pub fn fetch(recipe: &CookRecipe, check_source: bool, logger: &PtyOut) -> Result<FetchResult> {
if redbear_protected_recipe(recipe.name.name()) && !redbear_allow_protected_fetch() {
log_to_pty!(
logger,
"[INFO]: protected recipe {} uses local source (fetch disabled; set REDBEAR_ALLOW_PROTECTED_FETCH=1 to override)",
recipe.name.name()
);
return fetch_offline(recipe, logger);
}
let recipe_dir = &recipe.dir;
let source_dir = recipe_dir.join("source");
match recipe.recipe.build.kind {