mirror of
https://git.proxmox.com/git/grub2
synced 2025-07-27 11:56:03 +00:00
Import grub2_2.04~rc1.orig.tar.xz
This commit is contained in:
commit
00f6db2247
22
INSTALL
22
INSTALL
@ -37,6 +37,7 @@ configuring the GRUB.
|
|||||||
* GNU gettext 0.17 or later
|
* GNU gettext 0.17 or later
|
||||||
* GNU binutils 2.9.1.0.23 or later
|
* GNU binutils 2.9.1.0.23 or later
|
||||||
* Flex 2.5.35 or later
|
* Flex 2.5.35 or later
|
||||||
|
* pkg-config
|
||||||
* Other standard GNU/Unix tools
|
* Other standard GNU/Unix tools
|
||||||
* a libc with large file support (e.g. glibc 2.1 or later)
|
* a libc with large file support (e.g. glibc 2.1 or later)
|
||||||
|
|
||||||
@ -52,15 +53,15 @@ For optional grub-emu features, you need:
|
|||||||
|
|
||||||
To build GRUB's graphical terminal (gfxterm), you need:
|
To build GRUB's graphical terminal (gfxterm), you need:
|
||||||
|
|
||||||
* FreeType 2 or later
|
* FreeType 2.1.5 or later
|
||||||
* GNU Unifont
|
* GNU Unifont
|
||||||
|
|
||||||
If you use a development snapshot or want to hack on GRUB you may
|
If you use a development snapshot or want to hack on GRUB you may
|
||||||
need the following.
|
need the following.
|
||||||
|
|
||||||
* Python 2.6 or later
|
* Python 2.6 or later
|
||||||
* Autoconf 2.60 or later
|
* Autoconf 2.63 or later
|
||||||
* Automake 1.10.1 or later
|
* Automake 1.11 or later
|
||||||
|
|
||||||
Prerequisites for make-check:
|
Prerequisites for make-check:
|
||||||
|
|
||||||
@ -101,10 +102,11 @@ The simplest way to compile this package is:
|
|||||||
2. Skip this and following step if you use release tarball and proceed to
|
2. Skip this and following step if you use release tarball and proceed to
|
||||||
step 4. If you want translations type `./linguas.sh'.
|
step 4. If you want translations type `./linguas.sh'.
|
||||||
|
|
||||||
3. Type `./autogen.sh'.
|
3. Type `./bootstrap'.
|
||||||
|
|
||||||
* autogen.sh uses python. By default invocation is "python" but can be
|
* autogen.sh (called by bootstrap) uses python. By default the
|
||||||
overriden by setting variable $PYTHON.
|
invocation is "python", but it can be overridden by setting the
|
||||||
|
variable $PYTHON.
|
||||||
|
|
||||||
4. Type `./configure' to configure the package for your system.
|
4. Type `./configure' to configure the package for your system.
|
||||||
If you're using `csh' on an old version of System V, you might
|
If you're using `csh' on an old version of System V, you might
|
||||||
@ -158,8 +160,8 @@ For this example the configure line might look like (more details below)
|
|||||||
(some options are optional and included here for completeness but some rarely
|
(some options are optional and included here for completeness but some rarely
|
||||||
used options are omitted):
|
used options are omitted):
|
||||||
|
|
||||||
./configure BUILD_CC=gcc BUILD_FREETYPE=freetype-config --host=amd64-linux-gnu
|
./configure BUILD_CC=gcc BUILD_PKG_CONFIG=pkg-config --host=amd64-linux-gnu
|
||||||
CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" FREETYPE=amd64-linux-gnu-freetype-config
|
CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" PKG_CONFIG=amd64-linux-gnu-pkg-config
|
||||||
--target=arm --with-platform=uboot TARGET_CC=arm-elf-gcc
|
--target=arm --with-platform=uboot TARGET_CC=arm-elf-gcc
|
||||||
TARGET_CFLAGS="-Os -march=armv6" TARGET_CCASFLAGS="-march=armv6"
|
TARGET_CFLAGS="-Os -march=armv6" TARGET_CCASFLAGS="-march=armv6"
|
||||||
TARGET_OBJCOPY="arm-elf-objcopy" TARGET_STRIP="arm-elf-strip"
|
TARGET_OBJCOPY="arm-elf-objcopy" TARGET_STRIP="arm-elf-strip"
|
||||||
@ -176,7 +178,7 @@ corresponding platform are not needed for the platform in question.
|
|||||||
2. BUILD_CFLAGS= for C options for build.
|
2. BUILD_CFLAGS= for C options for build.
|
||||||
3. BUILD_CPPFLAGS= for C preprocessor options for build.
|
3. BUILD_CPPFLAGS= for C preprocessor options for build.
|
||||||
4. BUILD_LDFLAGS= for linker options for build.
|
4. BUILD_LDFLAGS= for linker options for build.
|
||||||
5. BUILD_FREETYPE= for freetype-config for build (optional).
|
5. BUILD_PKG_CONFIG= for pkg-config for build (optional).
|
||||||
|
|
||||||
- For host
|
- For host
|
||||||
1. --host= to autoconf name of host.
|
1. --host= to autoconf name of host.
|
||||||
@ -184,7 +186,7 @@ corresponding platform are not needed for the platform in question.
|
|||||||
3. HOST_CFLAGS= for C options for host.
|
3. HOST_CFLAGS= for C options for host.
|
||||||
4. HOST_CPPFLAGS= for C preprocessor options for host.
|
4. HOST_CPPFLAGS= for C preprocessor options for host.
|
||||||
5. HOST_LDFLAGS= for linker options for host.
|
5. HOST_LDFLAGS= for linker options for host.
|
||||||
6. FREETYPE= for freetype-config for host (optional).
|
6. PKG_CONFIG= for pkg-config for host (optional).
|
||||||
7. Libdevmapper if any must be in standard linker folders (-ldevmapper) (optional).
|
7. Libdevmapper if any must be in standard linker folders (-ldevmapper) (optional).
|
||||||
8. Libfuse if any must be in standard linker folders (-lfuse) (optional).
|
8. Libfuse if any must be in standard linker folders (-lfuse) (optional).
|
||||||
9. Libzfs if any must be in standard linker folders (-lzfs) (optional).
|
9. Libzfs if any must be in standard linker folders (-lzfs) (optional).
|
||||||
|
18
Makefile.am
18
Makefile.am
@ -1,7 +1,7 @@
|
|||||||
AUTOMAKE_OPTIONS = subdir-objects -Wno-portability
|
AUTOMAKE_OPTIONS = subdir-objects -Wno-portability
|
||||||
|
|
||||||
DEPDIR = .deps-util
|
DEPDIR = .deps-util
|
||||||
SUBDIRS = grub-core/gnulib .
|
SUBDIRS = grub-core/lib/gnulib .
|
||||||
if COND_real_platform
|
if COND_real_platform
|
||||||
SUBDIRS += grub-core
|
SUBDIRS += grub-core
|
||||||
endif
|
endif
|
||||||
@ -71,7 +71,7 @@ endif
|
|||||||
starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
|
starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
|
||||||
|
|
||||||
build-grub-mkfont$(BUILD_EXEEXT): util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
|
build-grub-mkfont$(BUILD_EXEEXT): util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
|
||||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs)
|
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(BUILD_FREETYPE_CFLAGS) $(BUILD_FREETYPE_LIBS)
|
||||||
CLEANFILES += build-grub-mkfont$(BUILD_EXEEXT)
|
CLEANFILES += build-grub-mkfont$(BUILD_EXEEXT)
|
||||||
|
|
||||||
garbage-gen$(BUILD_EXEEXT): util/garbage-gen.c
|
garbage-gen$(BUILD_EXEEXT): util/garbage-gen.c
|
||||||
@ -80,11 +80,11 @@ CLEANFILES += garbage-gen$(BUILD_EXEEXT)
|
|||||||
EXTRA_DIST += util/garbage-gen.c
|
EXTRA_DIST += util/garbage-gen.c
|
||||||
|
|
||||||
build-grub-gen-asciih$(BUILD_EXEEXT): util/grub-gen-asciih.c
|
build-grub-gen-asciih$(BUILD_EXEEXT): util/grub-gen-asciih.c
|
||||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
|
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(BUILD_FREETYPE_CFLAGS) $(BUILD_FREETYPE_LIBS) -Wall -Werror
|
||||||
CLEANFILES += build-grub-gen-asciih$(BUILD_EXEEXT)
|
CLEANFILES += build-grub-gen-asciih$(BUILD_EXEEXT)
|
||||||
|
|
||||||
build-grub-gen-widthspec$(BUILD_EXEEXT): util/grub-gen-widthspec.c
|
build-grub-gen-widthspec$(BUILD_EXEEXT): util/grub-gen-widthspec.c
|
||||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
|
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(BUILD_FREETYPE_CFLAGS) $(BUILD_FREETYPE_LIBS) -Wall -Werror
|
||||||
CLEANFILES += build-grub-gen-widthspec$(BUILD_EXEEXT)
|
CLEANFILES += build-grub-gen-widthspec$(BUILD_EXEEXT)
|
||||||
|
|
||||||
if COND_STARFIELD
|
if COND_STARFIELD
|
||||||
@ -422,9 +422,10 @@ BOOTCHECK_TIMEOUT=180
|
|||||||
bootcheck: $(BOOTCHECKS)
|
bootcheck: $(BOOTCHECKS)
|
||||||
|
|
||||||
if COND_i386_coreboot
|
if COND_i386_coreboot
|
||||||
|
FS_PAYLOAD_MODULES ?= $(shell cat grub-core/fs.lst)
|
||||||
default_payload.elf: grub-mkstandalone grub-mkimage FORCE
|
default_payload.elf: grub-mkstandalone grub-mkimage FORCE
|
||||||
test -f $@ && rm $@ || true
|
test -f $@ && rm $@ || true
|
||||||
pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial multiboot cbmemc linux16 gzio echo help syslinuxcfg xnu $(shell cat grub-core/fs.lst) password_pbkdf2 $(EXTRA_PAYLOAD_MODULES)' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg
|
pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial multiboot cbmemc linux16 gzio echo help syslinuxcfg xnu $(FS_PAYLOAD_MODULES) password_pbkdf2 $(EXTRA_PAYLOAD_MODULES)' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -476,6 +477,11 @@ EXTRA_DIST += ChangeLog ChangeLog-2015
|
|||||||
|
|
||||||
syslinux_test: $(top_builddir)/config.status tests/syslinux/ubuntu10.04_grub.cfg
|
syslinux_test: $(top_builddir)/config.status tests/syslinux/ubuntu10.04_grub.cfg
|
||||||
|
|
||||||
|
# Mimic simplify_filename from grub-core/lib/syslinux_parse.c, so that we
|
||||||
|
# can predict its behaviour in tests. We have to pre-substitute this before
|
||||||
|
# calling config.status, as config.status offers no reliable way to hook in
|
||||||
|
# a command between setting ac_abs_top_srcdir and emitting output files.
|
||||||
tests/syslinux/ubuntu10.04_grub.cfg: $(top_builddir)/config.status tests/syslinux/ubuntu10.04_grub.cfg.in
|
tests/syslinux/ubuntu10.04_grub.cfg: $(top_builddir)/config.status tests/syslinux/ubuntu10.04_grub.cfg.in
|
||||||
(for x in tests/syslinux/ubuntu10.04_grub.cfg.in ; do cat $(srcdir)/"$$x"; done) | $(top_builddir)/config.status --file=$@:-
|
simplified_abs_top_srcdir=`echo "$(abs_top_srcdir)" | sed 's,//,/,g; s,/\./,/,g; :loop; s,/[^/][^/]*/\.\.\(/\|$$\),\1,; t loop'`; \
|
||||||
|
sed "s,@simplified_abs_top_srcdir@,$$simplified_abs_top_srcdir,g" $(srcdir)/tests/syslinux/ubuntu10.04_grub.cfg.in | $(top_builddir)/config.status --file=$@:-
|
||||||
CLEANFILES += tests/syslinux/ubuntu10.04_grub.cfg
|
CLEANFILES += tests/syslinux/ubuntu10.04_grub.cfg
|
||||||
|
722
Makefile.in
722
Makefile.in
File diff suppressed because it is too large
Load Diff
@ -23,10 +23,10 @@ dist_noinst_DATA += grub-core/kern/disk_common.c grub-core/osdep/unix/relpath.c
|
|||||||
BUILT_SOURCES += $(nodist_libgrubkern_a_SOURCES)
|
BUILT_SOURCES += $(nodist_libgrubkern_a_SOURCES)
|
||||||
CLEANFILES += $(nodist_libgrubkern_a_SOURCES)
|
CLEANFILES += $(nodist_libgrubkern_a_SOURCES)
|
||||||
noinst_LIBRARIES += libgrubmods.a
|
noinst_LIBRARIES += libgrubmods.a
|
||||||
libgrubmods_a_SOURCES += grub-core/commands/blocklist.c grub-core/commands/macbless.c grub-core/commands/xnu_uuid.c grub-core/commands/testload.c grub-core/commands/ls.c grub-core/disk/dmraid_nvidia.c grub-core/disk/loopback.c grub-core/disk/lvm.c grub-core/disk/mdraid_linux.c grub-core/disk/mdraid_linux_be.c grub-core/disk/mdraid1x_linux.c grub-core/disk/raid5_recover.c grub-core/disk/raid6_recover.c grub-core/font/font.c grub-core/gfxmenu/font.c grub-core/normal/charset.c grub-core/video/fb/fbblit.c grub-core/video/fb/fbutil.c grub-core/video/fb/fbfill.c grub-core/video/fb/video_fb.c grub-core/video/video.c grub-core/video/capture.c grub-core/video/colors.c grub-core/unidata.c grub-core/io/bufio.c grub-core/fs/affs.c grub-core/fs/afs.c grub-core/fs/bfs.c grub-core/fs/btrfs.c grub-core/fs/cbfs.c grub-core/fs/cpio.c grub-core/fs/cpio_be.c grub-core/fs/odc.c grub-core/fs/newc.c grub-core/fs/ext2.c grub-core/fs/fat.c grub-core/fs/exfat.c grub-core/fs/fshelp.c grub-core/fs/hfs.c grub-core/fs/hfsplus.c grub-core/fs/hfspluscomp.c grub-core/fs/iso9660.c grub-core/fs/jfs.c grub-core/fs/minix.c grub-core/fs/minix2.c grub-core/fs/minix3.c grub-core/fs/minix_be.c grub-core/fs/minix2_be.c grub-core/fs/minix3_be.c grub-core/fs/nilfs2.c grub-core/fs/ntfs.c grub-core/fs/ntfscomp.c grub-core/fs/reiserfs.c grub-core/fs/romfs.c grub-core/fs/sfs.c grub-core/fs/squash4.c grub-core/fs/tar.c grub-core/fs/udf.c grub-core/fs/ufs2.c grub-core/fs/ufs.c grub-core/fs/ufs_be.c grub-core/fs/xfs.c grub-core/fs/zfs/zfscrypt.c grub-core/fs/zfs/zfs.c grub-core/fs/zfs/zfsinfo.c grub-core/fs/zfs/zfs_lzjb.c grub-core/fs/zfs/zfs_lz4.c grub-core/fs/zfs/zfs_sha256.c grub-core/fs/zfs/zfs_fletcher.c grub-core/lib/envblk.c grub-core/lib/hexdump.c grub-core/lib/LzFind.c grub-core/lib/LzmaEnc.c grub-core/lib/crc.c grub-core/lib/adler32.c grub-core/lib/crc64.c grub-core/normal/datetime.c grub-core/normal/misc.c grub-core/partmap/acorn.c grub-core/partmap/amiga.c grub-core/partmap/apple.c grub-core/partmap/sun.c grub-core/partmap/plan.c grub-core/partmap/dvh.c grub-core/partmap/sunpc.c grub-core/partmap/bsdlabel.c grub-core/partmap/dfly.c grub-core/script/function.c grub-core/script/lexer.c grub-core/script/main.c grub-core/script/script.c grub-core/script/argv.c grub-core/io/gzio.c grub-core/io/xzio.c grub-core/io/lzopio.c grub-core/kern/ia64/dl_helper.c grub-core/kern/arm/dl_helper.c grub-core/kern/arm64/dl_helper.c grub-core/lib/minilzo/minilzo.c grub-core/lib/xzembed/xz_dec_bcj.c grub-core/lib/xzembed/xz_dec_lzma2.c grub-core/lib/xzembed/xz_dec_stream.c
|
libgrubmods_a_SOURCES += grub-core/commands/blocklist.c grub-core/commands/macbless.c grub-core/commands/xnu_uuid.c grub-core/commands/testload.c grub-core/commands/ls.c grub-core/disk/dmraid_nvidia.c grub-core/disk/loopback.c grub-core/disk/lvm.c grub-core/disk/mdraid_linux.c grub-core/disk/mdraid_linux_be.c grub-core/disk/mdraid1x_linux.c grub-core/disk/raid5_recover.c grub-core/disk/raid6_recover.c grub-core/font/font.c grub-core/gfxmenu/font.c grub-core/normal/charset.c grub-core/video/fb/fbblit.c grub-core/video/fb/fbutil.c grub-core/video/fb/fbfill.c grub-core/video/fb/video_fb.c grub-core/video/video.c grub-core/video/capture.c grub-core/video/colors.c grub-core/unidata.c grub-core/io/bufio.c grub-core/fs/affs.c grub-core/fs/afs.c grub-core/fs/bfs.c grub-core/fs/btrfs.c grub-core/fs/cbfs.c grub-core/fs/cpio.c grub-core/fs/cpio_be.c grub-core/fs/odc.c grub-core/fs/newc.c grub-core/fs/ext2.c grub-core/fs/fat.c grub-core/fs/exfat.c grub-core/fs/f2fs.c grub-core/fs/fshelp.c grub-core/fs/hfs.c grub-core/fs/hfsplus.c grub-core/fs/hfspluscomp.c grub-core/fs/iso9660.c grub-core/fs/jfs.c grub-core/fs/minix.c grub-core/fs/minix2.c grub-core/fs/minix3.c grub-core/fs/minix_be.c grub-core/fs/minix2_be.c grub-core/fs/minix3_be.c grub-core/fs/nilfs2.c grub-core/fs/ntfs.c grub-core/fs/ntfscomp.c grub-core/fs/reiserfs.c grub-core/fs/romfs.c grub-core/fs/sfs.c grub-core/fs/squash4.c grub-core/fs/tar.c grub-core/fs/udf.c grub-core/fs/ufs2.c grub-core/fs/ufs.c grub-core/fs/ufs_be.c grub-core/fs/xfs.c grub-core/fs/zfs/zfscrypt.c grub-core/fs/zfs/zfs.c grub-core/fs/zfs/zfsinfo.c grub-core/fs/zfs/zfs_lzjb.c grub-core/fs/zfs/zfs_lz4.c grub-core/fs/zfs/zfs_sha256.c grub-core/fs/zfs/zfs_fletcher.c grub-core/lib/envblk.c grub-core/lib/hexdump.c grub-core/lib/LzFind.c grub-core/lib/LzmaEnc.c grub-core/lib/crc.c grub-core/lib/adler32.c grub-core/lib/crc64.c grub-core/normal/datetime.c grub-core/normal/misc.c grub-core/partmap/acorn.c grub-core/partmap/amiga.c grub-core/partmap/apple.c grub-core/partmap/sun.c grub-core/partmap/plan.c grub-core/partmap/dvh.c grub-core/partmap/sunpc.c grub-core/partmap/bsdlabel.c grub-core/partmap/dfly.c grub-core/script/function.c grub-core/script/lexer.c grub-core/script/main.c grub-core/script/script.c grub-core/script/argv.c grub-core/io/gzio.c grub-core/io/xzio.c grub-core/io/lzopio.c grub-core/kern/ia64/dl_helper.c grub-core/kern/arm/dl_helper.c grub-core/kern/arm64/dl_helper.c grub-core/lib/minilzo/minilzo.c grub-core/lib/xzembed/xz_dec_bcj.c grub-core/lib/xzembed/xz_dec_lzma2.c grub-core/lib/xzembed/xz_dec_stream.c grub-core/lib/zstd/debug.c grub-core/lib/zstd/entropy_common.c grub-core/lib/zstd/error_private.c grub-core/lib/zstd/fse_decompress.c grub-core/lib/zstd/huf_decompress.c grub-core/lib/zstd/module.c grub-core/lib/zstd/xxhash.c grub-core/lib/zstd/zstd_common.c grub-core/lib/zstd/zstd_decompress.c
|
||||||
nodist_libgrubmods_a_SOURCES += grub_script.tab.c grub_script.yy.c libgrub_a_init.c grub_script.yy.h grub_script.tab.h
|
nodist_libgrubmods_a_SOURCES += grub_script.tab.c grub_script.yy.c libgrub_a_init.c grub_script.yy.h grub_script.tab.h
|
||||||
libgrubmods_a_CFLAGS += $(AM_CFLAGS) $(CFLAGS_LIBRARY) -fno-builtin -Wno-undef
|
libgrubmods_a_CFLAGS += $(AM_CFLAGS) $(CFLAGS_LIBRARY) -fno-builtin -Wno-undef
|
||||||
libgrubmods_a_CPPFLAGS += $(AM_CPPFLAGS) $(CPPFLAGS_LIBRARY) -I$(top_srcdir)/grub-core/lib/minilzo -I$(srcdir)/grub-core/lib/xzembed -DMINILZO_HAVE_CONFIG_H
|
libgrubmods_a_CPPFLAGS += $(AM_CPPFLAGS) $(CPPFLAGS_LIBRARY) -I$(srcdir)/grub-core/lib/minilzo -I$(srcdir)/grub-core/lib/xzembed -I$(srcdir)/grub-core/lib/zstd -DMINILZO_HAVE_CONFIG_H
|
||||||
libgrubmods_a_CCASFLAGS += $(AM_CCASFLAGS) $(CCASFLAGS_LIBRARY)
|
libgrubmods_a_CCASFLAGS += $(AM_CCASFLAGS) $(CCASFLAGS_LIBRARY)
|
||||||
dist_noinst_DATA +=
|
dist_noinst_DATA +=
|
||||||
BUILT_SOURCES += $(nodist_libgrubmods_a_SOURCES)
|
BUILT_SOURCES += $(nodist_libgrubmods_a_SOURCES)
|
||||||
@ -52,7 +52,7 @@ CLEANFILES += grub-mkimage.1
|
|||||||
endif
|
endif
|
||||||
grub_mkimage_SOURCES = util/grub-mkimage.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c grub-core/osdep/config.c util/config.c
|
grub_mkimage_SOURCES = util/grub-mkimage.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c grub-core/osdep/config.c util/config.c
|
||||||
nodist_grub_mkimage_SOURCES =
|
nodist_grub_mkimage_SOURCES =
|
||||||
grub_mkimage_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBLZMA) $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mkimage_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBLZMA) $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mkimage_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mkimage_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mkimage_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mkimage_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mkimage_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_PKGLIBDIR=\"$(pkglibdir)\"
|
grub_mkimage_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_PKGLIBDIR=\"$(pkglibdir)\"
|
||||||
@ -72,7 +72,7 @@ CLEANFILES += grub-mkrelpath.1
|
|||||||
endif
|
endif
|
||||||
grub_mkrelpath_SOURCES = util/grub-mkrelpath.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_mkrelpath_SOURCES = util/grub-mkrelpath.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_mkrelpath_SOURCES =
|
nodist_grub_mkrelpath_SOURCES =
|
||||||
grub_mkrelpath_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mkrelpath_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mkrelpath_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mkrelpath_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mkrelpath_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mkrelpath_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mkrelpath_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mkrelpath_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -92,7 +92,7 @@ CLEANFILES += grub-script-check.1
|
|||||||
endif
|
endif
|
||||||
grub_script_check_SOURCES = util/grub-script-check.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_script_check_SOURCES = util/grub-script-check.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_script_check_SOURCES =
|
nodist_grub_script_check_SOURCES =
|
||||||
grub_script_check_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_script_check_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_script_check_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_script_check_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_script_check_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_script_check_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_script_check_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_script_check_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -112,7 +112,7 @@ CLEANFILES += grub-editenv.1
|
|||||||
endif
|
endif
|
||||||
grub_editenv_SOURCES = util/grub-editenv.c util/editenv.c grub-core/osdep/init.c
|
grub_editenv_SOURCES = util/grub-editenv.c util/editenv.c grub-core/osdep/init.c
|
||||||
nodist_grub_editenv_SOURCES =
|
nodist_grub_editenv_SOURCES =
|
||||||
grub_editenv_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_editenv_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_editenv_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_editenv_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_editenv_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_editenv_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_editenv_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_editenv_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -132,7 +132,7 @@ CLEANFILES += grub-mkpasswd-pbkdf2.1
|
|||||||
endif
|
endif
|
||||||
grub_mkpasswd_pbkdf2_SOURCES = util/grub-mkpasswd-pbkdf2.c grub-core/kern/emu/argp_common.c grub-core/osdep/random.c grub-core/osdep/init.c
|
grub_mkpasswd_pbkdf2_SOURCES = util/grub-mkpasswd-pbkdf2.c grub-core/kern/emu/argp_common.c grub-core/osdep/random.c grub-core/osdep/init.c
|
||||||
nodist_grub_mkpasswd_pbkdf2_SOURCES =
|
nodist_grub_mkpasswd_pbkdf2_SOURCES =
|
||||||
grub_mkpasswd_pbkdf2_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mkpasswd_pbkdf2_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mkpasswd_pbkdf2_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mkpasswd_pbkdf2_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mkpasswd_pbkdf2_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mkpasswd_pbkdf2_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mkpasswd_pbkdf2_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mkpasswd_pbkdf2_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -174,7 +174,7 @@ CLEANFILES += grub-fstest.1
|
|||||||
endif
|
endif
|
||||||
grub_fstest_SOURCES = util/grub-fstest.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
grub_fstest_SOURCES = util/grub-fstest.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
||||||
nodist_grub_fstest_SOURCES = grub_fstest_init.c
|
nodist_grub_fstest_SOURCES = grub_fstest_init.c
|
||||||
grub_fstest_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_fstest_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_fstest_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_fstest_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_fstest_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_fstest_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_fstest_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_fstest_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -195,7 +195,7 @@ CLEANFILES += grub-mount.1
|
|||||||
endif
|
endif
|
||||||
grub_mount_SOURCES = util/grub-mount.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
grub_mount_SOURCES = util/grub-mount.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
||||||
nodist_grub_mount_SOURCES = grub_fstest_init.c
|
nodist_grub_mount_SOURCES = grub_fstest_init.c
|
||||||
grub_mount_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM) -lfuse
|
grub_mount_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM) -lfuse
|
||||||
grub_mount_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mount_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mount_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mount_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mount_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mount_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -217,8 +217,8 @@ CLEANFILES += grub-mkfont.1
|
|||||||
endif
|
endif
|
||||||
grub_mkfont_SOURCES = util/grub-mkfont.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_mkfont_SOURCES = util/grub-mkfont.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_mkfont_SOURCES =
|
nodist_grub_mkfont_SOURCES =
|
||||||
grub_mkfont_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(freetype_libs) $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mkfont_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(FREETYPE_LIBS) $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mkfont_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM) $(freetype_cflags)
|
grub_mkfont_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM) $(FREETYPE_CFLAGS)
|
||||||
grub_mkfont_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mkfont_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mkfont_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_MKFONT=1
|
grub_mkfont_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_MKFONT=1
|
||||||
grub_mkfont_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_PROGRAM)
|
grub_mkfont_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_PROGRAM)
|
||||||
@ -238,7 +238,7 @@ CLEANFILES += grub-probe.8
|
|||||||
endif
|
endif
|
||||||
grub_probe_SOURCES = util/grub-probe.c util/probe.c grub-core/osdep/ofpath.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_probe_SOURCES = util/grub-probe.c util/probe.c grub-core/osdep/ofpath.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_probe_SOURCES =
|
nodist_grub_probe_SOURCES =
|
||||||
grub_probe_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_probe_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_probe_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_probe_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_probe_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_probe_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_probe_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_probe_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -258,7 +258,7 @@ CLEANFILES += grub-bios-setup.8
|
|||||||
endif
|
endif
|
||||||
grub_bios_setup_SOURCES = util/grub-setup.c util/setup_bios.c grub-core/kern/emu/argp_common.c grub-core/lib/reed_solomon.c grub-core/osdep/blocklist.c grub-core/osdep/init.c
|
grub_bios_setup_SOURCES = util/grub-setup.c util/setup_bios.c grub-core/kern/emu/argp_common.c grub-core/lib/reed_solomon.c grub-core/osdep/blocklist.c grub-core/osdep/init.c
|
||||||
nodist_grub_bios_setup_SOURCES =
|
nodist_grub_bios_setup_SOURCES =
|
||||||
grub_bios_setup_LDADD = libgrubmods.a libgrubkern.a libgrubgcry.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_bios_setup_LDADD = libgrubmods.a libgrubkern.a libgrubgcry.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_bios_setup_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_bios_setup_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_bios_setup_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_bios_setup_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_bios_setup_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_SETUP_FUNC=grub_util_bios_setup
|
grub_bios_setup_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_SETUP_FUNC=grub_util_bios_setup
|
||||||
@ -278,7 +278,7 @@ CLEANFILES += grub-sparc64-setup.8
|
|||||||
endif
|
endif
|
||||||
grub_sparc64_setup_SOURCES = util/grub-setup.c util/setup_sparc.c grub-core/kern/emu/argp_common.c grub-core/lib/reed_solomon.c grub-core/osdep/ofpath.c grub-core/osdep/blocklist.c grub-core/osdep/init.c
|
grub_sparc64_setup_SOURCES = util/grub-setup.c util/setup_sparc.c grub-core/kern/emu/argp_common.c grub-core/lib/reed_solomon.c grub-core/osdep/ofpath.c grub-core/osdep/blocklist.c grub-core/osdep/init.c
|
||||||
nodist_grub_sparc64_setup_SOURCES =
|
nodist_grub_sparc64_setup_SOURCES =
|
||||||
grub_sparc64_setup_LDADD = libgrubmods.a libgrubkern.a libgrubgcry.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_sparc64_setup_LDADD = libgrubmods.a libgrubkern.a libgrubgcry.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_sparc64_setup_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_sparc64_setup_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_sparc64_setup_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_sparc64_setup_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_sparc64_setup_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_SETUP_FUNC=grub_util_sparc_setup
|
grub_sparc64_setup_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) -DGRUB_SETUP_FUNC=grub_util_sparc_setup
|
||||||
@ -298,7 +298,7 @@ CLEANFILES += grub-ofpathname.8
|
|||||||
endif
|
endif
|
||||||
grub_ofpathname_SOURCES = util/ieee1275/grub-ofpathname.c grub-core/osdep/ofpath.c grub-core/osdep/init.c
|
grub_ofpathname_SOURCES = util/ieee1275/grub-ofpathname.c grub-core/osdep/ofpath.c grub-core/osdep/init.c
|
||||||
nodist_grub_ofpathname_SOURCES =
|
nodist_grub_ofpathname_SOURCES =
|
||||||
grub_ofpathname_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_ofpathname_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_ofpathname_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_ofpathname_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_ofpathname_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_ofpathname_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_ofpathname_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_ofpathname_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -318,7 +318,7 @@ CLEANFILES += grub-mklayout.1
|
|||||||
endif
|
endif
|
||||||
grub_mklayout_SOURCES = util/grub-mklayout.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_mklayout_SOURCES = util/grub-mklayout.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_mklayout_SOURCES =
|
nodist_grub_mklayout_SOURCES =
|
||||||
grub_mklayout_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mklayout_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mklayout_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mklayout_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mklayout_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mklayout_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mklayout_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mklayout_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -338,7 +338,7 @@ CLEANFILES += grub-macbless.8
|
|||||||
endif
|
endif
|
||||||
grub_macbless_SOURCES = util/grub-macbless.c grub-core/osdep/init.c grub-core/kern/emu/argp_common.c
|
grub_macbless_SOURCES = util/grub-macbless.c grub-core/osdep/init.c grub-core/kern/emu/argp_common.c
|
||||||
nodist_grub_macbless_SOURCES =
|
nodist_grub_macbless_SOURCES =
|
||||||
grub_macbless_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_macbless_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_macbless_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_macbless_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_macbless_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_macbless_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_macbless_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_macbless_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -359,7 +359,7 @@ CLEANFILES += grub-mkrescue.1
|
|||||||
endif
|
endif
|
||||||
grub_mkrescue_SOURCES = util/grub-mkrescue.c util/render-label.c util/glue-efi.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_mkrescue_SOURCES = util/grub-mkrescue.c util/render-label.c util/glue-efi.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_mkrescue_SOURCES =
|
nodist_grub_mkrescue_SOURCES =
|
||||||
grub_mkrescue_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mkrescue_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mkrescue_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mkrescue_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mkrescue_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mkrescue_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mkrescue_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mkrescue_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -380,7 +380,7 @@ CLEANFILES += grub-mkstandalone.1
|
|||||||
endif
|
endif
|
||||||
grub_mkstandalone_SOURCES = util/grub-mkstandalone.c util/render-label.c util/glue-efi.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_mkstandalone_SOURCES = util/grub-mkstandalone.c util/render-label.c util/glue-efi.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_mkstandalone_SOURCES =
|
nodist_grub_mkstandalone_SOURCES =
|
||||||
grub_mkstandalone_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mkstandalone_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mkstandalone_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mkstandalone_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mkstandalone_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mkstandalone_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mkstandalone_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mkstandalone_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -400,7 +400,7 @@ CLEANFILES += grub-install.8
|
|||||||
endif
|
endif
|
||||||
grub_install_SOURCES = util/grub-install.c util/probe.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c util/render-label.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_install_SOURCES = util/grub-install.c util/probe.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c util/render-label.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_install_SOURCES =
|
nodist_grub_install_SOURCES =
|
||||||
grub_install_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_install_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_install_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_install_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_install_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_install_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_install_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_install_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -420,7 +420,7 @@ CLEANFILES += grub-mknetdir.1
|
|||||||
endif
|
endif
|
||||||
grub_mknetdir_SOURCES = util/grub-mknetdir.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_mknetdir_SOURCES = util/grub-mknetdir.c util/mkimage.c util/grub-mkimage32.c util/grub-mkimage64.c util/grub-install-common.c util/setup_bios.c util/setup_sparc.c grub-core/lib/reed_solomon.c grub-core/osdep/random.c grub-core/osdep/ofpath.c grub-core/osdep/platform.c grub-core/osdep/platform_unix.c grub-core/osdep/compress.c util/editenv.c grub-core/osdep/blocklist.c grub-core/osdep/config.c util/config.c util/resolve.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_mknetdir_SOURCES =
|
nodist_grub_mknetdir_SOURCES =
|
||||||
grub_mknetdir_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_mknetdir_LDADD = $(LIBLZMA) libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_mknetdir_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_mknetdir_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_mknetdir_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_mknetdir_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_mknetdir_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_mknetdir_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -432,7 +432,7 @@ check_PROGRAMS += example_unit_test
|
|||||||
TESTS += example_unit_test
|
TESTS += example_unit_test
|
||||||
example_unit_test_SOURCES = tests/example_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
example_unit_test_SOURCES = tests/example_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
||||||
nodist_example_unit_test_SOURCES =
|
nodist_example_unit_test_SOURCES =
|
||||||
example_unit_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
example_unit_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
example_unit_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
example_unit_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
example_unit_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
example_unit_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
example_unit_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
example_unit_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -444,7 +444,7 @@ check_PROGRAMS += printf_test
|
|||||||
TESTS += printf_test
|
TESTS += printf_test
|
||||||
printf_test_SOURCES = tests/printf_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
printf_test_SOURCES = tests/printf_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
||||||
nodist_printf_test_SOURCES =
|
nodist_printf_test_SOURCES =
|
||||||
printf_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
printf_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
printf_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
printf_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
printf_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
printf_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
printf_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
printf_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -456,7 +456,7 @@ check_PROGRAMS += date_test
|
|||||||
TESTS += date_test
|
TESTS += date_test
|
||||||
date_test_SOURCES = tests/date_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
date_test_SOURCES = tests/date_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
||||||
nodist_date_test_SOURCES =
|
nodist_date_test_SOURCES =
|
||||||
date_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
date_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
date_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
date_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
date_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
date_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
date_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
date_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -469,7 +469,7 @@ check_PROGRAMS += priority_queue_unit_test
|
|||||||
TESTS += priority_queue_unit_test
|
TESTS += priority_queue_unit_test
|
||||||
priority_queue_unit_test_SOURCES = tests/priority_queue_unit_test.cc tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c grub-core/lib/priority_queue.c
|
priority_queue_unit_test_SOURCES = tests/priority_queue_unit_test.cc tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c grub-core/lib/priority_queue.c
|
||||||
nodist_priority_queue_unit_test_SOURCES =
|
nodist_priority_queue_unit_test_SOURCES =
|
||||||
priority_queue_unit_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
priority_queue_unit_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
priority_queue_unit_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
priority_queue_unit_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
priority_queue_unit_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
priority_queue_unit_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
priority_queue_unit_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
priority_queue_unit_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -482,7 +482,7 @@ check_PROGRAMS += cmp_test
|
|||||||
TESTS += cmp_test
|
TESTS += cmp_test
|
||||||
cmp_test_SOURCES = tests/cmp_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
cmp_test_SOURCES = tests/cmp_unit_test.c tests/lib/unit_test.c grub-core/kern/list.c grub-core/kern/misc.c grub-core/tests/lib/test.c
|
||||||
nodist_cmp_test_SOURCES =
|
nodist_cmp_test_SOURCES =
|
||||||
cmp_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
cmp_test_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
cmp_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
cmp_test_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
cmp_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
cmp_test_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
cmp_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
cmp_test_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -502,7 +502,7 @@ CLEANFILES += grub-menulst2cfg.1
|
|||||||
endif
|
endif
|
||||||
grub_menulst2cfg_SOURCES = util/grub-menulst2cfg.c grub-core/lib/legacy_parse.c grub-core/lib/i386/pc/vesa_modes_table.c grub-core/osdep/init.c
|
grub_menulst2cfg_SOURCES = util/grub-menulst2cfg.c grub-core/lib/legacy_parse.c grub-core/lib/i386/pc/vesa_modes_table.c grub-core/osdep/init.c
|
||||||
nodist_grub_menulst2cfg_SOURCES =
|
nodist_grub_menulst2cfg_SOURCES =
|
||||||
grub_menulst2cfg_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_menulst2cfg_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_menulst2cfg_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_menulst2cfg_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_menulst2cfg_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_menulst2cfg_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_menulst2cfg_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_menulst2cfg_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -522,7 +522,7 @@ CLEANFILES += grub-syslinux2cfg.1
|
|||||||
endif
|
endif
|
||||||
grub_syslinux2cfg_SOURCES = util/grub-syslinux2cfg.c grub-core/lib/syslinux_parse.c grub-core/lib/getline.c grub-core/osdep/init.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/kern/emu/argp_common.c
|
grub_syslinux2cfg_SOURCES = util/grub-syslinux2cfg.c grub-core/lib/syslinux_parse.c grub-core/lib/getline.c grub-core/osdep/init.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/kern/emu/argp_common.c
|
||||||
nodist_grub_syslinux2cfg_SOURCES =
|
nodist_grub_syslinux2cfg_SOURCES =
|
||||||
grub_syslinux2cfg_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_syslinux2cfg_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_syslinux2cfg_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_syslinux2cfg_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_syslinux2cfg_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_syslinux2cfg_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_syslinux2cfg_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_syslinux2cfg_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -542,7 +542,7 @@ CLEANFILES += grub-glue-efi.1
|
|||||||
endif
|
endif
|
||||||
grub_glue_efi_SOURCES = util/grub-glue-efi.c util/glue-efi.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
grub_glue_efi_SOURCES = util/grub-glue-efi.c util/glue-efi.c grub-core/kern/emu/argp_common.c grub-core/osdep/init.c
|
||||||
nodist_grub_glue_efi_SOURCES =
|
nodist_grub_glue_efi_SOURCES =
|
||||||
grub_glue_efi_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_glue_efi_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_glue_efi_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_glue_efi_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_glue_efi_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_glue_efi_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_glue_efi_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_glue_efi_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -562,7 +562,7 @@ CLEANFILES += grub-render-label.1
|
|||||||
endif
|
endif
|
||||||
grub_render_label_SOURCES = util/grub-render-label.c util/render-label.c grub-core/kern/emu/argp_common.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
grub_render_label_SOURCES = util/grub-render-label.c util/render-label.c grub-core/kern/emu/argp_common.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
||||||
nodist_grub_render_label_SOURCES =
|
nodist_grub_render_label_SOURCES =
|
||||||
grub_render_label_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_render_label_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_render_label_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_render_label_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_render_label_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_render_label_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_render_label_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_render_label_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -582,7 +582,7 @@ CLEANFILES += grub-file.1
|
|||||||
endif
|
endif
|
||||||
grub_file_SOURCES = util/grub-file.c util/render-label.c grub-core/commands/file.c grub-core/commands/file32.c grub-core/commands/file64.c grub-core/loader/i386/xen_file.c grub-core/loader/i386/xen_file32.c grub-core/loader/i386/xen_file64.c grub-core/io/offset.c grub-core/kern/elf.c grub-core/loader/lzss.c grub-core/loader/macho.c grub-core/loader/macho32.c grub-core/loader/macho64.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
grub_file_SOURCES = util/grub-file.c util/render-label.c grub-core/commands/file.c grub-core/commands/file32.c grub-core/commands/file64.c grub-core/loader/i386/xen_file.c grub-core/loader/i386/xen_file32.c grub-core/loader/i386/xen_file64.c grub-core/io/offset.c grub-core/kern/elf.c grub-core/loader/lzss.c grub-core/loader/macho.c grub-core/loader/macho32.c grub-core/loader/macho64.c grub-core/kern/emu/hostfs.c grub-core/disk/host.c grub-core/osdep/init.c
|
||||||
nodist_grub_file_SOURCES =
|
nodist_grub_file_SOURCES =
|
||||||
grub_file_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
grub_file_LDADD = libgrubmods.a libgrubgcry.a libgrubkern.a grub-core/lib/gnulib/libgnu.a $(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)
|
||||||
grub_file_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
grub_file_CFLAGS = $(AM_CFLAGS) $(CFLAGS_PROGRAM)
|
||||||
grub_file_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
grub_file_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_PROGRAM)
|
||||||
grub_file_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
grub_file_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM)
|
||||||
@ -912,6 +912,16 @@ xfs_test: $(top_builddir)/config.status tests/xfs_test.in
|
|||||||
CLEANFILES += xfs_test
|
CLEANFILES += xfs_test
|
||||||
EXTRA_DIST +=
|
EXTRA_DIST +=
|
||||||
dist_noinst_DATA += tests/xfs_test.in
|
dist_noinst_DATA += tests/xfs_test.in
|
||||||
|
check_SCRIPTS += f2fs_test
|
||||||
|
TESTS += f2fs_test
|
||||||
|
|
||||||
|
f2fs_test: $(top_builddir)/config.status tests/f2fs_test.in
|
||||||
|
(for x in tests/f2fs_test.in ; do cat $(srcdir)/"$$x"; done) | $(top_builddir)/config.status --file=$@:-
|
||||||
|
chmod a+x f2fs_test
|
||||||
|
|
||||||
|
CLEANFILES += f2fs_test
|
||||||
|
EXTRA_DIST +=
|
||||||
|
dist_noinst_DATA += tests/f2fs_test.in
|
||||||
check_SCRIPTS += nilfs2_test
|
check_SCRIPTS += nilfs2_test
|
||||||
TESTS += nilfs2_test
|
TESTS += nilfs2_test
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ library = {
|
|||||||
library = {
|
library = {
|
||||||
name = libgrubmods.a;
|
name = libgrubmods.a;
|
||||||
cflags = '-fno-builtin -Wno-undef';
|
cflags = '-fno-builtin -Wno-undef';
|
||||||
cppflags = '-I$(top_srcdir)/grub-core/lib/minilzo -I$(srcdir)/grub-core/lib/xzembed -DMINILZO_HAVE_CONFIG_H';
|
cppflags = '-I$(srcdir)/grub-core/lib/minilzo -I$(srcdir)/grub-core/lib/xzembed -I$(srcdir)/grub-core/lib/zstd -DMINILZO_HAVE_CONFIG_H';
|
||||||
|
|
||||||
common_nodist = grub_script.tab.c;
|
common_nodist = grub_script.tab.c;
|
||||||
common_nodist = grub_script.yy.c;
|
common_nodist = grub_script.yy.c;
|
||||||
@ -99,6 +99,7 @@ library = {
|
|||||||
common = grub-core/fs/ext2.c;
|
common = grub-core/fs/ext2.c;
|
||||||
common = grub-core/fs/fat.c;
|
common = grub-core/fs/fat.c;
|
||||||
common = grub-core/fs/exfat.c;
|
common = grub-core/fs/exfat.c;
|
||||||
|
common = grub-core/fs/f2fs.c;
|
||||||
common = grub-core/fs/fshelp.c;
|
common = grub-core/fs/fshelp.c;
|
||||||
common = grub-core/fs/hfs.c;
|
common = grub-core/fs/hfs.c;
|
||||||
common = grub-core/fs/hfsplus.c;
|
common = grub-core/fs/hfsplus.c;
|
||||||
@ -164,6 +165,15 @@ library = {
|
|||||||
common = grub-core/lib/xzembed/xz_dec_bcj.c;
|
common = grub-core/lib/xzembed/xz_dec_bcj.c;
|
||||||
common = grub-core/lib/xzembed/xz_dec_lzma2.c;
|
common = grub-core/lib/xzembed/xz_dec_lzma2.c;
|
||||||
common = grub-core/lib/xzembed/xz_dec_stream.c;
|
common = grub-core/lib/xzembed/xz_dec_stream.c;
|
||||||
|
common = grub-core/lib/zstd/debug.c;
|
||||||
|
common = grub-core/lib/zstd/entropy_common.c;
|
||||||
|
common = grub-core/lib/zstd/error_private.c;
|
||||||
|
common = grub-core/lib/zstd/fse_decompress.c;
|
||||||
|
common = grub-core/lib/zstd/huf_decompress.c;
|
||||||
|
common = grub-core/lib/zstd/module.c;
|
||||||
|
common = grub-core/lib/zstd/xxhash.c;
|
||||||
|
common = grub-core/lib/zstd/zstd_common.c;
|
||||||
|
common = grub-core/lib/zstd/zstd_decompress.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
program = {
|
program = {
|
||||||
@ -188,7 +198,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBLZMA)';
|
ldadd = '$(LIBLZMA)';
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
cppflags = '-DGRUB_PKGLIBDIR=\"$(pkglibdir)\"';
|
cppflags = '-DGRUB_PKGLIBDIR=\"$(pkglibdir)\"';
|
||||||
@ -205,7 +215,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -220,7 +230,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -235,7 +245,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -251,7 +261,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -274,7 +284,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -290,7 +300,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM) -lfuse';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM) -lfuse';
|
||||||
condition = COND_GRUB_MOUNT;
|
condition = COND_GRUB_MOUNT;
|
||||||
};
|
};
|
||||||
@ -302,14 +312,14 @@ program = {
|
|||||||
common = grub-core/kern/emu/argp_common.c;
|
common = grub-core/kern/emu/argp_common.c;
|
||||||
common = grub-core/osdep/init.c;
|
common = grub-core/osdep/init.c;
|
||||||
|
|
||||||
cflags = '$(freetype_cflags)';
|
cflags = '$(FREETYPE_CFLAGS)';
|
||||||
cppflags = '-DGRUB_MKFONT=1';
|
cppflags = '-DGRUB_MKFONT=1';
|
||||||
|
|
||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(freetype_libs)';
|
ldadd = '$(FREETYPE_LIBS)';
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
condition = COND_GRUB_MKFONT;
|
condition = COND_GRUB_MKFONT;
|
||||||
};
|
};
|
||||||
@ -327,7 +337,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -349,7 +359,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
cppflags = '-DGRUB_SETUP_FUNC=grub_util_bios_setup';
|
cppflags = '-DGRUB_SETUP_FUNC=grub_util_bios_setup';
|
||||||
};
|
};
|
||||||
@ -369,7 +379,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
cppflags = '-DGRUB_SETUP_FUNC=grub_util_sparc_setup';
|
cppflags = '-DGRUB_SETUP_FUNC=grub_util_sparc_setup';
|
||||||
};
|
};
|
||||||
@ -385,7 +395,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -400,7 +410,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -415,7 +425,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -542,7 +552,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
|
|
||||||
condition = COND_HAVE_EXEC;
|
condition = COND_HAVE_EXEC;
|
||||||
@ -589,7 +599,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -628,7 +638,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -664,7 +674,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -774,6 +784,12 @@ script = {
|
|||||||
common = tests/xfs_test.in;
|
common = tests/xfs_test.in;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = f2fs_test;
|
||||||
|
common = tests/f2fs_test.in;
|
||||||
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
testcase;
|
testcase;
|
||||||
name = nilfs2_test;
|
name = nilfs2_test;
|
||||||
@ -1188,7 +1204,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1203,7 +1219,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1218,7 +1234,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1234,7 +1250,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
condition = COND_HAVE_CXX;
|
condition = COND_HAVE_CXX;
|
||||||
};
|
};
|
||||||
@ -1250,7 +1266,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1265,7 +1281,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1283,7 +1299,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1299,7 +1315,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1317,7 +1333,7 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1346,6 +1362,6 @@ program = {
|
|||||||
ldadd = libgrubmods.a;
|
ldadd = libgrubmods.a;
|
||||||
ldadd = libgrubgcry.a;
|
ldadd = libgrubgcry.a;
|
||||||
ldadd = libgrubkern.a;
|
ldadd = libgrubkern.a;
|
||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/lib/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
551
aclocal.m4
vendored
551
aclocal.m4
vendored
@ -20,6 +20,282 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
|||||||
If you have problems, you may need to regenerate the build system entirely.
|
If you have problems, you may need to regenerate the build system entirely.
|
||||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||||
|
|
||||||
|
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||||
|
dnl serial 11 (pkg-config-0.29)
|
||||||
|
dnl
|
||||||
|
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||||
|
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||||
|
dnl
|
||||||
|
dnl This program is free software; you can redistribute it and/or modify
|
||||||
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation; either version 2 of the License, or
|
||||||
|
dnl (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl This program is distributed in the hope that it will be useful, but
|
||||||
|
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
dnl General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with this program; if not, write to the Free Software
|
||||||
|
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
dnl 02111-1307, USA.
|
||||||
|
dnl
|
||||||
|
dnl As a special exception to the GNU General Public License, if you
|
||||||
|
dnl distribute this file as part of a program that contains a
|
||||||
|
dnl configuration script generated by Autoconf, you may include it under
|
||||||
|
dnl the same distribution terms that you use for the rest of that
|
||||||
|
dnl program.
|
||||||
|
|
||||||
|
dnl PKG_PREREQ(MIN-VERSION)
|
||||||
|
dnl -----------------------
|
||||||
|
dnl Since: 0.29
|
||||||
|
dnl
|
||||||
|
dnl Verify that the version of the pkg-config macros are at least
|
||||||
|
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
|
||||||
|
dnl installed version of pkg-config, this checks the developer's version
|
||||||
|
dnl of pkg.m4 when generating configure.
|
||||||
|
dnl
|
||||||
|
dnl To ensure that this macro is defined, also add:
|
||||||
|
dnl m4_ifndef([PKG_PREREQ],
|
||||||
|
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
|
||||||
|
dnl
|
||||||
|
dnl See the "Since" comment for each macro you use to see what version
|
||||||
|
dnl of the macros you require.
|
||||||
|
m4_defun([PKG_PREREQ],
|
||||||
|
[m4_define([PKG_MACROS_VERSION], [0.29])
|
||||||
|
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||||
|
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||||
|
])dnl PKG_PREREQ
|
||||||
|
|
||||||
|
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||||
|
dnl ----------------------------------
|
||||||
|
dnl Since: 0.16
|
||||||
|
dnl
|
||||||
|
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
|
||||||
|
dnl first found in the path. Checks that the version of pkg-config found
|
||||||
|
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
|
||||||
|
dnl used since that's the first version where most current features of
|
||||||
|
dnl pkg-config existed.
|
||||||
|
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||||
|
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||||
|
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||||
|
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
|
||||||
|
|
||||||
|
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||||
|
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||||
|
fi
|
||||||
|
if test -n "$PKG_CONFIG"; then
|
||||||
|
_pkg_min_version=m4_default([$1], [0.9.0])
|
||||||
|
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
|
||||||
|
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
PKG_CONFIG=""
|
||||||
|
fi
|
||||||
|
fi[]dnl
|
||||||
|
])dnl PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
|
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl -------------------------------------------------------------------
|
||||||
|
dnl Since: 0.18
|
||||||
|
dnl
|
||||||
|
dnl Check to see whether a particular set of modules exists. Similar to
|
||||||
|
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||||
|
dnl
|
||||||
|
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
dnl only at the first occurence in configure.ac, so if the first place
|
||||||
|
dnl it's called might be skipped (such as if it is within an "if", you
|
||||||
|
dnl have to call PKG_CHECK_EXISTS manually
|
||||||
|
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
if test -n "$PKG_CONFIG" && \
|
||||||
|
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
||||||
|
m4_default([$2], [:])
|
||||||
|
m4_ifvaln([$3], [else
|
||||||
|
$3])dnl
|
||||||
|
fi])
|
||||||
|
|
||||||
|
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||||
|
dnl ---------------------------------------------
|
||||||
|
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
|
||||||
|
dnl pkg_failed based on the result.
|
||||||
|
m4_define([_PKG_CONFIG],
|
||||||
|
[if test -n "$$1"; then
|
||||||
|
pkg_cv_[]$1="$$1"
|
||||||
|
elif test -n "$PKG_CONFIG"; then
|
||||||
|
PKG_CHECK_EXISTS([$3],
|
||||||
|
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
|
||||||
|
test "x$?" != "x0" && pkg_failed=yes ],
|
||||||
|
[pkg_failed=yes])
|
||||||
|
else
|
||||||
|
pkg_failed=untried
|
||||||
|
fi[]dnl
|
||||||
|
])dnl _PKG_CONFIG
|
||||||
|
|
||||||
|
dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
dnl ---------------------------
|
||||||
|
dnl Internal check to see if pkg-config supports short errors.
|
||||||
|
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||||
|
_pkg_short_errors_supported=yes
|
||||||
|
else
|
||||||
|
_pkg_short_errors_supported=no
|
||||||
|
fi[]dnl
|
||||||
|
])dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||||
|
dnl [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl --------------------------------------------------------------
|
||||||
|
dnl Since: 0.4.0
|
||||||
|
dnl
|
||||||
|
dnl Note that if there is a possibility the first call to
|
||||||
|
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||||
|
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||||
|
AC_DEFUN([PKG_CHECK_MODULES],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||||
|
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||||
|
|
||||||
|
pkg_failed=no
|
||||||
|
AC_MSG_CHECKING([for $1])
|
||||||
|
|
||||||
|
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||||
|
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||||
|
|
||||||
|
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
|
||||||
|
and $1[]_LIBS to avoid the need to call pkg-config.
|
||||||
|
See the pkg-config man page for more details.])
|
||||||
|
|
||||||
|
if test $pkg_failed = yes; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||||
|
else
|
||||||
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||||
|
fi
|
||||||
|
# Put the nasty error message in config.log where it belongs
|
||||||
|
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||||
|
|
||||||
|
m4_default([$4], [AC_MSG_ERROR(
|
||||||
|
[Package requirements ($2) were not met:
|
||||||
|
|
||||||
|
$$1_PKG_ERRORS
|
||||||
|
|
||||||
|
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
||||||
|
installed software in a non-standard prefix.
|
||||||
|
|
||||||
|
_PKG_TEXT])[]dnl
|
||||||
|
])
|
||||||
|
elif test $pkg_failed = untried; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
m4_default([$4], [AC_MSG_FAILURE(
|
||||||
|
[The pkg-config script could not be found or is too old. Make sure it
|
||||||
|
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||||
|
path to pkg-config.
|
||||||
|
|
||||||
|
_PKG_TEXT
|
||||||
|
|
||||||
|
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||||
|
])
|
||||||
|
else
|
||||||
|
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||||
|
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
$3
|
||||||
|
fi[]dnl
|
||||||
|
])dnl PKG_CHECK_MODULES
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||||
|
dnl [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl ---------------------------------------------------------------------
|
||||||
|
dnl Since: 0.29
|
||||||
|
dnl
|
||||||
|
dnl Checks for existence of MODULES and gathers its build flags with
|
||||||
|
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
|
||||||
|
dnl and VARIABLE-PREFIX_LIBS from --libs.
|
||||||
|
dnl
|
||||||
|
dnl Note that if there is a possibility the first call to
|
||||||
|
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
|
||||||
|
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
|
||||||
|
dnl configure.ac.
|
||||||
|
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
_save_PKG_CONFIG=$PKG_CONFIG
|
||||||
|
PKG_CONFIG="$PKG_CONFIG --static"
|
||||||
|
PKG_CHECK_MODULES($@)
|
||||||
|
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
|
||||||
|
])dnl PKG_CHECK_MODULES_STATIC
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_INSTALLDIR([DIRECTORY])
|
||||||
|
dnl -------------------------
|
||||||
|
dnl Since: 0.27
|
||||||
|
dnl
|
||||||
|
dnl Substitutes the variable pkgconfigdir as the location where a module
|
||||||
|
dnl should install pkg-config .pc files. By default the directory is
|
||||||
|
dnl $libdir/pkgconfig, but the default can be changed by passing
|
||||||
|
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||||
|
dnl parameter.
|
||||||
|
AC_DEFUN([PKG_INSTALLDIR],
|
||||||
|
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
|
||||||
|
m4_pushdef([pkg_description],
|
||||||
|
[pkg-config installation directory @<:@]pkg_default[@:>@])
|
||||||
|
AC_ARG_WITH([pkgconfigdir],
|
||||||
|
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
|
||||||
|
[with_pkgconfigdir=]pkg_default)
|
||||||
|
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
|
||||||
|
m4_popdef([pkg_default])
|
||||||
|
m4_popdef([pkg_description])
|
||||||
|
])dnl PKG_INSTALLDIR
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
|
||||||
|
dnl --------------------------------
|
||||||
|
dnl Since: 0.27
|
||||||
|
dnl
|
||||||
|
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||||
|
dnl module should install arch-independent pkg-config .pc files. By
|
||||||
|
dnl default the directory is $datadir/pkgconfig, but the default can be
|
||||||
|
dnl changed by passing DIRECTORY. The user can override through the
|
||||||
|
dnl --with-noarch-pkgconfigdir parameter.
|
||||||
|
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
|
||||||
|
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
|
||||||
|
m4_pushdef([pkg_description],
|
||||||
|
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
|
||||||
|
AC_ARG_WITH([noarch-pkgconfigdir],
|
||||||
|
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
|
||||||
|
[with_noarch_pkgconfigdir=]pkg_default)
|
||||||
|
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
|
||||||
|
m4_popdef([pkg_default])
|
||||||
|
m4_popdef([pkg_description])
|
||||||
|
])dnl PKG_NOARCH_INSTALLDIR
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
|
||||||
|
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl -------------------------------------------
|
||||||
|
dnl Since: 0.28
|
||||||
|
dnl
|
||||||
|
dnl Retrieves the value of the pkg-config variable for the given module.
|
||||||
|
AC_DEFUN([PKG_CHECK_VAR],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
|
||||||
|
|
||||||
|
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
|
||||||
|
AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||||
|
|
||||||
|
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||||
|
])dnl PKG_CHECK_VAR
|
||||||
|
|
||||||
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
@ -832,6 +1108,241 @@ AC_LANG_POP([C])])
|
|||||||
# For backward compatibility.
|
# For backward compatibility.
|
||||||
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
|
||||||
|
# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Adds support for distributing Python modules and packages. To
|
||||||
|
# install modules, copy them to $(pythondir), using the python_PYTHON
|
||||||
|
# automake variable. To install a package with the same name as the
|
||||||
|
# automake package, install to $(pkgpythondir), or use the
|
||||||
|
# pkgpython_PYTHON automake variable.
|
||||||
|
#
|
||||||
|
# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
|
||||||
|
# locations to install python extension modules (shared libraries).
|
||||||
|
# Another macro is required to find the appropriate flags to compile
|
||||||
|
# extension modules.
|
||||||
|
#
|
||||||
|
# If your package is configured with a different prefix to python,
|
||||||
|
# users will have to add the install directory to the PYTHONPATH
|
||||||
|
# environment variable, or create a .pth file (see the python
|
||||||
|
# documentation for details).
|
||||||
|
#
|
||||||
|
# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
|
||||||
|
# cause an error if the version of python installed on the system
|
||||||
|
# doesn't meet the requirement. MINIMUM-VERSION should consist of
|
||||||
|
# numbers and dots only.
|
||||||
|
AC_DEFUN([AM_PATH_PYTHON],
|
||||||
|
[
|
||||||
|
dnl Find a Python interpreter. Python versions prior to 2.0 are not
|
||||||
|
dnl supported. (2.0 was released on October 16, 2000).
|
||||||
|
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
|
||||||
|
[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
|
||||||
|
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
|
||||||
|
|
||||||
|
AC_ARG_VAR([PYTHON], [the Python interpreter])
|
||||||
|
|
||||||
|
m4_if([$1],[],[
|
||||||
|
dnl No version check is needed.
|
||||||
|
# Find any Python interpreter.
|
||||||
|
if test -z "$PYTHON"; then
|
||||||
|
AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
|
||||||
|
fi
|
||||||
|
am_display_PYTHON=python
|
||||||
|
], [
|
||||||
|
dnl A version check is needed.
|
||||||
|
if test -n "$PYTHON"; then
|
||||||
|
# If the user set $PYTHON, use it and don't search something else.
|
||||||
|
AC_MSG_CHECKING([whether $PYTHON version is >= $1])
|
||||||
|
AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
|
||||||
|
[AC_MSG_RESULT([yes])],
|
||||||
|
[AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_ERROR([Python interpreter is too old])])
|
||||||
|
am_display_PYTHON=$PYTHON
|
||||||
|
else
|
||||||
|
# Otherwise, try each interpreter until we find one that satisfies
|
||||||
|
# VERSION.
|
||||||
|
AC_CACHE_CHECK([for a Python interpreter with version >= $1],
|
||||||
|
[am_cv_pathless_PYTHON],[
|
||||||
|
for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
|
||||||
|
test "$am_cv_pathless_PYTHON" = none && break
|
||||||
|
AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
|
||||||
|
done])
|
||||||
|
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
|
||||||
|
if test "$am_cv_pathless_PYTHON" = none; then
|
||||||
|
PYTHON=:
|
||||||
|
else
|
||||||
|
AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
|
||||||
|
fi
|
||||||
|
am_display_PYTHON=$am_cv_pathless_PYTHON
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test "$PYTHON" = :; then
|
||||||
|
dnl Run any user-specified action, or abort.
|
||||||
|
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
|
||||||
|
else
|
||||||
|
|
||||||
|
dnl Query Python for its version number. Getting [:3] seems to be
|
||||||
|
dnl the best way to do this; it's what "site.py" does in the standard
|
||||||
|
dnl library.
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
|
||||||
|
[am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
|
||||||
|
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
|
||||||
|
|
||||||
|
dnl Use the values of $prefix and $exec_prefix for the corresponding
|
||||||
|
dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
|
||||||
|
dnl distinct variables so they can be overridden if need be. However,
|
||||||
|
dnl general consensus is that you shouldn't need this ability.
|
||||||
|
|
||||||
|
AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
|
||||||
|
AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
|
||||||
|
|
||||||
|
dnl At times (like when building shared libraries) you may want
|
||||||
|
dnl to know which OS platform Python thinks this is.
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
|
||||||
|
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
|
||||||
|
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
|
||||||
|
|
||||||
|
# Just factor out some code duplication.
|
||||||
|
am_python_setup_sysconfig="\
|
||||||
|
import sys
|
||||||
|
# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
||||||
|
# with python 3.x. See automake bug#10227.
|
||||||
|
try:
|
||||||
|
import sysconfig
|
||||||
|
except ImportError:
|
||||||
|
can_use_sysconfig = 0
|
||||||
|
else:
|
||||||
|
can_use_sysconfig = 1
|
||||||
|
# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
|
||||||
|
# <https://github.com/pypa/virtualenv/issues/118>
|
||||||
|
try:
|
||||||
|
from platform import python_implementation
|
||||||
|
if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
|
||||||
|
can_use_sysconfig = 0
|
||||||
|
except ImportError:
|
||||||
|
pass"
|
||||||
|
|
||||||
|
dnl Set up 4 directories:
|
||||||
|
|
||||||
|
dnl pythondir -- where to install python scripts. This is the
|
||||||
|
dnl site-packages directory, not the python standard library
|
||||||
|
dnl directory like in previous automake betas. This behavior
|
||||||
|
dnl is more consistent with lispdir.m4 for example.
|
||||||
|
dnl Query distutils for this directory.
|
||||||
|
AC_CACHE_CHECK([for $am_display_PYTHON script directory],
|
||||||
|
[am_cv_python_pythondir],
|
||||||
|
[if test "x$prefix" = xNONE
|
||||||
|
then
|
||||||
|
am_py_prefix=$ac_default_prefix
|
||||||
|
else
|
||||||
|
am_py_prefix=$prefix
|
||||||
|
fi
|
||||||
|
am_cv_python_pythondir=`$PYTHON -c "
|
||||||
|
$am_python_setup_sysconfig
|
||||||
|
if can_use_sysconfig:
|
||||||
|
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||||
|
else:
|
||||||
|
from distutils import sysconfig
|
||||||
|
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||||
|
sys.stdout.write(sitedir)"`
|
||||||
|
case $am_cv_python_pythondir in
|
||||||
|
$am_py_prefix*)
|
||||||
|
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||||
|
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $am_py_prefix in
|
||||||
|
/usr|/System*) ;;
|
||||||
|
*)
|
||||||
|
am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
])
|
||||||
|
AC_SUBST([pythondir], [$am_cv_python_pythondir])
|
||||||
|
|
||||||
|
dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
|
||||||
|
dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
|
||||||
|
dnl more consistent with the rest of automake.
|
||||||
|
|
||||||
|
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
|
||||||
|
|
||||||
|
dnl pyexecdir -- directory for installing python extension modules
|
||||||
|
dnl (shared libraries)
|
||||||
|
dnl Query distutils for this directory.
|
||||||
|
AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
|
||||||
|
[am_cv_python_pyexecdir],
|
||||||
|
[if test "x$exec_prefix" = xNONE
|
||||||
|
then
|
||||||
|
am_py_exec_prefix=$am_py_prefix
|
||||||
|
else
|
||||||
|
am_py_exec_prefix=$exec_prefix
|
||||||
|
fi
|
||||||
|
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||||
|
$am_python_setup_sysconfig
|
||||||
|
if can_use_sysconfig:
|
||||||
|
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
|
||||||
|
else:
|
||||||
|
from distutils import sysconfig
|
||||||
|
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
|
||||||
|
sys.stdout.write(sitedir)"`
|
||||||
|
case $am_cv_python_pyexecdir in
|
||||||
|
$am_py_exec_prefix*)
|
||||||
|
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||||
|
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $am_py_exec_prefix in
|
||||||
|
/usr|/System*) ;;
|
||||||
|
*)
|
||||||
|
am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
])
|
||||||
|
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
|
||||||
|
|
||||||
|
dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
|
||||||
|
|
||||||
|
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
|
||||||
|
|
||||||
|
dnl Run any user-specified action.
|
||||||
|
$2
|
||||||
|
fi
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
|
||||||
|
# Run ACTION-IF-FALSE otherwise.
|
||||||
|
# This test uses sys.hexversion instead of the string equivalent (first
|
||||||
|
# word of sys.version), in order to cope with versions such as 2.2c1.
|
||||||
|
# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
|
||||||
|
AC_DEFUN([AM_PYTHON_CHECK_VERSION],
|
||||||
|
[prog="import sys
|
||||||
|
# split strings by '.' and convert to numeric. Append some zeros
|
||||||
|
# because we need at least 4 digits for the hex conversion.
|
||||||
|
# map returns an iterator in Python 3.0 and a list in 2.x
|
||||||
|
minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
|
||||||
|
minverhex = 0
|
||||||
|
# xrange is not present in Python 3.0 and range returns an iterator
|
||||||
|
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
|
||||||
|
sys.exit(sys.hexversion < minverhex)"
|
||||||
|
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
@ -1171,47 +1682,70 @@ AC_SUBST([am__untar])
|
|||||||
]) # _AM_PROG_TAR
|
]) # _AM_PROG_TAR
|
||||||
|
|
||||||
m4_include([m4/00gnulib.m4])
|
m4_include([m4/00gnulib.m4])
|
||||||
|
m4_include([m4/__inline.m4])
|
||||||
|
m4_include([m4/absolute-header.m4])
|
||||||
m4_include([m4/alloca.m4])
|
m4_include([m4/alloca.m4])
|
||||||
m4_include([m4/argp.m4])
|
m4_include([m4/argp.m4])
|
||||||
m4_include([m4/btowc.m4])
|
m4_include([m4/btowc.m4])
|
||||||
|
m4_include([m4/builtin-expect.m4])
|
||||||
|
m4_include([m4/chdir-long.m4])
|
||||||
|
m4_include([m4/close.m4])
|
||||||
m4_include([m4/codeset.m4])
|
m4_include([m4/codeset.m4])
|
||||||
m4_include([m4/configmake.m4])
|
m4_include([m4/dirent_h.m4])
|
||||||
|
m4_include([m4/dirfd.m4])
|
||||||
m4_include([m4/dirname.m4])
|
m4_include([m4/dirname.m4])
|
||||||
m4_include([m4/double-slash-root.m4])
|
m4_include([m4/double-slash-root.m4])
|
||||||
|
m4_include([m4/dup2.m4])
|
||||||
m4_include([m4/eealloc.m4])
|
m4_include([m4/eealloc.m4])
|
||||||
m4_include([m4/errno_h.m4])
|
m4_include([m4/errno_h.m4])
|
||||||
m4_include([m4/error.m4])
|
m4_include([m4/error.m4])
|
||||||
m4_include([m4/exponentd.m4])
|
m4_include([m4/exponentd.m4])
|
||||||
m4_include([m4/extensions.m4])
|
m4_include([m4/extensions.m4])
|
||||||
m4_include([m4/extern-inline.m4])
|
m4_include([m4/extern-inline.m4])
|
||||||
|
m4_include([m4/fchdir.m4])
|
||||||
m4_include([m4/fcntl-o.m4])
|
m4_include([m4/fcntl-o.m4])
|
||||||
|
m4_include([m4/fcntl.m4])
|
||||||
|
m4_include([m4/fcntl_h.m4])
|
||||||
|
m4_include([m4/filenamecat.m4])
|
||||||
|
m4_include([m4/flexmember.m4])
|
||||||
m4_include([m4/float_h.m4])
|
m4_include([m4/float_h.m4])
|
||||||
m4_include([m4/fnmatch.m4])
|
m4_include([m4/fnmatch.m4])
|
||||||
|
m4_include([m4/fnmatch_h.m4])
|
||||||
|
m4_include([m4/fstat.m4])
|
||||||
|
m4_include([m4/getcwd.m4])
|
||||||
m4_include([m4/getdelim.m4])
|
m4_include([m4/getdelim.m4])
|
||||||
|
m4_include([m4/getdtablesize.m4])
|
||||||
m4_include([m4/getline.m4])
|
m4_include([m4/getline.m4])
|
||||||
m4_include([m4/getopt.m4])
|
m4_include([m4/getopt.m4])
|
||||||
|
m4_include([m4/getprogname.m4])
|
||||||
m4_include([m4/gettext.m4])
|
m4_include([m4/gettext.m4])
|
||||||
m4_include([m4/glibc21.m4])
|
m4_include([m4/glibc21.m4])
|
||||||
m4_include([m4/gnulib-common.m4])
|
m4_include([m4/gnulib-common.m4])
|
||||||
m4_include([m4/gnulib-comp.m4])
|
m4_include([m4/gnulib-comp.m4])
|
||||||
|
m4_include([m4/host-cpu-c-abi.m4])
|
||||||
m4_include([m4/iconv.m4])
|
m4_include([m4/iconv.m4])
|
||||||
m4_include([m4/include_next.m4])
|
m4_include([m4/include_next.m4])
|
||||||
m4_include([m4/intlmacosx.m4])
|
m4_include([m4/intlmacosx.m4])
|
||||||
m4_include([m4/intmax_t.m4])
|
m4_include([m4/intmax_t.m4])
|
||||||
m4_include([m4/inttypes_h.m4])
|
m4_include([m4/inttypes_h.m4])
|
||||||
m4_include([m4/langinfo_h.m4])
|
m4_include([m4/langinfo_h.m4])
|
||||||
|
m4_include([m4/largefile.m4])
|
||||||
m4_include([m4/lib-ld.m4])
|
m4_include([m4/lib-ld.m4])
|
||||||
m4_include([m4/lib-link.m4])
|
m4_include([m4/lib-link.m4])
|
||||||
m4_include([m4/lib-prefix.m4])
|
m4_include([m4/lib-prefix.m4])
|
||||||
m4_include([m4/libunistring-base.m4])
|
m4_include([m4/libunistring-base.m4])
|
||||||
|
m4_include([m4/limits-h.m4])
|
||||||
m4_include([m4/localcharset.m4])
|
m4_include([m4/localcharset.m4])
|
||||||
m4_include([m4/locale-fr.m4])
|
m4_include([m4/locale-fr.m4])
|
||||||
m4_include([m4/locale-ja.m4])
|
m4_include([m4/locale-ja.m4])
|
||||||
m4_include([m4/locale-zh.m4])
|
m4_include([m4/locale-zh.m4])
|
||||||
m4_include([m4/locale_h.m4])
|
m4_include([m4/locale_h.m4])
|
||||||
m4_include([m4/localeconv.m4])
|
m4_include([m4/localeconv.m4])
|
||||||
|
m4_include([m4/lock.m4])
|
||||||
m4_include([m4/longlong.m4])
|
m4_include([m4/longlong.m4])
|
||||||
|
m4_include([m4/lstat.m4])
|
||||||
m4_include([m4/malloc.m4])
|
m4_include([m4/malloc.m4])
|
||||||
|
m4_include([m4/malloca.m4])
|
||||||
m4_include([m4/mbrtowc.m4])
|
m4_include([m4/mbrtowc.m4])
|
||||||
m4_include([m4/mbsinit.m4])
|
m4_include([m4/mbsinit.m4])
|
||||||
m4_include([m4/mbsrtowcs.m4])
|
m4_include([m4/mbsrtowcs.m4])
|
||||||
@ -1220,7 +1754,9 @@ m4_include([m4/mbswidth.m4])
|
|||||||
m4_include([m4/mbtowc.m4])
|
m4_include([m4/mbtowc.m4])
|
||||||
m4_include([m4/memchr.m4])
|
m4_include([m4/memchr.m4])
|
||||||
m4_include([m4/mempcpy.m4])
|
m4_include([m4/mempcpy.m4])
|
||||||
|
m4_include([m4/memrchr.m4])
|
||||||
m4_include([m4/mmap-anon.m4])
|
m4_include([m4/mmap-anon.m4])
|
||||||
|
m4_include([m4/mode_t.m4])
|
||||||
m4_include([m4/msvc-inval.m4])
|
m4_include([m4/msvc-inval.m4])
|
||||||
m4_include([m4/msvc-nothrow.m4])
|
m4_include([m4/msvc-nothrow.m4])
|
||||||
m4_include([m4/multiarch.m4])
|
m4_include([m4/multiarch.m4])
|
||||||
@ -1228,15 +1764,23 @@ m4_include([m4/nl_langinfo.m4])
|
|||||||
m4_include([m4/nls.m4])
|
m4_include([m4/nls.m4])
|
||||||
m4_include([m4/nocrash.m4])
|
m4_include([m4/nocrash.m4])
|
||||||
m4_include([m4/off_t.m4])
|
m4_include([m4/off_t.m4])
|
||||||
|
m4_include([m4/open-cloexec.m4])
|
||||||
|
m4_include([m4/open.m4])
|
||||||
|
m4_include([m4/openat.m4])
|
||||||
|
m4_include([m4/pathmax.m4])
|
||||||
m4_include([m4/po.m4])
|
m4_include([m4/po.m4])
|
||||||
m4_include([m4/printf.m4])
|
m4_include([m4/printf.m4])
|
||||||
m4_include([m4/progtest.m4])
|
m4_include([m4/progtest.m4])
|
||||||
|
m4_include([m4/pthread_rwlock_rdlock.m4])
|
||||||
m4_include([m4/rawmemchr.m4])
|
m4_include([m4/rawmemchr.m4])
|
||||||
m4_include([m4/realloc.m4])
|
m4_include([m4/realloc.m4])
|
||||||
m4_include([m4/regex.m4])
|
m4_include([m4/regex.m4])
|
||||||
|
m4_include([m4/save-cwd.m4])
|
||||||
m4_include([m4/size_max.m4])
|
m4_include([m4/size_max.m4])
|
||||||
m4_include([m4/sleep.m4])
|
m4_include([m4/sleep.m4])
|
||||||
m4_include([m4/ssize_t.m4])
|
m4_include([m4/ssize_t.m4])
|
||||||
|
m4_include([m4/stat-time.m4])
|
||||||
|
m4_include([m4/stat.m4])
|
||||||
m4_include([m4/stdalign.m4])
|
m4_include([m4/stdalign.m4])
|
||||||
m4_include([m4/stdbool.m4])
|
m4_include([m4/stdbool.m4])
|
||||||
m4_include([m4/stddef_h.m4])
|
m4_include([m4/stddef_h.m4])
|
||||||
@ -1246,14 +1790,19 @@ m4_include([m4/stdio_h.m4])
|
|||||||
m4_include([m4/stdlib_h.m4])
|
m4_include([m4/stdlib_h.m4])
|
||||||
m4_include([m4/strcase.m4])
|
m4_include([m4/strcase.m4])
|
||||||
m4_include([m4/strchrnul.m4])
|
m4_include([m4/strchrnul.m4])
|
||||||
|
m4_include([m4/strdup.m4])
|
||||||
m4_include([m4/strerror.m4])
|
m4_include([m4/strerror.m4])
|
||||||
m4_include([m4/string_h.m4])
|
m4_include([m4/string_h.m4])
|
||||||
m4_include([m4/strings_h.m4])
|
m4_include([m4/strings_h.m4])
|
||||||
m4_include([m4/strndup.m4])
|
m4_include([m4/strndup.m4])
|
||||||
m4_include([m4/strnlen.m4])
|
m4_include([m4/strnlen.m4])
|
||||||
m4_include([m4/sys_socket_h.m4])
|
m4_include([m4/sys_socket_h.m4])
|
||||||
|
m4_include([m4/sys_stat_h.m4])
|
||||||
m4_include([m4/sys_types_h.m4])
|
m4_include([m4/sys_types_h.m4])
|
||||||
m4_include([m4/sysexits.m4])
|
m4_include([m4/sysexits.m4])
|
||||||
|
m4_include([m4/threadlib.m4])
|
||||||
|
m4_include([m4/time_h.m4])
|
||||||
|
m4_include([m4/unistd-safer.m4])
|
||||||
m4_include([m4/unistd_h.m4])
|
m4_include([m4/unistd_h.m4])
|
||||||
m4_include([m4/vasnprintf.m4])
|
m4_include([m4/vasnprintf.m4])
|
||||||
m4_include([m4/vsnprintf.m4])
|
m4_include([m4/vsnprintf.m4])
|
||||||
|
20
autogen.sh
20
autogen.sh
@ -2,13 +2,18 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
if [ ! -e grub-core/lib/gnulib/stdlib.in.h ]; then
|
||||||
|
echo "Gnulib not yet bootstrapped; run ./bootstrap instead." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Set ${PYTHON} to plain 'python' if not set already
|
# Set ${PYTHON} to plain 'python' if not set already
|
||||||
: ${PYTHON:=python}
|
: ${PYTHON:=python}
|
||||||
|
|
||||||
export LC_COLLATE=C
|
export LC_COLLATE=C
|
||||||
unset LC_ALL
|
unset LC_ALL
|
||||||
|
|
||||||
find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' |sort > po/POTFILES.in
|
find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -iname './grub-core/lib/gnulib/*' |sort > po/POTFILES.in
|
||||||
find util -iname '*.in' ! -name Makefile.in |sort > po/POTFILES-shell.in
|
find util -iname '*.in' ! -name Makefile.in |sort > po/POTFILES-shell.in
|
||||||
|
|
||||||
echo "Importing unicode..."
|
echo "Importing unicode..."
|
||||||
@ -82,6 +87,17 @@ done
|
|||||||
echo "Saving timestamps..."
|
echo "Saving timestamps..."
|
||||||
echo timestamp > stamp-h.in
|
echo timestamp > stamp-h.in
|
||||||
|
|
||||||
|
if [ -z "$FROM_BOOTSTRAP" ]; then
|
||||||
|
# Unaided autoreconf is likely to install older versions of many files
|
||||||
|
# than the ones provided by Gnulib, but in most cases this won't matter
|
||||||
|
# very much. This mode is provided so that you can run ./autogen.sh to
|
||||||
|
# regenerate the GRUB build system in an unpacked release tarball (perhaps
|
||||||
|
# after patching it), even on systems that don't have access to
|
||||||
|
# gnulib.git.
|
||||||
echo "Running autoreconf..."
|
echo "Running autoreconf..."
|
||||||
autoreconf -vi
|
cp -a INSTALL INSTALL.grub
|
||||||
|
autoreconf -vif
|
||||||
|
mv INSTALL.grub INSTALL
|
||||||
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2012-10-14.11; # UTC
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
760
build-aux/config.guess
vendored
760
build-aux/config.guess
vendored
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
|||||||
# Output a system dependent set of variables, describing how to set the
|
# Output a system dependent set of variables, describing how to set the
|
||||||
# run time search path of shared libraries in an executable.
|
# run time search path of shared libraries in an executable.
|
||||||
#
|
#
|
||||||
# Copyright 1996-2013 Free Software Foundation, Inc.
|
# Copyright 1996-2019 Free Software Foundation, Inc.
|
||||||
# Taken from GNU libtool, 2001
|
# Taken from GNU libtool, 2001
|
||||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||||
#
|
#
|
||||||
@ -367,11 +367,7 @@ else
|
|||||||
dgux*)
|
dgux*)
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
;;
|
;;
|
||||||
freebsd2.2*)
|
freebsd2.[01]*)
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
freebsd2*)
|
|
||||||
hardcode_direct=yes
|
hardcode_direct=yes
|
||||||
hardcode_minus_L=yes
|
hardcode_minus_L=yes
|
||||||
;;
|
;;
|
||||||
@ -548,13 +544,11 @@ case "$host_os" in
|
|||||||
dgux*)
|
dgux*)
|
||||||
library_names_spec='$libname$shrext'
|
library_names_spec='$libname$shrext'
|
||||||
;;
|
;;
|
||||||
|
freebsd[23].*)
|
||||||
|
library_names_spec='$libname$shrext$versuffix'
|
||||||
|
;;
|
||||||
freebsd* | dragonfly*)
|
freebsd* | dragonfly*)
|
||||||
case "$host_os" in
|
library_names_spec='$libname$shrext'
|
||||||
freebsd[123]*)
|
|
||||||
library_names_spec='$libname$shrext$versuffix' ;;
|
|
||||||
*)
|
|
||||||
library_names_spec='$libname$shrext' ;;
|
|
||||||
esac
|
|
||||||
;;
|
;;
|
||||||
gnu*)
|
gnu*)
|
||||||
library_names_spec='$libname$shrext'
|
library_names_spec='$libname$shrext'
|
||||||
|
2758
build-aux/config.sub
vendored
2758
build-aux/config.sub
vendored
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
scriptversion=2013-05-30.07; # UTC
|
scriptversion=2018-03-07.03; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -16,7 +16,7 @@ scriptversion=2013-05-30.07; # UTC
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# 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
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
@ -783,9 +783,9 @@ exit 0
|
|||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: shell-script
|
# mode: shell-script
|
||||||
# sh-indentation: 2
|
# sh-indentation: 2
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
499
build-aux/gitlog-to-changelog
Executable file
499
build-aux/gitlog-to-changelog
Executable file
@ -0,0 +1,499 @@
|
|||||||
|
eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
|
||||||
|
& eval 'exec perl -wS "$0" $argv:q'
|
||||||
|
if 0;
|
||||||
|
# Convert git log output to ChangeLog format.
|
||||||
|
|
||||||
|
my $VERSION = '2018-03-07 03:47'; # UTC
|
||||||
|
# The definition above must lie within the first 8 lines in order
|
||||||
|
# for the Emacs time-stamp write hook (at end) to update it.
|
||||||
|
# If you change this file with Emacs, please let the write hook
|
||||||
|
# do its job. Otherwise, update this string manually.
|
||||||
|
|
||||||
|
# Copyright (C) 2008-2019 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
|
||||||
|
# the Free Software Foundation, either version 3 of the License, 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/>.
|
||||||
|
|
||||||
|
# Written by Jim Meyering
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Getopt::Long;
|
||||||
|
use POSIX qw(strftime);
|
||||||
|
|
||||||
|
(my $ME = $0) =~ s|.*/||;
|
||||||
|
|
||||||
|
# use File::Coda; # https://meyering.net/code/Coda/
|
||||||
|
END {
|
||||||
|
defined fileno STDOUT or return;
|
||||||
|
close STDOUT and return;
|
||||||
|
warn "$ME: failed to close standard output: $!\n";
|
||||||
|
$? ||= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub usage ($)
|
||||||
|
{
|
||||||
|
my ($exit_code) = @_;
|
||||||
|
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
||||||
|
if ($exit_code != 0)
|
||||||
|
{
|
||||||
|
print $STREAM "Try '$ME --help' for more information.\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print $STREAM <<EOF;
|
||||||
|
Usage: $ME [OPTIONS] [ARGS]
|
||||||
|
|
||||||
|
Convert git log output to ChangeLog format. If present, any ARGS
|
||||||
|
are passed to "git log". To avoid ARGS being parsed as options to
|
||||||
|
$ME, they may be preceded by '--'.
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
|
||||||
|
--amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
|
||||||
|
makes a change to SHA1's commit log text or metadata.
|
||||||
|
--append-dot append a dot to the first line of each commit message if
|
||||||
|
there is no other punctuation or blank at the end.
|
||||||
|
--no-cluster never cluster commit messages under the same date/author
|
||||||
|
header; the default is to cluster adjacent commit messages
|
||||||
|
if their headers are the same and neither commit message
|
||||||
|
contains multiple paragraphs.
|
||||||
|
--srcdir=DIR the root of the source tree, from which the .git/
|
||||||
|
directory can be derived.
|
||||||
|
--since=DATE convert only the logs since DATE;
|
||||||
|
the default is to convert all log entries.
|
||||||
|
--until=DATE convert only the logs older than DATE.
|
||||||
|
--ignore-matching=PAT ignore commit messages whose first lines match PAT.
|
||||||
|
--ignore-line=PAT ignore lines of commit messages that match PAT.
|
||||||
|
--format=FMT set format string for commit subject and body;
|
||||||
|
see 'man git-log' for the list of format metacharacters;
|
||||||
|
the default is '%s%n%b%n'
|
||||||
|
--strip-tab remove one additional leading TAB from commit message lines.
|
||||||
|
--strip-cherry-pick remove data inserted by "git cherry-pick";
|
||||||
|
this includes the "cherry picked from commit ..." line,
|
||||||
|
and the possible final "Conflicts:" paragraph.
|
||||||
|
--help display this help and exit
|
||||||
|
--version output version information and exit
|
||||||
|
|
||||||
|
EXAMPLE:
|
||||||
|
|
||||||
|
$ME --since=2008-01-01 > ChangeLog
|
||||||
|
$ME -- -n 5 foo > last-5-commits-to-branch-foo
|
||||||
|
|
||||||
|
SPECIAL SYNTAX:
|
||||||
|
|
||||||
|
The following types of strings are interpreted specially when they appear
|
||||||
|
at the beginning of a log message line. They are not copied to the output.
|
||||||
|
|
||||||
|
Copyright-paperwork-exempt: Yes
|
||||||
|
Append the "(tiny change)" notation to the usual "date name email"
|
||||||
|
ChangeLog header to mark a change that does not require a copyright
|
||||||
|
assignment.
|
||||||
|
Co-authored-by: Joe User <user\@example.com>
|
||||||
|
List the specified name and email address on a second
|
||||||
|
ChangeLog header, denoting a co-author.
|
||||||
|
Signed-off-by: Joe User <user\@example.com>
|
||||||
|
These lines are simply elided.
|
||||||
|
|
||||||
|
In a FILE specified via --amend, comment lines (starting with "#") are ignored.
|
||||||
|
FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
|
||||||
|
a line) referring to a commit in the current project, and CODE refers to one
|
||||||
|
or more consecutive lines of Perl code. Pairs must be separated by one or
|
||||||
|
more blank line.
|
||||||
|
|
||||||
|
Here is sample input for use with --amend=FILE, from coreutils:
|
||||||
|
|
||||||
|
3a169f4c5d9159283548178668d2fae6fced3030
|
||||||
|
# fix typo in title:
|
||||||
|
s/all tile types/all file types/
|
||||||
|
|
||||||
|
1379ed974f1fa39b12e2ffab18b3f7a607082202
|
||||||
|
# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
|
||||||
|
# Change the author to be Paul. Note the escaped "@":
|
||||||
|
s,Jim .*>,Paul Eggert <eggert\\\@cs.ucla.edu>,
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
exit $exit_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
# If the string $S is a well-behaved file name, simply return it.
|
||||||
|
# If it contains white space, quotes, etc., quote it, and return the new string.
|
||||||
|
sub shell_quote($)
|
||||||
|
{
|
||||||
|
my ($s) = @_;
|
||||||
|
if ($s =~ m![^\w+/.,-]!)
|
||||||
|
{
|
||||||
|
# Convert each single quote to '\''
|
||||||
|
$s =~ s/\'/\'\\\'\'/g;
|
||||||
|
# Then single quote the string.
|
||||||
|
$s = "'$s'";
|
||||||
|
}
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub quoted_cmd(@)
|
||||||
|
{
|
||||||
|
return join (' ', map {shell_quote $_} @_);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse file F.
|
||||||
|
# Comment lines (starting with "#") are ignored.
|
||||||
|
# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
|
||||||
|
# (alone on a line) referring to a commit in the current project, and
|
||||||
|
# CODE refers to one or more consecutive lines of Perl code.
|
||||||
|
# Pairs must be separated by one or more blank line.
|
||||||
|
sub parse_amend_file($)
|
||||||
|
{
|
||||||
|
my ($f) = @_;
|
||||||
|
|
||||||
|
open F, '<', $f
|
||||||
|
or die "$ME: $f: failed to open for reading: $!\n";
|
||||||
|
|
||||||
|
my $fail;
|
||||||
|
my $h = {};
|
||||||
|
my $in_code = 0;
|
||||||
|
my $sha;
|
||||||
|
while (defined (my $line = <F>))
|
||||||
|
{
|
||||||
|
$line =~ /^\#/
|
||||||
|
and next;
|
||||||
|
chomp $line;
|
||||||
|
$line eq ''
|
||||||
|
and $in_code = 0, next;
|
||||||
|
|
||||||
|
if (!$in_code)
|
||||||
|
{
|
||||||
|
$line =~ /^([0-9a-fA-F]{40})$/
|
||||||
|
or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
|
||||||
|
$fail = 1, next;
|
||||||
|
$sha = lc $1;
|
||||||
|
$in_code = 1;
|
||||||
|
exists $h->{$sha}
|
||||||
|
and (warn "$ME: $f:$.: duplicate SHA1\n"),
|
||||||
|
$fail = 1, next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$h->{$sha} ||= '';
|
||||||
|
$h->{$sha} .= "$line\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close F;
|
||||||
|
|
||||||
|
$fail
|
||||||
|
and exit 1;
|
||||||
|
|
||||||
|
return $h;
|
||||||
|
}
|
||||||
|
|
||||||
|
# git_dir_option $SRCDIR
|
||||||
|
#
|
||||||
|
# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
|
||||||
|
# is undef). Return as a list (0 or 1 element).
|
||||||
|
sub git_dir_option($)
|
||||||
|
{
|
||||||
|
my ($srcdir) = @_;
|
||||||
|
my @res = ();
|
||||||
|
if (defined $srcdir)
|
||||||
|
{
|
||||||
|
my $qdir = shell_quote $srcdir;
|
||||||
|
my $cmd = "cd $qdir && git rev-parse --show-toplevel";
|
||||||
|
my $qcmd = shell_quote $cmd;
|
||||||
|
my $git_dir = qx($cmd);
|
||||||
|
defined $git_dir
|
||||||
|
or die "$ME: cannot run $qcmd: $!\n";
|
||||||
|
$? == 0
|
||||||
|
or die "$ME: $qcmd had unexpected exit code or signal ($?)\n";
|
||||||
|
chomp $git_dir;
|
||||||
|
push @res, "--git-dir=$git_dir/.git";
|
||||||
|
}
|
||||||
|
@res;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
my $since_date;
|
||||||
|
my $until_date;
|
||||||
|
my $format_string = '%s%n%b%n';
|
||||||
|
my $amend_file;
|
||||||
|
my $append_dot = 0;
|
||||||
|
my $cluster = 1;
|
||||||
|
my $ignore_matching;
|
||||||
|
my $ignore_line;
|
||||||
|
my $strip_tab = 0;
|
||||||
|
my $strip_cherry_pick = 0;
|
||||||
|
my $srcdir;
|
||||||
|
GetOptions
|
||||||
|
(
|
||||||
|
help => sub { usage 0 },
|
||||||
|
version => sub { print "$ME version $VERSION\n"; exit },
|
||||||
|
'since=s' => \$since_date,
|
||||||
|
'until=s' => \$until_date,
|
||||||
|
'format=s' => \$format_string,
|
||||||
|
'amend=s' => \$amend_file,
|
||||||
|
'append-dot' => \$append_dot,
|
||||||
|
'cluster!' => \$cluster,
|
||||||
|
'ignore-matching=s' => \$ignore_matching,
|
||||||
|
'ignore-line=s' => \$ignore_line,
|
||||||
|
'strip-tab' => \$strip_tab,
|
||||||
|
'strip-cherry-pick' => \$strip_cherry_pick,
|
||||||
|
'srcdir=s' => \$srcdir,
|
||||||
|
) or usage 1;
|
||||||
|
|
||||||
|
defined $since_date
|
||||||
|
and unshift @ARGV, "--since=$since_date";
|
||||||
|
defined $until_date
|
||||||
|
and unshift @ARGV, "--until=$until_date";
|
||||||
|
|
||||||
|
# This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
|
||||||
|
# that makes a correction in the log or attribution of that commit.
|
||||||
|
my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
|
||||||
|
|
||||||
|
my @cmd = ('git',
|
||||||
|
git_dir_option $srcdir,
|
||||||
|
qw(log --log-size),
|
||||||
|
'--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV);
|
||||||
|
open PIPE, '-|', @cmd
|
||||||
|
or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
|
||||||
|
. "(Is your Git too old? Version 1.5.1 or later is required.)\n");
|
||||||
|
|
||||||
|
my $prev_multi_paragraph;
|
||||||
|
my $prev_date_line = '';
|
||||||
|
my @prev_coauthors = ();
|
||||||
|
my @skipshas = ();
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
defined (my $in = <PIPE>)
|
||||||
|
or last;
|
||||||
|
$in =~ /^log size (\d+)$/
|
||||||
|
or die "$ME:$.: Invalid line (expected log size):\n$in";
|
||||||
|
my $log_nbytes = $1;
|
||||||
|
|
||||||
|
my $log;
|
||||||
|
my $n_read = read PIPE, $log, $log_nbytes;
|
||||||
|
$n_read == $log_nbytes
|
||||||
|
or die "$ME:$.: unexpected EOF\n";
|
||||||
|
|
||||||
|
# Extract leading hash.
|
||||||
|
my ($sha, $rest) = split ':', $log, 2;
|
||||||
|
defined $sha
|
||||||
|
or die "$ME:$.: malformed log entry\n";
|
||||||
|
$sha =~ /^[0-9a-fA-F]{40}$/
|
||||||
|
or die "$ME:$.: invalid SHA1: $sha\n";
|
||||||
|
|
||||||
|
my $skipflag = 0;
|
||||||
|
if (@skipshas)
|
||||||
|
{
|
||||||
|
foreach(@skipshas)
|
||||||
|
{
|
||||||
|
if ($sha =~ /^$_/)
|
||||||
|
{
|
||||||
|
$skipflag = $_;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# If this commit's log requires any transformation, do it now.
|
||||||
|
my $code = $amend_code->{$sha};
|
||||||
|
if (defined $code)
|
||||||
|
{
|
||||||
|
eval 'use Safe';
|
||||||
|
my $s = new Safe;
|
||||||
|
# Put the unpreprocessed entry into "$_".
|
||||||
|
$_ = $rest;
|
||||||
|
|
||||||
|
# Let $code operate on it, safely.
|
||||||
|
my $r = $s->reval("$code")
|
||||||
|
or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n";
|
||||||
|
|
||||||
|
# Note that we've used this entry.
|
||||||
|
delete $amend_code->{$sha};
|
||||||
|
|
||||||
|
# Update $rest upon success.
|
||||||
|
$rest = $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove lines inserted by "git cherry-pick".
|
||||||
|
if ($strip_cherry_pick)
|
||||||
|
{
|
||||||
|
$rest =~ s/^\s*Conflicts:\n.*//sm;
|
||||||
|
$rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @line = split /[ \t]*\n/, $rest;
|
||||||
|
my $author_line = shift @line;
|
||||||
|
defined $author_line
|
||||||
|
or die "$ME:$.: unexpected EOF\n";
|
||||||
|
$author_line =~ /^(\d+) (.*>)$/
|
||||||
|
or die "$ME:$.: Invalid line "
|
||||||
|
. "(expected date/author/email):\n$author_line\n";
|
||||||
|
|
||||||
|
# Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
|
||||||
|
# `(tiny change)' annotation.
|
||||||
|
my $tiny = (grep (/^(?:Copyright-paperwork-exempt|Tiny-change):\s+[Yy]es$/, @line)
|
||||||
|
? ' (tiny change)' : '');
|
||||||
|
|
||||||
|
my $date_line = sprintf "%s %s$tiny\n",
|
||||||
|
strftime ("%Y-%m-%d", localtime ($1)), $2;
|
||||||
|
|
||||||
|
my @coauthors = grep /^Co-authored-by:.*$/, @line;
|
||||||
|
# Omit meta-data lines we've already interpreted.
|
||||||
|
@line = grep !/^(?:Signed-off-by:[ ].*>$
|
||||||
|
|Co-authored-by:[ ]
|
||||||
|
|Copyright-paperwork-exempt:[ ]
|
||||||
|
|Tiny-change:[ ]
|
||||||
|
)/x, @line;
|
||||||
|
|
||||||
|
# Remove leading and trailing blank lines.
|
||||||
|
if (@line)
|
||||||
|
{
|
||||||
|
while ($line[0] =~ /^\s*$/) { shift @line; }
|
||||||
|
while ($line[$#line] =~ /^\s*$/) { pop @line; }
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle Emacs gitmerge.el "skipped" commits.
|
||||||
|
# Yes, this should be controlled by an option. So sue me.
|
||||||
|
if ( grep /^(; )?Merge from /, @line )
|
||||||
|
{
|
||||||
|
my $found = 0;
|
||||||
|
foreach (@line)
|
||||||
|
{
|
||||||
|
if (grep /^The following commit.*skipped:$/, $_)
|
||||||
|
{
|
||||||
|
$found = 1;
|
||||||
|
## Reset at each merge to reduce chance of false matches.
|
||||||
|
@skipshas = ();
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if ($found && $_ =~ /^([0-9a-fA-F]{7,}) [^ ]/)
|
||||||
|
{
|
||||||
|
push ( @skipshas, $1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ignore commits that match the --ignore-matching pattern, if specified.
|
||||||
|
if (defined $ignore_matching && @line && $line[0] =~ /$ignore_matching/)
|
||||||
|
{
|
||||||
|
$skipflag = 1;
|
||||||
|
}
|
||||||
|
elsif ($skipflag)
|
||||||
|
{
|
||||||
|
## Perhaps only warn if a pattern matches more than once?
|
||||||
|
warn "$ME: warning: skipping $sha due to $skipflag\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $skipflag)
|
||||||
|
{
|
||||||
|
if (defined $ignore_line && @line)
|
||||||
|
{
|
||||||
|
@line = grep ! /$ignore_line/, @line;
|
||||||
|
while ($line[$#line] =~ /^\s*$/) { pop @line; }
|
||||||
|
}
|
||||||
|
|
||||||
|
# Record whether there are two or more paragraphs.
|
||||||
|
my $multi_paragraph = grep /^\s*$/, @line;
|
||||||
|
|
||||||
|
# Format 'Co-authored-by: A U Thor <email@example.com>' lines in
|
||||||
|
# standard multi-author ChangeLog format.
|
||||||
|
for (@coauthors)
|
||||||
|
{
|
||||||
|
s/^Co-authored-by:\s*/\t /;
|
||||||
|
s/\s*</ </;
|
||||||
|
|
||||||
|
/<.*?@.*\..*>/
|
||||||
|
or warn "$ME: warning: missing email address for "
|
||||||
|
. substr ($_, 5) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# If clustering of commit messages has been disabled, if this header
|
||||||
|
# would be different from the previous date/name/etc. header,
|
||||||
|
# or if this or the previous entry consists of two or more paragraphs,
|
||||||
|
# then print the header.
|
||||||
|
if ( ! $cluster
|
||||||
|
|| $date_line ne $prev_date_line
|
||||||
|
|| "@coauthors" ne "@prev_coauthors"
|
||||||
|
|| $multi_paragraph
|
||||||
|
|| $prev_multi_paragraph)
|
||||||
|
{
|
||||||
|
$prev_date_line eq ''
|
||||||
|
or print "\n";
|
||||||
|
print $date_line;
|
||||||
|
@coauthors
|
||||||
|
and print join ("\n", @coauthors), "\n";
|
||||||
|
}
|
||||||
|
$prev_date_line = $date_line;
|
||||||
|
@prev_coauthors = @coauthors;
|
||||||
|
$prev_multi_paragraph = $multi_paragraph;
|
||||||
|
|
||||||
|
# If there were any lines
|
||||||
|
if (@line == 0)
|
||||||
|
{
|
||||||
|
warn "$ME: warning: empty commit message:\n $date_line\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($append_dot)
|
||||||
|
{
|
||||||
|
# If the first line of the message has enough room, then
|
||||||
|
if (length $line[0] < 72)
|
||||||
|
{
|
||||||
|
# append a dot if there is no other punctuation or blank
|
||||||
|
# at the end.
|
||||||
|
$line[0] =~ /[[:punct:]\s]$/
|
||||||
|
or $line[0] .= '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove one additional leading TAB from each line.
|
||||||
|
$strip_tab
|
||||||
|
and map { s/^\t// } @line;
|
||||||
|
|
||||||
|
# Prefix each non-empty line with a TAB.
|
||||||
|
@line = map { length $_ ? "\t$_" : '' } @line;
|
||||||
|
|
||||||
|
print "\n", join ("\n", @line), "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defined ($in = <PIPE>)
|
||||||
|
or last;
|
||||||
|
$in ne "\n"
|
||||||
|
and die "$ME:$.: unexpected line:\n$in";
|
||||||
|
}
|
||||||
|
|
||||||
|
close PIPE
|
||||||
|
or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
|
||||||
|
# FIXME-someday: include $PROCESS_STATUS in the diagnostic
|
||||||
|
|
||||||
|
# Complain about any unused entry in the --amend=F specified file.
|
||||||
|
my $fail = 0;
|
||||||
|
foreach my $sha (keys %$amend_code)
|
||||||
|
{
|
||||||
|
warn "$ME:$amend_file: unused entry: $sha\n";
|
||||||
|
$fail = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit $fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: perl
|
||||||
|
# indent-tabs-mode: nil
|
||||||
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
|
# time-stamp-start: "my $VERSION = '"
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
|
||||||
|
# time-stamp-time-zone: "UTC0"
|
||||||
|
# time-stamp-end: "'; # UTC"
|
||||||
|
# End:
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
scriptversion=2011-11-20.07; # UTC
|
scriptversion=2018-03-11.20; # UTC
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
|
|||||||
# This script is compatible with the BSD install script, but was written
|
# This script is compatible with the BSD install script, but was written
|
||||||
# from scratch.
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
nl='
|
nl='
|
||||||
'
|
'
|
||||||
IFS=" "" $nl"
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit=${DOITPROG-}
|
doit=${DOITPROG-}
|
||||||
if test -z "$doit"; then
|
doit_exec=${doit:-exec}
|
||||||
doit_exec=exec
|
|
||||||
else
|
|
||||||
doit_exec=$doit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put in absolute file names if you don't have them in your path;
|
# Put in absolute file names if you don't have them in your path;
|
||||||
# or use environment vars.
|
# or use environment vars.
|
||||||
@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
|
|||||||
rmprog=${RMPROG-rm}
|
rmprog=${RMPROG-rm}
|
||||||
stripprog=${STRIPPROG-strip}
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
posix_glob='?'
|
|
||||||
initialize_posix_glob='
|
|
||||||
test "$posix_glob" != "?" || {
|
|
||||||
if (set -f) 2>/dev/null; then
|
|
||||||
posix_glob=
|
|
||||||
else
|
|
||||||
posix_glob=:
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
'
|
|
||||||
|
|
||||||
posix_mkdir=
|
posix_mkdir=
|
||||||
|
|
||||||
# Desired mode of installed file.
|
# Desired mode of installed file.
|
||||||
@ -97,7 +82,7 @@ dir_arg=
|
|||||||
dst_arg=
|
dst_arg=
|
||||||
|
|
||||||
copy_on_change=false
|
copy_on_change=false
|
||||||
no_target_directory=
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
usage="\
|
usage="\
|
||||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
@ -143,8 +128,7 @@ while test $# -ne 0; do
|
|||||||
|
|
||||||
-m) mode=$2
|
-m) mode=$2
|
||||||
case $mode in
|
case $mode in
|
||||||
*' '* | *' '* | *'
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
'* | *'*'* | *'?'* | *'['*)
|
|
||||||
echo "$0: invalid mode: $mode" >&2
|
echo "$0: invalid mode: $mode" >&2
|
||||||
exit 1;;
|
exit 1;;
|
||||||
esac
|
esac
|
||||||
@ -155,14 +139,16 @@ while test $# -ne 0; do
|
|||||||
|
|
||||||
-s) stripcmd=$stripprog;;
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
-t) dst_arg=$2
|
-t)
|
||||||
|
is_target_a_directory=always
|
||||||
|
dst_arg=$2
|
||||||
# Protect names problematic for 'test' and other utilities.
|
# Protect names problematic for 'test' and other utilities.
|
||||||
case $dst_arg in
|
case $dst_arg in
|
||||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
esac
|
esac
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
-T) no_target_directory=true;;
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
--version) echo "$0 $scriptversion"; exit $?;;
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
@ -177,6 +163,16 @@ while test $# -ne 0; do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
# When -d is used, all remaining arguments are directories to create.
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
# When -t is used, the destination is already specified.
|
# When -t is used, the destination is already specified.
|
||||||
@ -207,6 +203,15 @@ if test $# -eq 0; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$dir_arg"; then
|
if test -z "$dir_arg"; then
|
||||||
do_exit='(exit $ret); exit $ret'
|
do_exit='(exit $ret); exit $ret'
|
||||||
trap "ret=129; $do_exit" 1
|
trap "ret=129; $do_exit" 1
|
||||||
@ -266,49 +271,31 @@ do
|
|||||||
fi
|
fi
|
||||||
dst=$dst_arg
|
dst=$dst_arg
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; won't work
|
# If destination is a directory, append the input filename.
|
||||||
# if double slashes aren't ignored.
|
|
||||||
if test -d "$dst"; then
|
if test -d "$dst"; then
|
||||||
if test -n "$no_target_directory"; then
|
if test "$is_target_a_directory" = never; then
|
||||||
echo "$0: $dst_arg: Is a directory" >&2
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
dstdir=$dst
|
dstdir=$dst
|
||||||
dst=$dstdir/`basename "$src"`
|
dstbase=`basename "$src"`
|
||||||
|
case $dst in
|
||||||
|
*/) dst=$dst$dstbase;;
|
||||||
|
*) dst=$dst/$dstbase;;
|
||||||
|
esac
|
||||||
dstdir_status=0
|
dstdir_status=0
|
||||||
else
|
else
|
||||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
dstdir=`dirname "$dst"`
|
||||||
dstdir=`
|
|
||||||
(dirname "$dst") 2>/dev/null ||
|
|
||||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
|
||||||
X"$dst" : 'X\(//\)[^/]' \| \
|
|
||||||
X"$dst" : 'X\(//\)$' \| \
|
|
||||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
|
||||||
echo X"$dst" |
|
|
||||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)[^/].*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\).*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
s/.*/./; q'
|
|
||||||
`
|
|
||||||
|
|
||||||
test -d "$dstdir"
|
test -d "$dstdir"
|
||||||
dstdir_status=$?
|
dstdir_status=$?
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
*/) dstdirslash=$dstdir;;
|
||||||
|
*) dstdirslash=$dstdir/;;
|
||||||
|
esac
|
||||||
|
|
||||||
obsolete_mkdir_used=false
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
if test $dstdir_status != 0; then
|
if test $dstdir_status != 0; then
|
||||||
@ -345,34 +332,43 @@ do
|
|||||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
# Note that $RANDOM variable is not portable (e.g. dash); Use it
|
||||||
|
# here however when possible just to lower collision chance.
|
||||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
|
||||||
|
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||||
|
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||||
|
# directory is successfully created first before we actually test
|
||||||
|
# 'mkdir -p' feature.
|
||||||
if (umask $mkdir_umask &&
|
if (umask $mkdir_umask &&
|
||||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
if test -z "$dir_arg" || {
|
if test -z "$dir_arg" || {
|
||||||
# Check for POSIX incompatibilities with -m.
|
# Check for POSIX incompatibilities with -m.
|
||||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
# other-writable bit of parent directory when it shouldn't.
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
test_tmpdir="$tmpdir/a"
|
||||||
|
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||||
case $ls_ld_tmpdir in
|
case $ls_ld_tmpdir in
|
||||||
d????-?r-*) different_mode=700;;
|
d????-?r-*) different_mode=700;;
|
||||||
d????-?--*) different_mode=755;;
|
d????-?--*) different_mode=755;;
|
||||||
*) false;;
|
*) false;;
|
||||||
esac &&
|
esac &&
|
||||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
then posix_mkdir=:
|
then posix_mkdir=:
|
||||||
fi
|
fi
|
||||||
rmdir "$tmpdir/d" "$tmpdir"
|
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||||
else
|
else
|
||||||
# Remove any dirs left behind by ancient mkdir implementations.
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
trap '' 0;;
|
trap '' 0;;
|
||||||
esac;;
|
esac;;
|
||||||
@ -396,14 +392,12 @@ do
|
|||||||
*) prefix='';;
|
*) prefix='';;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
eval "$initialize_posix_glob"
|
|
||||||
|
|
||||||
oIFS=$IFS
|
oIFS=$IFS
|
||||||
IFS=/
|
IFS=/
|
||||||
$posix_glob set -f
|
set -f
|
||||||
set fnord $dstdir
|
set fnord $dstdir
|
||||||
shift
|
shift
|
||||||
$posix_glob set +f
|
set +f
|
||||||
IFS=$oIFS
|
IFS=$oIFS
|
||||||
|
|
||||||
prefixes=
|
prefixes=
|
||||||
@ -450,8 +444,8 @@ do
|
|||||||
else
|
else
|
||||||
|
|
||||||
# Make a couple of temp file names in the proper directory.
|
# Make a couple of temp file names in the proper directory.
|
||||||
dsttmp=$dstdir/_inst.$$_
|
dsttmp=${dstdirslash}_inst.$$_
|
||||||
rmtmp=$dstdir/_rm.$$_
|
rmtmp=${dstdirslash}_rm.$$_
|
||||||
|
|
||||||
# Trap to clean up those temp files at exit.
|
# Trap to clean up those temp files at exit.
|
||||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
@ -474,13 +468,10 @@ do
|
|||||||
if $copy_on_change &&
|
if $copy_on_change &&
|
||||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
eval "$initialize_posix_glob" &&
|
|
||||||
$posix_glob set -f &&
|
|
||||||
set X $old && old=:$2:$4:$5:$6 &&
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
set X $new && new=:$2:$4:$5:$6 &&
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
$posix_glob set +f &&
|
set +f &&
|
||||||
|
|
||||||
test "$old" = "$new" &&
|
test "$old" = "$new" &&
|
||||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
@ -519,9 +510,9 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Get modification time of a file or directory and pretty-print it.
|
# Get modification time of a file or directory and pretty-print it.
|
||||||
|
|
||||||
scriptversion=2010-08-21.06; # UTC
|
scriptversion=2018-03-07.03; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1995-2018 Free Software Foundation, Inc.
|
||||||
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
@ -17,7 +17,7 @@ scriptversion=2010-08-21.06; # UTC
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# 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
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
@ -74,6 +74,10 @@ export LC_ALL
|
|||||||
LC_TIME=C
|
LC_TIME=C
|
||||||
export LC_TIME
|
export LC_TIME
|
||||||
|
|
||||||
|
# Use UTC to get reproducible result.
|
||||||
|
TZ=UTC0
|
||||||
|
export TZ
|
||||||
|
|
||||||
# GNU ls changes its time format in response to the TIME_STYLE
|
# GNU ls changes its time format in response to the TIME_STYLE
|
||||||
# variable. Since we cannot assume 'unset' works, revert this
|
# variable. Since we cannot assume 'unset' works, revert this
|
||||||
# variable to its documented default.
|
# variable to its documented default.
|
||||||
@ -216,9 +220,9 @@ echo $day $month $year
|
|||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: shell-script
|
# mode: shell-script
|
||||||
# sh-indentation: 2
|
# sh-indentation: 2
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2013-10-28.13; # UTC
|
scriptversion=2013-10-28.13; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
#if !defined _Noreturn && __STDC_VERSION__ < 201112
|
|
||||||
# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
|
|
||||||
|| 0x5110 <= __SUNPRO_C)
|
|
||||||
# define _Noreturn __attribute__ ((__noreturn__))
|
|
||||||
# elif 1200 <= _MSC_VER
|
|
||||||
# define _Noreturn __declspec (noreturn)
|
|
||||||
# else
|
|
||||||
# define _Noreturn
|
|
||||||
# endif
|
|
||||||
#endif
|
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2013-07-13.22; # UTC
|
scriptversion=2013-07-13.22; # UTC
|
||||||
|
|
||||||
# Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
# Copyright (C) 2011-2014 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -106,11 +106,14 @@ trap "st=143; $do_exit" 15
|
|||||||
# Test script is run here.
|
# Test script is run here.
|
||||||
"$@" >$log_file 2>&1
|
"$@" >$log_file 2>&1
|
||||||
estatus=$?
|
estatus=$?
|
||||||
|
|
||||||
if test $enable_hard_errors = no && test $estatus -eq 99; then
|
if test $enable_hard_errors = no && test $estatus -eq 99; then
|
||||||
estatus=1
|
tweaked_estatus=1
|
||||||
|
else
|
||||||
|
tweaked_estatus=$estatus
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $estatus:$expect_failure in
|
case $tweaked_estatus:$expect_failure in
|
||||||
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
|
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
|
||||||
0:*) col=$grn res=PASS recheck=no gcopy=no;;
|
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=yes;;
|
||||||
@ -119,6 +122,12 @@ case $estatus:$expect_failure in
|
|||||||
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
|
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Report the test outcome and exit status in the logs, so that one can
|
||||||
|
# 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
|
||||||
|
|
||||||
# Report outcome to console.
|
# Report outcome to console.
|
||||||
echo "${col}${res}${std}: $test_name"
|
echo "${col}${res}${std}: $test_name"
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -66,7 +66,7 @@ platformdir = $(pkglibdir)/$(target_cpu)-$(platform)
|
|||||||
starfielddir = $(pkgdatadir)/themes/starfield
|
starfielddir = $(pkgdatadir)/themes/starfield
|
||||||
|
|
||||||
CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion
|
CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion
|
||||||
CPPFLAGS_GNULIB = -I$(top_builddir)/grub-core/gnulib -I$(top_srcdir)/grub-core/gnulib
|
CPPFLAGS_GNULIB = -I$(top_builddir)/grub-core/lib/gnulib -I$(top_srcdir)/grub-core/lib/gnulib
|
||||||
|
|
||||||
CFLAGS_POSIX = -fno-builtin
|
CFLAGS_POSIX = -fno-builtin
|
||||||
CPPFLAGS_POSIX = -I$(top_srcdir)/grub-core/lib/posix_wrap
|
CPPFLAGS_POSIX = -I$(top_srcdir)/grub-core/lib/posix_wrap
|
||||||
@ -86,9 +86,11 @@ CPPFLAGS_TERMINAL_LIST += '-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST
|
|||||||
CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'
|
CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'
|
||||||
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
|
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
|
||||||
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'
|
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'
|
||||||
|
CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'
|
||||||
CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \
|
CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \
|
||||||
$(CPPFLAGS_PARTTOOL_LIST) $(CPPFLAGS_PARTMAP_LIST) \
|
$(CPPFLAGS_PARTTOOL_LIST) $(CPPFLAGS_PARTMAP_LIST) \
|
||||||
$(CPPFLAGS_TERMINAL_LIST) $(CPPFLAGS_COMMAND_LIST)
|
$(CPPFLAGS_TERMINAL_LIST) $(CPPFLAGS_COMMAND_LIST) \
|
||||||
|
$(CPPFLAGS_FDT_LIST)
|
||||||
|
|
||||||
# Define these variables to calm down automake
|
# Define these variables to calm down automake
|
||||||
|
|
||||||
@ -126,11 +128,11 @@ BUILT_SOURCES =
|
|||||||
|
|
||||||
.PRECIOUS: $(top_srcdir)/Makefile.util.am
|
.PRECIOUS: $(top_srcdir)/Makefile.util.am
|
||||||
$(top_srcdir)/Makefile.util.am: $(top_srcdir)/gentpl.py $(top_srcdir)/Makefile.util.def $(top_srcdir)/Makefile.utilgcry.def
|
$(top_srcdir)/Makefile.util.am: $(top_srcdir)/gentpl.py $(top_srcdir)/Makefile.util.def $(top_srcdir)/Makefile.utilgcry.def
|
||||||
python $^ > $@.new || (rm -f $@.new; exit 1)
|
$(PYTHON) $^ > $@.new || (rm -f $@.new; exit 1)
|
||||||
mv $@.new $@
|
mv $@.new $@
|
||||||
|
|
||||||
.PRECIOUS: $(top_srcdir)/grub-core/Makefile.core.am
|
.PRECIOUS: $(top_srcdir)/grub-core/Makefile.core.am
|
||||||
$(top_srcdir)/grub-core/Makefile.core.am: $(top_srcdir)/gentpl.py $(top_srcdir)/grub-core/Makefile.core.def $(top_srcdir)/grub-core/Makefile.gcry.def
|
$(top_srcdir)/grub-core/Makefile.core.am: $(top_srcdir)/gentpl.py $(top_srcdir)/grub-core/Makefile.core.def $(top_srcdir)/grub-core/Makefile.gcry.def
|
||||||
if [ "x$$GRUB_CONTRIB" != x ]; then echo "You need to run ./autogen.sh manually." >&2; exit 1; fi
|
if [ "x$$GRUB_CONTRIB" != x ]; then echo "You need to run ./bootstrap manually." >&2; exit 1; fi
|
||||||
python $^ > $@.new || (rm -f $@.new; exit 1)
|
$(PYTHON) $^ > $@.new || (rm -f $@.new; exit 1)
|
||||||
mv $@.new $@
|
mv $@.new $@
|
||||||
|
@ -28,10 +28,9 @@ EXTRA_DIST += grub-core/gensymlist.sh
|
|||||||
EXTRA_DIST += grub-core/genemuinit.sh
|
EXTRA_DIST += grub-core/genemuinit.sh
|
||||||
EXTRA_DIST += grub-core/genemuinitheader.sh
|
EXTRA_DIST += grub-core/genemuinitheader.sh
|
||||||
|
|
||||||
EXTRA_DIST += grub-core/gnulib-fix-null-deref.diff
|
EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch
|
||||||
EXTRA_DIST += grub-core/gnulib-fix-width.diff
|
EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch
|
||||||
EXTRA_DIST += grub-core/gnulib-no-abort.diff
|
EXTRA_DIST += grub-core/lib/gnulib-patches/no-abort.patch
|
||||||
EXTRA_DIST += grub-core/gnulib-no-gets.diff
|
|
||||||
|
|
||||||
EXTRA_DIST += grub-core/lib/libgcrypt
|
EXTRA_DIST += grub-core/lib/libgcrypt
|
||||||
EXTRA_DIST += grub-core/lib/libgcrypt-grub/mpi/generic
|
EXTRA_DIST += grub-core/lib/libgcrypt-grub/mpi/generic
|
||||||
|
912
config-util.h.in
912
config-util.h.in
File diff suppressed because it is too large
Load Diff
119
configure.ac
119
configure.ac
@ -31,7 +31,7 @@ dnl (such as BUILD_CC, BUILD_CFLAGS, etc.) for the build type and variables
|
|||||||
dnl with the prefix "TARGET_" (such as TARGET_CC, TARGET_CFLAGS, etc.) are
|
dnl with the prefix "TARGET_" (such as TARGET_CC, TARGET_CFLAGS, etc.) are
|
||||||
dnl used for the target type. See INSTALL for full list of variables.
|
dnl used for the target type. See INSTALL for full list of variables.
|
||||||
|
|
||||||
AC_INIT([GRUB],[2.02],[bug-grub@gnu.org])
|
AC_INIT([GRUB],[2.04~rc1],[bug-grub@gnu.org])
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
|
|
||||||
@ -45,11 +45,15 @@ save_program_prefix="${program_prefix}"
|
|||||||
AC_CANONICAL_TARGET
|
AC_CANONICAL_TARGET
|
||||||
program_prefix="${save_program_prefix}"
|
program_prefix="${save_program_prefix}"
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.10.1])
|
AM_INIT_AUTOMAKE([1.11])
|
||||||
AC_PREREQ(2.60)
|
AC_PREREQ(2.63)
|
||||||
AC_CONFIG_SRCDIR([include/grub/dl.h])
|
AC_CONFIG_SRCDIR([include/grub/dl.h])
|
||||||
AC_CONFIG_HEADER([config-util.h])
|
AC_CONFIG_HEADER([config-util.h])
|
||||||
|
|
||||||
|
# Explicitly check for pkg-config early on, since otherwise conditional
|
||||||
|
# calls are problematic.
|
||||||
|
PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
# Program name transformations
|
# Program name transformations
|
||||||
AC_ARG_PROGRAM
|
AC_ARG_PROGRAM
|
||||||
grub_TRANSFORM([grub-bios-setup])
|
grub_TRANSFORM([grub-bios-setup])
|
||||||
@ -100,6 +104,12 @@ case "$target_cpu" in
|
|||||||
aarch64*)
|
aarch64*)
|
||||||
target_cpu=arm64
|
target_cpu=arm64
|
||||||
;;
|
;;
|
||||||
|
riscv32*)
|
||||||
|
target_cpu=riscv32
|
||||||
|
;;
|
||||||
|
riscv64*)
|
||||||
|
target_cpu=riscv64
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Specify the platform (such as firmware).
|
# Specify the platform (such as firmware).
|
||||||
@ -123,6 +133,8 @@ if test "x$with_platform" = x; then
|
|||||||
ia64-*) platform=efi ;;
|
ia64-*) platform=efi ;;
|
||||||
arm-*) platform=uboot ;;
|
arm-*) platform=uboot ;;
|
||||||
arm64-*) platform=efi ;;
|
arm64-*) platform=efi ;;
|
||||||
|
riscv32-*) platform=efi ;;
|
||||||
|
riscv64-*) platform=efi ;;
|
||||||
*)
|
*)
|
||||||
AC_MSG_WARN([unsupported CPU: "$target_cpu" - only building utilities])
|
AC_MSG_WARN([unsupported CPU: "$target_cpu" - only building utilities])
|
||||||
platform=none
|
platform=none
|
||||||
@ -147,6 +159,7 @@ case "$target_cpu"-"$platform" in
|
|||||||
i386-efi) ;;
|
i386-efi) ;;
|
||||||
x86_64-efi) ;;
|
x86_64-efi) ;;
|
||||||
i386-xen) ;;
|
i386-xen) ;;
|
||||||
|
i386-xen_pvh) ;;
|
||||||
x86_64-xen) ;;
|
x86_64-xen) ;;
|
||||||
i386-pc) ;;
|
i386-pc) ;;
|
||||||
i386-multiboot) ;;
|
i386-multiboot) ;;
|
||||||
@ -167,8 +180,11 @@ case "$target_cpu"-"$platform" in
|
|||||||
mipsel-fuloong) platform=loongson ;;
|
mipsel-fuloong) platform=loongson ;;
|
||||||
mipsel-loongson) ;;
|
mipsel-loongson) ;;
|
||||||
arm-uboot) ;;
|
arm-uboot) ;;
|
||||||
|
arm-coreboot) ;;
|
||||||
arm-efi) ;;
|
arm-efi) ;;
|
||||||
arm64-efi) ;;
|
arm64-efi) ;;
|
||||||
|
riscv32-efi) ;;
|
||||||
|
riscv64-efi) ;;
|
||||||
*-emu) ;;
|
*-emu) ;;
|
||||||
*-none) ;;
|
*-none) ;;
|
||||||
*) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
|
*) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
|
||||||
@ -203,7 +219,8 @@ case "$host_os" in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
cygwin | windows* | mingw32*) have_exec=n ;;
|
cygwin) have_exec=y ;;
|
||||||
|
windows* | mingw32*) have_exec=n ;;
|
||||||
aros*) have_exec=n ;;
|
aros*) have_exec=n ;;
|
||||||
*) have_exec=y;;
|
*) have_exec=y;;
|
||||||
esac
|
esac
|
||||||
@ -213,6 +230,7 @@ case "$platform" in
|
|||||||
multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
|
multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
|
||||||
efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
|
efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
|
||||||
xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
|
xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
|
||||||
|
xen_pvh) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN_PVH=1" ;;
|
||||||
ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
|
ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
|
||||||
uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
|
uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
|
||||||
qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
|
qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
|
||||||
@ -275,7 +293,7 @@ fi
|
|||||||
|
|
||||||
AC_SUBST(bootdirname)
|
AC_SUBST(bootdirname)
|
||||||
AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
|
AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
|
||||||
[Default boot directory name]")
|
[Default boot directory name])
|
||||||
|
|
||||||
AC_ARG_WITH([grubdir],
|
AC_ARG_WITH([grubdir],
|
||||||
AS_HELP_STRING([--with-grubdir=DIR],
|
AS_HELP_STRING([--with-grubdir=DIR],
|
||||||
@ -335,6 +353,7 @@ gl_EARLY
|
|||||||
AC_PROG_CXX
|
AC_PROG_CXX
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
AM_PROG_AS
|
AM_PROG_AS
|
||||||
|
AM_PATH_PYTHON([2.6])
|
||||||
|
|
||||||
# Must be GCC.
|
# Must be GCC.
|
||||||
test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
|
test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
|
||||||
@ -343,6 +362,7 @@ AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
|
|||||||
|
|
||||||
AC_GNU_SOURCE
|
AC_GNU_SOURCE
|
||||||
AM_GNU_GETTEXT([external])
|
AM_GNU_GETTEXT([external])
|
||||||
|
AM_GNU_GETTEXT_VERSION([0.18.3])
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
# Identify characteristics of the host architecture.
|
# Identify characteristics of the host architecture.
|
||||||
@ -373,7 +393,10 @@ case "$host_os" in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
AC_CHECK_SIZEOF(off_t)
|
AC_CHECK_SIZEOF(off_t)
|
||||||
test x"$ac_cv_sizeof_off_t" = x8 || AC_MSG_ERROR([Large file support is required]);;
|
if test x"$ac_cv_sizeof_off_t" != x8 ; then
|
||||||
|
AC_CHECK_SIZEOF(off64_t)
|
||||||
|
test x"$ac_cv_sizeof_off64_t" = x8 || AC_MSG_ERROR([Large file support is required])
|
||||||
|
fi;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test x$USE_NLS = xno; then
|
if test x$USE_NLS = xno; then
|
||||||
@ -456,6 +479,16 @@ case "$build_os" in
|
|||||||
esac
|
esac
|
||||||
AC_SUBST(BUILD_EXEEXT)
|
AC_SUBST(BUILD_EXEEXT)
|
||||||
|
|
||||||
|
# In some build environments like termux /bin/sh is not a valid
|
||||||
|
# shebang. Use $SHELL instead if it's executable and /bin/sh isn't
|
||||||
|
BUILD_SHEBANG=/bin/sh
|
||||||
|
for she in /bin/sh "$SHELL"; do
|
||||||
|
if test -x "$she" ; then
|
||||||
|
BUILD_SHEBANG="$she"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
AC_SUBST(BUILD_SHEBANG)
|
||||||
|
|
||||||
# For gnulib.
|
# For gnulib.
|
||||||
gl_INIT
|
gl_INIT
|
||||||
|
|
||||||
@ -806,6 +839,16 @@ if test x"$platform" != xemu ; then
|
|||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
[grub_cv_target_cc_soft_float="-mgeneral-regs-only"], [])
|
[grub_cv_target_cc_soft_float="-mgeneral-regs-only"], [])
|
||||||
fi
|
fi
|
||||||
|
if test "x$target_cpu" = xriscv32; then
|
||||||
|
CFLAGS="$TARGET_CFLAGS -march=rv32imac -mabi=ilp32 -Werror"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
|
[grub_cv_target_cc_soft_float="-march=rv32imac -mabi=ilp32"], [])
|
||||||
|
fi
|
||||||
|
if test "x$target_cpu" = xriscv64; then
|
||||||
|
CFLAGS="$TARGET_CFLAGS -march=rv64imac -mabi=lp64 -Werror"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
|
[grub_cv_target_cc_soft_float="-march=rv64imac -mabi=lp64"], [])
|
||||||
|
fi
|
||||||
if test "x$target_cpu" = xia64; then
|
if test "x$target_cpu" = xia64; then
|
||||||
CFLAGS="$TARGET_CFLAGS -mno-inline-float-divide -mno-inline-sqrt -Werror"
|
CFLAGS="$TARGET_CFLAGS -mno-inline-float-divide -mno-inline-sqrt -Werror"
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
@ -1121,7 +1164,7 @@ AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
|
|||||||
|
|
||||||
LDFLAGS="$TARGET_LDFLAGS"
|
LDFLAGS="$TARGET_LDFLAGS"
|
||||||
|
|
||||||
if test "$target_cpu" = x86_64 || test "$target_cpu" = sparc64 ; then
|
if test "$target_cpu" = x86_64 || test "$target_cpu" = sparc64 || test "$target_cpu" = riscv64 ; then
|
||||||
# Use large model to support 4G memory
|
# Use large model to support 4G memory
|
||||||
AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
|
AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
|
||||||
CFLAGS="$TARGET_CFLAGS -mcmodel=large"
|
CFLAGS="$TARGET_CFLAGS -mcmodel=large"
|
||||||
@ -1131,7 +1174,7 @@ if test "$target_cpu" = x86_64 || test "$target_cpu" = sparc64 ; then
|
|||||||
])
|
])
|
||||||
if test "x$grub_cv_cc_mcmodel" = xyes; then
|
if test "x$grub_cv_cc_mcmodel" = xyes; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
|
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
|
||||||
elif test "$target_cpu" = sparc64; then
|
elif test "$target_cpu" = sparc64 || test "$target_cpu" = riscv64; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
|
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -1185,12 +1228,12 @@ if test "x$target_cpu" = xarm; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CACHE_CHECK([whether option -Qn works], grub_cv_target_cc_qn, [
|
AC_CACHE_CHECK([whether option -Qn works], grub_cv_target_cc_qn, [
|
||||||
CFLAGS="$TARGET_CFLAGS -Qn -Werror"
|
CFLAGS="$TARGET_CFLAGS -Qn -Qunused-arguments -Werror"
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
[grub_cv_target_cc_qn=yes],
|
[grub_cv_target_cc_qn=yes],
|
||||||
[grub_cv_target_cc_qn=no])])
|
[grub_cv_target_cc_qn=no])])
|
||||||
if test "x$grub_cv_target_cc_qn" = xyes; then
|
if test "x$grub_cv_target_cc_qn" = xyes; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -Qn"
|
TARGET_CFLAGS="$TARGET_CFLAGS -Qn -Qunused-arguments"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1352,7 +1395,7 @@ AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
|
|||||||
if test "$platform" != emu; then
|
if test "$platform" != emu; then
|
||||||
AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
|
AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
|
||||||
SAVED_CPPFLAGS="$CPPFLAGS"
|
SAVED_CPPFLAGS="$CPPFLAGS"
|
||||||
CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
|
CPPFLAGS="$TARGET_CPPFLAGS -nostdlib -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
int va_arg_func (int fixed, va_list args);]], [[]])],
|
int va_arg_func (int fixed, va_list args);]], [[]])],
|
||||||
@ -1493,29 +1536,22 @@ if test x"$enable_grub_mkfont" = xno ; then
|
|||||||
grub_mkfont_excuse="explicitly disabled"
|
grub_mkfont_excuse="explicitly disabled"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$grub_mkfont_excuse" = x ; then
|
|
||||||
# Check for freetype libraries.
|
|
||||||
AC_CHECK_TOOLS([FREETYPE], [freetype-config])
|
|
||||||
if test "x$FREETYPE" = x ; then
|
|
||||||
grub_mkfont_excuse=["need freetype2 library"]
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
unset ac_cv_header_ft2build_h
|
unset ac_cv_header_ft2build_h
|
||||||
|
|
||||||
if test x"$grub_mkfont_excuse" = x ; then
|
if test x"$grub_mkfont_excuse" = x ; then
|
||||||
# Check for freetype libraries.
|
# Check for freetype libraries.
|
||||||
freetype_cflags=`$FREETYPE --cflags`
|
PKG_CHECK_MODULES([FREETYPE], [freetype2], [
|
||||||
freetype_libs=`$FREETYPE --libs`
|
|
||||||
SAVED_CPPFLAGS="$CPPFLAGS"
|
SAVED_CPPFLAGS="$CPPFLAGS"
|
||||||
SAVED_LIBS="$LIBS"
|
SAVED_LIBS="$LIBS"
|
||||||
CPPFLAGS="$CPPFLAGS $freetype_cflags"
|
CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS"
|
||||||
LIBS="$LIBS $freetype_libs"
|
LIBS="$LIBS $FREETYPE_LIBS"
|
||||||
AC_CHECK_HEADERS([ft2build.h], [],
|
AC_CHECK_HEADERS([ft2build.h], [],
|
||||||
[grub_mkfont_excuse=["need freetype2 headers"]])
|
[grub_mkfont_excuse=["need freetype2 headers"]])
|
||||||
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
|
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [],
|
||||||
|
[grub_mkfont_excuse=["freetype2 library unusable"]])
|
||||||
CPPFLAGS="$SAVED_CPPFLAGS"
|
CPPFLAGS="$SAVED_CPPFLAGS"
|
||||||
LIBS="$SAVED_LIBS"
|
LIBS="$SAVED_LIBS"
|
||||||
|
], [grub_mkfont_excuse=["need freetype2 library"]])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
|
if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
|
||||||
@ -1527,8 +1563,6 @@ else
|
|||||||
enable_grub_mkfont=no
|
enable_grub_mkfont=no
|
||||||
fi
|
fi
|
||||||
AC_SUBST([enable_grub_mkfont])
|
AC_SUBST([enable_grub_mkfont])
|
||||||
AC_SUBST([freetype_cflags])
|
|
||||||
AC_SUBST([freetype_libs])
|
|
||||||
|
|
||||||
SAVED_CC="$CC"
|
SAVED_CC="$CC"
|
||||||
SAVED_CPP="$CPP"
|
SAVED_CPP="$CPP"
|
||||||
@ -1558,25 +1592,21 @@ AC_SUBST([BUILD_WORDS_BIGENDIAN])
|
|||||||
|
|
||||||
if test x"$grub_build_mkfont_excuse" = x ; then
|
if test x"$grub_build_mkfont_excuse" = x ; then
|
||||||
# Check for freetype libraries.
|
# Check for freetype libraries.
|
||||||
AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
|
SAVED_PKG_CONFIG="$PKG_CONFIG"
|
||||||
if test "x$BUILD_FREETYPE" = x ; then
|
test -z "$BUILD_PKG_CONFIG" || PKG_CONFIG="$BUILD_PKG_CONFIG"
|
||||||
grub_build_mkfont_excuse=["need freetype2 library"]
|
PKG_CHECK_MODULES([BUILD_FREETYPE], [freetype2], [
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x"$grub_build_mkfont_excuse" = x ; then
|
|
||||||
# Check for freetype libraries.
|
|
||||||
build_freetype_cflags=`$BUILD_FREETYPE --cflags`
|
|
||||||
build_freetype_libs=`$BUILD_FREETYPE --libs`
|
|
||||||
SAVED_CPPFLAGS_2="$CPPFLAGS"
|
SAVED_CPPFLAGS_2="$CPPFLAGS"
|
||||||
SAVED_LIBS="$LIBS"
|
SAVED_LIBS="$LIBS"
|
||||||
CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
|
CPPFLAGS="$CPPFLAGS $BUILD_FREETYPE_CFLAGS"
|
||||||
LIBS="$LIBS $build_freetype_libs"
|
LIBS="$LIBS $BUILD_FREETYPE_LIBS"
|
||||||
AC_CHECK_HEADERS([ft2build.h], [],
|
AC_CHECK_HEADERS([ft2build.h], [],
|
||||||
[grub_build_mkfont_excuse=["need freetype2 headers"]])
|
[grub_build_mkfont_excuse=["need freetype2 headers"]])
|
||||||
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
|
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [],
|
||||||
|
[grub_build_mkfont_excuse=["freetype2 library unusable"]])
|
||||||
LIBS="$SAVED_LIBS"
|
LIBS="$SAVED_LIBS"
|
||||||
CPPFLAGS="$SAVED_CPPFLAGS_2"
|
CPPFLAGS="$SAVED_CPPFLAGS_2"
|
||||||
|
], [grub_build_mkfont_excuse=["need freetype2 library"]])
|
||||||
|
PKG_CONFIG="$SAVED_PKG_CONFIG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
|
if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
|
||||||
@ -1595,9 +1625,6 @@ if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || tes
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST([build_freetype_cflags])
|
|
||||||
AC_SUBST([build_freetype_libs])
|
|
||||||
|
|
||||||
CC="$SAVED_CC"
|
CC="$SAVED_CC"
|
||||||
CPP="$SAVED_CPP"
|
CPP="$SAVED_CPP"
|
||||||
CFLAGS="$SAVED_CFLAGS"
|
CFLAGS="$SAVED_CFLAGS"
|
||||||
@ -1893,6 +1920,7 @@ AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform =
|
|||||||
AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
|
AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
|
||||||
AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
|
AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
|
||||||
AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
|
AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
|
||||||
|
AM_CONDITIONAL([COND_i386_xen_pvh], [test x$target_cpu = xi386 -a x$platform = xxen_pvh])
|
||||||
AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
|
AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
|
||||||
AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
|
AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
|
||||||
AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
|
AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
|
||||||
@ -1905,9 +1933,14 @@ AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
|
|||||||
AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
|
AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
|
||||||
AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
|
AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
|
||||||
AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
|
AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
|
||||||
|
AM_CONDITIONAL([COND_arm_coreboot], [test x$target_cpu = xarm -a x$platform = xcoreboot])
|
||||||
AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
|
AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
|
||||||
AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
|
AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
|
||||||
AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
|
AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
|
||||||
|
AM_CONDITIONAL([COND_riscv32], [test x$target_cpu = xriscv32 ])
|
||||||
|
AM_CONDITIONAL([COND_riscv64], [test x$target_cpu = xriscv64 ])
|
||||||
|
AM_CONDITIONAL([COND_riscv32_efi], [test x$target_cpu = xriscv32 -a x$platform = xefi])
|
||||||
|
AM_CONDITIONAL([COND_riscv64_efi], [test x$target_cpu = xriscv64 -a x$platform = xefi])
|
||||||
|
|
||||||
AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
|
AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
|
||||||
AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
|
AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
|
||||||
@ -1982,7 +2015,7 @@ fi
|
|||||||
|
|
||||||
AC_CONFIG_FILES([Makefile])
|
AC_CONFIG_FILES([Makefile])
|
||||||
AC_CONFIG_FILES([grub-core/Makefile])
|
AC_CONFIG_FILES([grub-core/Makefile])
|
||||||
AC_CONFIG_FILES([grub-core/gnulib/Makefile])
|
AC_CONFIG_FILES([grub-core/lib/gnulib/Makefile])
|
||||||
AC_CONFIG_FILES([po/Makefile.in])
|
AC_CONFIG_FILES([po/Makefile.in])
|
||||||
AC_CONFIG_FILES([docs/Makefile])
|
AC_CONFIG_FILES([docs/Makefile])
|
||||||
AC_CONFIG_FILES([util/bash-completion.d/Makefile])
|
AC_CONFIG_FILES([util/bash-completion.d/Makefile])
|
||||||
|
252
docs/Makefile.in
252
docs/Makefile.in
@ -72,6 +72,7 @@ am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
|||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -90,50 +91,71 @@ target_triplet = @target@
|
|||||||
subdir = docs
|
subdir = docs
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
|
||||||
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argp.m4 \
|
$(top_srcdir)/m4/__inline.m4 \
|
||||||
$(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/codeset.m4 \
|
$(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \
|
||||||
$(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/dirname.m4 \
|
$(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/btowc.m4 \
|
||||||
$(top_srcdir)/m4/double-slash-root.m4 \
|
$(top_srcdir)/m4/builtin-expect.m4 \
|
||||||
|
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/close.m4 \
|
||||||
|
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/dirent_h.m4 \
|
||||||
|
$(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
|
||||||
|
$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
|
||||||
$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
|
$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
|
||||||
$(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
|
$(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
|
||||||
$(top_srcdir)/m4/extensions.m4 \
|
$(top_srcdir)/m4/extensions.m4 \
|
||||||
$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
|
$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fchdir.m4 \
|
||||||
$(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
|
$(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
|
||||||
$(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getline.m4 \
|
$(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/filenamecat.m4 \
|
||||||
$(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gettext.m4 \
|
$(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/float_h.m4 \
|
||||||
|
$(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fnmatch_h.m4 \
|
||||||
|
$(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getcwd.m4 \
|
||||||
|
$(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
|
||||||
|
$(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
|
||||||
|
$(top_srcdir)/m4/getprogname.m4 $(top_srcdir)/m4/gettext.m4 \
|
||||||
$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
|
$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
|
||||||
$(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
|
$(top_srcdir)/m4/gnulib-comp.m4 \
|
||||||
|
$(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
|
||||||
$(top_srcdir)/m4/include_next.m4 \
|
$(top_srcdir)/m4/include_next.m4 \
|
||||||
$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
|
$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
|
||||||
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/langinfo_h.m4 \
|
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/langinfo_h.m4 \
|
||||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
$(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||||
$(top_srcdir)/m4/lib-prefix.m4 \
|
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||||
$(top_srcdir)/m4/libunistring-base.m4 \
|
$(top_srcdir)/m4/libunistring-base.m4 \
|
||||||
$(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
|
$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \
|
||||||
$(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
|
$(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
|
||||||
$(top_srcdir)/m4/locale_h.m4 $(top_srcdir)/m4/localeconv.m4 \
|
$(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \
|
||||||
$(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/malloc.m4 \
|
$(top_srcdir)/m4/localeconv.m4 $(top_srcdir)/m4/lock.m4 \
|
||||||
|
$(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lstat.m4 \
|
||||||
|
$(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
|
||||||
$(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
|
$(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
|
||||||
$(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
|
$(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
|
||||||
$(top_srcdir)/m4/mbswidth.m4 $(top_srcdir)/m4/mbtowc.m4 \
|
$(top_srcdir)/m4/mbswidth.m4 $(top_srcdir)/m4/mbtowc.m4 \
|
||||||
$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
|
$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
|
||||||
$(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/msvc-inval.m4 \
|
$(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
|
||||||
|
$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
|
||||||
$(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
|
$(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
|
||||||
$(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
|
$(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
|
||||||
$(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/off_t.m4 \
|
$(top_srcdir)/m4/nocrash.m4 $(top_srcdir)/m4/off_t.m4 \
|
||||||
|
$(top_srcdir)/m4/open-cloexec.m4 $(top_srcdir)/m4/open.m4 \
|
||||||
|
$(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
|
||||||
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
|
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
|
||||||
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/rawmemchr.m4 \
|
$(top_srcdir)/m4/progtest.m4 \
|
||||||
$(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
|
$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
|
||||||
|
$(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/realloc.m4 \
|
||||||
|
$(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/save-cwd.m4 \
|
||||||
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
|
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
|
||||||
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdalign.m4 \
|
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.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/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
|
||||||
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_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/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
|
||||||
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
|
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
|
||||||
$(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
|
$(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
|
||||||
$(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
|
$(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
|
||||||
$(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
|
$(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
|
||||||
$(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/sysexits.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/vasnprintf.m4 \
|
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \
|
||||||
$(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/warn-on-use.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/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
|
||||||
@ -243,7 +265,6 @@ am__DIST_COMMON = $(grub_TEXINFOS) $(srcdir)/Makefile.in \
|
|||||||
$(top_srcdir)/build-aux/mdate-sh \
|
$(top_srcdir)/build-aux/mdate-sh \
|
||||||
$(top_srcdir)/build-aux/texinfo.tex mdate-sh texinfo.tex
|
$(top_srcdir)/build-aux/texinfo.tex mdate-sh texinfo.tex
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
pkglibexecdir = @pkglibexecdir@
|
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
ALLOCA = @ALLOCA@
|
ALLOCA = @ALLOCA@
|
||||||
ALLOCA_H = @ALLOCA_H@
|
ALLOCA_H = @ALLOCA_H@
|
||||||
@ -267,9 +288,11 @@ BUILD_CC = @BUILD_CC@
|
|||||||
BUILD_CFLAGS = @BUILD_CFLAGS@
|
BUILD_CFLAGS = @BUILD_CFLAGS@
|
||||||
BUILD_CPPFLAGS = @BUILD_CPPFLAGS@
|
BUILD_CPPFLAGS = @BUILD_CPPFLAGS@
|
||||||
BUILD_EXEEXT = @BUILD_EXEEXT@
|
BUILD_EXEEXT = @BUILD_EXEEXT@
|
||||||
BUILD_FREETYPE = @BUILD_FREETYPE@
|
BUILD_FREETYPE_CFLAGS = @BUILD_FREETYPE_CFLAGS@
|
||||||
|
BUILD_FREETYPE_LIBS = @BUILD_FREETYPE_LIBS@
|
||||||
BUILD_LDFLAGS = @BUILD_LDFLAGS@
|
BUILD_LDFLAGS = @BUILD_LDFLAGS@
|
||||||
BUILD_LIBM = @BUILD_LIBM@
|
BUILD_LIBM = @BUILD_LIBM@
|
||||||
|
BUILD_SHEBANG = @BUILD_SHEBANG@
|
||||||
BUILD_SIZEOF_LONG = @BUILD_SIZEOF_LONG@
|
BUILD_SIZEOF_LONG = @BUILD_SIZEOF_LONG@
|
||||||
BUILD_SIZEOF_VOID_P = @BUILD_SIZEOF_VOID_P@
|
BUILD_SIZEOF_VOID_P = @BUILD_SIZEOF_VOID_P@
|
||||||
BUILD_WORDS_BIGENDIAN = @BUILD_WORDS_BIGENDIAN@
|
BUILD_WORDS_BIGENDIAN = @BUILD_WORDS_BIGENDIAN@
|
||||||
@ -307,12 +330,15 @@ EXEEXT = @EXEEXT@
|
|||||||
FLOAT_H = @FLOAT_H@
|
FLOAT_H = @FLOAT_H@
|
||||||
FNMATCH_H = @FNMATCH_H@
|
FNMATCH_H = @FNMATCH_H@
|
||||||
FONT_SOURCE = @FONT_SOURCE@
|
FONT_SOURCE = @FONT_SOURCE@
|
||||||
FREETYPE = @FREETYPE@
|
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
|
||||||
|
FREETYPE_LIBS = @FREETYPE_LIBS@
|
||||||
|
GETOPT_CDEFS_H = @GETOPT_CDEFS_H@
|
||||||
GETOPT_H = @GETOPT_H@
|
GETOPT_H = @GETOPT_H@
|
||||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||||
GLIBC21 = @GLIBC21@
|
GLIBC21 = @GLIBC21@
|
||||||
GMSGFMT = @GMSGFMT@
|
GMSGFMT = @GMSGFMT@
|
||||||
GMSGFMT_015 = @GMSGFMT_015@
|
GMSGFMT_015 = @GMSGFMT_015@
|
||||||
|
GNULIB_ALPHASORT = @GNULIB_ALPHASORT@
|
||||||
GNULIB_ATOLL = @GNULIB_ATOLL@
|
GNULIB_ATOLL = @GNULIB_ATOLL@
|
||||||
GNULIB_BTOWC = @GNULIB_BTOWC@
|
GNULIB_BTOWC = @GNULIB_BTOWC@
|
||||||
GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
|
GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
|
||||||
@ -320,6 +346,9 @@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
|
|||||||
GNULIB_CHDIR = @GNULIB_CHDIR@
|
GNULIB_CHDIR = @GNULIB_CHDIR@
|
||||||
GNULIB_CHOWN = @GNULIB_CHOWN@
|
GNULIB_CHOWN = @GNULIB_CHOWN@
|
||||||
GNULIB_CLOSE = @GNULIB_CLOSE@
|
GNULIB_CLOSE = @GNULIB_CLOSE@
|
||||||
|
GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@
|
||||||
|
GNULIB_CTIME = @GNULIB_CTIME@
|
||||||
|
GNULIB_DIRFD = @GNULIB_DIRFD@
|
||||||
GNULIB_DPRINTF = @GNULIB_DPRINTF@
|
GNULIB_DPRINTF = @GNULIB_DPRINTF@
|
||||||
GNULIB_DUP = @GNULIB_DUP@
|
GNULIB_DUP = @GNULIB_DUP@
|
||||||
GNULIB_DUP2 = @GNULIB_DUP2@
|
GNULIB_DUP2 = @GNULIB_DUP2@
|
||||||
@ -327,18 +356,23 @@ GNULIB_DUP3 = @GNULIB_DUP3@
|
|||||||
GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
|
GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@
|
||||||
GNULIB_ENVIRON = @GNULIB_ENVIRON@
|
GNULIB_ENVIRON = @GNULIB_ENVIRON@
|
||||||
GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
|
GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
|
||||||
|
GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@
|
||||||
GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
|
GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
|
||||||
GNULIB_FCHDIR = @GNULIB_FCHDIR@
|
GNULIB_FCHDIR = @GNULIB_FCHDIR@
|
||||||
|
GNULIB_FCHMODAT = @GNULIB_FCHMODAT@
|
||||||
GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
|
GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
|
||||||
GNULIB_FCLOSE = @GNULIB_FCLOSE@
|
GNULIB_FCLOSE = @GNULIB_FCLOSE@
|
||||||
|
GNULIB_FCNTL = @GNULIB_FCNTL@
|
||||||
GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
|
GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
|
||||||
GNULIB_FDOPEN = @GNULIB_FDOPEN@
|
GNULIB_FDOPEN = @GNULIB_FDOPEN@
|
||||||
|
GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@
|
||||||
GNULIB_FFLUSH = @GNULIB_FFLUSH@
|
GNULIB_FFLUSH = @GNULIB_FFLUSH@
|
||||||
GNULIB_FFS = @GNULIB_FFS@
|
GNULIB_FFS = @GNULIB_FFS@
|
||||||
GNULIB_FFSL = @GNULIB_FFSL@
|
GNULIB_FFSL = @GNULIB_FFSL@
|
||||||
GNULIB_FFSLL = @GNULIB_FFSLL@
|
GNULIB_FFSLL = @GNULIB_FFSLL@
|
||||||
GNULIB_FGETC = @GNULIB_FGETC@
|
GNULIB_FGETC = @GNULIB_FGETC@
|
||||||
GNULIB_FGETS = @GNULIB_FGETS@
|
GNULIB_FGETS = @GNULIB_FGETS@
|
||||||
|
GNULIB_FNMATCH = @GNULIB_FNMATCH@
|
||||||
GNULIB_FOPEN = @GNULIB_FOPEN@
|
GNULIB_FOPEN = @GNULIB_FOPEN@
|
||||||
GNULIB_FPRINTF = @GNULIB_FPRINTF@
|
GNULIB_FPRINTF = @GNULIB_FPRINTF@
|
||||||
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
|
GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
|
||||||
@ -350,10 +384,13 @@ GNULIB_FREOPEN = @GNULIB_FREOPEN@
|
|||||||
GNULIB_FSCANF = @GNULIB_FSCANF@
|
GNULIB_FSCANF = @GNULIB_FSCANF@
|
||||||
GNULIB_FSEEK = @GNULIB_FSEEK@
|
GNULIB_FSEEK = @GNULIB_FSEEK@
|
||||||
GNULIB_FSEEKO = @GNULIB_FSEEKO@
|
GNULIB_FSEEKO = @GNULIB_FSEEKO@
|
||||||
|
GNULIB_FSTAT = @GNULIB_FSTAT@
|
||||||
|
GNULIB_FSTATAT = @GNULIB_FSTATAT@
|
||||||
GNULIB_FSYNC = @GNULIB_FSYNC@
|
GNULIB_FSYNC = @GNULIB_FSYNC@
|
||||||
GNULIB_FTELL = @GNULIB_FTELL@
|
GNULIB_FTELL = @GNULIB_FTELL@
|
||||||
GNULIB_FTELLO = @GNULIB_FTELLO@
|
GNULIB_FTELLO = @GNULIB_FTELLO@
|
||||||
GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
|
GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
|
||||||
|
GNULIB_FUTIMENS = @GNULIB_FUTIMENS@
|
||||||
GNULIB_FWRITE = @GNULIB_FWRITE@
|
GNULIB_FWRITE = @GNULIB_FWRITE@
|
||||||
GNULIB_GETC = @GNULIB_GETC@
|
GNULIB_GETC = @GNULIB_GETC@
|
||||||
GNULIB_GETCHAR = @GNULIB_GETCHAR@
|
GNULIB_GETCHAR = @GNULIB_GETCHAR@
|
||||||
@ -368,7 +405,9 @@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
|
|||||||
GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
|
GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
|
||||||
GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
|
GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
|
||||||
GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
|
GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
|
||||||
|
GNULIB_GETPASS = @GNULIB_GETPASS@
|
||||||
GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
|
GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
|
||||||
|
GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
|
||||||
GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
|
GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
|
||||||
GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@
|
GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@
|
||||||
GNULIB_GRANTPT = @GNULIB_GRANTPT@
|
GNULIB_GRANTPT = @GNULIB_GRANTPT@
|
||||||
@ -376,11 +415,15 @@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
|
|||||||
GNULIB_ISATTY = @GNULIB_ISATTY@
|
GNULIB_ISATTY = @GNULIB_ISATTY@
|
||||||
GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
|
GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
|
||||||
GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
|
GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
|
||||||
|
GNULIB_LCHMOD = @GNULIB_LCHMOD@
|
||||||
GNULIB_LCHOWN = @GNULIB_LCHOWN@
|
GNULIB_LCHOWN = @GNULIB_LCHOWN@
|
||||||
GNULIB_LINK = @GNULIB_LINK@
|
GNULIB_LINK = @GNULIB_LINK@
|
||||||
GNULIB_LINKAT = @GNULIB_LINKAT@
|
GNULIB_LINKAT = @GNULIB_LINKAT@
|
||||||
GNULIB_LOCALECONV = @GNULIB_LOCALECONV@
|
GNULIB_LOCALECONV = @GNULIB_LOCALECONV@
|
||||||
|
GNULIB_LOCALENAME = @GNULIB_LOCALENAME@
|
||||||
|
GNULIB_LOCALTIME = @GNULIB_LOCALTIME@
|
||||||
GNULIB_LSEEK = @GNULIB_LSEEK@
|
GNULIB_LSEEK = @GNULIB_LSEEK@
|
||||||
|
GNULIB_LSTAT = @GNULIB_LSTAT@
|
||||||
GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
|
GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
|
||||||
GNULIB_MBRLEN = @GNULIB_MBRLEN@
|
GNULIB_MBRLEN = @GNULIB_MBRLEN@
|
||||||
GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
|
GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
|
||||||
@ -406,14 +449,27 @@ GNULIB_MEMCHR = @GNULIB_MEMCHR@
|
|||||||
GNULIB_MEMMEM = @GNULIB_MEMMEM@
|
GNULIB_MEMMEM = @GNULIB_MEMMEM@
|
||||||
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
|
GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
|
||||||
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
|
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
|
||||||
|
GNULIB_MKDIRAT = @GNULIB_MKDIRAT@
|
||||||
GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
|
GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
|
||||||
|
GNULIB_MKFIFO = @GNULIB_MKFIFO@
|
||||||
|
GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@
|
||||||
|
GNULIB_MKNOD = @GNULIB_MKNOD@
|
||||||
|
GNULIB_MKNODAT = @GNULIB_MKNODAT@
|
||||||
GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
|
GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
|
||||||
GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
|
GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
|
||||||
GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
|
GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
|
||||||
GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
|
GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
|
||||||
|
GNULIB_MKTIME = @GNULIB_MKTIME@
|
||||||
|
GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
|
||||||
GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
|
GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
|
||||||
|
GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
|
||||||
GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
|
GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
|
||||||
GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
|
GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
|
||||||
|
GNULIB_OPEN = @GNULIB_OPEN@
|
||||||
|
GNULIB_OPENAT = @GNULIB_OPENAT@
|
||||||
|
GNULIB_OPENDIR = @GNULIB_OPENDIR@
|
||||||
|
GNULIB_OVERRIDES_STRUCT_STAT = @GNULIB_OVERRIDES_STRUCT_STAT@
|
||||||
|
GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@
|
||||||
GNULIB_PCLOSE = @GNULIB_PCLOSE@
|
GNULIB_PCLOSE = @GNULIB_PCLOSE@
|
||||||
GNULIB_PERROR = @GNULIB_PERROR@
|
GNULIB_PERROR = @GNULIB_PERROR@
|
||||||
GNULIB_PIPE = @GNULIB_PIPE@
|
GNULIB_PIPE = @GNULIB_PIPE@
|
||||||
@ -430,19 +486,24 @@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
|
|||||||
GNULIB_PUTENV = @GNULIB_PUTENV@
|
GNULIB_PUTENV = @GNULIB_PUTENV@
|
||||||
GNULIB_PUTS = @GNULIB_PUTS@
|
GNULIB_PUTS = @GNULIB_PUTS@
|
||||||
GNULIB_PWRITE = @GNULIB_PWRITE@
|
GNULIB_PWRITE = @GNULIB_PWRITE@
|
||||||
|
GNULIB_QSORT_R = @GNULIB_QSORT_R@
|
||||||
GNULIB_RANDOM = @GNULIB_RANDOM@
|
GNULIB_RANDOM = @GNULIB_RANDOM@
|
||||||
GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
|
GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
|
||||||
GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
|
GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
|
||||||
GNULIB_READ = @GNULIB_READ@
|
GNULIB_READ = @GNULIB_READ@
|
||||||
|
GNULIB_READDIR = @GNULIB_READDIR@
|
||||||
GNULIB_READLINK = @GNULIB_READLINK@
|
GNULIB_READLINK = @GNULIB_READLINK@
|
||||||
GNULIB_READLINKAT = @GNULIB_READLINKAT@
|
GNULIB_READLINKAT = @GNULIB_READLINKAT@
|
||||||
|
GNULIB_REALLOCARRAY = @GNULIB_REALLOCARRAY@
|
||||||
GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
|
GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
|
||||||
GNULIB_REALPATH = @GNULIB_REALPATH@
|
GNULIB_REALPATH = @GNULIB_REALPATH@
|
||||||
GNULIB_REMOVE = @GNULIB_REMOVE@
|
GNULIB_REMOVE = @GNULIB_REMOVE@
|
||||||
GNULIB_RENAME = @GNULIB_RENAME@
|
GNULIB_RENAME = @GNULIB_RENAME@
|
||||||
GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
|
GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
|
||||||
|
GNULIB_REWINDDIR = @GNULIB_REWINDDIR@
|
||||||
GNULIB_RMDIR = @GNULIB_RMDIR@
|
GNULIB_RMDIR = @GNULIB_RMDIR@
|
||||||
GNULIB_RPMATCH = @GNULIB_RPMATCH@
|
GNULIB_RPMATCH = @GNULIB_RPMATCH@
|
||||||
|
GNULIB_SCANDIR = @GNULIB_SCANDIR@
|
||||||
GNULIB_SCANF = @GNULIB_SCANF@
|
GNULIB_SCANF = @GNULIB_SCANF@
|
||||||
GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
|
GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
|
||||||
GNULIB_SETENV = @GNULIB_SETENV@
|
GNULIB_SETENV = @GNULIB_SETENV@
|
||||||
@ -451,6 +512,7 @@ GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
|
|||||||
GNULIB_SLEEP = @GNULIB_SLEEP@
|
GNULIB_SLEEP = @GNULIB_SLEEP@
|
||||||
GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
|
GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
|
||||||
GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
|
GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
|
||||||
|
GNULIB_STAT = @GNULIB_STAT@
|
||||||
GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
|
GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
|
||||||
GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
|
GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
|
||||||
GNULIB_STPCPY = @GNULIB_STPCPY@
|
GNULIB_STPCPY = @GNULIB_STPCPY@
|
||||||
@ -460,10 +522,12 @@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
|
|||||||
GNULIB_STRDUP = @GNULIB_STRDUP@
|
GNULIB_STRDUP = @GNULIB_STRDUP@
|
||||||
GNULIB_STRERROR = @GNULIB_STRERROR@
|
GNULIB_STRERROR = @GNULIB_STRERROR@
|
||||||
GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
|
GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
|
||||||
|
GNULIB_STRFTIME = @GNULIB_STRFTIME@
|
||||||
GNULIB_STRNCAT = @GNULIB_STRNCAT@
|
GNULIB_STRNCAT = @GNULIB_STRNCAT@
|
||||||
GNULIB_STRNDUP = @GNULIB_STRNDUP@
|
GNULIB_STRNDUP = @GNULIB_STRNDUP@
|
||||||
GNULIB_STRNLEN = @GNULIB_STRNLEN@
|
GNULIB_STRNLEN = @GNULIB_STRNLEN@
|
||||||
GNULIB_STRPBRK = @GNULIB_STRPBRK@
|
GNULIB_STRPBRK = @GNULIB_STRPBRK@
|
||||||
|
GNULIB_STRPTIME = @GNULIB_STRPTIME@
|
||||||
GNULIB_STRSEP = @GNULIB_STRSEP@
|
GNULIB_STRSEP = @GNULIB_STRSEP@
|
||||||
GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
|
GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
|
||||||
GNULIB_STRSTR = @GNULIB_STRSTR@
|
GNULIB_STRSTR = @GNULIB_STRSTR@
|
||||||
@ -475,9 +539,14 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
|
|||||||
GNULIB_SYMLINK = @GNULIB_SYMLINK@
|
GNULIB_SYMLINK = @GNULIB_SYMLINK@
|
||||||
GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
|
GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
|
||||||
GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
|
GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
|
||||||
|
GNULIB_TIMEGM = @GNULIB_TIMEGM@
|
||||||
|
GNULIB_TIME_R = @GNULIB_TIME_R@
|
||||||
|
GNULIB_TIME_RZ = @GNULIB_TIME_RZ@
|
||||||
GNULIB_TMPFILE = @GNULIB_TMPFILE@
|
GNULIB_TMPFILE = @GNULIB_TMPFILE@
|
||||||
GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
|
GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
|
||||||
|
GNULIB_TRUNCATE = @GNULIB_TRUNCATE@
|
||||||
GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
|
GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
|
||||||
|
GNULIB_TZSET = @GNULIB_TZSET@
|
||||||
GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
|
GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
|
||||||
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
|
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
|
||||||
GNULIB_UNLINK = @GNULIB_UNLINK@
|
GNULIB_UNLINK = @GNULIB_UNLINK@
|
||||||
@ -485,6 +554,7 @@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
|
|||||||
GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
|
GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
|
||||||
GNULIB_UNSETENV = @GNULIB_UNSETENV@
|
GNULIB_UNSETENV = @GNULIB_UNSETENV@
|
||||||
GNULIB_USLEEP = @GNULIB_USLEEP@
|
GNULIB_USLEEP = @GNULIB_USLEEP@
|
||||||
|
GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
|
||||||
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
|
GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
|
||||||
GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
|
GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
|
||||||
GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
|
GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
|
||||||
@ -506,6 +576,7 @@ GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
|
|||||||
GNULIB_WCSCPY = @GNULIB_WCSCPY@
|
GNULIB_WCSCPY = @GNULIB_WCSCPY@
|
||||||
GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
|
GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
|
||||||
GNULIB_WCSDUP = @GNULIB_WCSDUP@
|
GNULIB_WCSDUP = @GNULIB_WCSDUP@
|
||||||
|
GNULIB_WCSFTIME = @GNULIB_WCSFTIME@
|
||||||
GNULIB_WCSLEN = @GNULIB_WCSLEN@
|
GNULIB_WCSLEN = @GNULIB_WCSLEN@
|
||||||
GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
|
GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
|
||||||
GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
|
GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
|
||||||
@ -537,15 +608,21 @@ GREP = @GREP@
|
|||||||
GRUB_BOOT_MACHINE_LINK_ADDR = @GRUB_BOOT_MACHINE_LINK_ADDR@
|
GRUB_BOOT_MACHINE_LINK_ADDR = @GRUB_BOOT_MACHINE_LINK_ADDR@
|
||||||
GRUB_PLATFORM = @GRUB_PLATFORM@
|
GRUB_PLATFORM = @GRUB_PLATFORM@
|
||||||
GRUB_TARGET_CPU = @GRUB_TARGET_CPU@
|
GRUB_TARGET_CPU = @GRUB_TARGET_CPU@
|
||||||
|
HAVE_ALPHASORT = @HAVE_ALPHASORT@
|
||||||
HAVE_ASM_USCORE = @HAVE_ASM_USCORE@
|
HAVE_ASM_USCORE = @HAVE_ASM_USCORE@
|
||||||
HAVE_ATOLL = @HAVE_ATOLL@
|
HAVE_ATOLL = @HAVE_ATOLL@
|
||||||
HAVE_BTOWC = @HAVE_BTOWC@
|
HAVE_BTOWC = @HAVE_BTOWC@
|
||||||
|
HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
|
||||||
HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
|
HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
|
||||||
HAVE_CHOWN = @HAVE_CHOWN@
|
HAVE_CHOWN = @HAVE_CHOWN@
|
||||||
|
HAVE_CLOSEDIR = @HAVE_CLOSEDIR@
|
||||||
|
HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@
|
||||||
HAVE_CXX = @HAVE_CXX@
|
HAVE_CXX = @HAVE_CXX@
|
||||||
|
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
|
||||||
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
|
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
|
||||||
HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
|
HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
|
||||||
HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
|
HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
|
||||||
|
HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
|
||||||
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
|
HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
|
||||||
HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
|
HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
|
||||||
HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
|
HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
|
||||||
@ -553,14 +630,18 @@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
|
|||||||
HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
|
HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
|
||||||
HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
|
HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
|
||||||
HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
|
HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
|
||||||
|
HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@
|
||||||
HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
|
HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
|
||||||
HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
|
HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
|
||||||
HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
|
HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
|
||||||
|
HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@
|
||||||
|
HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
|
||||||
HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
|
HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
|
||||||
HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
|
HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
|
||||||
HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
|
HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
|
||||||
HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
|
HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
|
||||||
HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
|
HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
|
||||||
|
HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@
|
||||||
HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
|
HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
|
||||||
HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
|
HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
|
||||||
HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
|
HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
|
||||||
@ -569,50 +650,66 @@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
|
|||||||
HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
|
HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
|
||||||
HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
|
HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
|
||||||
HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
|
HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
|
||||||
|
HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@
|
||||||
HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
|
HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
|
||||||
HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
|
HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
|
||||||
HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
|
HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
|
||||||
HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
|
HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
|
||||||
HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
|
HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
|
||||||
|
HAVE_DIRENT_H = @HAVE_DIRENT_H@
|
||||||
HAVE_DPRINTF = @HAVE_DPRINTF@
|
HAVE_DPRINTF = @HAVE_DPRINTF@
|
||||||
HAVE_DUP2 = @HAVE_DUP2@
|
HAVE_DUP2 = @HAVE_DUP2@
|
||||||
HAVE_DUP3 = @HAVE_DUP3@
|
HAVE_DUP3 = @HAVE_DUP3@
|
||||||
HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
|
HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
|
||||||
HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
|
HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
|
||||||
|
HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
|
||||||
HAVE_FACCESSAT = @HAVE_FACCESSAT@
|
HAVE_FACCESSAT = @HAVE_FACCESSAT@
|
||||||
HAVE_FCHDIR = @HAVE_FCHDIR@
|
HAVE_FCHDIR = @HAVE_FCHDIR@
|
||||||
|
HAVE_FCHMODAT = @HAVE_FCHMODAT@
|
||||||
HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
|
HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
|
||||||
|
HAVE_FCNTL = @HAVE_FCNTL@
|
||||||
HAVE_FDATASYNC = @HAVE_FDATASYNC@
|
HAVE_FDATASYNC = @HAVE_FDATASYNC@
|
||||||
|
HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
|
||||||
HAVE_FEATURES_H = @HAVE_FEATURES_H@
|
HAVE_FEATURES_H = @HAVE_FEATURES_H@
|
||||||
HAVE_FFS = @HAVE_FFS@
|
HAVE_FFS = @HAVE_FFS@
|
||||||
HAVE_FFSL = @HAVE_FFSL@
|
HAVE_FFSL = @HAVE_FFSL@
|
||||||
HAVE_FFSLL = @HAVE_FFSLL@
|
HAVE_FFSLL = @HAVE_FFSLL@
|
||||||
|
HAVE_FNMATCH = @HAVE_FNMATCH@
|
||||||
|
HAVE_FNMATCH_H = @HAVE_FNMATCH_H@
|
||||||
HAVE_FONT_SOURCE = @HAVE_FONT_SOURCE@
|
HAVE_FONT_SOURCE = @HAVE_FONT_SOURCE@
|
||||||
|
HAVE_FREELOCALE = @HAVE_FREELOCALE@
|
||||||
HAVE_FSEEKO = @HAVE_FSEEKO@
|
HAVE_FSEEKO = @HAVE_FSEEKO@
|
||||||
|
HAVE_FSTATAT = @HAVE_FSTATAT@
|
||||||
HAVE_FSYNC = @HAVE_FSYNC@
|
HAVE_FSYNC = @HAVE_FSYNC@
|
||||||
HAVE_FTELLO = @HAVE_FTELLO@
|
HAVE_FTELLO = @HAVE_FTELLO@
|
||||||
HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
|
HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
|
||||||
|
HAVE_FUTIMENS = @HAVE_FUTIMENS@
|
||||||
HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
|
HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
|
||||||
HAVE_GETGROUPS = @HAVE_GETGROUPS@
|
HAVE_GETGROUPS = @HAVE_GETGROUPS@
|
||||||
HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
|
HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
|
||||||
HAVE_GETLOGIN = @HAVE_GETLOGIN@
|
HAVE_GETLOGIN = @HAVE_GETLOGIN@
|
||||||
HAVE_GETOPT_H = @HAVE_GETOPT_H@
|
HAVE_GETOPT_H = @HAVE_GETOPT_H@
|
||||||
HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
|
HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
|
||||||
|
HAVE_GETPASS = @HAVE_GETPASS@
|
||||||
HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
|
HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
|
||||||
HAVE_GRANTPT = @HAVE_GRANTPT@
|
HAVE_GRANTPT = @HAVE_GRANTPT@
|
||||||
HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
|
HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
|
||||||
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
|
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
|
||||||
HAVE_ISWBLANK = @HAVE_ISWBLANK@
|
HAVE_ISWBLANK = @HAVE_ISWBLANK@
|
||||||
HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
|
HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
|
||||||
|
HAVE_LANGINFO_ALTMON = @HAVE_LANGINFO_ALTMON@
|
||||||
HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
|
HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
|
||||||
HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
|
HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
|
||||||
HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
|
HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
|
||||||
HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
|
HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
|
||||||
HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
|
HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
|
||||||
|
HAVE_LCHMOD = @HAVE_LCHMOD@
|
||||||
HAVE_LCHOWN = @HAVE_LCHOWN@
|
HAVE_LCHOWN = @HAVE_LCHOWN@
|
||||||
HAVE_LINK = @HAVE_LINK@
|
HAVE_LINK = @HAVE_LINK@
|
||||||
HAVE_LINKAT = @HAVE_LINKAT@
|
HAVE_LINKAT = @HAVE_LINKAT@
|
||||||
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
|
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
|
||||||
|
HAVE_LSTAT = @HAVE_LSTAT@
|
||||||
|
HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
|
||||||
HAVE_MBRLEN = @HAVE_MBRLEN@
|
HAVE_MBRLEN = @HAVE_MBRLEN@
|
||||||
HAVE_MBRTOWC = @HAVE_MBRTOWC@
|
HAVE_MBRTOWC = @HAVE_MBRTOWC@
|
||||||
HAVE_MBSINIT = @HAVE_MBSINIT@
|
HAVE_MBSINIT = @HAVE_MBSINIT@
|
||||||
@ -621,13 +718,22 @@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
|
|||||||
HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
|
HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
|
||||||
HAVE_MEMCHR = @HAVE_MEMCHR@
|
HAVE_MEMCHR = @HAVE_MEMCHR@
|
||||||
HAVE_MEMPCPY = @HAVE_MEMPCPY@
|
HAVE_MEMPCPY = @HAVE_MEMPCPY@
|
||||||
|
HAVE_MKDIRAT = @HAVE_MKDIRAT@
|
||||||
HAVE_MKDTEMP = @HAVE_MKDTEMP@
|
HAVE_MKDTEMP = @HAVE_MKDTEMP@
|
||||||
|
HAVE_MKFIFO = @HAVE_MKFIFO@
|
||||||
|
HAVE_MKFIFOAT = @HAVE_MKFIFOAT@
|
||||||
|
HAVE_MKNOD = @HAVE_MKNOD@
|
||||||
|
HAVE_MKNODAT = @HAVE_MKNODAT@
|
||||||
HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
|
HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
|
||||||
HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
|
HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
|
||||||
HAVE_MKSTEMP = @HAVE_MKSTEMP@
|
HAVE_MKSTEMP = @HAVE_MKSTEMP@
|
||||||
HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
|
HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
|
||||||
HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@
|
HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@
|
||||||
|
HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
|
||||||
|
HAVE_NEWLOCALE = @HAVE_NEWLOCALE@
|
||||||
HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
|
HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
|
||||||
|
HAVE_OPENAT = @HAVE_OPENAT@
|
||||||
|
HAVE_OPENDIR = @HAVE_OPENDIR@
|
||||||
HAVE_OS_H = @HAVE_OS_H@
|
HAVE_OS_H = @HAVE_OS_H@
|
||||||
HAVE_PCLOSE = @HAVE_PCLOSE@
|
HAVE_PCLOSE = @HAVE_PCLOSE@
|
||||||
HAVE_PIPE = @HAVE_PIPE@
|
HAVE_PIPE = @HAVE_PIPE@
|
||||||
@ -638,15 +744,20 @@ HAVE_PREAD = @HAVE_PREAD@
|
|||||||
HAVE_PTSNAME = @HAVE_PTSNAME@
|
HAVE_PTSNAME = @HAVE_PTSNAME@
|
||||||
HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
|
HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
|
||||||
HAVE_PWRITE = @HAVE_PWRITE@
|
HAVE_PWRITE = @HAVE_PWRITE@
|
||||||
|
HAVE_QSORT_R = @HAVE_QSORT_R@
|
||||||
HAVE_RANDOM = @HAVE_RANDOM@
|
HAVE_RANDOM = @HAVE_RANDOM@
|
||||||
HAVE_RANDOM_H = @HAVE_RANDOM_H@
|
HAVE_RANDOM_H = @HAVE_RANDOM_H@
|
||||||
HAVE_RANDOM_R = @HAVE_RANDOM_R@
|
HAVE_RANDOM_R = @HAVE_RANDOM_R@
|
||||||
HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
|
HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
|
||||||
|
HAVE_READDIR = @HAVE_READDIR@
|
||||||
HAVE_READLINK = @HAVE_READLINK@
|
HAVE_READLINK = @HAVE_READLINK@
|
||||||
HAVE_READLINKAT = @HAVE_READLINKAT@
|
HAVE_READLINKAT = @HAVE_READLINKAT@
|
||||||
|
HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@
|
||||||
HAVE_REALPATH = @HAVE_REALPATH@
|
HAVE_REALPATH = @HAVE_REALPATH@
|
||||||
HAVE_RENAMEAT = @HAVE_RENAMEAT@
|
HAVE_RENAMEAT = @HAVE_RENAMEAT@
|
||||||
|
HAVE_REWINDDIR = @HAVE_REWINDDIR@
|
||||||
HAVE_RPMATCH = @HAVE_RPMATCH@
|
HAVE_RPMATCH = @HAVE_RPMATCH@
|
||||||
|
HAVE_SCANDIR = @HAVE_SCANDIR@
|
||||||
HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
|
HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
|
||||||
HAVE_SETENV = @HAVE_SETENV@
|
HAVE_SETENV = @HAVE_SETENV@
|
||||||
HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
|
HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
|
||||||
@ -662,6 +773,7 @@ HAVE_STRCASESTR = @HAVE_STRCASESTR@
|
|||||||
HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
|
HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
|
||||||
HAVE_STRINGS_H = @HAVE_STRINGS_H@
|
HAVE_STRINGS_H = @HAVE_STRINGS_H@
|
||||||
HAVE_STRPBRK = @HAVE_STRPBRK@
|
HAVE_STRPBRK = @HAVE_STRPBRK@
|
||||||
|
HAVE_STRPTIME = @HAVE_STRPTIME@
|
||||||
HAVE_STRSEP = @HAVE_STRSEP@
|
HAVE_STRSEP = @HAVE_STRSEP@
|
||||||
HAVE_STRTOD = @HAVE_STRTOD@
|
HAVE_STRTOD = @HAVE_STRTOD@
|
||||||
HAVE_STRTOLL = @HAVE_STRTOLL@
|
HAVE_STRTOLL = @HAVE_STRTOLL@
|
||||||
@ -672,15 +784,20 @@ HAVE_SYMLINK = @HAVE_SYMLINK@
|
|||||||
HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
|
HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
|
||||||
HAVE_SYSEXITS_H = @HAVE_SYSEXITS_H@
|
HAVE_SYSEXITS_H = @HAVE_SYSEXITS_H@
|
||||||
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
|
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
|
||||||
|
HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@
|
||||||
HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
|
HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
|
||||||
HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
|
HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
|
||||||
HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
|
HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
|
||||||
HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
|
HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
|
||||||
|
HAVE_TIMEGM = @HAVE_TIMEGM@
|
||||||
|
HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@
|
||||||
|
HAVE_TZSET = @HAVE_TZSET@
|
||||||
HAVE_UNISTD_H = @HAVE_UNISTD_H@
|
HAVE_UNISTD_H = @HAVE_UNISTD_H@
|
||||||
HAVE_UNLINKAT = @HAVE_UNLINKAT@
|
HAVE_UNLINKAT = @HAVE_UNLINKAT@
|
||||||
HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
|
HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
|
||||||
HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
|
HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
|
||||||
HAVE_USLEEP = @HAVE_USLEEP@
|
HAVE_USLEEP = @HAVE_USLEEP@
|
||||||
|
HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
|
||||||
HAVE_VASPRINTF = @HAVE_VASPRINTF@
|
HAVE_VASPRINTF = @HAVE_VASPRINTF@
|
||||||
HAVE_VDPRINTF = @HAVE_VDPRINTF@
|
HAVE_VDPRINTF = @HAVE_VDPRINTF@
|
||||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||||
@ -696,6 +813,7 @@ HAVE_WCSCOLL = @HAVE_WCSCOLL@
|
|||||||
HAVE_WCSCPY = @HAVE_WCSCPY@
|
HAVE_WCSCPY = @HAVE_WCSCPY@
|
||||||
HAVE_WCSCSPN = @HAVE_WCSCSPN@
|
HAVE_WCSCSPN = @HAVE_WCSCSPN@
|
||||||
HAVE_WCSDUP = @HAVE_WCSDUP@
|
HAVE_WCSDUP = @HAVE_WCSDUP@
|
||||||
|
HAVE_WCSFTIME = @HAVE_WCSFTIME@
|
||||||
HAVE_WCSLEN = @HAVE_WCSLEN@
|
HAVE_WCSLEN = @HAVE_WCSLEN@
|
||||||
HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
|
HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
|
||||||
HAVE_WCSNCAT = @HAVE_WCSNCAT@
|
HAVE_WCSNCAT = @HAVE_WCSNCAT@
|
||||||
@ -750,15 +868,20 @@ LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
|
|||||||
LIBICONV = @LIBICONV@
|
LIBICONV = @LIBICONV@
|
||||||
LIBINTL = @LIBINTL@
|
LIBINTL = @LIBINTL@
|
||||||
LIBLZMA = @LIBLZMA@
|
LIBLZMA = @LIBLZMA@
|
||||||
|
LIBMULTITHREAD = @LIBMULTITHREAD@
|
||||||
LIBNVPAIR = @LIBNVPAIR@
|
LIBNVPAIR = @LIBNVPAIR@
|
||||||
LIBOBJS = @LIBOBJS@
|
LIBOBJS = @LIBOBJS@
|
||||||
LIBPCIACCESS = @LIBPCIACCESS@
|
LIBPCIACCESS = @LIBPCIACCESS@
|
||||||
|
LIBPTH = @LIBPTH@
|
||||||
|
LIBPTH_PREFIX = @LIBPTH_PREFIX@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
LIBSDL = @LIBSDL@
|
LIBSDL = @LIBSDL@
|
||||||
|
LIBTHREAD = @LIBTHREAD@
|
||||||
LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
|
LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
|
||||||
LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
|
LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
|
||||||
LIBUTIL = @LIBUTIL@
|
LIBUTIL = @LIBUTIL@
|
||||||
LIBZFS = @LIBZFS@
|
LIBZFS = @LIBZFS@
|
||||||
|
LIMITS_H = @LIMITS_H@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
|
LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
|
||||||
LOCALE_FR = @LOCALE_FR@
|
LOCALE_FR = @LOCALE_FR@
|
||||||
@ -767,16 +890,23 @@ LOCALE_JA = @LOCALE_JA@
|
|||||||
LOCALE_ZH_CN = @LOCALE_ZH_CN@
|
LOCALE_ZH_CN = @LOCALE_ZH_CN@
|
||||||
LTLIBICONV = @LTLIBICONV@
|
LTLIBICONV = @LTLIBICONV@
|
||||||
LTLIBINTL = @LTLIBINTL@
|
LTLIBINTL = @LTLIBINTL@
|
||||||
|
LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LTLIBPTH = @LTLIBPTH@
|
||||||
|
LTLIBTHREAD = @LTLIBTHREAD@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
MKDIR_P = @MKDIR_P@
|
MKDIR_P = @MKDIR_P@
|
||||||
MSGFMT = @MSGFMT@
|
MSGFMT = @MSGFMT@
|
||||||
MSGFMT_015 = @MSGFMT_015@
|
MSGFMT_015 = @MSGFMT_015@
|
||||||
MSGMERGE = @MSGMERGE@
|
MSGMERGE = @MSGMERGE@
|
||||||
|
NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
|
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
|
||||||
|
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
|
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
|
||||||
|
NEXT_AS_FIRST_DIRECTIVE_FNMATCH_H = @NEXT_AS_FIRST_DIRECTIVE_FNMATCH_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
|
NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
|
NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
|
||||||
|
NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
|
NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
|
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
|
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
|
||||||
@ -785,14 +915,20 @@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
|
|||||||
NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
|
NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
|
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H = @NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H@
|
NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H = @NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H@
|
||||||
|
NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
|
NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
|
||||||
|
NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
|
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
|
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
|
||||||
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
|
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
|
||||||
|
NEXT_DIRENT_H = @NEXT_DIRENT_H@
|
||||||
NEXT_ERRNO_H = @NEXT_ERRNO_H@
|
NEXT_ERRNO_H = @NEXT_ERRNO_H@
|
||||||
|
NEXT_FCNTL_H = @NEXT_FCNTL_H@
|
||||||
NEXT_FLOAT_H = @NEXT_FLOAT_H@
|
NEXT_FLOAT_H = @NEXT_FLOAT_H@
|
||||||
|
NEXT_FNMATCH_H = @NEXT_FNMATCH_H@
|
||||||
NEXT_GETOPT_H = @NEXT_GETOPT_H@
|
NEXT_GETOPT_H = @NEXT_GETOPT_H@
|
||||||
NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
|
NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
|
||||||
|
NEXT_LIMITS_H = @NEXT_LIMITS_H@
|
||||||
NEXT_LOCALE_H = @NEXT_LOCALE_H@
|
NEXT_LOCALE_H = @NEXT_LOCALE_H@
|
||||||
NEXT_STDDEF_H = @NEXT_STDDEF_H@
|
NEXT_STDDEF_H = @NEXT_STDDEF_H@
|
||||||
NEXT_STDINT_H = @NEXT_STDINT_H@
|
NEXT_STDINT_H = @NEXT_STDINT_H@
|
||||||
@ -801,7 +937,9 @@ NEXT_STDLIB_H = @NEXT_STDLIB_H@
|
|||||||
NEXT_STRINGS_H = @NEXT_STRINGS_H@
|
NEXT_STRINGS_H = @NEXT_STRINGS_H@
|
||||||
NEXT_STRING_H = @NEXT_STRING_H@
|
NEXT_STRING_H = @NEXT_STRING_H@
|
||||||
NEXT_SYSEXITS_H = @NEXT_SYSEXITS_H@
|
NEXT_SYSEXITS_H = @NEXT_SYSEXITS_H@
|
||||||
|
NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@
|
||||||
NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
|
NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
|
||||||
|
NEXT_TIME_H = @NEXT_TIME_H@
|
||||||
NEXT_UNISTD_H = @NEXT_UNISTD_H@
|
NEXT_UNISTD_H = @NEXT_UNISTD_H@
|
||||||
NEXT_WCHAR_H = @NEXT_WCHAR_H@
|
NEXT_WCHAR_H = @NEXT_WCHAR_H@
|
||||||
NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
|
NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
|
||||||
@ -814,40 +952,63 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|||||||
PACKAGE_URL = @PACKAGE_URL@
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
POSUB = @POSUB@
|
POSUB = @POSUB@
|
||||||
PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
|
PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
|
||||||
PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
|
PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
|
||||||
|
PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
|
||||||
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
|
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
|
||||||
|
PYTHON = @PYTHON@
|
||||||
|
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
|
||||||
|
PYTHON_PLATFORM = @PYTHON_PLATFORM@
|
||||||
|
PYTHON_PREFIX = @PYTHON_PREFIX@
|
||||||
|
PYTHON_VERSION = @PYTHON_VERSION@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
REPLACE_BTOWC = @REPLACE_BTOWC@
|
REPLACE_BTOWC = @REPLACE_BTOWC@
|
||||||
REPLACE_CALLOC = @REPLACE_CALLOC@
|
REPLACE_CALLOC = @REPLACE_CALLOC@
|
||||||
REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
|
REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
|
||||||
REPLACE_CHOWN = @REPLACE_CHOWN@
|
REPLACE_CHOWN = @REPLACE_CHOWN@
|
||||||
REPLACE_CLOSE = @REPLACE_CLOSE@
|
REPLACE_CLOSE = @REPLACE_CLOSE@
|
||||||
|
REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
|
||||||
|
REPLACE_CTIME = @REPLACE_CTIME@
|
||||||
|
REPLACE_DIRFD = @REPLACE_DIRFD@
|
||||||
REPLACE_DPRINTF = @REPLACE_DPRINTF@
|
REPLACE_DPRINTF = @REPLACE_DPRINTF@
|
||||||
REPLACE_DUP = @REPLACE_DUP@
|
REPLACE_DUP = @REPLACE_DUP@
|
||||||
REPLACE_DUP2 = @REPLACE_DUP2@
|
REPLACE_DUP2 = @REPLACE_DUP2@
|
||||||
REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
|
REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
|
||||||
|
REPLACE_FACCESSAT = @REPLACE_FACCESSAT@
|
||||||
REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
|
REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
|
||||||
REPLACE_FCLOSE = @REPLACE_FCLOSE@
|
REPLACE_FCLOSE = @REPLACE_FCLOSE@
|
||||||
|
REPLACE_FCNTL = @REPLACE_FCNTL@
|
||||||
REPLACE_FDOPEN = @REPLACE_FDOPEN@
|
REPLACE_FDOPEN = @REPLACE_FDOPEN@
|
||||||
|
REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@
|
||||||
REPLACE_FFLUSH = @REPLACE_FFLUSH@
|
REPLACE_FFLUSH = @REPLACE_FFLUSH@
|
||||||
|
REPLACE_FNMATCH = @REPLACE_FNMATCH@
|
||||||
REPLACE_FOPEN = @REPLACE_FOPEN@
|
REPLACE_FOPEN = @REPLACE_FOPEN@
|
||||||
REPLACE_FPRINTF = @REPLACE_FPRINTF@
|
REPLACE_FPRINTF = @REPLACE_FPRINTF@
|
||||||
REPLACE_FPURGE = @REPLACE_FPURGE@
|
REPLACE_FPURGE = @REPLACE_FPURGE@
|
||||||
|
REPLACE_FREELOCALE = @REPLACE_FREELOCALE@
|
||||||
REPLACE_FREOPEN = @REPLACE_FREOPEN@
|
REPLACE_FREOPEN = @REPLACE_FREOPEN@
|
||||||
REPLACE_FSEEK = @REPLACE_FSEEK@
|
REPLACE_FSEEK = @REPLACE_FSEEK@
|
||||||
REPLACE_FSEEKO = @REPLACE_FSEEKO@
|
REPLACE_FSEEKO = @REPLACE_FSEEKO@
|
||||||
|
REPLACE_FSTAT = @REPLACE_FSTAT@
|
||||||
|
REPLACE_FSTATAT = @REPLACE_FSTATAT@
|
||||||
REPLACE_FTELL = @REPLACE_FTELL@
|
REPLACE_FTELL = @REPLACE_FTELL@
|
||||||
REPLACE_FTELLO = @REPLACE_FTELLO@
|
REPLACE_FTELLO = @REPLACE_FTELLO@
|
||||||
REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@
|
REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@
|
||||||
|
REPLACE_FUTIMENS = @REPLACE_FUTIMENS@
|
||||||
REPLACE_GETCWD = @REPLACE_GETCWD@
|
REPLACE_GETCWD = @REPLACE_GETCWD@
|
||||||
REPLACE_GETDELIM = @REPLACE_GETDELIM@
|
REPLACE_GETDELIM = @REPLACE_GETDELIM@
|
||||||
REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
|
REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
|
||||||
|
REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@
|
||||||
REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
|
REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
|
||||||
REPLACE_GETLINE = @REPLACE_GETLINE@
|
REPLACE_GETLINE = @REPLACE_GETLINE@
|
||||||
REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
|
REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
|
||||||
REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
|
REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
|
||||||
|
REPLACE_GETPASS = @REPLACE_GETPASS@
|
||||||
|
REPLACE_GMTIME = @REPLACE_GMTIME@
|
||||||
REPLACE_ISATTY = @REPLACE_ISATTY@
|
REPLACE_ISATTY = @REPLACE_ISATTY@
|
||||||
REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
|
REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
|
||||||
REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
|
REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
|
||||||
@ -856,7 +1017,10 @@ REPLACE_LCHOWN = @REPLACE_LCHOWN@
|
|||||||
REPLACE_LINK = @REPLACE_LINK@
|
REPLACE_LINK = @REPLACE_LINK@
|
||||||
REPLACE_LINKAT = @REPLACE_LINKAT@
|
REPLACE_LINKAT = @REPLACE_LINKAT@
|
||||||
REPLACE_LOCALECONV = @REPLACE_LOCALECONV@
|
REPLACE_LOCALECONV = @REPLACE_LOCALECONV@
|
||||||
|
REPLACE_LOCALTIME = @REPLACE_LOCALTIME@
|
||||||
|
REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
|
||||||
REPLACE_LSEEK = @REPLACE_LSEEK@
|
REPLACE_LSEEK = @REPLACE_LSEEK@
|
||||||
|
REPLACE_LSTAT = @REPLACE_LSTAT@
|
||||||
REPLACE_MALLOC = @REPLACE_MALLOC@
|
REPLACE_MALLOC = @REPLACE_MALLOC@
|
||||||
REPLACE_MBRLEN = @REPLACE_MBRLEN@
|
REPLACE_MBRLEN = @REPLACE_MBRLEN@
|
||||||
REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
|
REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
|
||||||
@ -867,10 +1031,19 @@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
|
|||||||
REPLACE_MBTOWC = @REPLACE_MBTOWC@
|
REPLACE_MBTOWC = @REPLACE_MBTOWC@
|
||||||
REPLACE_MEMCHR = @REPLACE_MEMCHR@
|
REPLACE_MEMCHR = @REPLACE_MEMCHR@
|
||||||
REPLACE_MEMMEM = @REPLACE_MEMMEM@
|
REPLACE_MEMMEM = @REPLACE_MEMMEM@
|
||||||
|
REPLACE_MKDIR = @REPLACE_MKDIR@
|
||||||
|
REPLACE_MKFIFO = @REPLACE_MKFIFO@
|
||||||
|
REPLACE_MKNOD = @REPLACE_MKNOD@
|
||||||
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
|
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
|
||||||
|
REPLACE_MKTIME = @REPLACE_MKTIME@
|
||||||
|
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
|
||||||
|
REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@
|
||||||
REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
|
REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
|
||||||
REPLACE_NULL = @REPLACE_NULL@
|
REPLACE_NULL = @REPLACE_NULL@
|
||||||
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
|
REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
|
||||||
|
REPLACE_OPEN = @REPLACE_OPEN@
|
||||||
|
REPLACE_OPENAT = @REPLACE_OPENAT@
|
||||||
|
REPLACE_OPENDIR = @REPLACE_OPENDIR@
|
||||||
REPLACE_PERROR = @REPLACE_PERROR@
|
REPLACE_PERROR = @REPLACE_PERROR@
|
||||||
REPLACE_POPEN = @REPLACE_POPEN@
|
REPLACE_POPEN = @REPLACE_POPEN@
|
||||||
REPLACE_PREAD = @REPLACE_PREAD@
|
REPLACE_PREAD = @REPLACE_PREAD@
|
||||||
@ -879,9 +1052,11 @@ REPLACE_PTSNAME = @REPLACE_PTSNAME@
|
|||||||
REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
|
REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
|
||||||
REPLACE_PUTENV = @REPLACE_PUTENV@
|
REPLACE_PUTENV = @REPLACE_PUTENV@
|
||||||
REPLACE_PWRITE = @REPLACE_PWRITE@
|
REPLACE_PWRITE = @REPLACE_PWRITE@
|
||||||
|
REPLACE_QSORT_R = @REPLACE_QSORT_R@
|
||||||
REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
|
REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
|
||||||
REPLACE_READ = @REPLACE_READ@
|
REPLACE_READ = @REPLACE_READ@
|
||||||
REPLACE_READLINK = @REPLACE_READLINK@
|
REPLACE_READLINK = @REPLACE_READLINK@
|
||||||
|
REPLACE_READLINKAT = @REPLACE_READLINKAT@
|
||||||
REPLACE_REALLOC = @REPLACE_REALLOC@
|
REPLACE_REALLOC = @REPLACE_REALLOC@
|
||||||
REPLACE_REALPATH = @REPLACE_REALPATH@
|
REPLACE_REALPATH = @REPLACE_REALPATH@
|
||||||
REPLACE_REMOVE = @REPLACE_REMOVE@
|
REPLACE_REMOVE = @REPLACE_REMOVE@
|
||||||
@ -893,6 +1068,7 @@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
|
|||||||
REPLACE_SLEEP = @REPLACE_SLEEP@
|
REPLACE_SLEEP = @REPLACE_SLEEP@
|
||||||
REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
|
REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
|
||||||
REPLACE_SPRINTF = @REPLACE_SPRINTF@
|
REPLACE_SPRINTF = @REPLACE_SPRINTF@
|
||||||
|
REPLACE_STAT = @REPLACE_STAT@
|
||||||
REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
|
REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
|
||||||
REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
|
REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
|
||||||
REPLACE_STPNCPY = @REPLACE_STPNCPY@
|
REPLACE_STPNCPY = @REPLACE_STPNCPY@
|
||||||
@ -901,6 +1077,7 @@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
|
|||||||
REPLACE_STRDUP = @REPLACE_STRDUP@
|
REPLACE_STRDUP = @REPLACE_STRDUP@
|
||||||
REPLACE_STRERROR = @REPLACE_STRERROR@
|
REPLACE_STRERROR = @REPLACE_STRERROR@
|
||||||
REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
|
REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
|
||||||
|
REPLACE_STRFTIME = @REPLACE_STRFTIME@
|
||||||
REPLACE_STRNCAT = @REPLACE_STRNCAT@
|
REPLACE_STRNCAT = @REPLACE_STRNCAT@
|
||||||
REPLACE_STRNDUP = @REPLACE_STRNDUP@
|
REPLACE_STRNDUP = @REPLACE_STRNDUP@
|
||||||
REPLACE_STRNLEN = @REPLACE_STRNLEN@
|
REPLACE_STRNLEN = @REPLACE_STRNLEN@
|
||||||
@ -910,13 +1087,18 @@ REPLACE_STRTOD = @REPLACE_STRTOD@
|
|||||||
REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
|
REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
|
||||||
REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@
|
REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@
|
||||||
REPLACE_SYMLINK = @REPLACE_SYMLINK@
|
REPLACE_SYMLINK = @REPLACE_SYMLINK@
|
||||||
|
REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
|
||||||
|
REPLACE_TIMEGM = @REPLACE_TIMEGM@
|
||||||
REPLACE_TMPFILE = @REPLACE_TMPFILE@
|
REPLACE_TMPFILE = @REPLACE_TMPFILE@
|
||||||
REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
|
REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
|
||||||
|
REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
|
||||||
REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
|
REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
|
||||||
|
REPLACE_TZSET = @REPLACE_TZSET@
|
||||||
REPLACE_UNLINK = @REPLACE_UNLINK@
|
REPLACE_UNLINK = @REPLACE_UNLINK@
|
||||||
REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
|
REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
|
||||||
REPLACE_UNSETENV = @REPLACE_UNSETENV@
|
REPLACE_UNSETENV = @REPLACE_UNSETENV@
|
||||||
REPLACE_USLEEP = @REPLACE_USLEEP@
|
REPLACE_USLEEP = @REPLACE_USLEEP@
|
||||||
|
REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@
|
||||||
REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
|
REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
|
||||||
REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
|
REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
|
||||||
REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
|
REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
|
||||||
@ -924,6 +1106,7 @@ REPLACE_VPRINTF = @REPLACE_VPRINTF@
|
|||||||
REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
|
REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
|
||||||
REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
|
REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
|
||||||
REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
|
REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
|
||||||
|
REPLACE_WCSFTIME = @REPLACE_WCSFTIME@
|
||||||
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
|
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
|
||||||
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
|
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
|
||||||
REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
|
REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
|
||||||
@ -931,6 +1114,7 @@ REPLACE_WCTOB = @REPLACE_WCTOB@
|
|||||||
REPLACE_WCTOMB = @REPLACE_WCTOMB@
|
REPLACE_WCTOMB = @REPLACE_WCTOMB@
|
||||||
REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
|
REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
|
||||||
REPLACE_WRITE = @REPLACE_WRITE@
|
REPLACE_WRITE = @REPLACE_WRITE@
|
||||||
|
SED = @SED@
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||||
@ -941,6 +1125,7 @@ STDDEF_H = @STDDEF_H@
|
|||||||
STDINT_H = @STDINT_H@
|
STDINT_H = @STDINT_H@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
SYSEXITS_H = @SYSEXITS_H@
|
SYSEXITS_H = @SYSEXITS_H@
|
||||||
|
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
|
||||||
TARGET_APPLE_LINKER = @TARGET_APPLE_LINKER@
|
TARGET_APPLE_LINKER = @TARGET_APPLE_LINKER@
|
||||||
TARGET_CC = @TARGET_CC@
|
TARGET_CC = @TARGET_CC@
|
||||||
TARGET_CCAS = @TARGET_CCAS@
|
TARGET_CCAS = @TARGET_CCAS@
|
||||||
@ -965,13 +1150,18 @@ TARGET_OBJCONV = @TARGET_OBJCONV@
|
|||||||
TARGET_OBJCOPY = @TARGET_OBJCOPY@
|
TARGET_OBJCOPY = @TARGET_OBJCOPY@
|
||||||
TARGET_RANLIB = @TARGET_RANLIB@
|
TARGET_RANLIB = @TARGET_RANLIB@
|
||||||
TARGET_STRIP = @TARGET_STRIP@
|
TARGET_STRIP = @TARGET_STRIP@
|
||||||
|
TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
|
||||||
UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
|
UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
|
||||||
|
UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@
|
||||||
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
|
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
|
||||||
UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
|
UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
|
||||||
USE_NLS = @USE_NLS@
|
USE_NLS = @USE_NLS@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
|
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
|
||||||
WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
|
WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
|
||||||
|
WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@
|
||||||
|
WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@
|
||||||
|
WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@
|
||||||
WINT_T_SUFFIX = @WINT_T_SUFFIX@
|
WINT_T_SUFFIX = @WINT_T_SUFFIX@
|
||||||
XGETTEXT = @XGETTEXT@
|
XGETTEXT = @XGETTEXT@
|
||||||
XGETTEXT_015 = @XGETTEXT_015@
|
XGETTEXT_015 = @XGETTEXT_015@
|
||||||
@ -984,7 +1174,6 @@ abs_top_builddir = @abs_top_builddir@
|
|||||||
abs_top_srcdir = @abs_top_srcdir@
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
ac_ct_CC = @ac_ct_CC@
|
ac_ct_CC = @ac_ct_CC@
|
||||||
ac_ct_CXX = @ac_ct_CXX@
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
ac_ct_FREETYPE = @ac_ct_FREETYPE@
|
|
||||||
ac_ct_TARGET_CC = @ac_ct_TARGET_CC@
|
ac_ct_TARGET_CC = @ac_ct_TARGET_CC@
|
||||||
am__include = @am__include@
|
am__include = @am__include@
|
||||||
am__leading_dot = @am__leading_dot@
|
am__leading_dot = @am__leading_dot@
|
||||||
@ -996,8 +1185,6 @@ bootdirname = @bootdirname@
|
|||||||
build = @build@
|
build = @build@
|
||||||
build_alias = @build_alias@
|
build_alias = @build_alias@
|
||||||
build_cpu = @build_cpu@
|
build_cpu = @build_cpu@
|
||||||
build_freetype_cflags = @build_freetype_cflags@
|
|
||||||
build_freetype_libs = @build_freetype_libs@
|
|
||||||
build_os = @build_os@
|
build_os = @build_os@
|
||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
builddir = @builddir@
|
builddir = @builddir@
|
||||||
@ -1011,8 +1198,6 @@ enable_grub_emu_sdl = @enable_grub_emu_sdl@
|
|||||||
enable_grub_mkfont = @enable_grub_mkfont@
|
enable_grub_mkfont = @enable_grub_mkfont@
|
||||||
enable_grub_mount = @enable_grub_mount@
|
enable_grub_mount = @enable_grub_mount@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
freetype_cflags = @freetype_cflags@
|
|
||||||
freetype_libs = @freetype_libs@
|
|
||||||
gl_LIBOBJS = @gl_LIBOBJS@
|
gl_LIBOBJS = @gl_LIBOBJS@
|
||||||
gl_LTLIBOBJS = @gl_LTLIBOBJS@
|
gl_LTLIBOBJS = @gl_LTLIBOBJS@
|
||||||
gltests_LIBOBJS = @gltests_LIBOBJS@
|
gltests_LIBOBJS = @gltests_LIBOBJS@
|
||||||
@ -1049,17 +1234,20 @@ infodir = @infodir@
|
|||||||
install_sh = @install_sh@
|
install_sh = @install_sh@
|
||||||
libdir = @libdir@
|
libdir = @libdir@
|
||||||
libexecdir = @libexecdir@
|
libexecdir = @libexecdir@
|
||||||
lispdir = @lispdir@
|
|
||||||
localedir = @localedir@
|
localedir = @localedir@
|
||||||
localstatedir = @localstatedir@
|
localstatedir = @localstatedir@
|
||||||
mandir = @mandir@
|
mandir = @mandir@
|
||||||
mkdir_p = @mkdir_p@
|
mkdir_p = @mkdir_p@
|
||||||
oldincludedir = @oldincludedir@
|
oldincludedir = @oldincludedir@
|
||||||
pdfdir = @pdfdir@
|
pdfdir = @pdfdir@
|
||||||
|
pkgpyexecdir = @pkgpyexecdir@
|
||||||
|
pkgpythondir = @pkgpythondir@
|
||||||
platform = @platform@
|
platform = @platform@
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
program_transform_name = @program_transform_name@
|
program_transform_name = @program_transform_name@
|
||||||
psdir = @psdir@
|
psdir = @psdir@
|
||||||
|
pyexecdir = @pyexecdir@
|
||||||
|
pythondir = @pythondir@
|
||||||
runstatedir = @runstatedir@
|
runstatedir = @runstatedir@
|
||||||
sbindir = @sbindir@
|
sbindir = @sbindir@
|
||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
This is grub-dev.info, produced by makeinfo version 6.3 from
|
This is grub-dev.info, produced by makeinfo version 6.5 from
|
||||||
grub-dev.texi.
|
grub-dev.texi.
|
||||||
|
|
||||||
This developer manual is for GNU GRUB (version 2.02, 2 September 2015).
|
This developer manual is for GNU GRUB (version 2.04~rc1, 8 April 2019).
|
||||||
|
|
||||||
Copyright (C) 1999,2000,2001,2002,2004,2005,2006,2008,2009,2010,2011
|
Copyright (C) 1999,2000,2001,2002,2004,2005,2006,2008,2009,2010,2011
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
@ -25,10 +25,10 @@ This is the developer documentation of GNU GRUB, the GRand Unified
|
|||||||
Bootloader, a flexible and powerful boot loader program for a wide range
|
Bootloader, a flexible and powerful boot loader program for a wide range
|
||||||
of architectures.
|
of architectures.
|
||||||
|
|
||||||
This edition documents version 2.02.
|
This edition documents version 2.04~rc1.
|
||||||
|
|
||||||
This developer manual is for GNU GRUB (version 2.02, 2 September
|
This developer manual is for GNU GRUB (version 2.04~rc1, 8 April
|
||||||
2015).
|
2019).
|
||||||
|
|
||||||
Copyright (C) 1999,2000,2001,2002,2004,2005,2006,2008,2009,2010,2011
|
Copyright (C) 1999,2000,2001,2002,2004,2005,2006,2008,2009,2010,2011
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
@ -44,6 +44,7 @@ Free Software Foundation, Inc.
|
|||||||
* Coding style::
|
* Coding style::
|
||||||
* Finding your way around::
|
* Finding your way around::
|
||||||
* Contributing Changes::
|
* Contributing Changes::
|
||||||
|
* Updating External Code::
|
||||||
* Porting::
|
* Porting::
|
||||||
* Error Handling::
|
* Error Handling::
|
||||||
* Stack and heap size::
|
* Stack and heap size::
|
||||||
@ -51,6 +52,7 @@ Free Software Foundation, Inc.
|
|||||||
* Video Subsystem::
|
* Video Subsystem::
|
||||||
* PFF2 Font File Format::
|
* PFF2 Font File Format::
|
||||||
* Graphical Menu Software Design::
|
* Graphical Menu Software Design::
|
||||||
|
* Verifiers framework::
|
||||||
* Copying This Manual:: Copying This Manual
|
* Copying This Manual:: Copying This Manual
|
||||||
* Index::
|
* Index::
|
||||||
|
|
||||||
@ -196,21 +198,16 @@ File: grub-dev.info, Node: Comments, Next: Multi-Line Comments, Prev: Macros,
|
|||||||
2.6 Comments
|
2.6 Comments
|
||||||
============
|
============
|
||||||
|
|
||||||
All comments shall be C-style comments, of the form '/* ... */'.
|
All comments shall be C-style comments, of the form '/* ... */'. A
|
||||||
|
comment can be placed immediately preceding the entity it describes or
|
||||||
Comments shall be placed only on a line by themselves. They shall
|
it can be placed together with code, variable declarations, or other
|
||||||
not be placed together with code, variable declarations, or other
|
non-comment entities. However, it is recommended to not mix various
|
||||||
non-comment entities. A comment should be placed immediately preceding
|
forms especially in types/structs descriptions.
|
||||||
the entity it describes.
|
|
||||||
|
|
||||||
Acceptable:
|
Acceptable:
|
||||||
/* The page # that is the front buffer. */
|
/* The page # that is the front buffer. */
|
||||||
int displayed_page;
|
int displayed_page;
|
||||||
/* The page # that is the back buffer. */
|
|
||||||
int render_page;
|
|
||||||
|
|
||||||
Unacceptable:
|
|
||||||
int displayed_page; /* The page # that is the front buffer. */
|
|
||||||
int render_page; /* The page # that is the back buffer. */
|
int render_page; /* The page # that is the back buffer. */
|
||||||
|
|
||||||
|
|
||||||
@ -220,24 +217,34 @@ File: grub-dev.info, Node: Multi-Line Comments, Prev: Comments, Up: Coding st
|
|||||||
=======================
|
=======================
|
||||||
|
|
||||||
Comments spanning multiple lines shall be formatted with all lines after
|
Comments spanning multiple lines shall be formatted with all lines after
|
||||||
the first aligned with the first line.
|
the first aligned with the first line. Asterisk characters should be
|
||||||
|
repeated at the start of each subsequent line.
|
||||||
Asterisk characters should not be repeated a the start of each
|
|
||||||
subsequent line.
|
|
||||||
|
|
||||||
Acceptable:
|
Acceptable:
|
||||||
|
/*
|
||||||
|
* This is a comment
|
||||||
|
* which spans multiple lines.
|
||||||
|
* It is long.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Unacceptable:
|
||||||
/* This is a comment
|
/* This is a comment
|
||||||
which spans multiple lines.
|
which spans multiple lines.
|
||||||
It is long. */
|
It is long. */
|
||||||
|
|
||||||
Unacceptable:
|
|
||||||
/*
|
/*
|
||||||
* This is a comment
|
* This is a comment
|
||||||
* which spans multiple lines.
|
* which spans multiple lines.
|
||||||
* It is long. */
|
* It is long. */
|
||||||
|
|
||||||
The opening '/*' and closing '*/' should be placed together on a line
|
/* This is a comment
|
||||||
with text.
|
* which spans multiple lines.
|
||||||
|
* It is long.
|
||||||
|
*/
|
||||||
|
|
||||||
|
In particular first unacceptable form makes comment difficult to
|
||||||
|
distinguish from the code itself. Especially if it contains the code
|
||||||
|
snippets and/or is long. So, its usage is disallowed.
|
||||||
|
|
||||||
|
|
||||||
File: grub-dev.info, Node: Finding your way around, Next: Contributing Changes, Prev: Coding style, Up: Top
|
File: grub-dev.info, Node: Finding your way around, Next: Contributing Changes, Prev: Coding style, Up: Top
|
||||||
@ -318,7 +325,7 @@ the following exceptions:
|
|||||||
they matter to you.
|
they matter to you.
|
||||||
|
|
||||||
|
|
||||||
File: grub-dev.info, Node: Contributing Changes, Next: Porting, Prev: Finding your way around, Up: Top
|
File: grub-dev.info, Node: Contributing Changes, Next: Updating External Code, Prev: Finding your way around, Up: Top
|
||||||
|
|
||||||
4 Contributing changes
|
4 Contributing changes
|
||||||
**********************
|
**********************
|
||||||
@ -498,9 +505,45 @@ communicate first (e.g. sending a patch, asking a question, commenting
|
|||||||
on another message...).
|
on another message...).
|
||||||
|
|
||||||
|
|
||||||
File: grub-dev.info, Node: Porting, Next: Error Handling, Prev: Contributing Changes, Up: Top
|
File: grub-dev.info, Node: Updating External Code, Next: Porting, Prev: Contributing Changes, Up: Top
|
||||||
|
|
||||||
5 Porting
|
5 Updating external code
|
||||||
|
************************
|
||||||
|
|
||||||
|
GRUB includes some code from other projects, and it is sometimes
|
||||||
|
necessary to update it.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Gnulib::
|
||||||
|
|
||||||
|
|
||||||
|
File: grub-dev.info, Node: Gnulib, Up: Updating External Code
|
||||||
|
|
||||||
|
5.1 Gnulib
|
||||||
|
==========
|
||||||
|
|
||||||
|
Gnulib is a source code library that provides basic functionality to
|
||||||
|
programs and libraries. Many software packages make use of Gnulib to
|
||||||
|
avoid reinventing the portability wheel.
|
||||||
|
|
||||||
|
GRUB imports Gnulib using its 'bootstrap' utility, identifying a
|
||||||
|
particular Git commit in 'bootstrap.conf'. To upgrade to a new Gnulib
|
||||||
|
commit, set 'GNULIB_REVISION' in 'bootstrap.conf' to the new commit ID,
|
||||||
|
then run './bootstrap' and whatever else you need to make sure it works.
|
||||||
|
Check for changes to Gnulib's 'NEWS' file between the old and new
|
||||||
|
commits; in some cases it will be necessary to adjust GRUB to match.
|
||||||
|
You may also need to update the patches in
|
||||||
|
'grub-core/lib/gnulib-patches/'.
|
||||||
|
|
||||||
|
To add a new Gnulib module or remove one that is no longer needed,
|
||||||
|
change 'gnulib_modules' in 'bootstrap.conf'. Again, run './bootstrap'
|
||||||
|
and whatever else you need to make sure it works.
|
||||||
|
|
||||||
|
|
||||||
|
File: grub-dev.info, Node: Porting, Next: Error Handling, Prev: Updating External Code, Up: Top
|
||||||
|
|
||||||
|
6 Porting
|
||||||
*********
|
*********
|
||||||
|
|
||||||
GRUB2 is designed to be easily portable accross platforms. But because
|
GRUB2 is designed to be easily portable accross platforms. But because
|
||||||
@ -692,7 +735,7 @@ the support is already present and you'll need to make it follow the
|
|||||||
existant code paths for your platform adding adjustments if necessary.
|
existant code paths for your platform adding adjustments if necessary.
|
||||||
When done compile:
|
When done compile:
|
||||||
|
|
||||||
./autogen.sh
|
./bootstrap
|
||||||
./configure --target=$cpu --with-platform=$platform TARGET_CC=.. OBJCOPY=... STRIP=...
|
./configure --target=$cpu --with-platform=$platform TARGET_CC=.. OBJCOPY=... STRIP=...
|
||||||
make > /dev/null
|
make > /dev/null
|
||||||
|
|
||||||
@ -795,7 +838,7 @@ documentation.
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Error Handling, Next: Stack and heap size, Prev: Porting, Up: Top
|
File: grub-dev.info, Node: Error Handling, Next: Stack and heap size, Prev: Porting, Up: Top
|
||||||
|
|
||||||
6 Error Handling
|
7 Error Handling
|
||||||
****************
|
****************
|
||||||
|
|
||||||
Error handling in GRUB 2 is based on exception handling model. As C
|
Error handling in GRUB 2 is based on exception handling model. As C
|
||||||
@ -927,7 +970,7 @@ to be drawn.
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Stack and heap size, Next: BIOS port memory map, Prev: Error Handling, Up: Top
|
File: grub-dev.info, Node: Stack and heap size, Next: BIOS port memory map, Prev: Error Handling, Up: Top
|
||||||
|
|
||||||
7 Stack and heap size
|
8 Stack and heap size
|
||||||
*********************
|
*********************
|
||||||
|
|
||||||
On emu stack and heap are just normal host OS stack and heap. Stack is
|
On emu stack and heap are just normal host OS stack and heap. Stack is
|
||||||
@ -997,7 +1040,7 @@ i386-xen 4MiB < 4GiB
|
|||||||
|
|
||||||
File: grub-dev.info, Node: BIOS port memory map, Next: Video Subsystem, Prev: Stack and heap size, Up: Top
|
File: grub-dev.info, Node: BIOS port memory map, Next: Video Subsystem, Prev: Stack and heap size, Up: Top
|
||||||
|
|
||||||
8 BIOS port memory map
|
9 BIOS port memory map
|
||||||
**********************
|
**********************
|
||||||
|
|
||||||
Start End Usage
|
Start End Usage
|
||||||
@ -1018,8 +1061,8 @@ Start End Usage
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Video Subsystem, Next: PFF2 Font File Format, Prev: BIOS port memory map, Up: Top
|
File: grub-dev.info, Node: Video Subsystem, Next: PFF2 Font File Format, Prev: BIOS port memory map, Up: Top
|
||||||
|
|
||||||
9 Video Subsystem
|
10 Video Subsystem
|
||||||
*****************
|
******************
|
||||||
|
|
||||||
This document contains specification for Video Subsystem for GRUB2.
|
This document contains specification for Video Subsystem for GRUB2.
|
||||||
Currently only the usage interface is described in this document.
|
Currently only the usage interface is described in this document.
|
||||||
@ -1035,11 +1078,11 @@ driver manager works are not included here.
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: Video Subsystem
|
File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: Video Subsystem
|
||||||
|
|
||||||
9.1 Video API
|
10.1 Video API
|
||||||
=============
|
==============
|
||||||
|
|
||||||
9.1.1 grub_video_setup
|
10.1.1 grub_video_setup
|
||||||
----------------------
|
-----------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
grub_err_t
|
grub_err_t
|
||||||
@ -1068,8 +1111,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
set default VGA palette to screen if the video card allows the
|
set default VGA palette to screen if the video card allows the
|
||||||
operation.
|
operation.
|
||||||
|
|
||||||
9.1.2 grub_video_restore
|
10.1.2 grub_video_restore
|
||||||
------------------------
|
-------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1081,8 +1124,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
old state of video device. This can be used to switch back to text
|
old state of video device. This can be used to switch back to text
|
||||||
mode.
|
mode.
|
||||||
|
|
||||||
9.1.3 grub_video_get_info
|
10.1.3 grub_video_get_info
|
||||||
-------------------------
|
--------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1135,8 +1178,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
error 'GRUB_ERR_BAD_DEVICE' is returned, otherwise 'mode_info' is
|
error 'GRUB_ERR_BAD_DEVICE' is returned, otherwise 'mode_info' is
|
||||||
filled with valid information and 'GRUB_ERR_NONE' is returned.
|
filled with valid information and 'GRUB_ERR_NONE' is returned.
|
||||||
|
|
||||||
9.1.4 grub_video_get_blit_format
|
10.1.4 grub_video_get_blit_format
|
||||||
--------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1162,8 +1205,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
is no definition for the type. For generic formats, use
|
is no definition for the type. For generic formats, use
|
||||||
'grub_video_get_info' to query video color coding settings.
|
'grub_video_get_info' to query video color coding settings.
|
||||||
|
|
||||||
9.1.5 grub_video_set_palette
|
10.1.5 grub_video_set_palette
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1187,8 +1230,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
both hardware color index and 'palette_data' index will be
|
both hardware color index and 'palette_data' index will be
|
||||||
incremented until 'count' number of colors have been set.
|
incremented until 'count' number of colors have been set.
|
||||||
|
|
||||||
9.1.6 grub_video_get_palette
|
10.1.6 grub_video_get_palette
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1212,8 +1255,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
color index and 'palette_data' index will be incremented until
|
color index and 'palette_data' index will be incremented until
|
||||||
'count' number of colors have been read.
|
'count' number of colors have been read.
|
||||||
|
|
||||||
9.1.7 grub_video_set_area_status
|
10.1.7 grub_video_set_area_status
|
||||||
--------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
grub_err_t
|
grub_err_t
|
||||||
@ -1235,8 +1278,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
everything inside the region leaving everything else intact.
|
everything inside the region leaving everything else intact.
|
||||||
Should be used for redrawing of active elements.
|
Should be used for redrawing of active elements.
|
||||||
|
|
||||||
9.1.8 grub_video_get_area_status
|
10.1.8 grub_video_get_area_status
|
||||||
--------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
grub_err_r
|
grub_err_r
|
||||||
@ -1244,8 +1287,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
|
|
||||||
* Description: Used to query the area status.
|
* Description: Used to query the area status.
|
||||||
|
|
||||||
9.1.9 grub_video_set_viewport
|
10.1.9 grub_video_set_viewport
|
||||||
-----------------------------
|
------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1263,8 +1306,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
'grub_video_get_info' to query actual screen dimensions and provide
|
'grub_video_get_info' to query actual screen dimensions and provide
|
||||||
that information to this function.
|
that information to this function.
|
||||||
|
|
||||||
9.1.10 grub_video_get_viewport
|
10.1.10 grub_video_get_viewport
|
||||||
------------------------------
|
-------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1275,8 +1318,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
Used to query current viewport dimensions. Software developer can
|
Used to query current viewport dimensions. Software developer can
|
||||||
use this to choose best way to render contents of the viewport.
|
use this to choose best way to render contents of the viewport.
|
||||||
|
|
||||||
9.1.11 grub_video_set_region
|
10.1.11 grub_video_set_region
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1292,8 +1335,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
possible region, width and height will be clamped to fit screen.
|
possible region, width and height will be clamped to fit screen.
|
||||||
Should be used for redrawing of active elements.
|
Should be used for redrawing of active elements.
|
||||||
|
|
||||||
9.1.12 grub_video_get_region
|
10.1.12 grub_video_get_region
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1303,8 +1346,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
|
|
||||||
Used to query current region dimensions.
|
Used to query current region dimensions.
|
||||||
|
|
||||||
9.1.13 grub_video_map_color
|
10.1.13 grub_video_map_color
|
||||||
---------------------------
|
----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1318,8 +1361,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
'GRUB_COLOR_CONSOLE_BACKGROUND', 'GRUB_COLOR_CONSOLE_TEXT'. The
|
'GRUB_COLOR_CONSOLE_BACKGROUND', 'GRUB_COLOR_CONSOLE_TEXT'. The
|
||||||
actual color defines are not specified at this point.
|
actual color defines are not specified at this point.
|
||||||
|
|
||||||
9.1.14 grub_video_map_rgb
|
10.1.14 grub_video_map_rgb
|
||||||
-------------------------
|
--------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1333,8 +1376,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
palette will be searched for specified color and then index is
|
palette will be searched for specified color and then index is
|
||||||
returned.
|
returned.
|
||||||
|
|
||||||
9.1.15 grub_video_map_rgba
|
10.1.15 grub_video_map_rgba
|
||||||
--------------------------
|
---------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1348,8 +1391,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
palette will be searched for best matching color and its index is
|
palette will be searched for best matching color and its index is
|
||||||
returned.
|
returned.
|
||||||
|
|
||||||
9.1.16 grub_video_unmap_color
|
10.1.16 grub_video_unmap_color
|
||||||
-----------------------------
|
------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1363,8 +1406,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
information is not available in rendering target, it is assumed to
|
information is not available in rendering target, it is assumed to
|
||||||
be opaque (having value 255).
|
be opaque (having value 255).
|
||||||
|
|
||||||
9.1.17 grub_video_fill_rect
|
10.1.17 grub_video_fill_rect
|
||||||
---------------------------
|
----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1382,8 +1425,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
'grub_video_map_rgb' or 'grub_video_map_rgba' to map requested
|
'grub_video_map_rgb' or 'grub_video_map_rgba' to map requested
|
||||||
color to 'color' parameter.
|
color to 'color' parameter.
|
||||||
|
|
||||||
9.1.18 grub_video_blit_glyph
|
10.1.18 grub_video_blit_glyph
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1399,8 +1442,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
out. Software developer should use either 'grub_video_map_rgb' or
|
out. Software developer should use either 'grub_video_map_rgb' or
|
||||||
'grub_video_map_rgba' to map requested color to 'color' parameter.
|
'grub_video_map_rgba' to map requested color to 'color' parameter.
|
||||||
|
|
||||||
9.1.19 grub_video_blit_bitmap
|
10.1.19 grub_video_blit_bitmap
|
||||||
-----------------------------
|
------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1432,8 +1475,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
Software developer should use 'grub_video_bitmap_create' or
|
Software developer should use 'grub_video_bitmap_create' or
|
||||||
'grub_video_bitmap_load' to create or load bitmap data.
|
'grub_video_bitmap_load' to create or load bitmap data.
|
||||||
|
|
||||||
9.1.20 grub_video_blit_render_target
|
10.1.20 grub_video_blit_render_target
|
||||||
------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1463,8 +1506,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
source pixel replace data in screen or blend with pixel alpha
|
source pixel replace data in screen or blend with pixel alpha
|
||||||
value.
|
value.
|
||||||
|
|
||||||
9.1.21 grub_video_scroll
|
10.1.21 grub_video_scroll
|
||||||
------------------------
|
-------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1476,8 +1519,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
filled with specified color. This function is used when screen is
|
filled with specified color. This function is used when screen is
|
||||||
scroller up in video terminal.
|
scroller up in video terminal.
|
||||||
|
|
||||||
9.1.22 grub_video_swap_buffers
|
10.1.22 grub_video_swap_buffers
|
||||||
------------------------------
|
-------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1489,8 +1532,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
backbuffer, in order to show values drawn to back buffer. Video
|
backbuffer, in order to show values drawn to back buffer. Video
|
||||||
driver is free to choose how this operation is techincally done.
|
driver is free to choose how this operation is techincally done.
|
||||||
|
|
||||||
9.1.23 grub_video_create_render_target
|
10.1.23 grub_video_create_render_target
|
||||||
--------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1508,8 +1551,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
modes, 'GRUB_VIDEO_MODE_TYPE_RGB' for direct RGB color modes and
|
modes, 'GRUB_VIDEO_MODE_TYPE_RGB' for direct RGB color modes and
|
||||||
'GRUB_VIDEO_MODE_TYPE_ALPHA' for alpha component.
|
'GRUB_VIDEO_MODE_TYPE_ALPHA' for alpha component.
|
||||||
|
|
||||||
9.1.24 grub_video_delete_render_target
|
10.1.24 grub_video_delete_render_target
|
||||||
--------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1521,8 +1564,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
contains 'NULL' pointer, nothing will be done. If render target is
|
contains 'NULL' pointer, nothing will be done. If render target is
|
||||||
correctly destroyed, GRUB_ERR_NONE is returned.
|
correctly destroyed, GRUB_ERR_NONE is returned.
|
||||||
|
|
||||||
9.1.25 grub_video_set_active_render_target
|
10.1.25 grub_video_set_active_render_target
|
||||||
------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1541,8 +1584,8 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
correclty switched GRUB_ERR_NONE is returned. In no any event
|
correclty switched GRUB_ERR_NONE is returned. In no any event
|
||||||
shall there be non drawable active render target.
|
shall there be non drawable active render target.
|
||||||
|
|
||||||
9.1.26 grub_video_get_active_render_target
|
10.1.26 grub_video_get_active_render_target
|
||||||
------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
|
|
||||||
@ -1557,11 +1600,11 @@ File: grub-dev.info, Node: Video API, Next: Example usage of Video API, Up: V
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Example usage of Video API, Next: Bitmap API, Prev: Video API, Up: Video Subsystem
|
File: grub-dev.info, Node: Example usage of Video API, Next: Bitmap API, Prev: Video API, Up: Video Subsystem
|
||||||
|
|
||||||
9.2 Example usage of Video API
|
10.2 Example usage of Video API
|
||||||
==============================
|
===============================
|
||||||
|
|
||||||
9.2.1 Example of screen setup
|
10.2.1 Example of screen setup
|
||||||
-----------------------------
|
------------------------------
|
||||||
|
|
||||||
grub_err_t rc;
|
grub_err_t rc;
|
||||||
/* Try to initialize video mode 1024 x 768 with direct RGB. */
|
/* Try to initialize video mode 1024 x 768 with direct RGB. */
|
||||||
@ -1576,8 +1619,8 @@ File: grub-dev.info, Node: Example usage of Video API, Next: Bitmap API, Prev
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
9.2.2 Example of setting up console viewport
|
10.2.2 Example of setting up console viewport
|
||||||
--------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
grub_uint32_t x, y, width, height;
|
grub_uint32_t x, y, width, height;
|
||||||
grub_video_color_t color;
|
grub_video_color_t color;
|
||||||
@ -1601,11 +1644,11 @@ File: grub-dev.info, Node: Example usage of Video API, Next: Bitmap API, Prev
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up: Video Subsystem
|
File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up: Video Subsystem
|
||||||
|
|
||||||
9.3 Bitmap API
|
10.3 Bitmap API
|
||||||
==============
|
===============
|
||||||
|
|
||||||
9.3.1 grub_video_bitmap_create
|
10.3.1 grub_video_bitmap_create
|
||||||
------------------------------
|
-------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
grub_err_t grub_video_bitmap_create (struct grub_video_bitmap **bitmap, unsigned int width, unsigned int height, enum grub_video_blit_format blit_format)
|
grub_err_t grub_video_bitmap_create (struct grub_video_bitmap **bitmap, unsigned int width, unsigned int height, enum grub_video_blit_format blit_format)
|
||||||
@ -1616,8 +1659,8 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
Allocated bitmap data can then be modified freely and finally
|
Allocated bitmap data can then be modified freely and finally
|
||||||
blitted with 'grub_video_blit_bitmap' to rendering target.
|
blitted with 'grub_video_blit_bitmap' to rendering target.
|
||||||
|
|
||||||
9.3.2 grub_video_bitmap_destroy
|
10.3.2 grub_video_bitmap_destroy
|
||||||
-------------------------------
|
--------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
grub_err_t grub_video_bitmap_destroy (struct grub_video_bitmap *bitmap);
|
grub_err_t grub_video_bitmap_destroy (struct grub_video_bitmap *bitmap);
|
||||||
@ -1628,8 +1671,8 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
this command. 'bitmap' is previously allocated bitmap with
|
this command. 'bitmap' is previously allocated bitmap with
|
||||||
'grub_video_bitmap_create' or loaded with 'grub_video_bitmap_load'.
|
'grub_video_bitmap_create' or loaded with 'grub_video_bitmap_load'.
|
||||||
|
|
||||||
9.3.3 grub_video_bitmap_load
|
10.3.3 grub_video_bitmap_load
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
grub_err_t grub_video_bitmap_load (struct grub_video_bitmap **bitmap, const char *filename);
|
grub_err_t grub_video_bitmap_load (struct grub_video_bitmap **bitmap, const char *filename);
|
||||||
@ -1640,8 +1683,8 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
loaders. In case bitmap format is not recognized or supported
|
loaders. In case bitmap format is not recognized or supported
|
||||||
error 'GRUB_ERR_BAD_FILE_TYPE' is returned.
|
error 'GRUB_ERR_BAD_FILE_TYPE' is returned.
|
||||||
|
|
||||||
9.3.4 grub_video_bitmap_get_width
|
10.3.4 grub_video_bitmap_get_width
|
||||||
---------------------------------
|
----------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
unsigned int grub_video_bitmap_get_width (struct grub_video_bitmap *bitmap);
|
unsigned int grub_video_bitmap_get_width (struct grub_video_bitmap *bitmap);
|
||||||
@ -1650,8 +1693,8 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
|
|
||||||
Returns bitmap width.
|
Returns bitmap width.
|
||||||
|
|
||||||
9.3.5 grub_video_bitmap_get_height
|
10.3.5 grub_video_bitmap_get_height
|
||||||
----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
unsigned int grub_video_bitmap_get_height (struct grub_video_bitmap *bitmap);
|
unsigned int grub_video_bitmap_get_height (struct grub_video_bitmap *bitmap);
|
||||||
@ -1660,8 +1703,8 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
|
|
||||||
Return bitmap height.
|
Return bitmap height.
|
||||||
|
|
||||||
9.3.6 grub_video_bitmap_get_mode_info
|
10.3.6 grub_video_bitmap_get_mode_info
|
||||||
-------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
void grub_video_bitmap_get_mode_info (struct grub_video_bitmap *bitmap, struct grub_video_mode_info *mode_info);
|
void grub_video_bitmap_get_mode_info (struct grub_video_bitmap *bitmap, struct grub_video_mode_info *mode_info);
|
||||||
@ -1670,8 +1713,8 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
|
|
||||||
Returns bitmap format details in form of 'grub_video_mode_info'.
|
Returns bitmap format details in form of 'grub_video_mode_info'.
|
||||||
|
|
||||||
9.3.7 grub_video_bitmap_get_data
|
10.3.7 grub_video_bitmap_get_data
|
||||||
--------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* Prototype:
|
* Prototype:
|
||||||
void *grub_video_bitmap_get_data (struct grub_video_bitmap *bitmap);
|
void *grub_video_bitmap_get_data (struct grub_video_bitmap *bitmap);
|
||||||
@ -1685,7 +1728,7 @@ File: grub-dev.info, Node: Bitmap API, Prev: Example usage of Video API, Up:
|
|||||||
|
|
||||||
File: grub-dev.info, Node: PFF2 Font File Format, Next: Graphical Menu Software Design, Prev: Video Subsystem, Up: Top
|
File: grub-dev.info, Node: PFF2 Font File Format, Next: Graphical Menu Software Design, Prev: Video Subsystem, Up: Top
|
||||||
|
|
||||||
10 PFF2 Font File Format
|
11 PFF2 Font File Format
|
||||||
************************
|
************************
|
||||||
|
|
||||||
* Menu:
|
* Menu:
|
||||||
@ -1697,13 +1740,13 @@ File: grub-dev.info, Node: PFF2 Font File Format, Next: Graphical Menu Softwar
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Introduction, Next: File Structure, Up: PFF2 Font File Format
|
File: grub-dev.info, Node: Introduction, Next: File Structure, Up: PFF2 Font File Format
|
||||||
|
|
||||||
10.1 Introduction
|
11.1 Introduction
|
||||||
=================
|
=================
|
||||||
|
|
||||||
The goal of this format is to provide a bitmap font format that is
|
The goal of this format is to provide a bitmap font format that is
|
||||||
simple to use, compact, and cleanly supports Unicode.
|
simple to use, compact, and cleanly supports Unicode.
|
||||||
|
|
||||||
10.1.1 Goals of the GRUB Font Format
|
11.1.1 Goals of the GRUB Font Format
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
* Simple to read and use. Since GRUB will only be reading the font
|
* Simple to read and use. Since GRUB will only be reading the font
|
||||||
@ -1719,7 +1762,7 @@ simple to use, compact, and cleanly supports Unicode.
|
|||||||
encodings. The font should always use Unicode character codes for
|
encodings. The font should always use Unicode character codes for
|
||||||
simple internationalization.
|
simple internationalization.
|
||||||
|
|
||||||
10.1.2 Why Another Font Format?
|
11.1.2 Why Another Font Format?
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
There are many existing bitmap font formats that GRUB could use.
|
There are many existing bitmap font formats that GRUB could use.
|
||||||
@ -1737,7 +1780,7 @@ suitable for use in GRUB at this time:
|
|||||||
|
|
||||||
File: grub-dev.info, Node: File Structure, Next: Font Metrics, Prev: Introduction, Up: PFF2 Font File Format
|
File: grub-dev.info, Node: File Structure, Next: Font Metrics, Prev: Introduction, Up: PFF2 Font File Format
|
||||||
|
|
||||||
10.2 File Structure
|
11.2 File Structure
|
||||||
===================
|
===================
|
||||||
|
|
||||||
A file *section* consists of a 4-byte name, a 32-bit big-endian length
|
A file *section* consists of a 4-byte name, a 32-bit big-endian length
|
||||||
@ -1746,7 +1789,7 @@ section-type-specific bytes.
|
|||||||
|
|
||||||
The standard file extension for PFF2 font files is '.pf2'.
|
The standard file extension for PFF2 font files is '.pf2'.
|
||||||
|
|
||||||
10.2.1 Section Types
|
11.2.1 Section Types
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
'FILE'
|
'FILE'
|
||||||
@ -1863,7 +1906,7 @@ section-type-specific bytes.
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Font Metrics, Prev: File Structure, Up: PFF2 Font File Format
|
File: grub-dev.info, Node: Font Metrics, Prev: File Structure, Up: PFF2 Font File Format
|
||||||
|
|
||||||
10.3 Font Metrics
|
11.3 Font Metrics
|
||||||
=================
|
=================
|
||||||
|
|
||||||
* Ascent. The distance from the baseline to the top of most
|
* Ascent. The distance from the baseline to the top of most
|
||||||
@ -1890,9 +1933,9 @@ File: grub-dev.info, Node: Font Metrics, Prev: File Structure, Up: PFF2 Font
|
|||||||
An illustration of how the various font metrics apply to characters.
|
An illustration of how the various font metrics apply to characters.
|
||||||
|
|
||||||
|
|
||||||
File: grub-dev.info, Node: Graphical Menu Software Design, Next: Copying This Manual, Prev: PFF2 Font File Format, Up: Top
|
File: grub-dev.info, Node: Graphical Menu Software Design, Next: Verifiers framework, Prev: PFF2 Font File Format, Up: Top
|
||||||
|
|
||||||
11 Graphical Menu Software Design
|
12 Graphical Menu Software Design
|
||||||
*********************************
|
*********************************
|
||||||
|
|
||||||
* Menu:
|
* Menu:
|
||||||
@ -1905,7 +1948,7 @@ File: grub-dev.info, Node: Graphical Menu Software Design, Next: Copying This
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Introduction_2, Next: Startup Sequence, Up: Graphical Menu Software Design
|
File: grub-dev.info, Node: Introduction_2, Next: Startup Sequence, Up: Graphical Menu Software Design
|
||||||
|
|
||||||
11.1 Introduction
|
12.1 Introduction
|
||||||
=================
|
=================
|
||||||
|
|
||||||
The 'gfxmenu' module provides a graphical menu interface for GRUB 2. It
|
The 'gfxmenu' module provides a graphical menu interface for GRUB 2. It
|
||||||
@ -1922,7 +1965,7 @@ graphical menu would work on the new video driver as well.
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Startup Sequence, Next: GUI Components, Prev: Introduction_2, Up: Graphical Menu Software Design
|
File: grub-dev.info, Node: Startup Sequence, Next: GUI Components, Prev: Introduction_2, Up: Graphical Menu Software Design
|
||||||
|
|
||||||
11.2 Startup Sequence
|
12.2 Startup Sequence
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
* grub_enter_normal_mode [normal/main.c]
|
* grub_enter_normal_mode [normal/main.c]
|
||||||
@ -1943,7 +1986,7 @@ File: grub-dev.info, Node: Startup Sequence, Next: GUI Components, Prev: Intr
|
|||||||
|
|
||||||
File: grub-dev.info, Node: GUI Components, Next: Command Line Window, Prev: Startup Sequence, Up: Graphical Menu Software Design
|
File: grub-dev.info, Node: GUI Components, Next: Command Line Window, Prev: Startup Sequence, Up: Graphical Menu Software Design
|
||||||
|
|
||||||
11.3 GUI Components
|
12.3 GUI Components
|
||||||
===================
|
===================
|
||||||
|
|
||||||
The graphical menu implements a GUI component system that supports a
|
The graphical menu implements a GUI component system that supports a
|
||||||
@ -2006,7 +2049,7 @@ particularly useful:
|
|||||||
|
|
||||||
File: grub-dev.info, Node: Command Line Window, Prev: GUI Components, Up: Graphical Menu Software Design
|
File: grub-dev.info, Node: Command Line Window, Prev: GUI Components, Up: Graphical Menu Software Design
|
||||||
|
|
||||||
11.4 Command Line Window
|
12.4 Command Line Window
|
||||||
========================
|
========================
|
||||||
|
|
||||||
The terminal window used to provide command line access within the
|
The terminal window used to provide command line access within the
|
||||||
@ -2023,7 +2066,71 @@ mode that was in use before 'grub_video_setup()' was called might fix
|
|||||||
some of the problems.
|
some of the problems.
|
||||||
|
|
||||||
|
|
||||||
File: grub-dev.info, Node: Copying This Manual, Next: Index, Prev: Graphical Menu Software Design, Up: Top
|
File: grub-dev.info, Node: Verifiers framework, Next: Copying This Manual, Prev: Graphical Menu Software Design, Up: Top
|
||||||
|
|
||||||
|
13 Verifiers framework
|
||||||
|
**********************
|
||||||
|
|
||||||
|
To register your own verifier call 'grub_verifier_register' with a
|
||||||
|
structure pointing to your functions.
|
||||||
|
|
||||||
|
The interface is inspired by the hash interface with
|
||||||
|
'init'/'write'/'fini'.
|
||||||
|
|
||||||
|
There are essentially 2 ways of using it, hashing and whole-file
|
||||||
|
verification.
|
||||||
|
|
||||||
|
With the hashing approach: During 'init' you decide whether you want
|
||||||
|
to check the given file and init context. In 'write' you update your
|
||||||
|
hashing state. In 'fini' you check that the hash matches the expected
|
||||||
|
value/passes some check/...
|
||||||
|
|
||||||
|
With whole-file verification: During 'init' you decide whether you
|
||||||
|
want to check the given file and init context. In 'write' you verify
|
||||||
|
the file and return an error if it fails. You don't have 'fini'.
|
||||||
|
|
||||||
|
Additional 'verify_string' receives various strings like kernel
|
||||||
|
parameters to verify. Returning no error means successful verification
|
||||||
|
and an error stops the current action.
|
||||||
|
|
||||||
|
Detailed description of the API:
|
||||||
|
|
||||||
|
Every time a file is opened your 'init' function is called with file
|
||||||
|
descriptor and file type. Your function can have the following
|
||||||
|
outcomes:
|
||||||
|
|
||||||
|
* returning no error and setting '*flags' to
|
||||||
|
'GRUB_VERIFY_FLAGS_DEFER_AUTH'. In this case verification is
|
||||||
|
deferred to other active verifiers. Verification fails if nobody
|
||||||
|
cares or selected verifier fails.
|
||||||
|
|
||||||
|
* returning no error and setting '*flags' to
|
||||||
|
'GRUB_VERIFY_FLAGS_SKIP_VERIFICATION'. In this case your verifier
|
||||||
|
will not be called anymore and it is assumed to have skipped
|
||||||
|
verification.
|
||||||
|
|
||||||
|
* returning no error and not setting '*flags' to
|
||||||
|
'GRUB_VERIFY_FLAGS_SKIP_VERIFICATION' In this case verification is
|
||||||
|
done as described in the following section.
|
||||||
|
|
||||||
|
* returning an error. Then opening of the file will fail due to
|
||||||
|
failed verification.
|
||||||
|
|
||||||
|
In the third case your 'write' will be called with chunks of the
|
||||||
|
file. If you need the whole file in a single chunk then during 'init'
|
||||||
|
set the bit 'GRUB_VERIFY_FLAGS_SINGLE_CHUNK' in '*flags'. During 'init'
|
||||||
|
you may set '*context' if you need additional context. At every
|
||||||
|
iteration you may return an error and the file will be considered as
|
||||||
|
having failed the verification. If you return no error then
|
||||||
|
verification continues.
|
||||||
|
|
||||||
|
Optionally at the end of the file 'fini', if it exists, is called
|
||||||
|
with just the context. If you return no error during any of 'init',
|
||||||
|
'write' and 'fini' then the file is considered as having succeded
|
||||||
|
verification.
|
||||||
|
|
||||||
|
|
||||||
|
File: grub-dev.info, Node: Copying This Manual, Next: Index, Prev: Verifiers framework, Up: Top
|
||||||
|
|
||||||
Appendix A Copying This Manual
|
Appendix A Copying This Manual
|
||||||
******************************
|
******************************
|
||||||
@ -2477,39 +2584,42 @@ Index
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top641
|
Node: Top641
|
||||||
Node: Getting the source code1734
|
Node: Getting the source code1789
|
||||||
Node: Coding style2695
|
Node: Coding style2750
|
||||||
Node: Naming Conventions3104
|
Node: Naming Conventions3159
|
||||||
Node: Functions3389
|
Node: Functions3444
|
||||||
Node: Variables4263
|
Node: Variables4318
|
||||||
Node: Types5378
|
Node: Types5433
|
||||||
Node: Macros5979
|
Node: Macros6034
|
||||||
Node: Comments6311
|
Node: Comments6366
|
||||||
Node: Multi-Line Comments7073
|
Node: Multi-Line Comments6975
|
||||||
Node: Finding your way around7704
|
Node: Finding your way around7900
|
||||||
Node: Contributing Changes11020
|
Node: Contributing Changes11216
|
||||||
Node: Getting started12110
|
Node: Getting started12321
|
||||||
Node: Typical Developer Experience16162
|
Node: Typical Developer Experience16373
|
||||||
Node: When you are approved for write access to project's files17204
|
Node: When you are approved for write access to project's files17415
|
||||||
Node: Porting18637
|
Node: Updating External Code18848
|
||||||
Node: Error Handling30400
|
Node: Gnulib19119
|
||||||
Node: Stack and heap size35492
|
Node: Porting20078
|
||||||
Node: BIOS port memory map38125
|
Node: Error Handling31842
|
||||||
Node: Video Subsystem38974
|
Node: Stack and heap size36934
|
||||||
Node: Video API39446
|
Node: BIOS port memory map39567
|
||||||
Node: Example usage of Video API59841
|
Node: Video Subsystem40416
|
||||||
Node: Bitmap API61415
|
Node: Video API40890
|
||||||
Node: PFF2 Font File Format63932
|
Node: Example usage of Video API61339
|
||||||
Node: Introduction64172
|
Node: Bitmap API62919
|
||||||
Node: File Structure65675
|
Node: PFF2 Font File Format65452
|
||||||
Node: Font Metrics70593
|
Node: Introduction65692
|
||||||
Node: Graphical Menu Software Design71741
|
Node: File Structure67195
|
||||||
Node: Introduction_272033
|
Node: Font Metrics72113
|
||||||
Node: Startup Sequence72767
|
Node: Graphical Menu Software Design73261
|
||||||
Node: GUI Components73618
|
Node: Introduction_273553
|
||||||
Node: Command Line Window76218
|
Node: Startup Sequence74287
|
||||||
Node: Copying This Manual77170
|
Node: GUI Components75138
|
||||||
Node: GNU Free Documentation License77426
|
Node: Command Line Window77738
|
||||||
Node: Index99819
|
Node: Verifiers framework78690
|
||||||
|
Node: Copying This Manual81298
|
||||||
|
Node: GNU Free Documentation License81543
|
||||||
|
Node: Index103936
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
@ -77,6 +77,7 @@ This edition documents version @value{VERSION}.
|
|||||||
* Coding style::
|
* Coding style::
|
||||||
* Finding your way around::
|
* Finding your way around::
|
||||||
* Contributing Changes::
|
* Contributing Changes::
|
||||||
|
* Updating External Code::
|
||||||
* Porting::
|
* Porting::
|
||||||
* Error Handling::
|
* Error Handling::
|
||||||
* Stack and heap size::
|
* Stack and heap size::
|
||||||
@ -84,6 +85,7 @@ This edition documents version @value{VERSION}.
|
|||||||
* Video Subsystem::
|
* Video Subsystem::
|
||||||
* PFF2 Font File Format::
|
* PFF2 Font File Format::
|
||||||
* Graphical Menu Software Design::
|
* Graphical Menu Software Design::
|
||||||
|
* Verifiers framework::
|
||||||
* Copying This Manual:: Copying This Manual
|
* Copying This Manual:: Copying This Manual
|
||||||
* Index::
|
* Index::
|
||||||
@end menu
|
@end menu
|
||||||
@ -181,38 +183,44 @@ If a macro is global, its name must be prefixed with GRUB_ and must consist of o
|
|||||||
@section Comments
|
@section Comments
|
||||||
|
|
||||||
All comments shall be C-style comments, of the form @samp{/* @dots{} */}.
|
All comments shall be C-style comments, of the form @samp{/* @dots{} */}.
|
||||||
|
A comment can be placed immediately preceding the entity it describes or it
|
||||||
Comments shall be placed only on a line by themselves. They shall not be placed together with code, variable declarations, or other non-comment entities. A comment should be placed immediately preceding the entity it describes.
|
can be placed together with code, variable declarations, or other non-comment
|
||||||
|
entities. However, it is recommended to not mix various forms especially in
|
||||||
|
types/structs descriptions.
|
||||||
|
|
||||||
Acceptable:
|
Acceptable:
|
||||||
@example
|
@example
|
||||||
/* The page # that is the front buffer. */
|
/* The page # that is the front buffer. */
|
||||||
int displayed_page;
|
int displayed_page;
|
||||||
/* The page # that is the back buffer. */
|
|
||||||
int render_page;
|
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Unacceptable:
|
|
||||||
@example
|
@example
|
||||||
int displayed_page; /* The page # that is the front buffer. */
|
|
||||||
int render_page; /* The page # that is the back buffer. */
|
int render_page; /* The page # that is the back buffer. */
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Multi-Line Comments
|
@node Multi-Line Comments
|
||||||
@section Multi-Line Comments
|
@section Multi-Line Comments
|
||||||
|
|
||||||
Comments spanning multiple lines shall be formatted with all lines after the first aligned with the first line.
|
Comments spanning multiple lines shall be formatted with all lines after the
|
||||||
|
first aligned with the first line. Asterisk characters should be repeated at
|
||||||
Asterisk characters should not be repeated a the start of each subsequent line.
|
the start of each subsequent line.
|
||||||
|
|
||||||
Acceptable:
|
Acceptable:
|
||||||
@example
|
@example
|
||||||
|
/*
|
||||||
|
* This is a comment
|
||||||
|
* which spans multiple lines.
|
||||||
|
* It is long.
|
||||||
|
*/
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Unacceptable:
|
||||||
|
@example
|
||||||
/* This is a comment
|
/* This is a comment
|
||||||
which spans multiple lines.
|
which spans multiple lines.
|
||||||
It is long. */
|
It is long. */
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Unacceptable:
|
|
||||||
@example
|
@example
|
||||||
/*
|
/*
|
||||||
* This is a comment
|
* This is a comment
|
||||||
@ -220,7 +228,16 @@ Unacceptable:
|
|||||||
* It is long. */
|
* It is long. */
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The opening @samp{/*} and closing @samp{*/} should be placed together on a line with text.
|
@example
|
||||||
|
/* This is a comment
|
||||||
|
* which spans multiple lines.
|
||||||
|
* It is long.
|
||||||
|
*/
|
||||||
|
@end example
|
||||||
|
|
||||||
|
In particular first unacceptable form makes comment difficult to distinguish
|
||||||
|
from the code itself. Especially if it contains the code snippets and/or is
|
||||||
|
long. So, its usage is disallowed.
|
||||||
|
|
||||||
@node Finding your way around
|
@node Finding your way around
|
||||||
@chapter Finding your way around
|
@chapter Finding your way around
|
||||||
@ -465,6 +482,35 @@ If your intention is to just get started, please do not submit a inclusion
|
|||||||
request. Instead, please subscribe to the mailing list, and communicate first
|
request. Instead, please subscribe to the mailing list, and communicate first
|
||||||
(e.g. sending a patch, asking a question, commenting on another message...).
|
(e.g. sending a patch, asking a question, commenting on another message...).
|
||||||
|
|
||||||
|
@node Updating External Code
|
||||||
|
@chapter Updating external code
|
||||||
|
|
||||||
|
GRUB includes some code from other projects, and it is sometimes necessary
|
||||||
|
to update it.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Gnulib::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Gnulib
|
||||||
|
@section Gnulib
|
||||||
|
|
||||||
|
Gnulib is a source code library that provides basic functionality to
|
||||||
|
programs and libraries. Many software packages make use of Gnulib
|
||||||
|
to avoid reinventing the portability wheel.
|
||||||
|
|
||||||
|
GRUB imports Gnulib using its @command{bootstrap} utility, identifying a
|
||||||
|
particular Git commit in @file{bootstrap.conf}. To upgrade to a new Gnulib
|
||||||
|
commit, set @code{GNULIB_REVISION} in @file{bootstrap.conf} to the new commit
|
||||||
|
ID, then run @kbd{./bootstrap} and whatever else you need to make sure it
|
||||||
|
works. Check for changes to Gnulib's @file{NEWS} file between the old and new
|
||||||
|
commits; in some cases it will be necessary to adjust GRUB to match. You may
|
||||||
|
also need to update the patches in @file{grub-core/lib/gnulib-patches/}.
|
||||||
|
|
||||||
|
To add a new Gnulib module or remove one that is no longer needed, change
|
||||||
|
@code{gnulib_modules} in @file{bootstrap.conf}. Again, run @kbd{./bootstrap}
|
||||||
|
and whatever else you need to make sure it works.
|
||||||
|
|
||||||
@node Porting
|
@node Porting
|
||||||
@chapter Porting
|
@chapter Porting
|
||||||
|
|
||||||
@ -671,7 +717,7 @@ is already present and you'll need to make it follow the existant code paths
|
|||||||
for your platform adding adjustments if necessary. When done compile:
|
for your platform adding adjustments if necessary. When done compile:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
./autogen.sh
|
./bootstrap
|
||||||
./configure --target=$cpu --with-platform=$platform TARGET_CC=.. OBJCOPY=... STRIP=...
|
./configure --target=$cpu --with-platform=$platform TARGET_CC=.. OBJCOPY=... STRIP=...
|
||||||
make > /dev/null
|
make > /dev/null
|
||||||
@end example
|
@end example
|
||||||
@ -1949,6 +1995,63 @@ the graphics mode that was in use before @code{grub_video_setup()} was called
|
|||||||
might fix some of the problems.
|
might fix some of the problems.
|
||||||
|
|
||||||
|
|
||||||
|
@node Verifiers framework
|
||||||
|
@chapter Verifiers framework
|
||||||
|
|
||||||
|
To register your own verifier call @samp{grub_verifier_register} with a structure
|
||||||
|
pointing to your functions.
|
||||||
|
|
||||||
|
The interface is inspired by the hash interface with @samp{init}/@samp{write}/@samp{fini}.
|
||||||
|
|
||||||
|
There are essentially 2 ways of using it, hashing and whole-file verification.
|
||||||
|
|
||||||
|
With the hashing approach:
|
||||||
|
During @samp{init} you decide whether you want to check the given file and init context.
|
||||||
|
In @samp{write} you update your hashing state.
|
||||||
|
In @samp{fini} you check that the hash matches the expected value/passes some check/...
|
||||||
|
|
||||||
|
With whole-file verification:
|
||||||
|
During @samp{init} you decide whether you want to check the given file and init context.
|
||||||
|
In @samp{write} you verify the file and return an error if it fails.
|
||||||
|
You don't have @samp{fini}.
|
||||||
|
|
||||||
|
Additional @samp{verify_string} receives various strings like kernel parameters
|
||||||
|
to verify. Returning no error means successful verification and an error stops
|
||||||
|
the current action.
|
||||||
|
|
||||||
|
Detailed description of the API:
|
||||||
|
|
||||||
|
Every time a file is opened your @samp{init} function is called with file descriptor
|
||||||
|
and file type. Your function can have the following outcomes:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
|
||||||
|
@item returning no error and setting @samp{*flags} to @samp{GRUB_VERIFY_FLAGS_DEFER_AUTH}.
|
||||||
|
In this case verification is deferred to other active verifiers. Verification
|
||||||
|
fails if nobody cares or selected verifier fails.
|
||||||
|
|
||||||
|
@item returning no error and setting @samp{*flags} to @samp{GRUB_VERIFY_FLAGS_SKIP_VERIFICATION}.
|
||||||
|
In this case your verifier will not be called anymore and it is assumed to have
|
||||||
|
skipped verification.
|
||||||
|
|
||||||
|
@item returning no error and not setting @samp{*flags} to @samp{GRUB_VERIFY_FLAGS_SKIP_VERIFICATION}
|
||||||
|
In this case verification is done as described in the following section.
|
||||||
|
|
||||||
|
@item returning an error. Then opening of the file will fail due to failed verification.
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
In the third case your @samp{write} will be called with chunks of the file. If
|
||||||
|
you need the whole file in a single chunk then during @samp{init} set the bit
|
||||||
|
@samp{GRUB_VERIFY_FLAGS_SINGLE_CHUNK} in @samp{*flags}. During @samp{init} you
|
||||||
|
may set @samp{*context} if you need additional context. At every iteration you
|
||||||
|
may return an error and the file will be considered as having failed the
|
||||||
|
verification. If you return no error then verification continues.
|
||||||
|
|
||||||
|
Optionally at the end of the file @samp{fini}, if it exists, is called with just
|
||||||
|
the context. If you return no error during any of @samp{init}, @samp{write} and
|
||||||
|
@samp{fini} then the file is considered as having succeded verification.
|
||||||
|
|
||||||
@node Copying This Manual
|
@node Copying This Manual
|
||||||
@appendix Copying This Manual
|
@appendix Copying This Manual
|
||||||
|
|
||||||
|
867
docs/grub.info
867
docs/grub.info
File diff suppressed because it is too large
Load Diff
221
docs/grub.texi
221
docs/grub.texi
@ -360,8 +360,9 @@ blocklist notation. The currently supported filesystem types are @dfn{Amiga
|
|||||||
Fast FileSystem (AFFS)}, @dfn{AtheOS fs}, @dfn{BeFS},
|
Fast FileSystem (AFFS)}, @dfn{AtheOS fs}, @dfn{BeFS},
|
||||||
@dfn{BtrFS} (including raid0, raid1, raid10, gzip and lzo),
|
@dfn{BtrFS} (including raid0, raid1, raid10, gzip and lzo),
|
||||||
@dfn{cpio} (little- and big-endian bin, odc and newc variants),
|
@dfn{cpio} (little- and big-endian bin, odc and newc variants),
|
||||||
@dfn{Linux ext2/ext3/ext4}, @dfn{DOS FAT12/FAT16/FAT32}, @dfn{exFAT}, @dfn{HFS},
|
@dfn{Linux ext2/ext3/ext4}, @dfn{DOS FAT12/FAT16/FAT32},
|
||||||
@dfn{HFS+}, @dfn{ISO9660} (including Joliet, Rock-ridge and multi-chunk files),
|
@dfn{exFAT}, @dfn{F2FS}, @dfn{HFS}, @dfn{HFS+},
|
||||||
|
@dfn{ISO9660} (including Joliet, Rock-ridge and multi-chunk files),
|
||||||
@dfn{JFS}, @dfn{Minix fs} (versions 1, 2 and 3), @dfn{nilfs2},
|
@dfn{JFS}, @dfn{Minix fs} (versions 1, 2 and 3), @dfn{nilfs2},
|
||||||
@dfn{NTFS} (including compression), @dfn{ReiserFS}, @dfn{ROMFS},
|
@dfn{NTFS} (including compression), @dfn{ReiserFS}, @dfn{ROMFS},
|
||||||
@dfn{Amiga Smart FileSystem (SFS)}, @dfn{Squash4}, @dfn{tar}, @dfn{UDF},
|
@dfn{Amiga Smart FileSystem (SFS)}, @dfn{Squash4}, @dfn{tar}, @dfn{UDF},
|
||||||
@ -1214,6 +1215,7 @@ need to write the whole thing by hand.
|
|||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Simple configuration:: Recommended for most users
|
* Simple configuration:: Recommended for most users
|
||||||
|
* Root Identifcation Heuristics:: Summary on how the root file system is identified.
|
||||||
* Shell-like scripting:: For power users and developers
|
* Shell-like scripting:: For power users and developers
|
||||||
* Multi-boot manual config:: For non-standard multi-OS scenarios
|
* Multi-boot manual config:: For non-standard multi-OS scenarios
|
||||||
* Embedded configuration:: Embedding a configuration file into GRUB
|
* Embedded configuration:: Embedding a configuration file into GRUB
|
||||||
@ -1398,6 +1400,25 @@ for all respectively normal entries.
|
|||||||
The values of these options replace the values of @samp{GRUB_CMDLINE_LINUX}
|
The values of these options replace the values of @samp{GRUB_CMDLINE_LINUX}
|
||||||
and @samp{GRUB_CMDLINE_LINUX_DEFAULT} for Linux and Xen menu entries.
|
and @samp{GRUB_CMDLINE_LINUX_DEFAULT} for Linux and Xen menu entries.
|
||||||
|
|
||||||
|
@item GRUB_EARLY_INITRD_LINUX_CUSTOM
|
||||||
|
@itemx GRUB_EARLY_INITRD_LINUX_STOCK
|
||||||
|
List of space-separated early initrd images to be loaded from @samp{/boot}.
|
||||||
|
This is for loading things like CPU microcode, firmware, ACPI tables, crypto
|
||||||
|
keys, and so on. These early images will be loaded in the order declared,
|
||||||
|
and all will be loaded before the actual functional initrd image.
|
||||||
|
|
||||||
|
@samp{GRUB_EARLY_INITRD_LINUX_STOCK} is for your distribution to declare
|
||||||
|
images that are provided by the distribution. It should not be modified
|
||||||
|
without understanding the consequences. They will be loaded first.
|
||||||
|
|
||||||
|
@samp{GRUB_EARLY_INITRD_LINUX_CUSTOM} is for your custom created images.
|
||||||
|
|
||||||
|
The default stock images are as follows, though they may be overridden by
|
||||||
|
your distribution:
|
||||||
|
@example
|
||||||
|
intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio
|
||||||
|
@end example
|
||||||
|
|
||||||
@item GRUB_DISABLE_LINUX_UUID
|
@item GRUB_DISABLE_LINUX_UUID
|
||||||
Normally, @command{grub-mkconfig} will generate menu entries that use
|
Normally, @command{grub-mkconfig} will generate menu entries that use
|
||||||
universally-unique identifiers (UUIDs) to identify the root filesystem to
|
universally-unique identifiers (UUIDs) to identify the root filesystem to
|
||||||
@ -1405,6 +1426,17 @@ the Linux kernel, using a @samp{root=UUID=...} kernel parameter. This is
|
|||||||
usually more reliable, but in some cases it may not be appropriate. To
|
usually more reliable, but in some cases it may not be appropriate. To
|
||||||
disable the use of UUIDs, set this option to @samp{true}.
|
disable the use of UUIDs, set this option to @samp{true}.
|
||||||
|
|
||||||
|
@item GRUB_DISABLE_LINUX_PARTUUID
|
||||||
|
If @command{grub-mkconfig} cannot identify the root filesystem via its
|
||||||
|
universally-unique indentifier (UUID), @command{grub-mkconfig} can use the UUID
|
||||||
|
of the partition containing the filesystem to identify the root filesystem to
|
||||||
|
the Linux kernel via a @samp{root=PARTUUID=...} kernel parameter. This is not
|
||||||
|
as reliable as using the filesystem UUID, but is more reliable than using the
|
||||||
|
Linux device names. When @samp{GRUB_DISABLE_LINUX_PARTUUID} is set to
|
||||||
|
@samp{false}, the Linux kernel version must be 2.6.37 (3.10 for systems using
|
||||||
|
the MSDOS partition scheme) or newer. This option defaults to @samp{true}. To
|
||||||
|
enable the use of partition UUIDs, set this option to @samp{false}.
|
||||||
|
|
||||||
@item GRUB_DISABLE_RECOVERY
|
@item GRUB_DISABLE_RECOVERY
|
||||||
If this option is set to @samp{true}, disable the generation of recovery
|
If this option is set to @samp{true}, disable the generation of recovery
|
||||||
mode menu entries.
|
mode menu entries.
|
||||||
@ -1536,6 +1568,53 @@ edit the scripts in @file{/etc/grub.d} directly.
|
|||||||
menu entries; simply type the menu entries you want to add at the end of
|
menu entries; simply type the menu entries you want to add at the end of
|
||||||
that file, making sure to leave at least the first two lines intact.
|
that file, making sure to leave at least the first two lines intact.
|
||||||
|
|
||||||
|
@node Root Identifcation Heuristics
|
||||||
|
@section Root Identifcation Heuristics
|
||||||
|
If the target operating system uses the Linux kernel, @command{grub-mkconfig}
|
||||||
|
attempts to identify the root file system via a heuristic algoirthm. This
|
||||||
|
algorithm selects the identification method of the root file system by
|
||||||
|
considering three factors. The first is if an initrd for the target operating
|
||||||
|
system is also present. The second is @samp{GRUB_DISABLE_LINUX_UUID} and if set
|
||||||
|
to @samp{true}, prevents @command{grub-mkconfig} from identifying the root file
|
||||||
|
system by its UUID. The third is @samp{GRUB_DISABLE_LINUX_PARTUUID} and if set
|
||||||
|
to @samp{true}, prevents @command{grub-mkconfig} from identifying the root file
|
||||||
|
system via the UUID of its enclosing partition. If the variables are assigned
|
||||||
|
any other value, that value is considered equivalent to @samp{false}. The
|
||||||
|
variables are also considered to be set to @samp{false} if they are not set.
|
||||||
|
|
||||||
|
When booting, the Linux kernel will delegate the task of mounting the root
|
||||||
|
filesystem to the initrd. Most initrd images determine the root file system by
|
||||||
|
checking the Linux kernel's command-line for the @samp{root} key and use its
|
||||||
|
value as the identification method of the root file system. To improve the
|
||||||
|
reliability of booting, most initrd images also allow the root file system to be
|
||||||
|
identified by its UUID. Because of this behavior, the @command{grub-mkconfig}
|
||||||
|
command will set @samp{root} to @samp{root=UUID=...} to provide the initrd with
|
||||||
|
the filesystem UUID of the root file system.
|
||||||
|
|
||||||
|
If no initrd is detected or @samp{GRUB_DISABLE_LINUX_UUID} is set to @samp{true}
|
||||||
|
then @command{grub-command} will identify the root filesystem by setting the
|
||||||
|
kernel command-line variable @samp{root} to @samp{root=PARTUUID=...} unless
|
||||||
|
@samp{GRUB_DISABLE_LINUX_PARTUUID} is also set to @samp{true}. If
|
||||||
|
@samp{GRUB_DISABLE_LINUX_PARTUUID} is also set to @samp{true},
|
||||||
|
@command{grub-command} will identify by its Linux device name.
|
||||||
|
|
||||||
|
The following table summarizes the behavior of the @command{grub-mkconfig}
|
||||||
|
command.
|
||||||
|
|
||||||
|
@multitable {detected} {GRUB_DISABLE_LINUX_PARTUUID} {GRUB_DISABLE_LINUX_UUID} {Linux Root}
|
||||||
|
@headitem Initrd detected @tab GRUB_DISABLE_LINUX_PARTUUID Set To @tab GRUB_DISABLE_LINUX_UUID Set To @tab Linux Root ID Method
|
||||||
|
@item false @tab false @tab false @tab part UUID
|
||||||
|
@item false @tab false @tab true @tab part UUID
|
||||||
|
@item false @tab true @tab false @tab dev name
|
||||||
|
@item false @tab true @tab true @tab dev name
|
||||||
|
@item true @tab false @tab false @tab fs UUID
|
||||||
|
@item true @tab false @tab true @tab part UUID
|
||||||
|
@item true @tab true @tab false @tab fs UUID
|
||||||
|
@item true @tab true @tab true @tab dev name
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
Remember, @samp{GRUB_DISABLE_LINUX_PARTUUID} and @samp{GRUB_DISABLE_LINUX_UUID}
|
||||||
|
are also considered to be set to @samp{false} when they are unset.
|
||||||
|
|
||||||
@node Shell-like scripting
|
@node Shell-like scripting
|
||||||
@section Writing full configuration files directly
|
@section Writing full configuration files directly
|
||||||
@ -3852,6 +3931,7 @@ you forget a command, you can run the command @command{help}
|
|||||||
* play:: Play a tune
|
* play:: Play a tune
|
||||||
* probe:: Retrieve device info
|
* probe:: Retrieve device info
|
||||||
* pxe_unload:: Unload the PXE environment
|
* pxe_unload:: Unload the PXE environment
|
||||||
|
* rdmsr:: Read values from model-specific registers
|
||||||
* read:: Read user input
|
* read:: Read user input
|
||||||
* reboot:: Reboot your computer
|
* reboot:: Reboot your computer
|
||||||
* regexp:: Test if regular expression matches string
|
* regexp:: Test if regular expression matches string
|
||||||
@ -3873,11 +3953,10 @@ you forget a command, you can run the command @command{help}
|
|||||||
@comment * vbeinfo:: List available video modes
|
@comment * vbeinfo:: List available video modes
|
||||||
* verify_detached:: Verify detached digital signature
|
* verify_detached:: Verify detached digital signature
|
||||||
* videoinfo:: List available video modes
|
* videoinfo:: List available video modes
|
||||||
@comment * xen_*:: Xen boot commands
|
@comment * xen_*:: Xen boot commands for AArch64
|
||||||
* xen_hypervisor:: Load xen hypervisor binary
|
* wrmsr:: Write values to model-specific registers
|
||||||
* xen_linux:: Load dom0 kernel for xen hypervisor
|
* xen_hypervisor:: Load xen hypervisor binary (only on AArch64)
|
||||||
* xen_initrd:: Load dom0 initrd for dom0 kernel
|
* xen_module:: Load xen modules for xen hypervisor (only on AArch64)
|
||||||
* xen_xsm:: Load xen security module for xen hypervisor
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@ -4645,7 +4724,7 @@ range 0-0xFF (prefix with @samp{0x} to enter it in hexadecimal).
|
|||||||
When enabled, this hides the selected partition by setting the @dfn{hidden}
|
When enabled, this hides the selected partition by setting the @dfn{hidden}
|
||||||
bit in its partition type code; when disabled, unhides the selected
|
bit in its partition type code; when disabled, unhides the selected
|
||||||
partition by clearing this bit. This is useful only when booting DOS or
|
partition by clearing this bit. This is useful only when booting DOS or
|
||||||
Wwindows and multiple primary FAT partitions exist in one disk. See also
|
Windows and multiple primary FAT partitions exist in one disk. See also
|
||||||
@ref{DOS/Windows}.
|
@ref{DOS/Windows}.
|
||||||
@end table
|
@end table
|
||||||
@end deffn
|
@end deffn
|
||||||
@ -4708,6 +4787,24 @@ This command is only available on PC BIOS systems.
|
|||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
|
@node rdmsr
|
||||||
|
@subsection rdmsr
|
||||||
|
|
||||||
|
@deffn Command: rdmsr 0xADDR [-v VARNAME]
|
||||||
|
Read a model-specific register at address 0xADDR. If the parameter
|
||||||
|
@option{-v} is used and an environment variable @var{VARNAME} is
|
||||||
|
given, set that environment variable to the value that was read.
|
||||||
|
|
||||||
|
Please note that on SMP systems, reading from a MSR that has a
|
||||||
|
scope per hardware thread, implies that the value that is returned
|
||||||
|
only applies to the particular cpu/core/thread that runs the command.
|
||||||
|
|
||||||
|
Also, if you specify a reserved or unimplemented MSR address, it will
|
||||||
|
cause a general protection exception (which is not currently being handled)
|
||||||
|
and the system will reboot.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
@node read
|
@node read
|
||||||
@subsection read
|
@subsection read
|
||||||
|
|
||||||
@ -5146,6 +5243,21 @@ successfully. If validation fails, it is set to a non-zero value.
|
|||||||
List available video modes. If resolution is given, show only matching modes.
|
List available video modes. If resolution is given, show only matching modes.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@node wrmsr
|
||||||
|
@subsection wrmsr
|
||||||
|
|
||||||
|
@deffn Command: wrmsr 0xADDR 0xVALUE
|
||||||
|
Write a 0xVALUE to a model-specific register at address 0xADDR.
|
||||||
|
|
||||||
|
Please note that on SMP systems, writing to a MSR that has a scope
|
||||||
|
per hardware thread, implies that the value that is written
|
||||||
|
only applies to the particular cpu/core/thread that runs the command.
|
||||||
|
|
||||||
|
Also, if you specify a reserved or unimplemented MSR address, it will
|
||||||
|
cause a general protection exception (which is not currently being handled)
|
||||||
|
and the system will reboot.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
@node xen_hypervisor
|
@node xen_hypervisor
|
||||||
@subsection xen_hypervisor
|
@subsection xen_hypervisor
|
||||||
|
|
||||||
@ -5153,32 +5265,22 @@ List available video modes. If resolution is given, show only matching modes.
|
|||||||
Load a Xen hypervisor binary from @var{file}. The rest of the line is passed
|
Load a Xen hypervisor binary from @var{file}. The rest of the line is passed
|
||||||
verbatim as the @dfn{kernel command-line}. Any other binaries must be
|
verbatim as the @dfn{kernel command-line}. Any other binaries must be
|
||||||
reloaded after using this command.
|
reloaded after using this command.
|
||||||
|
This command is only available on AArch64 systems.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node xen_linux
|
@node xen_module
|
||||||
@subsection xen_linux
|
@subsection xen_module
|
||||||
|
|
||||||
@deffn Command xen_linux file [arguments]
|
@deffn Command xen_module [--nounzip] file [arguments]
|
||||||
Load a dom0 kernel image for xen hypervisor at the booting process of xen.
|
Load a module for xen hypervisor at the booting process of xen.
|
||||||
The rest of the line is passed verbatim as the module command line.
|
The rest of the line is passed verbatim as the module command line.
|
||||||
|
Modules should be loaded in the following order:
|
||||||
|
- dom0 kernel image
|
||||||
|
- dom0 ramdisk if present
|
||||||
|
- XSM policy if present
|
||||||
|
This command is only available on AArch64 systems.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@node xen_initrd
|
|
||||||
@subsection xen_initrd
|
|
||||||
|
|
||||||
@deffn Command xen_initrd file
|
|
||||||
Load a initrd image for dom0 kernel at the booting process of xen.
|
|
||||||
@end deffn
|
|
||||||
|
|
||||||
@node xen_xsm
|
|
||||||
@subsection xen_xsm
|
|
||||||
|
|
||||||
@deffn Command xen_xsm file
|
|
||||||
Load a xen security module for xen hypervisor at the booting process of xen.
|
|
||||||
See @uref{http://wiki.xen.org/wiki/XSM} for more detail.
|
|
||||||
@end deffn
|
|
||||||
|
|
||||||
|
|
||||||
@node Networking commands
|
@node Networking commands
|
||||||
@section The list of networking commands
|
@section The list of networking commands
|
||||||
|
|
||||||
@ -5368,7 +5470,7 @@ NTFS, JFS, UDF, HFS+, exFAT, long filenames in FAT, Joliet part of
|
|||||||
ISO9660 are treated as UTF-16 as per specification. AFS and BFS are read
|
ISO9660 are treated as UTF-16 as per specification. AFS and BFS are read
|
||||||
as UTF-8, again according to specification. BtrFS, cpio, tar, squash4, minix,
|
as UTF-8, again according to specification. BtrFS, cpio, tar, squash4, minix,
|
||||||
minix2, minix3, ROMFS, ReiserFS, XFS, ext2, ext3, ext4, FAT (short names),
|
minix2, minix3, ROMFS, ReiserFS, XFS, ext2, ext3, ext4, FAT (short names),
|
||||||
RockRidge part of ISO9660, nilfs2, UFS1, UFS2 and ZFS are assumed
|
F2FS, RockRidge part of ISO9660, nilfs2, UFS1, UFS2 and ZFS are assumed
|
||||||
to be UTF-8. This might be false on systems configured with legacy charset
|
to be UTF-8. This might be false on systems configured with legacy charset
|
||||||
but as long as the charset used is superset of ASCII you should be able to
|
but as long as the charset used is superset of ASCII you should be able to
|
||||||
access ASCII-named files. And it's recommended to configure your system to use
|
access ASCII-named files. And it's recommended to configure your system to use
|
||||||
@ -5477,6 +5579,8 @@ environment variables and commands are listed in the same order.
|
|||||||
@menu
|
@menu
|
||||||
* Authentication and authorisation:: Users and access control
|
* Authentication and authorisation:: Users and access control
|
||||||
* Using digital signatures:: Booting digitally signed code
|
* Using digital signatures:: Booting digitally signed code
|
||||||
|
* UEFI secure boot and shim:: Booting digitally signed PE files
|
||||||
|
* Measured Boot:: Measuring boot components
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Authentication and authorisation
|
@node Authentication and authorisation
|
||||||
@ -5639,6 +5743,57 @@ or BIOS) configuration to cause the machine to boot from a different
|
|||||||
(attacker-controlled) device. GRUB is at best only one link in a
|
(attacker-controlled) device. GRUB is at best only one link in a
|
||||||
secure boot chain.
|
secure boot chain.
|
||||||
|
|
||||||
|
@node UEFI secure boot and shim
|
||||||
|
@section UEFI secure boot and shim support
|
||||||
|
|
||||||
|
The GRUB, except the @command{chainloader} command, works with the UEFI secure
|
||||||
|
boot and the shim. This functionality is provided by the shim_lock module. It
|
||||||
|
is recommend to build in this and other required modules into the @file{core.img}.
|
||||||
|
All modules not stored in the @file{core.img} and the ACPI tables for the
|
||||||
|
@command{acpi} command have to be signed, e.g. using PGP. Additionally, the
|
||||||
|
@command{iorw}, the @command{memrw} and the @command{wrmsr} commands are
|
||||||
|
prohibited if the UEFI secure boot is enabled. This is done due to
|
||||||
|
security reasons. All above mentioned requirements are enforced by the
|
||||||
|
shim_lock module. And itself it is a persistent module which means that
|
||||||
|
it cannot be unloaded if it was loaded into the memory.
|
||||||
|
|
||||||
|
@node Measured Boot
|
||||||
|
@section Measuring boot components
|
||||||
|
|
||||||
|
If the tpm module is loaded and the platform has a Trusted Platform Module
|
||||||
|
installed, GRUB will log each command executed and each file loaded into the
|
||||||
|
TPM event log and extend the PCR values in the TPM correspondingly. All events
|
||||||
|
will be logged into the PCR described below with a type of EV_IPL and an
|
||||||
|
event description as described below.
|
||||||
|
|
||||||
|
@multitable @columnfractions 0.3 0.1 0.6
|
||||||
|
@headitem Event type @tab PCR @tab Description
|
||||||
|
@item Command
|
||||||
|
@tab 8
|
||||||
|
@tab All executed commands (including those from configuration files) will be
|
||||||
|
logged and measured as entered with a prefix of ``grub_cmd: ``
|
||||||
|
@item Kernel command line
|
||||||
|
@tab 8
|
||||||
|
@tab Any command line passed to a kernel will be logged and measured as entered
|
||||||
|
with a prefix of ``kernel_cmdline: ''
|
||||||
|
@item Module command line
|
||||||
|
@tab 8
|
||||||
|
@tab Any command line passed to a kernel module will be logged and measured as
|
||||||
|
entered with a prefix of ``module_cmdline: ``
|
||||||
|
@item Files
|
||||||
|
@tab 9
|
||||||
|
@tab Any file read by GRUB will be logged and measured with a descriptive text
|
||||||
|
corresponding to the filename.
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
GRUB will not measure its own @file{core.img} - it is expected that firmware
|
||||||
|
will carry this out. GRUB will also not perform any measurements until the
|
||||||
|
tpm module is loaded. As such it is recommended that the tpm module be built
|
||||||
|
into @file{core.img} in order to avoid a potential gap in measurement between
|
||||||
|
@file{core.img} being loaded and the tpm module being loaded.
|
||||||
|
|
||||||
|
Measured boot is currently only supported on EFI platforms.
|
||||||
|
|
||||||
@node Platform limitations
|
@node Platform limitations
|
||||||
@chapter Platform limitations
|
@chapter Platform limitations
|
||||||
|
|
||||||
@ -5711,6 +5866,8 @@ to install to is specified, UUID is used instead as well.
|
|||||||
@item USB @tab yes @tab yes @tab yes @tab yes
|
@item USB @tab yes @tab yes @tab yes @tab yes
|
||||||
@item chainloader @tab local @tab yes @tab yes @tab no
|
@item chainloader @tab local @tab yes @tab yes @tab no
|
||||||
@item cpuid @tab partial @tab partial @tab partial @tab partial
|
@item cpuid @tab partial @tab partial @tab partial @tab partial
|
||||||
|
@item rdmsr @tab partial @tab partial @tab partial @tab partial
|
||||||
|
@item wrmsr @tab partial @tab partial @tab partial @tab partial
|
||||||
@item hints @tab guess @tab guess @tab guess @tab guess
|
@item hints @tab guess @tab guess @tab guess @tab guess
|
||||||
@item PCI @tab yes @tab yes @tab yes @tab yes
|
@item PCI @tab yes @tab yes @tab yes @tab yes
|
||||||
@item badram @tab yes @tab yes @tab yes @tab yes
|
@item badram @tab yes @tab yes @tab yes @tab yes
|
||||||
@ -5730,6 +5887,8 @@ to install to is specified, UUID is used instead as well.
|
|||||||
@item USB @tab yes @tab yes @tab yes @tab no
|
@item USB @tab yes @tab yes @tab yes @tab no
|
||||||
@item chainloader @tab local @tab local @tab no @tab local
|
@item chainloader @tab local @tab local @tab no @tab local
|
||||||
@item cpuid @tab partial @tab partial @tab partial @tab no
|
@item cpuid @tab partial @tab partial @tab partial @tab no
|
||||||
|
@item rdmsr @tab partial @tab partial @tab partial @tab no
|
||||||
|
@item wrmsr @tab partial @tab partial @tab partial @tab no
|
||||||
@item hints @tab guess @tab guess @tab good @tab guess
|
@item hints @tab guess @tab guess @tab good @tab guess
|
||||||
@item PCI @tab yes @tab yes @tab yes @tab no
|
@item PCI @tab yes @tab yes @tab yes @tab no
|
||||||
@item badram @tab yes @tab yes @tab no @tab yes
|
@item badram @tab yes @tab yes @tab no @tab yes
|
||||||
@ -5749,6 +5908,8 @@ to install to is specified, UUID is used instead as well.
|
|||||||
@item USB @tab yes @tab no @tab no @tab no
|
@item USB @tab yes @tab no @tab no @tab no
|
||||||
@item chainloader @tab yes @tab no @tab no @tab no
|
@item chainloader @tab yes @tab no @tab no @tab no
|
||||||
@item cpuid @tab no @tab no @tab no @tab no
|
@item cpuid @tab no @tab no @tab no @tab no
|
||||||
|
@item rdmsr @tab no @tab no @tab no @tab no
|
||||||
|
@item wrmsr @tab no @tab no @tab no @tab no
|
||||||
@item hints @tab good @tab good @tab good @tab no
|
@item hints @tab good @tab good @tab good @tab no
|
||||||
@item PCI @tab yes @tab no @tab no @tab no
|
@item PCI @tab yes @tab no @tab no @tab no
|
||||||
@item badram @tab yes (*) @tab no @tab no @tab no
|
@item badram @tab yes (*) @tab no @tab no @tab no
|
||||||
@ -5768,6 +5929,8 @@ to install to is specified, UUID is used instead as well.
|
|||||||
@item USB @tab N/A @tab yes @tab no
|
@item USB @tab N/A @tab yes @tab no
|
||||||
@item chainloader @tab yes @tab no @tab yes
|
@item chainloader @tab yes @tab no @tab yes
|
||||||
@item cpuid @tab no @tab no @tab yes
|
@item cpuid @tab no @tab no @tab yes
|
||||||
|
@item rdmsr @tab no @tab no @tab yes
|
||||||
|
@item wrmsr @tab no @tab no @tab yes
|
||||||
@item hints @tab guess @tab no @tab no
|
@item hints @tab guess @tab no @tab no
|
||||||
@item PCI @tab no @tab no @tab no
|
@item PCI @tab no @tab no @tab no
|
||||||
@item badram @tab yes (*) @tab no @tab no
|
@item badram @tab yes (*) @tab no @tab no
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set UPDATED 2 September 2015
|
@set UPDATED 8 April 2019
|
||||||
@set UPDATED-MONTH September 2015
|
@set UPDATED-MONTH April 2019
|
||||||
@set EDITION 2.02
|
@set EDITION 2.04~rc1
|
||||||
@set VERSION 2.02
|
@set VERSION 2.04~rc1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set UPDATED 24 April 2017
|
@set UPDATED 21 March 2019
|
||||||
@set UPDATED-MONTH April 2017
|
@set UPDATED-MONTH March 2019
|
||||||
@set EDITION 2.02
|
@set EDITION 2.04~rc1
|
||||||
@set VERSION 2.02
|
@set VERSION 2.04~rc1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set UPDATED 2 September 2015
|
@set UPDATED 8 April 2019
|
||||||
@set UPDATED-MONTH September 2015
|
@set UPDATED-MONTH April 2019
|
||||||
@set EDITION 2.02
|
@set EDITION 2.04~rc1
|
||||||
@set VERSION 2.02
|
@set VERSION 2.04~rc1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@set UPDATED 24 April 2017
|
@set UPDATED 21 March 2019
|
||||||
@set UPDATED-MONTH April 2017
|
@set UPDATED-MONTH March 2019
|
||||||
@set EDITION 2.02
|
@set EDITION 2.04~rc1
|
||||||
@set VERSION 2.02
|
@set VERSION 2.04~rc1
|
||||||
|
23
gentpl.py
23
gentpl.py
@ -28,10 +28,11 @@ import re
|
|||||||
|
|
||||||
GRUB_PLATFORMS = [ "emu", "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot",
|
GRUB_PLATFORMS = [ "emu", "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot",
|
||||||
"i386_multiboot", "i386_ieee1275", "x86_64_efi",
|
"i386_multiboot", "i386_ieee1275", "x86_64_efi",
|
||||||
"i386_xen", "x86_64_xen",
|
"i386_xen", "x86_64_xen", "i386_xen_pvh",
|
||||||
"mips_loongson", "sparc64_ieee1275",
|
"mips_loongson", "sparc64_ieee1275",
|
||||||
"powerpc_ieee1275", "mips_arc", "ia64_efi",
|
"powerpc_ieee1275", "mips_arc", "ia64_efi",
|
||||||
"mips_qemu_mips", "arm_uboot", "arm_efi", "arm64_efi" ]
|
"mips_qemu_mips", "arm_uboot", "arm_efi", "arm64_efi",
|
||||||
|
"arm_coreboot", "riscv32_efi", "riscv64_efi" ]
|
||||||
|
|
||||||
GROUPS = {}
|
GROUPS = {}
|
||||||
|
|
||||||
@ -44,14 +45,18 @@ GROUPS["x86"] = GROUPS["i386"] + GROUPS["x86_64"]
|
|||||||
GROUPS["mips"] = [ "mips_loongson", "mips_qemu_mips", "mips_arc" ]
|
GROUPS["mips"] = [ "mips_loongson", "mips_qemu_mips", "mips_arc" ]
|
||||||
GROUPS["sparc64"] = [ "sparc64_ieee1275" ]
|
GROUPS["sparc64"] = [ "sparc64_ieee1275" ]
|
||||||
GROUPS["powerpc"] = [ "powerpc_ieee1275" ]
|
GROUPS["powerpc"] = [ "powerpc_ieee1275" ]
|
||||||
GROUPS["arm"] = [ "arm_uboot", "arm_efi" ]
|
GROUPS["arm"] = [ "arm_uboot", "arm_efi", "arm_coreboot" ]
|
||||||
GROUPS["arm64"] = [ "arm64_efi" ]
|
GROUPS["arm64"] = [ "arm64_efi" ]
|
||||||
|
GROUPS["riscv32"] = [ "riscv32_efi" ]
|
||||||
|
GROUPS["riscv64"] = [ "riscv64_efi" ]
|
||||||
|
|
||||||
# Groups based on firmware
|
# Groups based on firmware
|
||||||
GROUPS["efi"] = [ "i386_efi", "x86_64_efi", "ia64_efi", "arm_efi", "arm64_efi" ]
|
GROUPS["efi"] = [ "i386_efi", "x86_64_efi", "ia64_efi", "arm_efi", "arm64_efi",
|
||||||
|
"riscv32_efi", "riscv64_efi" ]
|
||||||
GROUPS["ieee1275"] = [ "i386_ieee1275", "sparc64_ieee1275", "powerpc_ieee1275" ]
|
GROUPS["ieee1275"] = [ "i386_ieee1275", "sparc64_ieee1275", "powerpc_ieee1275" ]
|
||||||
GROUPS["uboot"] = [ "arm_uboot" ]
|
GROUPS["uboot"] = [ "arm_uboot" ]
|
||||||
GROUPS["xen"] = [ "i386_xen", "x86_64_xen" ]
|
GROUPS["xen"] = [ "i386_xen", "x86_64_xen" ]
|
||||||
|
GROUPS["coreboot"] = [ "i386_coreboot", "arm_coreboot" ]
|
||||||
|
|
||||||
# emu is a special case so many core functionality isn't needed on this platform
|
# emu is a special case so many core functionality isn't needed on this platform
|
||||||
GROUPS["noemu"] = GRUB_PLATFORMS[:]; GROUPS["noemu"].remove("emu")
|
GROUPS["noemu"] = GRUB_PLATFORMS[:]; GROUPS["noemu"].remove("emu")
|
||||||
@ -61,24 +66,24 @@ GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson", "mips_qemu_mips",
|
|||||||
"sparc64_ieee1275", "powerpc_ieee1275"]
|
"sparc64_ieee1275", "powerpc_ieee1275"]
|
||||||
GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi");
|
GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi");
|
||||||
GROUPS["pci"] = GROUPS["x86"] + ["mips_loongson"]
|
GROUPS["pci"] = GROUPS["x86"] + ["mips_loongson"]
|
||||||
GROUPS["usb"] = GROUPS["pci"]
|
GROUPS["usb"] = GROUPS["pci"] + ["arm_coreboot"]
|
||||||
|
|
||||||
# If gfxterm is main output console integrate it into kernel
|
# If gfxterm is main output console integrate it into kernel
|
||||||
GROUPS["videoinkernel"] = ["mips_loongson", "i386_coreboot" ]
|
GROUPS["videoinkernel"] = ["mips_loongson", "i386_coreboot", "arm_coreboot" ]
|
||||||
GROUPS["videomodules"] = GRUB_PLATFORMS[:];
|
GROUPS["videomodules"] = GRUB_PLATFORMS[:];
|
||||||
for i in GROUPS["videoinkernel"]: GROUPS["videomodules"].remove(i)
|
for i in GROUPS["videoinkernel"]: GROUPS["videomodules"].remove(i)
|
||||||
|
|
||||||
# Similar for terminfo
|
# Similar for terminfo
|
||||||
GROUPS["terminfoinkernel"] = [ "emu", "mips_loongson", "mips_arc", "mips_qemu_mips" ] + GROUPS["xen"] + GROUPS["ieee1275"] + GROUPS["uboot"];
|
GROUPS["terminfoinkernel"] = [ "emu", "mips_loongson", "mips_arc", "mips_qemu_mips", "i386_xen_pvh" ] + GROUPS["xen"] + GROUPS["ieee1275"] + GROUPS["uboot"];
|
||||||
GROUPS["terminfomodule"] = GRUB_PLATFORMS[:];
|
GROUPS["terminfomodule"] = GRUB_PLATFORMS[:];
|
||||||
for i in GROUPS["terminfoinkernel"]: GROUPS["terminfomodule"].remove(i)
|
for i in GROUPS["terminfoinkernel"]: GROUPS["terminfomodule"].remove(i)
|
||||||
|
|
||||||
# Flattened Device Trees (FDT)
|
# Flattened Device Trees (FDT)
|
||||||
GROUPS["fdt"] = [ "arm64_efi", "arm_uboot", "arm_efi" ]
|
GROUPS["fdt"] = [ "arm64_efi", "arm_uboot", "arm_efi", "riscv32_efi", "riscv64_efi" ]
|
||||||
|
|
||||||
# Needs software helpers for division
|
# Needs software helpers for division
|
||||||
# Must match GRUB_DIVISION_IN_SOFTWARE in misc.h
|
# Must match GRUB_DIVISION_IN_SOFTWARE in misc.h
|
||||||
GROUPS["softdiv"] = GROUPS["arm"] + ["ia64_efi"]
|
GROUPS["softdiv"] = GROUPS["arm"] + ["ia64_efi"] + GROUPS["riscv32"]
|
||||||
GROUPS["no_softdiv"] = GRUB_PLATFORMS[:]
|
GROUPS["no_softdiv"] = GRUB_PLATFORMS[:]
|
||||||
for i in GROUPS["softdiv"]: GROUPS["no_softdiv"].remove(i)
|
for i in GROUPS["softdiv"]: GROUPS["no_softdiv"].remove(i)
|
||||||
|
|
||||||
|
@ -101,7 +101,20 @@ KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/int.h
|
|||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if COND_i386_xen_pvh
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/int.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/xen/hypercall.h
|
||||||
|
endif
|
||||||
|
|
||||||
if COND_i386_efi
|
if COND_i386_efi
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
@ -111,8 +124,9 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pmtimer.h
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_coreboot
|
if COND_i386_coreboot
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/coreboot/lbio.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/coreboot/lbio.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
|
||||||
@ -122,6 +136,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_multiboot
|
if COND_i386_multiboot
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
||||||
endif
|
endif
|
||||||
@ -132,6 +147,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_ieee1275
|
if COND_i386_ieee1275
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
|
||||||
@ -140,6 +156,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_xen
|
if COND_i386_xen
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/xen.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/xen/hypercall.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/xen/hypercall.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
|
||||||
@ -158,6 +175,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_x86_64_efi
|
if COND_x86_64_efi
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
@ -239,8 +257,21 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
|
|||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if COND_arm_coreboot
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fdt.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dma.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/coreboot/kernel.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fdtbus.h
|
||||||
|
endif
|
||||||
|
|
||||||
if COND_arm_efi
|
if COND_arm_efi
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/efi/loader.h
|
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
|
||||||
@ -253,6 +284,18 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
|||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if COND_riscv32_efi
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_riscv64_efi
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
|
||||||
|
endif
|
||||||
|
|
||||||
if COND_emu
|
if COND_emu
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/datetime.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/datetime.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/misc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/misc.h
|
||||||
@ -278,7 +321,7 @@ BUILT_SOURCES += symlist.h
|
|||||||
|
|
||||||
symlist.c: symlist.h gensymlist.sh
|
symlist.c: symlist.h gensymlist.sh
|
||||||
$(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) -DGRUB_SYMBOL_GENERATOR=1 symlist.h > symlist.p || (rm -f symlist.p; exit 1)
|
$(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) -DGRUB_SYMBOL_GENERATOR=1 symlist.h > symlist.p || (rm -f symlist.p; exit 1)
|
||||||
cat symlist.p | /bin/sh $(srcdir)/gensymlist.sh $(top_builddir)/config.h $(KERNEL_HEADER_FILES) >$@ || (rm -f $@; exit 1)
|
cat symlist.p | $(SHELL) $(srcdir)/gensymlist.sh $(top_builddir)/config.h $(KERNEL_HEADER_FILES) >$@ || (rm -f $@; exit 1)
|
||||||
rm -f symlist.p
|
rm -f symlist.p
|
||||||
CLEANFILES += symlist.c
|
CLEANFILES += symlist.c
|
||||||
BUILT_SOURCES += symlist.c
|
BUILT_SOURCES += symlist.c
|
||||||
@ -358,6 +401,16 @@ terminal.lst: $(MARKER_FILES)
|
|||||||
platform_DATA += terminal.lst
|
platform_DATA += terminal.lst
|
||||||
CLEANFILES += terminal.lst
|
CLEANFILES += terminal.lst
|
||||||
|
|
||||||
|
fdt.lst: $(MARKER_FILES)
|
||||||
|
(for pp in $^; do \
|
||||||
|
b=`basename $$pp .marker`; \
|
||||||
|
sed -n \
|
||||||
|
-e "/FDT_DRIVER_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $$b/;p;}" \
|
||||||
|
-e "/FDT_DRIVER_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $$b/;p;}" $$pp; \
|
||||||
|
done) | sort -u > $@
|
||||||
|
platform_DATA += fdt.lst
|
||||||
|
CLEANFILES += fdt.lst
|
||||||
|
|
||||||
parttool.lst: $(MARKER_FILES)
|
parttool.lst: $(MARKER_FILES)
|
||||||
(for pp in $^; do \
|
(for pp in $^; do \
|
||||||
b=`basename $$pp .marker`; \
|
b=`basename $$pp .marker`; \
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -65,20 +65,28 @@ kernel = {
|
|||||||
arm64_efi_ldflags = '-Wl,-r,-d';
|
arm64_efi_ldflags = '-Wl,-r,-d';
|
||||||
arm64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame';
|
arm64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame';
|
||||||
|
|
||||||
|
riscv32_efi_ldflags = '-Wl,-r,-d';
|
||||||
|
riscv32_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame';
|
||||||
|
|
||||||
|
riscv64_efi_ldflags = '-Wl,-r,-d';
|
||||||
|
riscv64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame';
|
||||||
|
|
||||||
i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||||
i386_qemu_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_qemu_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||||
i386_coreboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_coreboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_coreboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
i386_coreboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||||
i386_multiboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_multiboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_multiboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
i386_multiboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||||
i386_ieee1275_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_ieee1275_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_ieee1275_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x10000';
|
i386_ieee1275_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x10000';
|
||||||
i386_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_xen_ldflags = '$(TARGET_IMG_BASE_LDOPT),0';
|
i386_xen_ldflags = '$(TARGET_IMG_BASE_LDOPT),0';
|
||||||
x86_64_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
x86_64_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
x86_64_xen_ldflags = '$(TARGET_IMG_BASE_LDOPT),0';
|
x86_64_xen_ldflags = '$(TARGET_IMG_BASE_LDOPT),0';
|
||||||
|
i386_xen_pvh_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
|
i386_xen_pvh_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x100000';
|
||||||
|
|
||||||
mips_loongson_ldflags = '-Wl,-Ttext,0x80200000';
|
mips_loongson_ldflags = '-Wl,-Ttext,0x80200000';
|
||||||
powerpc_ieee1275_ldflags = '-Wl,-Ttext,0x200000';
|
powerpc_ieee1275_ldflags = '-Wl,-Ttext,0x200000';
|
||||||
@ -92,12 +100,15 @@ kernel = {
|
|||||||
emu_cppflags = '$(CPPFLAGS_GNULIB)';
|
emu_cppflags = '$(CPPFLAGS_GNULIB)';
|
||||||
arm_uboot_ldflags = '-Wl,-r,-d';
|
arm_uboot_ldflags = '-Wl,-r,-d';
|
||||||
arm_uboot_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
|
arm_uboot_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
|
||||||
|
arm_coreboot_ldflags = '-Wl,-r,-d';
|
||||||
|
arm_coreboot_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
|
||||||
|
|
||||||
i386_pc_startup = kern/i386/pc/startup.S;
|
i386_pc_startup = kern/i386/pc/startup.S;
|
||||||
i386_efi_startup = kern/i386/efi/startup.S;
|
i386_efi_startup = kern/i386/efi/startup.S;
|
||||||
x86_64_efi_startup = kern/x86_64/efi/startup.S;
|
x86_64_efi_startup = kern/x86_64/efi/startup.S;
|
||||||
i386_xen_startup = kern/i386/xen/startup.S;
|
i386_xen_startup = kern/i386/xen/startup.S;
|
||||||
x86_64_xen_startup = kern/x86_64/xen/startup.S;
|
x86_64_xen_startup = kern/x86_64/xen/startup.S;
|
||||||
|
i386_xen_pvh_startup = kern/i386/xen/startup_pvh.S;
|
||||||
i386_qemu_startup = kern/i386/qemu/startup.S;
|
i386_qemu_startup = kern/i386/qemu/startup.S;
|
||||||
i386_ieee1275_startup = kern/i386/ieee1275/startup.S;
|
i386_ieee1275_startup = kern/i386/ieee1275/startup.S;
|
||||||
i386_coreboot_startup = kern/i386/coreboot/startup.S;
|
i386_coreboot_startup = kern/i386/coreboot/startup.S;
|
||||||
@ -105,9 +116,12 @@ kernel = {
|
|||||||
mips_startup = kern/mips/startup.S;
|
mips_startup = kern/mips/startup.S;
|
||||||
sparc64_ieee1275_startup = kern/sparc64/ieee1275/crt0.S;
|
sparc64_ieee1275_startup = kern/sparc64/ieee1275/crt0.S;
|
||||||
powerpc_ieee1275_startup = kern/powerpc/ieee1275/startup.S;
|
powerpc_ieee1275_startup = kern/powerpc/ieee1275/startup.S;
|
||||||
arm_uboot_startup = kern/arm/uboot/startup.S;
|
arm_uboot_startup = kern/arm/startup.S;
|
||||||
|
arm_coreboot_startup = kern/arm/startup.S;
|
||||||
arm_efi_startup = kern/arm/efi/startup.S;
|
arm_efi_startup = kern/arm/efi/startup.S;
|
||||||
arm64_efi_startup = kern/arm64/efi/startup.S;
|
arm64_efi_startup = kern/arm64/efi/startup.S;
|
||||||
|
riscv32_efi_startup = kern/riscv/efi/startup.S;
|
||||||
|
riscv64_efi_startup = kern/riscv/efi/startup.S;
|
||||||
|
|
||||||
common = kern/command.c;
|
common = kern/command.c;
|
||||||
common = kern/corecmd.c;
|
common = kern/corecmd.c;
|
||||||
@ -149,6 +163,21 @@ kernel = {
|
|||||||
uboot = kern/uboot/init.c;
|
uboot = kern/uboot/init.c;
|
||||||
uboot = kern/uboot/hw.c;
|
uboot = kern/uboot/hw.c;
|
||||||
uboot = term/uboot/console.c;
|
uboot = term/uboot/console.c;
|
||||||
|
arm_uboot = kern/arm/uboot/init.c;
|
||||||
|
arm_uboot = kern/arm/uboot/uboot.S;
|
||||||
|
|
||||||
|
arm_coreboot = kern/arm/coreboot/init.c;
|
||||||
|
arm_coreboot = kern/arm/coreboot/timer.c;
|
||||||
|
arm_coreboot = kern/arm/coreboot/coreboot.S;
|
||||||
|
arm_coreboot = lib/fdt.c;
|
||||||
|
arm_coreboot = bus/fdt.c;
|
||||||
|
arm_coreboot = term/ps2.c;
|
||||||
|
arm_coreboot = term/arm/pl050.c;
|
||||||
|
arm_coreboot = term/arm/cros.c;
|
||||||
|
arm_coreboot = term/arm/cros_ec.c;
|
||||||
|
arm_coreboot = bus/spi/rk3288_spi.c;
|
||||||
|
arm_coreboot = commands/keylayouts.c;
|
||||||
|
arm_coreboot = kern/arm/coreboot/dma.c;
|
||||||
|
|
||||||
terminfoinkernel = term/terminfo.c;
|
terminfoinkernel = term/terminfo.c;
|
||||||
terminfoinkernel = term/tparm.c;
|
terminfoinkernel = term/tparm.c;
|
||||||
@ -159,12 +188,13 @@ kernel = {
|
|||||||
|
|
||||||
i386 = kern/i386/dl.c;
|
i386 = kern/i386/dl.c;
|
||||||
i386_xen = kern/i386/dl.c;
|
i386_xen = kern/i386/dl.c;
|
||||||
|
i386_xen_pvh = kern/i386/dl.c;
|
||||||
|
|
||||||
i386_coreboot = kern/i386/coreboot/init.c;
|
i386_coreboot = kern/i386/coreboot/init.c;
|
||||||
i386_multiboot = kern/i386/coreboot/init.c;
|
i386_multiboot = kern/i386/coreboot/init.c;
|
||||||
i386_qemu = kern/i386/qemu/init.c;
|
i386_qemu = kern/i386/qemu/init.c;
|
||||||
i386_coreboot_multiboot_qemu = term/i386/pc/vga_text.c;
|
i386_coreboot_multiboot_qemu = term/i386/pc/vga_text.c;
|
||||||
i386_coreboot = video/i386/coreboot/cbfb.c;
|
coreboot = video/coreboot/cbfb.c;
|
||||||
|
|
||||||
efi = disk/efi/efidisk.c;
|
efi = disk/efi/efidisk.c;
|
||||||
efi = kern/efi/efi.c;
|
efi = kern/efi/efi.c;
|
||||||
@ -204,6 +234,14 @@ kernel = {
|
|||||||
xen = disk/xen/xendisk.c;
|
xen = disk/xen/xendisk.c;
|
||||||
xen = commands/boot.c;
|
xen = commands/boot.c;
|
||||||
|
|
||||||
|
i386_xen_pvh = commands/boot.c;
|
||||||
|
i386_xen_pvh = disk/xen/xendisk.c;
|
||||||
|
i386_xen_pvh = kern/i386/tsc.c;
|
||||||
|
i386_xen_pvh = kern/i386/xen/tsc.c;
|
||||||
|
i386_xen_pvh = kern/i386/xen/pvh.c;
|
||||||
|
i386_xen_pvh = kern/xen/init.c;
|
||||||
|
i386_xen_pvh = term/xen/console.c;
|
||||||
|
|
||||||
ia64_efi = kern/ia64/efi/startup.S;
|
ia64_efi = kern/ia64/efi/startup.S;
|
||||||
ia64_efi = kern/ia64/efi/init.c;
|
ia64_efi = kern/ia64/efi/init.c;
|
||||||
ia64_efi = kern/ia64/dl.c;
|
ia64_efi = kern/ia64/dl.c;
|
||||||
@ -211,12 +249,17 @@ kernel = {
|
|||||||
ia64_efi = kern/ia64/cache.c;
|
ia64_efi = kern/ia64/cache.c;
|
||||||
|
|
||||||
arm_efi = kern/arm/efi/init.c;
|
arm_efi = kern/arm/efi/init.c;
|
||||||
arm_efi = kern/arm/efi/misc.c;
|
|
||||||
arm_efi = kern/efi/fdt.c;
|
arm_efi = kern/efi/fdt.c;
|
||||||
|
|
||||||
arm64_efi = kern/arm64/efi/init.c;
|
arm64_efi = kern/arm64/efi/init.c;
|
||||||
arm64_efi = kern/efi/fdt.c;
|
arm64_efi = kern/efi/fdt.c;
|
||||||
|
|
||||||
|
riscv32_efi = kern/riscv/efi/init.c;
|
||||||
|
riscv32_efi = kern/efi/fdt.c;
|
||||||
|
|
||||||
|
riscv64_efi = kern/riscv/efi/init.c;
|
||||||
|
riscv64_efi = kern/efi/fdt.c;
|
||||||
|
|
||||||
i386_pc = kern/i386/pc/init.c;
|
i386_pc = kern/i386/pc/init.c;
|
||||||
i386_pc = kern/i386/pc/mmap.c;
|
i386_pc = kern/i386/pc/mmap.c;
|
||||||
i386_pc = term/i386/pc/console.c;
|
i386_pc = term/i386/pc/console.c;
|
||||||
@ -225,8 +268,10 @@ kernel = {
|
|||||||
i386_qemu = kern/vga_init.c;
|
i386_qemu = kern/vga_init.c;
|
||||||
i386_qemu = kern/i386/qemu/mmap.c;
|
i386_qemu = kern/i386/qemu/mmap.c;
|
||||||
|
|
||||||
i386_coreboot = kern/i386/coreboot/mmap.c;
|
coreboot = kern/coreboot/mmap.c;
|
||||||
i386_coreboot = kern/i386/coreboot/cbtable.c;
|
i386_coreboot = kern/i386/coreboot/cbtable.c;
|
||||||
|
coreboot = kern/coreboot/cbtable.c;
|
||||||
|
arm_coreboot = kern/arm/coreboot/cbtable.c;
|
||||||
|
|
||||||
i386_multiboot = kern/i386/multiboot_mmap.c;
|
i386_multiboot = kern/i386/multiboot_mmap.c;
|
||||||
|
|
||||||
@ -238,6 +283,7 @@ kernel = {
|
|||||||
mips_qemu_mips = term/ns8250.c;
|
mips_qemu_mips = term/ns8250.c;
|
||||||
mips_qemu_mips = term/serial.c;
|
mips_qemu_mips = term/serial.c;
|
||||||
mips_qemu_mips = term/at_keyboard.c;
|
mips_qemu_mips = term/at_keyboard.c;
|
||||||
|
mips_qemu_mips = term/ps2.c;
|
||||||
mips_qemu_mips = commands/boot.c;
|
mips_qemu_mips = commands/boot.c;
|
||||||
mips_qemu_mips = commands/keylayouts.c;
|
mips_qemu_mips = commands/keylayouts.c;
|
||||||
mips_qemu_mips = term/i386/pc/vga_text.c;
|
mips_qemu_mips = term/i386/pc/vga_text.c;
|
||||||
@ -253,6 +299,7 @@ kernel = {
|
|||||||
mips_loongson = bus/pci.c;
|
mips_loongson = bus/pci.c;
|
||||||
mips_loongson = kern/mips/loongson/init.c;
|
mips_loongson = kern/mips/loongson/init.c;
|
||||||
mips_loongson = term/at_keyboard.c;
|
mips_loongson = term/at_keyboard.c;
|
||||||
|
mips_loongson = term/ps2.c;
|
||||||
mips_loongson = commands/boot.c;
|
mips_loongson = commands/boot.c;
|
||||||
mips_loongson = term/serial.c;
|
mips_loongson = term/serial.c;
|
||||||
mips_loongson = video/sm712.c;
|
mips_loongson = video/sm712.c;
|
||||||
@ -270,6 +317,7 @@ kernel = {
|
|||||||
sparc64_ieee1275 = kern/sparc64/cache.S;
|
sparc64_ieee1275 = kern/sparc64/cache.S;
|
||||||
sparc64_ieee1275 = kern/sparc64/dl.c;
|
sparc64_ieee1275 = kern/sparc64/dl.c;
|
||||||
sparc64_ieee1275 = kern/sparc64/ieee1275/ieee1275.c;
|
sparc64_ieee1275 = kern/sparc64/ieee1275/ieee1275.c;
|
||||||
|
sparc64_ieee1275 = disk/ieee1275/obdisk.c;
|
||||||
|
|
||||||
arm = kern/arm/dl.c;
|
arm = kern/arm/dl.c;
|
||||||
arm = kern/arm/dl_helper.c;
|
arm = kern/arm/dl_helper.c;
|
||||||
@ -284,6 +332,14 @@ kernel = {
|
|||||||
arm64 = kern/arm64/dl.c;
|
arm64 = kern/arm64/dl.c;
|
||||||
arm64 = kern/arm64/dl_helper.c;
|
arm64 = kern/arm64/dl_helper.c;
|
||||||
|
|
||||||
|
riscv32 = kern/riscv/cache.c;
|
||||||
|
riscv32 = kern/riscv/cache_flush.S;
|
||||||
|
riscv32 = kern/riscv/dl.c;
|
||||||
|
|
||||||
|
riscv64 = kern/riscv/cache.c;
|
||||||
|
riscv64 = kern/riscv/cache_flush.S;
|
||||||
|
riscv64 = kern/riscv/dl.c;
|
||||||
|
|
||||||
emu = disk/host.c;
|
emu = disk/host.c;
|
||||||
emu = kern/emu/cache_s.S;
|
emu = kern/emu/cache_s.S;
|
||||||
emu = kern/emu/hostdisk.c;
|
emu = kern/emu/hostdisk.c;
|
||||||
@ -339,7 +395,7 @@ program = {
|
|||||||
|
|
||||||
ldadd = 'kernel.exec$(EXEEXT)';
|
ldadd = 'kernel.exec$(EXEEXT)';
|
||||||
ldadd = '$(MODULE_FILES)';
|
ldadd = '$(MODULE_FILES)';
|
||||||
ldadd = 'gnulib/libgnu.a $(LIBINTL) $(LIBUTIL) $(LIBSDL) $(LIBUSB) $(LIBPCIACCESS) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = 'lib/gnulib/libgnu.a $(LIBINTL) $(LIBUTIL) $(LIBSDL) $(LIBUSB) $(LIBPCIACCESS) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
|
|
||||||
enable = emu;
|
enable = emu;
|
||||||
};
|
};
|
||||||
@ -351,7 +407,7 @@ program = {
|
|||||||
emu_nodist = symlist.c;
|
emu_nodist = symlist.c;
|
||||||
|
|
||||||
ldadd = 'kernel.exec$(EXEEXT)';
|
ldadd = 'kernel.exec$(EXEEXT)';
|
||||||
ldadd = 'gnulib/libgnu.a $(LIBINTL) $(LIBUTIL) $(LIBSDL) $(LIBUSB) $(LIBPCIACCESS) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = 'lib/gnulib/libgnu.a $(LIBINTL) $(LIBUTIL) $(LIBSDL) $(LIBUSB) $(LIBPCIACCESS) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
|
|
||||||
enable = emu;
|
enable = emu;
|
||||||
};
|
};
|
||||||
@ -369,8 +425,14 @@ image = {
|
|||||||
i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),$(GRUB_BOOT_MACHINE_LINK_ADDR)';
|
i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),$(GRUB_BOOT_MACHINE_LINK_ADDR)';
|
||||||
i386_qemu_ccasflags = '-DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)';
|
i386_qemu_ccasflags = '-DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)';
|
||||||
|
|
||||||
sparc64_ieee1275_objcopyflags = '-O a.out-sunos-big';
|
/* The entry point for a.out binaries on sparc64 starts
|
||||||
sparc64_ieee1275_ldflags = ' -Wl,-Ttext=0x4000';
|
at 0x4000. Since we are writing the 32 bytes long a.out
|
||||||
|
header in the assembly code ourselves, we need to tell
|
||||||
|
the linker to adjust the start of the text segment to
|
||||||
|
0x4000 - 0x20 = 0x3fe0.
|
||||||
|
*/
|
||||||
|
sparc64_ieee1275_ldflags = ' -Wl,-Ttext=0x3fe0';
|
||||||
|
sparc64_ieee1275_objcopyflags = '-O binary';
|
||||||
|
|
||||||
objcopyflags = '-O binary';
|
objcopyflags = '-O binary';
|
||||||
enable = i386_pc;
|
enable = i386_pc;
|
||||||
@ -399,8 +461,10 @@ image = {
|
|||||||
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x7C00';
|
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x7C00';
|
||||||
|
|
||||||
sparc64_ieee1275 = boot/sparc64/ieee1275/boot.S;
|
sparc64_ieee1275 = boot/sparc64/ieee1275/boot.S;
|
||||||
sparc64_ieee1275_objcopyflags = '-O a.out-sunos-big';
|
|
||||||
sparc64_ieee1275_ldflags = ' -Wl,-Ttext=0x4000';
|
/* See comment for sparc64_ieee1275_ldflags above. */
|
||||||
|
sparc64_ieee1275_ldflags = ' -Wl,-Ttext=0x3fe0';
|
||||||
|
sparc64_ieee1275_objcopyflags = '-O binary';
|
||||||
sparc64_ieee1275_cppflags = '-DCDBOOT=1';
|
sparc64_ieee1275_cppflags = '-DCDBOOT=1';
|
||||||
|
|
||||||
objcopyflags = '-O binary';
|
objcopyflags = '-O binary';
|
||||||
@ -574,7 +638,10 @@ module = {
|
|||||||
module = {
|
module = {
|
||||||
name = ehci;
|
name = ehci;
|
||||||
common = bus/usb/ehci.c;
|
common = bus/usb/ehci.c;
|
||||||
|
arm_coreboot = bus/usb/ehci-fdt.c;
|
||||||
|
pci = bus/usb/ehci-pci.c;
|
||||||
enable = pci;
|
enable = pci;
|
||||||
|
enable = arm_coreboot;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
@ -641,6 +708,7 @@ module = {
|
|||||||
module = {
|
module = {
|
||||||
name = cbtable;
|
name = cbtable;
|
||||||
common = kern/i386/coreboot/cbtable.c;
|
common = kern/i386/coreboot/cbtable.c;
|
||||||
|
common = kern/coreboot/cbtable.c;
|
||||||
enable = i386_pc;
|
enable = i386_pc;
|
||||||
enable = i386_efi;
|
enable = i386_efi;
|
||||||
enable = i386_qemu;
|
enable = i386_qemu;
|
||||||
@ -671,7 +739,7 @@ module = {
|
|||||||
name = regexp;
|
name = regexp;
|
||||||
common = commands/regexp.c;
|
common = commands/regexp.c;
|
||||||
common = commands/wildcard.c;
|
common = commands/wildcard.c;
|
||||||
common = gnulib/regex.c;
|
common = lib/gnulib/regex.c;
|
||||||
cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
|
cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
|
||||||
cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
|
cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
|
||||||
};
|
};
|
||||||
@ -754,6 +822,9 @@ module = {
|
|||||||
enable = arm_efi;
|
enable = arm_efi;
|
||||||
enable = arm64_efi;
|
enable = arm64_efi;
|
||||||
enable = arm_uboot;
|
enable = arm_uboot;
|
||||||
|
enable = arm_coreboot;
|
||||||
|
enable = riscv32_efi;
|
||||||
|
enable = riscv64_efi;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
@ -775,6 +846,7 @@ module = {
|
|||||||
name = cpuid;
|
name = cpuid;
|
||||||
common = commands/i386/cpuid.c;
|
common = commands/i386/cpuid.c;
|
||||||
enable = x86;
|
enable = x86;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = i386_xen;
|
enable = i386_xen;
|
||||||
enable = x86_64_xen;
|
enable = x86_64_xen;
|
||||||
};
|
};
|
||||||
@ -834,27 +906,27 @@ module = {
|
|||||||
i386_coreboot = lib/i386/halt.c;
|
i386_coreboot = lib/i386/halt.c;
|
||||||
i386_qemu = lib/i386/halt.c;
|
i386_qemu = lib/i386/halt.c;
|
||||||
xen = lib/xen/halt.c;
|
xen = lib/xen/halt.c;
|
||||||
|
i386_xen_pvh = lib/xen/halt.c;
|
||||||
efi = lib/efi/halt.c;
|
efi = lib/efi/halt.c;
|
||||||
ieee1275 = lib/ieee1275/halt.c;
|
ieee1275 = lib/ieee1275/halt.c;
|
||||||
emu = lib/emu/halt.c;
|
emu = lib/emu/halt.c;
|
||||||
uboot = lib/uboot/halt.c;
|
uboot = lib/dummy/halt.c;
|
||||||
|
arm_coreboot = lib/dummy/halt.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = reboot;
|
name = reboot;
|
||||||
i386 = lib/i386/reboot.c;
|
i386 = lib/i386/reboot.c;
|
||||||
i386 = lib/i386/reboot_trampoline.S;
|
i386 = lib/i386/reboot_trampoline.S;
|
||||||
ia64_efi = lib/efi/reboot.c;
|
|
||||||
x86_64_efi = lib/efi/reboot.c;
|
|
||||||
arm_efi = lib/efi/reboot.c;
|
|
||||||
arm64_efi = lib/efi/reboot.c;
|
|
||||||
powerpc_ieee1275 = lib/ieee1275/reboot.c;
|
powerpc_ieee1275 = lib/ieee1275/reboot.c;
|
||||||
sparc64_ieee1275 = lib/ieee1275/reboot.c;
|
sparc64_ieee1275 = lib/ieee1275/reboot.c;
|
||||||
mips_arc = lib/mips/arc/reboot.c;
|
mips_arc = lib/mips/arc/reboot.c;
|
||||||
mips_loongson = lib/mips/loongson/reboot.c;
|
mips_loongson = lib/mips/loongson/reboot.c;
|
||||||
mips_qemu_mips = lib/mips/qemu_mips/reboot.c;
|
mips_qemu_mips = lib/mips/qemu_mips/reboot.c;
|
||||||
xen = lib/xen/reboot.c;
|
xen = lib/xen/reboot.c;
|
||||||
|
i386_xen_pvh = lib/xen/reboot.c;
|
||||||
uboot = lib/uboot/reboot.c;
|
uboot = lib/uboot/reboot.c;
|
||||||
|
arm_coreboot = lib/dummy/reboot.c;
|
||||||
common = commands/reboot.c;
|
common = commands/reboot.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -864,16 +936,26 @@ module = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = verify;
|
name = pgp;
|
||||||
common = commands/verify.c;
|
common = commands/pgp.c;
|
||||||
cflags = '$(CFLAGS_POSIX)';
|
cflags = '$(CFLAGS_POSIX)';
|
||||||
cppflags = '-I$(srcdir)/lib/posix_wrap';
|
cppflags = '-I$(srcdir)/lib/posix_wrap';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = verifiers;
|
||||||
|
common = commands/verifiers.c;
|
||||||
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = shim_lock;
|
||||||
|
common = commands/efi/shim_lock.c;
|
||||||
|
enable = x86_64_efi;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = hdparm;
|
name = hdparm;
|
||||||
common = commands/hdparm.c;
|
common = commands/hdparm.c;
|
||||||
common = lib/hexdump.c;
|
|
||||||
enable = pci;
|
enable = pci;
|
||||||
enable = mips_qemu_mips;
|
enable = mips_qemu_mips;
|
||||||
};
|
};
|
||||||
@ -1237,12 +1319,27 @@ module = {
|
|||||||
common = fs/bfs.c;
|
common = fs/bfs.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = zstd;
|
||||||
|
common = lib/zstd/debug.c;
|
||||||
|
common = lib/zstd/entropy_common.c;
|
||||||
|
common = lib/zstd/error_private.c;
|
||||||
|
common = lib/zstd/fse_decompress.c;
|
||||||
|
common = lib/zstd/huf_decompress.c;
|
||||||
|
common = lib/zstd/module.c;
|
||||||
|
common = lib/zstd/xxhash.c;
|
||||||
|
common = lib/zstd/zstd_common.c;
|
||||||
|
common = lib/zstd/zstd_decompress.c;
|
||||||
|
cflags = '$(CFLAGS_POSIX) -Wno-undef';
|
||||||
|
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/zstd';
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = btrfs;
|
name = btrfs;
|
||||||
common = fs/btrfs.c;
|
common = fs/btrfs.c;
|
||||||
common = lib/crc.c;
|
common = lib/crc.c;
|
||||||
cflags = '$(CFLAGS_POSIX) -Wno-undef';
|
cflags = '$(CFLAGS_POSIX) -Wno-undef';
|
||||||
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/minilzo -DMINILZO_HAVE_CONFIG_H';
|
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/minilzo -I$(srcdir)/lib/zstd -DMINILZO_HAVE_CONFIG_H';
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
@ -1290,6 +1387,11 @@ module = {
|
|||||||
common = fs/exfat.c;
|
common = fs/exfat.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = f2fs;
|
||||||
|
common = fs/f2fs.c;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = fshelp;
|
name = fshelp;
|
||||||
common = fs/fshelp.c;
|
common = fs/fshelp.c;
|
||||||
@ -1517,12 +1619,18 @@ module = {
|
|||||||
x86 = lib/i386/relocator16.S;
|
x86 = lib/i386/relocator16.S;
|
||||||
x86 = lib/i386/relocator32.S;
|
x86 = lib/i386/relocator32.S;
|
||||||
x86 = lib/i386/relocator64.S;
|
x86 = lib/i386/relocator64.S;
|
||||||
|
i386_xen_pvh = lib/i386/relocator16.S;
|
||||||
|
i386_xen_pvh = lib/i386/relocator32.S;
|
||||||
|
i386_xen_pvh = lib/i386/relocator64.S;
|
||||||
i386 = lib/i386/relocator_asm.S;
|
i386 = lib/i386/relocator_asm.S;
|
||||||
|
i386_xen_pvh = lib/i386/relocator_asm.S;
|
||||||
x86_64 = lib/x86_64/relocator_asm.S;
|
x86_64 = lib/x86_64/relocator_asm.S;
|
||||||
i386_xen = lib/i386/relocator_asm.S;
|
i386_xen = lib/i386/relocator_asm.S;
|
||||||
x86_64_xen = lib/x86_64/relocator_asm.S;
|
x86_64_xen = lib/x86_64/relocator_asm.S;
|
||||||
x86 = lib/i386/relocator.c;
|
x86 = lib/i386/relocator.c;
|
||||||
x86 = lib/i386/relocator_common_c.c;
|
x86 = lib/i386/relocator_common_c.c;
|
||||||
|
i386_xen_pvh = lib/i386/relocator.c;
|
||||||
|
i386_xen_pvh = lib/i386/relocator_common_c.c;
|
||||||
ieee1275 = lib/ieee1275/relocator.c;
|
ieee1275 = lib/ieee1275/relocator.c;
|
||||||
efi = lib/efi/relocator.c;
|
efi = lib/efi/relocator.c;
|
||||||
mips = lib/mips/relocator_asm.S;
|
mips = lib/mips/relocator_asm.S;
|
||||||
@ -1541,6 +1649,7 @@ module = {
|
|||||||
enable = mips;
|
enable = mips;
|
||||||
enable = powerpc;
|
enable = powerpc;
|
||||||
enable = x86;
|
enable = x86;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = xen;
|
enable = xen;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1548,12 +1657,14 @@ module = {
|
|||||||
name = datetime;
|
name = datetime;
|
||||||
cmos = lib/cmos_datetime.c;
|
cmos = lib/cmos_datetime.c;
|
||||||
efi = lib/efi/datetime.c;
|
efi = lib/efi/datetime.c;
|
||||||
uboot = lib/uboot/datetime.c;
|
uboot = lib/dummy/datetime.c;
|
||||||
|
arm_coreboot = lib/dummy/datetime.c;
|
||||||
sparc64_ieee1275 = lib/ieee1275/datetime.c;
|
sparc64_ieee1275 = lib/ieee1275/datetime.c;
|
||||||
powerpc_ieee1275 = lib/ieee1275/datetime.c;
|
powerpc_ieee1275 = lib/ieee1275/datetime.c;
|
||||||
sparc64_ieee1275 = lib/ieee1275/cmos.c;
|
sparc64_ieee1275 = lib/ieee1275/cmos.c;
|
||||||
powerpc_ieee1275 = lib/ieee1275/cmos.c;
|
powerpc_ieee1275 = lib/ieee1275/cmos.c;
|
||||||
xen = lib/xen/datetime.c;
|
xen = lib/xen/datetime.c;
|
||||||
|
i386_xen_pvh = lib/xen/datetime.c;
|
||||||
|
|
||||||
mips_arc = lib/arc/datetime.c;
|
mips_arc = lib/arc/datetime.c;
|
||||||
enable = noemu;
|
enable = noemu;
|
||||||
@ -1571,6 +1682,7 @@ module = {
|
|||||||
extra_dist = lib/ia64/longjmp.S;
|
extra_dist = lib/ia64/longjmp.S;
|
||||||
extra_dist = lib/arm/setjmp.S;
|
extra_dist = lib/arm/setjmp.S;
|
||||||
extra_dist = lib/arm64/setjmp.S;
|
extra_dist = lib/arm64/setjmp.S;
|
||||||
|
extra_dist = lib/riscv/setjmp.S;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
@ -1601,8 +1713,6 @@ module = {
|
|||||||
module = {
|
module = {
|
||||||
name = linux16;
|
name = linux16;
|
||||||
common = loader/i386/pc/linux.c;
|
common = loader/i386/pc/linux.c;
|
||||||
common = loader/linux.c;
|
|
||||||
common = lib/cmdline.c;
|
|
||||||
enable = x86;
|
enable = x86;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1637,24 +1747,24 @@ module = {
|
|||||||
cppflags = "-DGRUB_USE_MULTIBOOT2";
|
cppflags = "-DGRUB_USE_MULTIBOOT2";
|
||||||
|
|
||||||
common = loader/multiboot.c;
|
common = loader/multiboot.c;
|
||||||
common = lib/cmdline.c;
|
|
||||||
common = loader/multiboot_mbi2.c;
|
common = loader/multiboot_mbi2.c;
|
||||||
enable = x86;
|
enable = x86;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = mips;
|
enable = mips;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = multiboot;
|
name = multiboot;
|
||||||
common = loader/multiboot.c;
|
common = loader/multiboot.c;
|
||||||
common = lib/cmdline.c;
|
|
||||||
x86 = loader/i386/multiboot_mbi.c;
|
x86 = loader/i386/multiboot_mbi.c;
|
||||||
|
i386_xen_pvh = loader/i386/multiboot_mbi.c;
|
||||||
extra_dist = loader/multiboot_elfxx.c;
|
extra_dist = loader/multiboot_elfxx.c;
|
||||||
enable = x86;
|
enable = x86;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = xen_boot;
|
name = xen_boot;
|
||||||
common = lib/cmdline.c;
|
|
||||||
arm64 = loader/arm64/xen_boot.c;
|
arm64 = loader/arm64/xen_boot.c;
|
||||||
enable = arm64;
|
enable = arm64;
|
||||||
};
|
};
|
||||||
@ -1662,14 +1772,20 @@ module = {
|
|||||||
module = {
|
module = {
|
||||||
name = linux;
|
name = linux;
|
||||||
x86 = loader/i386/linux.c;
|
x86 = loader/i386/linux.c;
|
||||||
|
i386_xen_pvh = loader/i386/linux.c;
|
||||||
xen = loader/i386/xen.c;
|
xen = loader/i386/xen.c;
|
||||||
i386_pc = lib/i386/pc/vesa_modes_table.c;
|
i386_pc = lib/i386/pc/vesa_modes_table.c;
|
||||||
|
i386_xen_pvh = lib/i386/pc/vesa_modes_table.c;
|
||||||
mips = loader/mips/linux.c;
|
mips = loader/mips/linux.c;
|
||||||
powerpc_ieee1275 = loader/powerpc/ieee1275/linux.c;
|
powerpc_ieee1275 = loader/powerpc/ieee1275/linux.c;
|
||||||
sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
|
sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
|
||||||
ia64_efi = loader/ia64/efi/linux.c;
|
ia64_efi = loader/ia64/efi/linux.c;
|
||||||
arm = loader/arm/linux.c;
|
arm_coreboot = loader/arm/linux.c;
|
||||||
|
arm_efi = loader/arm64/linux.c;
|
||||||
|
arm_uboot = loader/arm/linux.c;
|
||||||
arm64 = loader/arm64/linux.c;
|
arm64 = loader/arm64/linux.c;
|
||||||
|
riscv32 = loader/riscv/linux.c;
|
||||||
|
riscv64 = loader/riscv/linux.c;
|
||||||
common = loader/linux.c;
|
common = loader/linux.c;
|
||||||
common = lib/cmdline.c;
|
common = lib/cmdline.c;
|
||||||
enable = noemu;
|
enable = noemu;
|
||||||
@ -1677,7 +1793,7 @@ module = {
|
|||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = fdt;
|
name = fdt;
|
||||||
arm64 = loader/arm64/fdt.c;
|
efi = loader/efi/fdt.c;
|
||||||
common = lib/fdt.c;
|
common = lib/fdt.c;
|
||||||
enable = fdt;
|
enable = fdt;
|
||||||
};
|
};
|
||||||
@ -1749,6 +1865,8 @@ module = {
|
|||||||
common = mmap/mmap.c;
|
common = mmap/mmap.c;
|
||||||
x86 = mmap/i386/uppermem.c;
|
x86 = mmap/i386/uppermem.c;
|
||||||
x86 = mmap/i386/mmap.c;
|
x86 = mmap/i386/mmap.c;
|
||||||
|
i386_xen_pvh = mmap/i386/uppermem.c;
|
||||||
|
i386_xen_pvh = mmap/i386/mmap.c;
|
||||||
|
|
||||||
i386_pc = mmap/i386/pc/mmap.c;
|
i386_pc = mmap/i386/pc/mmap.c;
|
||||||
i386_pc = mmap/i386/pc/mmap_helper.S;
|
i386_pc = mmap/i386/pc/mmap_helper.S;
|
||||||
@ -1758,9 +1876,12 @@ module = {
|
|||||||
mips = mmap/mips/uppermem.c;
|
mips = mmap/mips/uppermem.c;
|
||||||
|
|
||||||
enable = x86;
|
enable = x86;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = ia64_efi;
|
enable = ia64_efi;
|
||||||
enable = arm_efi;
|
enable = arm_efi;
|
||||||
enable = arm64_efi;
|
enable = arm64_efi;
|
||||||
|
enable = riscv32_efi;
|
||||||
|
enable = riscv64_efi;
|
||||||
enable = mips;
|
enable = mips;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1869,6 +1990,7 @@ module = {
|
|||||||
module = {
|
module = {
|
||||||
name = at_keyboard;
|
name = at_keyboard;
|
||||||
common = term/at_keyboard.c;
|
common = term/at_keyboard.c;
|
||||||
|
common = term/ps2.c;
|
||||||
enable = x86;
|
enable = x86;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1961,6 +2083,11 @@ module = {
|
|||||||
common = tests/example_functional_test.c;
|
common = tests/example_functional_test.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = strtoull_test;
|
||||||
|
common = tests/strtoull_test.c;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = setjmp_test;
|
name = setjmp_test;
|
||||||
common = tests/setjmp_test.c;
|
common = tests/setjmp_test.c;
|
||||||
@ -1991,6 +2118,7 @@ module = {
|
|||||||
name = legacy_password_test;
|
name = legacy_password_test;
|
||||||
common = tests/legacy_password_test.c;
|
common = tests/legacy_password_test.c;
|
||||||
enable = i386_pc;
|
enable = i386_pc;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = i386_efi;
|
enable = i386_efi;
|
||||||
enable = x86_64_efi;
|
enable = x86_64_efi;
|
||||||
enable = emu;
|
enable = emu;
|
||||||
@ -2189,6 +2317,7 @@ module = {
|
|||||||
xen = lib/i386/pc/vesa_modes_table.c;
|
xen = lib/i386/pc/vesa_modes_table.c;
|
||||||
|
|
||||||
enable = i386_pc;
|
enable = i386_pc;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = i386_efi;
|
enable = i386_efi;
|
||||||
enable = x86_64_efi;
|
enable = x86_64_efi;
|
||||||
enable = emu;
|
enable = emu;
|
||||||
@ -2232,10 +2361,12 @@ module = {
|
|||||||
module = {
|
module = {
|
||||||
name = backtrace;
|
name = backtrace;
|
||||||
x86 = lib/i386/backtrace.c;
|
x86 = lib/i386/backtrace.c;
|
||||||
|
i386_xen_pvh = lib/i386/backtrace.c;
|
||||||
i386_xen = lib/i386/backtrace.c;
|
i386_xen = lib/i386/backtrace.c;
|
||||||
x86_64_xen = lib/i386/backtrace.c;
|
x86_64_xen = lib/i386/backtrace.c;
|
||||||
common = lib/backtrace.c;
|
common = lib/backtrace.c;
|
||||||
enable = x86;
|
enable = x86;
|
||||||
|
enable = i386_xen_pvh;
|
||||||
enable = i386_xen;
|
enable = i386_xen;
|
||||||
enable = x86_64_xen;
|
enable = x86_64_xen;
|
||||||
};
|
};
|
||||||
@ -2334,6 +2465,13 @@ module = {
|
|||||||
common = commands/testspeed.c;
|
common = commands/testspeed.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = tpm;
|
||||||
|
common = commands/tpm.c;
|
||||||
|
efi = commands/efi/tpm.c;
|
||||||
|
enable = x86_64_efi;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = tr;
|
name = tr;
|
||||||
common = commands/tr.c;
|
common = commands/tr.c;
|
||||||
@ -2355,3 +2493,13 @@ module = {
|
|||||||
common = loader/i386/xen_file64.c;
|
common = loader/i386/xen_file64.c;
|
||||||
extra_dist = loader/i386/xen_fileXX.c;
|
extra_dist = loader/i386/xen_fileXX.c;
|
||||||
};
|
};
|
||||||
|
module = {
|
||||||
|
name = rdmsr;
|
||||||
|
common = commands/i386/rdmsr.c;
|
||||||
|
enable = x86;
|
||||||
|
};
|
||||||
|
module = {
|
||||||
|
name = wrmsr;
|
||||||
|
common = commands/i386/wrmsr.c;
|
||||||
|
enable = x86;
|
||||||
|
};
|
||||||
|
21897
grub-core/Makefile.in
21897
grub-core/Makefile.in
File diff suppressed because it is too large
Load Diff
@ -37,8 +37,8 @@
|
|||||||
start:
|
start:
|
||||||
_start:
|
_start:
|
||||||
/*
|
/*
|
||||||
* _start is loaded at 0x2000 and is jumped to with
|
* _start is loaded at 0x8000 and is jumped to with
|
||||||
* CS:IP 0:0x2000 in kernel.
|
* CS:IP 0:0x8000 in kernel.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -118,7 +118,16 @@ LOCAL (codestart):
|
|||||||
|
|
||||||
#include "../../../kern/i386/realmode.S"
|
#include "../../../kern/i386/realmode.S"
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* This is a workaround for clang adding a section containing only .addrsig
|
||||||
|
* Since clang itself is unable to assemble this pseudo-opcode, just replace
|
||||||
|
* it with .text
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define addrsig text
|
||||||
#include <rs_decoder.h>
|
#include <rs_decoder.h>
|
||||||
|
#undef addrsig
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
|
@ -21,6 +21,24 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
.align 4
|
.align 4
|
||||||
|
/*
|
||||||
|
* We're writing the a.out header ourselves as newer
|
||||||
|
* upstream versions of binutils no longer support
|
||||||
|
* the a.out format on sparc64.
|
||||||
|
*
|
||||||
|
* The boot loader fits into 512 bytes with 32 bytes
|
||||||
|
* used for the a.out header, hence the text segment
|
||||||
|
* size is 512 - 32. There is no data segment and no
|
||||||
|
* code relocation, thus those fields remain zero.
|
||||||
|
*/
|
||||||
|
.word 0x1030107 /* Magic number. */
|
||||||
|
.word 512 - GRUB_BOOT_AOUT_HEADER_SIZE /* Size of text segment. */
|
||||||
|
.word 0 /* Size of initialized data. */
|
||||||
|
.word 0 /* Size of uninitialized data. */
|
||||||
|
.word 0 /* Size of symbol table || checksum. */
|
||||||
|
.word _start /* Entry point. */
|
||||||
|
.word 0 /* Size of text relocation. */
|
||||||
|
.word 0 /* Size of data relocation. */
|
||||||
.globl _start
|
.globl _start
|
||||||
_start:
|
_start:
|
||||||
/* OF CIF entry point arrives in %o4 */
|
/* OF CIF entry point arrives in %o4 */
|
||||||
@ -30,7 +48,7 @@ pic_base:
|
|||||||
|
|
||||||
#ifndef CDBOOT
|
#ifndef CDBOOT
|
||||||
/* The offsets to these locations are defined by the
|
/* The offsets to these locations are defined by the
|
||||||
* GRUB_BOOT_MACHINE_foo macros in include/grub/sparc/ieee1275/boot.h,
|
* GRUB_BOOT_MACHINE_foo macros in include/grub/sparc64/ieee1275/boot.h,
|
||||||
* and grub-setup uses this to patch these next three values as needed.
|
* and grub-setup uses this to patch these next three values as needed.
|
||||||
*
|
*
|
||||||
* The boot_path will be the OF device path of the partition where the
|
* The boot_path will be the OF device path of the partition where the
|
||||||
@ -40,10 +58,14 @@ pic_base:
|
|||||||
*
|
*
|
||||||
* After loading in that block we will execute it by jumping to the
|
* After loading in that block we will execute it by jumping to the
|
||||||
* load address plus the size of the prepended A.OUT header (32 bytes).
|
* load address plus the size of the prepended A.OUT header (32 bytes).
|
||||||
|
*
|
||||||
|
* Since this assembly code includes the 32 bytes long a.out header,
|
||||||
|
* we need to move the actual code entry point forward by the size
|
||||||
|
* of the a.out header, i.e. += GRUB_BOOT_AOUT_HEADER_SIZE.
|
||||||
*/
|
*/
|
||||||
.org GRUB_BOOT_MACHINE_BOOT_DEVPATH
|
.org GRUB_BOOT_MACHINE_BOOT_DEVPATH + GRUB_BOOT_AOUT_HEADER_SIZE
|
||||||
boot_path:
|
boot_path:
|
||||||
.org GRUB_BOOT_MACHINE_KERNEL_BYTE
|
.org GRUB_BOOT_MACHINE_KERNEL_BYTE + GRUB_BOOT_AOUT_HEADER_SIZE
|
||||||
boot_path_end:
|
boot_path_end:
|
||||||
kernel_byte: .xword (2 << 9)
|
kernel_byte: .xword (2 << 9)
|
||||||
kernel_address: .word GRUB_BOOT_MACHINE_KERNEL_ADDR
|
kernel_address: .word GRUB_BOOT_MACHINE_KERNEL_ADDR
|
||||||
@ -52,7 +74,7 @@ kernel_address: .word GRUB_BOOT_MACHINE_KERNEL_ADDR
|
|||||||
#define boot_path_end (_start + 1024)
|
#define boot_path_end (_start + 1024)
|
||||||
#include <grub/offsets.h>
|
#include <grub/offsets.h>
|
||||||
|
|
||||||
.org 8
|
.org 8 + GRUB_BOOT_AOUT_HEADER_SIZE
|
||||||
kernel_byte: .xword (2 << 9)
|
kernel_byte: .xword (2 << 9)
|
||||||
kernel_size: .word 512
|
kernel_size: .word 512
|
||||||
kernel_address: .word GRUB_BOOT_SPARC64_IEEE1275_IMAGE_ADDRESS
|
kernel_address: .word GRUB_BOOT_SPARC64_IEEE1275_IMAGE_ADDRESS
|
||||||
@ -69,6 +91,10 @@ prom_seek_name: .asciz "seek"
|
|||||||
prom_read_name: .asciz "read"
|
prom_read_name: .asciz "read"
|
||||||
prom_exit_name: .asciz "exit"
|
prom_exit_name: .asciz "exit"
|
||||||
grub_name: .asciz "GRUB "
|
grub_name: .asciz "GRUB "
|
||||||
|
#ifdef CDBOOT
|
||||||
|
prom_close_name: .asciz "close"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define GRUB_NAME_LEN 5
|
#define GRUB_NAME_LEN 5
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
@ -213,6 +239,12 @@ bootpath_known:
|
|||||||
call prom_call_3_1_o1
|
call prom_call_3_1_o1
|
||||||
#ifdef CDBOOT
|
#ifdef CDBOOT
|
||||||
LDUW_ABS(kernel_size, 0x00, %o3)
|
LDUW_ABS(kernel_size, 0x00, %o3)
|
||||||
|
|
||||||
|
GET_ABS(prom_close_name, %o0)
|
||||||
|
mov 1, %g1
|
||||||
|
mov 0, %o5
|
||||||
|
call prom_call
|
||||||
|
mov BOOTDEV_REG, %o1
|
||||||
#else
|
#else
|
||||||
mov 512, %o3
|
mov 512, %o3
|
||||||
#endif
|
#endif
|
||||||
|
256
grub-core/bus/fdt.c
Normal file
256
grub-core/bus/fdt.c
Normal file
@ -0,0 +1,256 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2016 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/fdtbus.h>
|
||||||
|
#include <grub/fdt.h>
|
||||||
|
#include <grub/term.h>
|
||||||
|
|
||||||
|
static const void *dtb;
|
||||||
|
static grub_size_t root_address_cells, root_size_cells;
|
||||||
|
/* Pointer to this symbol signals invalid mapping. */
|
||||||
|
char grub_fdtbus_invalid_mapping[1];
|
||||||
|
|
||||||
|
struct grub_fdtbus_dev *devs;
|
||||||
|
struct grub_fdtbus_driver *drivers;
|
||||||
|
|
||||||
|
int
|
||||||
|
grub_fdtbus_is_compatible (const char *compat_string,
|
||||||
|
const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
grub_size_t compatible_size;
|
||||||
|
const char *compatible = grub_fdt_get_prop (dtb, dev->node, "compatible",
|
||||||
|
&compatible_size);
|
||||||
|
if (!compatible)
|
||||||
|
return 0;
|
||||||
|
const char *compatible_end = compatible + compatible_size;
|
||||||
|
while (compatible < compatible_end)
|
||||||
|
{
|
||||||
|
if (grub_strcmp (compat_string, compatible) == 0)
|
||||||
|
return 1;
|
||||||
|
compatible += grub_strlen (compatible) + 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fdtbus_scan (struct grub_fdtbus_dev *parent)
|
||||||
|
{
|
||||||
|
int node;
|
||||||
|
for (node = grub_fdt_first_node (dtb, parent ? parent->node : 0); node >= 0;
|
||||||
|
node = grub_fdt_next_node (dtb, node))
|
||||||
|
{
|
||||||
|
struct grub_fdtbus_dev *dev;
|
||||||
|
struct grub_fdtbus_driver *driver;
|
||||||
|
dev = grub_zalloc (sizeof (*dev));
|
||||||
|
if (!dev)
|
||||||
|
{
|
||||||
|
grub_print_error ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dev->node = node;
|
||||||
|
dev->next = devs;
|
||||||
|
dev->parent = parent;
|
||||||
|
devs = dev;
|
||||||
|
FOR_LIST_ELEMENTS(driver, drivers)
|
||||||
|
if (!dev->driver && grub_fdtbus_is_compatible (driver->compatible, dev))
|
||||||
|
{
|
||||||
|
grub_dprintf ("fdtbus", "Attaching %s\n", driver->compatible);
|
||||||
|
if (driver->attach (dev) == GRUB_ERR_NONE)
|
||||||
|
{
|
||||||
|
grub_dprintf ("fdtbus", "Attached %s\n", driver->compatible);
|
||||||
|
dev->driver = driver;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
grub_print_error ();
|
||||||
|
}
|
||||||
|
fdtbus_scan (dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_fdtbus_register (struct grub_fdtbus_driver *driver)
|
||||||
|
{
|
||||||
|
struct grub_fdtbus_dev *dev;
|
||||||
|
grub_dprintf ("fdtbus", "Registering %s\n", driver->compatible);
|
||||||
|
grub_list_push (GRUB_AS_LIST_P (&drivers),
|
||||||
|
GRUB_AS_LIST (driver));
|
||||||
|
for (dev = devs; dev; dev = dev->next)
|
||||||
|
if (!dev->driver && grub_fdtbus_is_compatible (driver->compatible, dev))
|
||||||
|
{
|
||||||
|
grub_dprintf ("fdtbus", "Attaching %s (%p)\n", driver->compatible, dev);
|
||||||
|
if (driver->attach (dev) == GRUB_ERR_NONE)
|
||||||
|
{
|
||||||
|
grub_dprintf ("fdtbus", "Attached %s\n", driver->compatible);
|
||||||
|
dev->driver = driver;
|
||||||
|
}
|
||||||
|
grub_print_error ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_fdtbus_unregister (struct grub_fdtbus_driver *driver)
|
||||||
|
{
|
||||||
|
grub_list_remove (GRUB_AS_LIST (driver));
|
||||||
|
struct grub_fdtbus_dev *dev;
|
||||||
|
for (dev = devs; dev; dev = dev->next)
|
||||||
|
if (dev->driver == driver)
|
||||||
|
{
|
||||||
|
if (driver->detach)
|
||||||
|
driver->detach(dev);
|
||||||
|
dev->driver = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_fdtbus_init (const void *dtb_in, grub_size_t size)
|
||||||
|
{
|
||||||
|
if (!dtb_in || grub_fdt_check_header (dtb_in, size) < 0)
|
||||||
|
grub_fatal ("invalid FDT");
|
||||||
|
dtb = dtb_in;
|
||||||
|
const grub_uint32_t *prop = grub_fdt_get_prop (dtb, 0, "#address-cells", 0);
|
||||||
|
if (prop)
|
||||||
|
root_address_cells = grub_be_to_cpu32 (*prop);
|
||||||
|
else
|
||||||
|
root_address_cells = 1;
|
||||||
|
|
||||||
|
prop = grub_fdt_get_prop (dtb, 0, "#size-cells", 0);
|
||||||
|
if (prop)
|
||||||
|
root_size_cells = grub_be_to_cpu32 (*prop);
|
||||||
|
else
|
||||||
|
root_size_cells = 1;
|
||||||
|
|
||||||
|
fdtbus_scan (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
get_address_cells (const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
const grub_uint32_t *prop;
|
||||||
|
if (!dev)
|
||||||
|
return root_address_cells;
|
||||||
|
prop = grub_fdt_get_prop (dtb, dev->node, "#address-cells", 0);
|
||||||
|
if (prop)
|
||||||
|
return grub_be_to_cpu32 (*prop);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
get_size_cells (const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
const grub_uint32_t *prop;
|
||||||
|
if (!dev)
|
||||||
|
return root_size_cells;
|
||||||
|
prop = grub_fdt_get_prop (dtb, dev->node, "#size-cells", 0);
|
||||||
|
if (prop)
|
||||||
|
return grub_be_to_cpu32 (*prop);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_uint64_t
|
||||||
|
get64 (const grub_uint32_t *reg, grub_size_t cells)
|
||||||
|
{
|
||||||
|
grub_uint64_t val = 0;
|
||||||
|
if (cells >= 1)
|
||||||
|
val = grub_be_to_cpu32 (reg[cells - 1]);
|
||||||
|
if (cells >= 2)
|
||||||
|
val |= ((grub_uint64_t) grub_be_to_cpu32 (reg[cells - 2])) << 32;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static volatile void *
|
||||||
|
translate (const struct grub_fdtbus_dev *dev, const grub_uint32_t *reg)
|
||||||
|
{
|
||||||
|
volatile void *ret;
|
||||||
|
const grub_uint32_t *ranges;
|
||||||
|
grub_size_t ranges_size, cells_per_mapping;
|
||||||
|
grub_size_t parent_address_cells, child_address_cells, child_size_cells;
|
||||||
|
grub_size_t nmappings, i;
|
||||||
|
if (dev == 0)
|
||||||
|
{
|
||||||
|
grub_uint64_t val;
|
||||||
|
val = get64 (reg, root_address_cells);
|
||||||
|
if (sizeof (void *) == 4 && (val >> 32))
|
||||||
|
return grub_fdtbus_invalid_mapping;
|
||||||
|
return (void *) (grub_addr_t) val;
|
||||||
|
}
|
||||||
|
ranges = grub_fdt_get_prop (dtb, dev->node, "ranges", &ranges_size);
|
||||||
|
if (!ranges)
|
||||||
|
return grub_fdtbus_invalid_mapping;
|
||||||
|
if (ranges_size == 0)
|
||||||
|
return translate (dev->parent, reg);
|
||||||
|
parent_address_cells = get_address_cells (dev->parent);
|
||||||
|
child_address_cells = get_address_cells (dev);
|
||||||
|
child_size_cells = get_size_cells (dev);
|
||||||
|
cells_per_mapping = parent_address_cells + child_address_cells + child_size_cells;
|
||||||
|
nmappings = ranges_size / 4 / cells_per_mapping;
|
||||||
|
for (i = 0; i < nmappings; i++)
|
||||||
|
{
|
||||||
|
const grub_uint32_t *child_addr = &ranges[i * cells_per_mapping];
|
||||||
|
const grub_uint32_t *parent_addr = child_addr + child_address_cells;
|
||||||
|
grub_uint64_t child_size = get64 (parent_addr + parent_address_cells, child_size_cells);
|
||||||
|
|
||||||
|
if (child_address_cells > 2 && grub_memcmp (reg, child_addr, (child_address_cells - 2) * 4) != 0)
|
||||||
|
continue;
|
||||||
|
if (get64 (reg, child_address_cells) < get64 (child_addr, child_address_cells))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
grub_uint64_t offset = get64 (reg, child_address_cells) - get64 (child_addr, child_address_cells);
|
||||||
|
if (offset >= child_size)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ret = translate (dev->parent, parent_addr);
|
||||||
|
if (grub_fdtbus_is_mapping_valid (ret))
|
||||||
|
ret = (volatile char *) ret + offset;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return grub_fdtbus_invalid_mapping;
|
||||||
|
}
|
||||||
|
|
||||||
|
volatile void *
|
||||||
|
grub_fdtbus_map_reg (const struct grub_fdtbus_dev *dev, int regno, grub_size_t *size)
|
||||||
|
{
|
||||||
|
grub_size_t address_cells, size_cells;
|
||||||
|
address_cells = get_address_cells (dev->parent);
|
||||||
|
size_cells = get_size_cells (dev->parent);
|
||||||
|
const grub_uint32_t *reg = grub_fdt_get_prop (dtb, dev->node, "reg", 0);
|
||||||
|
if (size && size_cells)
|
||||||
|
*size = reg[(address_cells + size_cells) * regno + address_cells];
|
||||||
|
if (size && !size_cells)
|
||||||
|
*size = 0;
|
||||||
|
return translate (dev->parent, reg + (address_cells + size_cells) * regno);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
grub_fdtbus_get_name (const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
return grub_fdt_get_nodename (dtb, dev->node);
|
||||||
|
}
|
||||||
|
|
||||||
|
const void *
|
||||||
|
grub_fdtbus_get_prop (const struct grub_fdtbus_dev *dev,
|
||||||
|
const char *name,
|
||||||
|
grub_uint32_t *len)
|
||||||
|
{
|
||||||
|
return grub_fdt_get_prop (dtb, dev->node, name, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
const void *
|
||||||
|
grub_fdtbus_get_fdt (void)
|
||||||
|
{
|
||||||
|
return dtb;
|
||||||
|
}
|
103
grub-core/bus/spi/rk3288_spi.c
Normal file
103
grub-core/bus/spi/rk3288_spi.c
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Google Inc.
|
||||||
|
* Copyright (C) 2016 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* This is based on depthcharge code.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/time.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/fdtbus.h>
|
||||||
|
#include <grub/machine/kernel.h>
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
spi_send (const struct grub_fdtbus_dev *dev, const void *data, grub_size_t sz)
|
||||||
|
{
|
||||||
|
const grub_uint8_t *ptr = data, *end = ptr + sz;
|
||||||
|
volatile grub_uint32_t *spi = grub_fdtbus_map_reg (dev, 0, 0);
|
||||||
|
spi[2] = 0;
|
||||||
|
spi[1] = sz - 1;
|
||||||
|
spi[0] = ((1 << 18) | spi[0]) & ~(1 << 19);
|
||||||
|
spi[2] = 1;
|
||||||
|
while (ptr < end)
|
||||||
|
{
|
||||||
|
while (spi[9] & 2);
|
||||||
|
spi[256] = *ptr++;
|
||||||
|
}
|
||||||
|
while (spi[9] & 1);
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
spi_receive (const struct grub_fdtbus_dev *dev, void *data, grub_size_t sz)
|
||||||
|
{
|
||||||
|
grub_uint8_t *ptr = data, *end = ptr + sz;
|
||||||
|
volatile grub_uint32_t *spi = grub_fdtbus_map_reg (dev, 0, 0);
|
||||||
|
spi[2] = 0;
|
||||||
|
spi[1] = sz - 1;
|
||||||
|
spi[0] = ((1 << 19) | spi[0]) & ~(1 << 18);
|
||||||
|
spi[2] = 1;
|
||||||
|
while (ptr < end)
|
||||||
|
{
|
||||||
|
while (spi[9] & 8);
|
||||||
|
*ptr++ = spi[512];
|
||||||
|
}
|
||||||
|
while (spi[9] & 1);
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
spi_start (const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
volatile grub_uint32_t *spi = grub_fdtbus_map_reg (dev, 0, 0);
|
||||||
|
spi[3] = 1;
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
spi_stop (const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
volatile grub_uint32_t *spi = grub_fdtbus_map_reg (dev, 0, 0);
|
||||||
|
spi[3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
spi_attach(const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
if (!grub_fdtbus_is_mapping_valid (grub_fdtbus_map_reg (dev, 0, 0)))
|
||||||
|
return GRUB_ERR_IO;
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct grub_fdtbus_driver spi =
|
||||||
|
{
|
||||||
|
.compatible = "rockchip,rk3288-spi",
|
||||||
|
.attach = spi_attach,
|
||||||
|
.send = spi_send,
|
||||||
|
.receive = spi_receive,
|
||||||
|
.start = spi_start,
|
||||||
|
.stop = spi_stop,
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_rk3288_spi_init (void)
|
||||||
|
{
|
||||||
|
grub_fdtbus_register (&spi);
|
||||||
|
}
|
45
grub-core/bus/usb/ehci-fdt.c
Normal file
45
grub-core/bus/usb/ehci-fdt.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/* ehci.c - EHCI Support. */
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/time.h>
|
||||||
|
#include <grub/usb.h>
|
||||||
|
#include <grub/fdtbus.h>
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
ehci_attach(const struct grub_fdtbus_dev *dev)
|
||||||
|
{
|
||||||
|
grub_dprintf ("ehci", "Found generic-ehci\n");
|
||||||
|
|
||||||
|
grub_ehci_init_device (grub_fdtbus_map_reg (dev, 0, 0));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct grub_fdtbus_driver ehci =
|
||||||
|
{
|
||||||
|
.compatible = "generic-ehci",
|
||||||
|
.attach = ehci_attach
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_ehci_pci_scan (void)
|
||||||
|
{
|
||||||
|
grub_fdtbus_register (&ehci);
|
||||||
|
}
|
208
grub-core/bus/usb/ehci-pci.c
Normal file
208
grub-core/bus/usb/ehci-pci.c
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
/* ehci.c - EHCI Support. */
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/pci.h>
|
||||||
|
#include <grub/cpu/pci.h>
|
||||||
|
#include <grub/cs5536.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/time.h>
|
||||||
|
#include <grub/usb.h>
|
||||||
|
|
||||||
|
#define GRUB_EHCI_PCI_SBRN_REG 0x60
|
||||||
|
#define GRUB_EHCI_ADDR_MEM_MASK (~0xff)
|
||||||
|
|
||||||
|
/* USBLEGSUP bits and related OS OWNED byte offset */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
GRUB_EHCI_BIOS_OWNED = (1 << 16),
|
||||||
|
GRUB_EHCI_OS_OWNED = (1 << 24)
|
||||||
|
};
|
||||||
|
|
||||||
|
/* PCI iteration function... */
|
||||||
|
static int
|
||||||
|
grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
||||||
|
void *data __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
volatile grub_uint32_t *regs;
|
||||||
|
grub_uint32_t base, base_h;
|
||||||
|
grub_uint32_t eecp_offset;
|
||||||
|
grub_uint32_t usblegsup = 0;
|
||||||
|
grub_uint64_t maxtime;
|
||||||
|
grub_uint32_t interf;
|
||||||
|
grub_uint32_t subclass;
|
||||||
|
grub_uint32_t class;
|
||||||
|
grub_uint8_t release;
|
||||||
|
grub_uint32_t class_code;
|
||||||
|
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: begin\n");
|
||||||
|
|
||||||
|
if (pciid == GRUB_CS5536_PCIID)
|
||||||
|
{
|
||||||
|
grub_uint64_t basereg;
|
||||||
|
|
||||||
|
basereg = grub_cs5536_read_msr (dev, GRUB_CS5536_MSR_USB_EHCI_BASE);
|
||||||
|
if (!(basereg & GRUB_CS5536_MSR_USB_BASE_MEMORY_ENABLE))
|
||||||
|
{
|
||||||
|
/* Shouldn't happen. */
|
||||||
|
grub_dprintf ("ehci", "No EHCI address is assigned\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
base = (basereg & GRUB_CS5536_MSR_USB_BASE_ADDR_MASK);
|
||||||
|
basereg |= GRUB_CS5536_MSR_USB_BASE_BUS_MASTER;
|
||||||
|
basereg &= ~GRUB_CS5536_MSR_USB_BASE_PME_ENABLED;
|
||||||
|
basereg &= ~GRUB_CS5536_MSR_USB_BASE_PME_STATUS;
|
||||||
|
basereg &= ~GRUB_CS5536_MSR_USB_BASE_SMI_ENABLE;
|
||||||
|
grub_cs5536_write_msr (dev, GRUB_CS5536_MSR_USB_EHCI_BASE, basereg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
grub_pci_address_t addr;
|
||||||
|
addr = grub_pci_make_address (dev, GRUB_PCI_REG_CLASS);
|
||||||
|
class_code = grub_pci_read (addr) >> 8;
|
||||||
|
interf = class_code & 0xFF;
|
||||||
|
subclass = (class_code >> 8) & 0xFF;
|
||||||
|
class = class_code >> 16;
|
||||||
|
|
||||||
|
/* If this is not an EHCI controller, just return. */
|
||||||
|
if (class != 0x0c || subclass != 0x03 || interf != 0x20)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: class OK\n");
|
||||||
|
|
||||||
|
/* Check Serial Bus Release Number */
|
||||||
|
addr = grub_pci_make_address (dev, GRUB_EHCI_PCI_SBRN_REG);
|
||||||
|
release = grub_pci_read_byte (addr);
|
||||||
|
if (release != 0x20)
|
||||||
|
{
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: Wrong SBRN: %0x\n",
|
||||||
|
release);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: bus rev. num. OK\n");
|
||||||
|
|
||||||
|
/* Determine EHCI EHCC registers base address. */
|
||||||
|
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
||||||
|
base = grub_pci_read (addr);
|
||||||
|
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG1);
|
||||||
|
base_h = grub_pci_read (addr);
|
||||||
|
/* Stop if registers are mapped above 4G - GRUB does not currently
|
||||||
|
* work with registers mapped above 4G */
|
||||||
|
if (((base & GRUB_PCI_ADDR_MEM_TYPE_MASK) != GRUB_PCI_ADDR_MEM_TYPE_32)
|
||||||
|
&& (base_h != 0))
|
||||||
|
{
|
||||||
|
grub_dprintf ("ehci",
|
||||||
|
"EHCI grub_ehci_pci_iter: registers above 4G are not supported\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
base &= GRUB_PCI_ADDR_MEM_MASK;
|
||||||
|
if (!base)
|
||||||
|
{
|
||||||
|
grub_dprintf ("ehci",
|
||||||
|
"EHCI: EHCI is not mapped\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set bus master - needed for coreboot, VMware, broken BIOSes etc. */
|
||||||
|
addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
|
||||||
|
grub_pci_write_word(addr,
|
||||||
|
GRUB_PCI_COMMAND_MEM_ENABLED
|
||||||
|
| GRUB_PCI_COMMAND_BUS_MASTER
|
||||||
|
| grub_pci_read_word(addr));
|
||||||
|
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: 32-bit EHCI OK\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: iobase of EHCC: %08x\n",
|
||||||
|
(base & GRUB_EHCI_ADDR_MEM_MASK));
|
||||||
|
|
||||||
|
regs = grub_pci_device_map_range (dev,
|
||||||
|
(base & GRUB_EHCI_ADDR_MEM_MASK),
|
||||||
|
0x100);
|
||||||
|
|
||||||
|
/* Is there EECP ? */
|
||||||
|
eecp_offset = (grub_le_to_cpu32 (regs[2]) >> 8) & 0xff;
|
||||||
|
|
||||||
|
/* Determine and change ownership. */
|
||||||
|
/* EECP offset valid in HCCPARAMS */
|
||||||
|
/* Ownership can be changed via EECP only */
|
||||||
|
if (pciid != GRUB_CS5536_PCIID && eecp_offset >= 0x40)
|
||||||
|
{
|
||||||
|
grub_pci_address_t pciaddr_eecp;
|
||||||
|
pciaddr_eecp = grub_pci_make_address (dev, eecp_offset);
|
||||||
|
|
||||||
|
usblegsup = grub_pci_read (pciaddr_eecp);
|
||||||
|
if (usblegsup & GRUB_EHCI_BIOS_OWNED)
|
||||||
|
{
|
||||||
|
grub_boot_time ("Taking ownership of EHCI controller");
|
||||||
|
grub_dprintf ("ehci",
|
||||||
|
"EHCI grub_ehci_pci_iter: EHCI owned by: BIOS\n");
|
||||||
|
/* Ownership change - set OS_OWNED bit */
|
||||||
|
grub_pci_write (pciaddr_eecp, usblegsup | GRUB_EHCI_OS_OWNED);
|
||||||
|
/* Ensure PCI register is written */
|
||||||
|
grub_pci_read (pciaddr_eecp);
|
||||||
|
|
||||||
|
/* Wait for finish of ownership change, EHCI specification
|
||||||
|
* doesn't say how long it can take... */
|
||||||
|
maxtime = grub_get_time_ms () + 1000;
|
||||||
|
while ((grub_pci_read (pciaddr_eecp) & GRUB_EHCI_BIOS_OWNED)
|
||||||
|
&& (grub_get_time_ms () < maxtime));
|
||||||
|
if (grub_pci_read (pciaddr_eecp) & GRUB_EHCI_BIOS_OWNED)
|
||||||
|
{
|
||||||
|
grub_dprintf ("ehci",
|
||||||
|
"EHCI grub_ehci_pci_iter: EHCI change ownership timeout");
|
||||||
|
/* Change ownership in "hard way" - reset BIOS ownership */
|
||||||
|
grub_pci_write (pciaddr_eecp, GRUB_EHCI_OS_OWNED);
|
||||||
|
/* Ensure PCI register is written */
|
||||||
|
grub_pci_read (pciaddr_eecp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (usblegsup & GRUB_EHCI_OS_OWNED)
|
||||||
|
/* XXX: What to do in this case - nothing ? Can it happen ? */
|
||||||
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: EHCI owned by: OS\n");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
grub_dprintf ("ehci",
|
||||||
|
"EHCI grub_ehci_pci_iter: EHCI owned by: NONE\n");
|
||||||
|
/* XXX: What to do in this case ? Can it happen ?
|
||||||
|
* Is code below correct ? */
|
||||||
|
/* Ownership change - set OS_OWNED bit */
|
||||||
|
grub_pci_write (pciaddr_eecp, GRUB_EHCI_OS_OWNED);
|
||||||
|
/* Ensure PCI register is written */
|
||||||
|
grub_pci_read (pciaddr_eecp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Disable SMI, just to be sure. */
|
||||||
|
pciaddr_eecp = grub_pci_make_address (dev, eecp_offset + 4);
|
||||||
|
grub_pci_write (pciaddr_eecp, 0);
|
||||||
|
/* Ensure PCI register is written */
|
||||||
|
grub_pci_read (pciaddr_eecp);
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_dprintf ("ehci", "inithw: EHCI grub_ehci_pci_iter: ownership OK\n");
|
||||||
|
|
||||||
|
grub_ehci_init_device (regs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_ehci_pci_scan (void)
|
||||||
|
{
|
||||||
|
grub_pci_iterate (grub_ehci_pci_iter, NULL);
|
||||||
|
}
|
@ -22,13 +22,10 @@
|
|||||||
#include <grub/usb.h>
|
#include <grub/usb.h>
|
||||||
#include <grub/usbtrans.h>
|
#include <grub/usbtrans.h>
|
||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
#include <grub/pci.h>
|
|
||||||
#include <grub/cpu/pci.h>
|
|
||||||
#include <grub/cpu/io.h>
|
|
||||||
#include <grub/time.h>
|
#include <grub/time.h>
|
||||||
#include <grub/loader.h>
|
#include <grub/loader.h>
|
||||||
#include <grub/cs5536.h>
|
|
||||||
#include <grub/disk.h>
|
#include <grub/disk.h>
|
||||||
|
#include <grub/dma.h>
|
||||||
#include <grub/cache.h>
|
#include <grub/cache.h>
|
||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
@ -39,8 +36,6 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|||||||
* - is not supporting interrupt transfers
|
* - is not supporting interrupt transfers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define GRUB_EHCI_PCI_SBRN_REG 0x60
|
|
||||||
|
|
||||||
/* Capability registers offsets */
|
/* Capability registers offsets */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -54,7 +49,6 @@ enum
|
|||||||
#define GRUB_EHCI_EECP_MASK (0xff << 8)
|
#define GRUB_EHCI_EECP_MASK (0xff << 8)
|
||||||
#define GRUB_EHCI_EECP_SHIFT 8
|
#define GRUB_EHCI_EECP_SHIFT 8
|
||||||
|
|
||||||
#define GRUB_EHCI_ADDR_MEM_MASK (~0xff)
|
|
||||||
#define GRUB_EHCI_POINTER_MASK (~0x1f)
|
#define GRUB_EHCI_POINTER_MASK (~0x1f)
|
||||||
|
|
||||||
/* Capability register SPARAMS bits */
|
/* Capability register SPARAMS bits */
|
||||||
@ -85,13 +79,6 @@ enum
|
|||||||
|
|
||||||
#define GRUB_EHCI_QH_EMPTY 1
|
#define GRUB_EHCI_QH_EMPTY 1
|
||||||
|
|
||||||
/* USBLEGSUP bits and related OS OWNED byte offset */
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
GRUB_EHCI_BIOS_OWNED = (1 << 16),
|
|
||||||
GRUB_EHCI_OS_OWNED = (1 << 24)
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Operational registers offsets */
|
/* Operational registers offsets */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -455,9 +442,10 @@ grub_ehci_reset (struct grub_ehci *e)
|
|||||||
|
|
||||||
sync_all_caches (e);
|
sync_all_caches (e);
|
||||||
|
|
||||||
|
grub_dprintf ("ehci", "reset\n");
|
||||||
|
|
||||||
grub_ehci_oper_write32 (e, GRUB_EHCI_COMMAND,
|
grub_ehci_oper_write32 (e, GRUB_EHCI_COMMAND,
|
||||||
GRUB_EHCI_CMD_HC_RESET
|
GRUB_EHCI_CMD_HC_RESET);
|
||||||
| grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND));
|
|
||||||
/* Ensure command is written */
|
/* Ensure command is written */
|
||||||
grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND);
|
grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND);
|
||||||
/* XXX: How long time could take reset of HC ? */
|
/* XXX: How long time could take reset of HC ? */
|
||||||
@ -473,116 +461,24 @@ grub_ehci_reset (struct grub_ehci *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* PCI iteration function... */
|
/* PCI iteration function... */
|
||||||
static int
|
void
|
||||||
grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
grub_ehci_init_device (volatile void *regs)
|
||||||
void *data __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
grub_uint8_t release;
|
|
||||||
grub_uint32_t class_code;
|
|
||||||
grub_uint32_t interf;
|
|
||||||
grub_uint32_t subclass;
|
|
||||||
grub_uint32_t class;
|
|
||||||
grub_uint32_t base, base_h;
|
|
||||||
struct grub_ehci *e;
|
struct grub_ehci *e;
|
||||||
grub_uint32_t eecp_offset;
|
|
||||||
grub_uint32_t fp;
|
grub_uint32_t fp;
|
||||||
int i;
|
int i;
|
||||||
grub_uint32_t usblegsup = 0;
|
|
||||||
grub_uint64_t maxtime;
|
|
||||||
grub_uint32_t n_ports;
|
grub_uint32_t n_ports;
|
||||||
grub_uint8_t caplen;
|
grub_uint8_t caplen;
|
||||||
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: begin\n");
|
|
||||||
|
|
||||||
if (pciid == GRUB_CS5536_PCIID)
|
|
||||||
{
|
|
||||||
grub_uint64_t basereg;
|
|
||||||
|
|
||||||
basereg = grub_cs5536_read_msr (dev, GRUB_CS5536_MSR_USB_EHCI_BASE);
|
|
||||||
if (!(basereg & GRUB_CS5536_MSR_USB_BASE_MEMORY_ENABLE))
|
|
||||||
{
|
|
||||||
/* Shouldn't happen. */
|
|
||||||
grub_dprintf ("ehci", "No EHCI address is assigned\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
base = (basereg & GRUB_CS5536_MSR_USB_BASE_ADDR_MASK);
|
|
||||||
basereg |= GRUB_CS5536_MSR_USB_BASE_BUS_MASTER;
|
|
||||||
basereg &= ~GRUB_CS5536_MSR_USB_BASE_PME_ENABLED;
|
|
||||||
basereg &= ~GRUB_CS5536_MSR_USB_BASE_PME_STATUS;
|
|
||||||
basereg &= ~GRUB_CS5536_MSR_USB_BASE_SMI_ENABLE;
|
|
||||||
grub_cs5536_write_msr (dev, GRUB_CS5536_MSR_USB_EHCI_BASE, basereg);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
grub_pci_address_t addr;
|
|
||||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_CLASS);
|
|
||||||
class_code = grub_pci_read (addr) >> 8;
|
|
||||||
interf = class_code & 0xFF;
|
|
||||||
subclass = (class_code >> 8) & 0xFF;
|
|
||||||
class = class_code >> 16;
|
|
||||||
|
|
||||||
/* If this is not an EHCI controller, just return. */
|
|
||||||
if (class != 0x0c || subclass != 0x03 || interf != 0x20)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: class OK\n");
|
|
||||||
|
|
||||||
/* Check Serial Bus Release Number */
|
|
||||||
addr = grub_pci_make_address (dev, GRUB_EHCI_PCI_SBRN_REG);
|
|
||||||
release = grub_pci_read_byte (addr);
|
|
||||||
if (release != 0x20)
|
|
||||||
{
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: Wrong SBRN: %0x\n",
|
|
||||||
release);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: bus rev. num. OK\n");
|
|
||||||
|
|
||||||
/* Determine EHCI EHCC registers base address. */
|
|
||||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG0);
|
|
||||||
base = grub_pci_read (addr);
|
|
||||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_ADDRESS_REG1);
|
|
||||||
base_h = grub_pci_read (addr);
|
|
||||||
/* Stop if registers are mapped above 4G - GRUB does not currently
|
|
||||||
* work with registers mapped above 4G */
|
|
||||||
if (((base & GRUB_PCI_ADDR_MEM_TYPE_MASK) != GRUB_PCI_ADDR_MEM_TYPE_32)
|
|
||||||
&& (base_h != 0))
|
|
||||||
{
|
|
||||||
grub_dprintf ("ehci",
|
|
||||||
"EHCI grub_ehci_pci_iter: registers above 4G are not supported\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
base &= GRUB_PCI_ADDR_MEM_MASK;
|
|
||||||
if (!base)
|
|
||||||
{
|
|
||||||
grub_dprintf ("ehci",
|
|
||||||
"EHCI: EHCI is not mapped\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set bus master - needed for coreboot, VMware, broken BIOSes etc. */
|
|
||||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
|
|
||||||
grub_pci_write_word(addr,
|
|
||||||
GRUB_PCI_COMMAND_MEM_ENABLED
|
|
||||||
| GRUB_PCI_COMMAND_BUS_MASTER
|
|
||||||
| grub_pci_read_word(addr));
|
|
||||||
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: 32-bit EHCI OK\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate memory for the controller and fill basic values. */
|
/* Allocate memory for the controller and fill basic values. */
|
||||||
e = grub_zalloc (sizeof (*e));
|
e = grub_zalloc (sizeof (*e));
|
||||||
if (!e)
|
if (!e)
|
||||||
return 1;
|
return;
|
||||||
e->framelist_chunk = NULL;
|
e->framelist_chunk = NULL;
|
||||||
e->td_chunk = NULL;
|
e->td_chunk = NULL;
|
||||||
e->qh_chunk = NULL;
|
e->qh_chunk = NULL;
|
||||||
e->iobase_ehcc = grub_pci_device_map_range (dev,
|
e->iobase_ehcc = regs;
|
||||||
(base & GRUB_EHCI_ADDR_MEM_MASK),
|
|
||||||
0x100);
|
|
||||||
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: iobase of EHCC: %08x\n",
|
|
||||||
(base & GRUB_EHCI_ADDR_MEM_MASK));
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: CAPLEN: %02x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: CAPLEN: %02x\n",
|
||||||
grub_ehci_ehcc_read8 (e, GRUB_EHCI_EHCC_CAPLEN));
|
grub_ehci_ehcc_read8 (e, GRUB_EHCI_EHCC_CAPLEN));
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: VERSION: %04x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: VERSION: %04x\n",
|
||||||
@ -598,7 +494,7 @@ grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
|||||||
if (caplen & (sizeof (grub_uint32_t) - 1))
|
if (caplen & (sizeof (grub_uint32_t) - 1))
|
||||||
{
|
{
|
||||||
grub_dprintf ("ehci", "Unaligned caplen\n");
|
grub_dprintf ("ehci", "Unaligned caplen\n");
|
||||||
return 0;
|
return;
|
||||||
}
|
}
|
||||||
e->iobase = ((volatile grub_uint32_t *) e->iobase_ehcc
|
e->iobase = ((volatile grub_uint32_t *) e->iobase_ehcc
|
||||||
+ (caplen / sizeof (grub_uint32_t)));
|
+ (caplen / sizeof (grub_uint32_t)));
|
||||||
@ -608,8 +504,8 @@ grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
grub_dprintf ("ehci",
|
grub_dprintf ("ehci",
|
||||||
"EHCI grub_ehci_pci_iter: iobase of oper. regs: %08x\n",
|
"EHCI grub_ehci_pci_iter: iobase of oper. regs: %08llxx\n",
|
||||||
(base & GRUB_EHCI_ADDR_MEM_MASK) + caplen);
|
(unsigned long long) (grub_addr_t) e->iobase_ehcc + caplen);
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: COMMAND: %08x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: COMMAND: %08x\n",
|
||||||
grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND));
|
grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND));
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: STATUS: %08x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: STATUS: %08x\n",
|
||||||
@ -625,10 +521,6 @@ grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
|||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: CONFIG_FLAG: %08x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: CONFIG_FLAG: %08x\n",
|
||||||
grub_ehci_oper_read32 (e, GRUB_EHCI_CONFIG_FLAG));
|
grub_ehci_oper_read32 (e, GRUB_EHCI_CONFIG_FLAG));
|
||||||
|
|
||||||
/* Is there EECP ? */
|
|
||||||
eecp_offset = (grub_ehci_ehcc_read32 (e, GRUB_EHCI_EHCC_CPARAMS)
|
|
||||||
& GRUB_EHCI_EECP_MASK) >> GRUB_EHCI_EECP_SHIFT;
|
|
||||||
|
|
||||||
/* Check format of data structures requested by EHCI */
|
/* Check format of data structures requested by EHCI */
|
||||||
/* XXX: In fact it is not used at any place, it is prepared for future
|
/* XXX: In fact it is not used at any place, it is prepared for future
|
||||||
* This implementation uses 32-bits pointers only */
|
* This implementation uses 32-bits pointers only */
|
||||||
@ -732,65 +624,6 @@ grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
|||||||
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: QH/TD init. OK\n");
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: QH/TD init. OK\n");
|
||||||
|
|
||||||
/* Determine and change ownership. */
|
|
||||||
/* EECP offset valid in HCCPARAMS */
|
|
||||||
/* Ownership can be changed via EECP only */
|
|
||||||
if (pciid != GRUB_CS5536_PCIID && eecp_offset >= 0x40)
|
|
||||||
{
|
|
||||||
grub_pci_address_t pciaddr_eecp;
|
|
||||||
pciaddr_eecp = grub_pci_make_address (dev, eecp_offset);
|
|
||||||
|
|
||||||
usblegsup = grub_pci_read (pciaddr_eecp);
|
|
||||||
if (usblegsup & GRUB_EHCI_BIOS_OWNED)
|
|
||||||
{
|
|
||||||
grub_boot_time ("Taking ownership of EHCI controller");
|
|
||||||
grub_dprintf ("ehci",
|
|
||||||
"EHCI grub_ehci_pci_iter: EHCI owned by: BIOS\n");
|
|
||||||
/* Ownership change - set OS_OWNED bit */
|
|
||||||
grub_pci_write (pciaddr_eecp, usblegsup | GRUB_EHCI_OS_OWNED);
|
|
||||||
/* Ensure PCI register is written */
|
|
||||||
grub_pci_read (pciaddr_eecp);
|
|
||||||
|
|
||||||
/* Wait for finish of ownership change, EHCI specification
|
|
||||||
* doesn't say how long it can take... */
|
|
||||||
maxtime = grub_get_time_ms () + 1000;
|
|
||||||
while ((grub_pci_read (pciaddr_eecp) & GRUB_EHCI_BIOS_OWNED)
|
|
||||||
&& (grub_get_time_ms () < maxtime));
|
|
||||||
if (grub_pci_read (pciaddr_eecp) & GRUB_EHCI_BIOS_OWNED)
|
|
||||||
{
|
|
||||||
grub_dprintf ("ehci",
|
|
||||||
"EHCI grub_ehci_pci_iter: EHCI change ownership timeout");
|
|
||||||
/* Change ownership in "hard way" - reset BIOS ownership */
|
|
||||||
grub_pci_write (pciaddr_eecp, GRUB_EHCI_OS_OWNED);
|
|
||||||
/* Ensure PCI register is written */
|
|
||||||
grub_pci_read (pciaddr_eecp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (usblegsup & GRUB_EHCI_OS_OWNED)
|
|
||||||
/* XXX: What to do in this case - nothing ? Can it happen ? */
|
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: EHCI owned by: OS\n");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
grub_dprintf ("ehci",
|
|
||||||
"EHCI grub_ehci_pci_iter: EHCI owned by: NONE\n");
|
|
||||||
/* XXX: What to do in this case ? Can it happen ?
|
|
||||||
* Is code below correct ? */
|
|
||||||
/* Ownership change - set OS_OWNED bit */
|
|
||||||
grub_pci_write (pciaddr_eecp, GRUB_EHCI_OS_OWNED);
|
|
||||||
/* Ensure PCI register is written */
|
|
||||||
grub_pci_read (pciaddr_eecp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Disable SMI, just to be sure. */
|
|
||||||
pciaddr_eecp = grub_pci_make_address (dev, eecp_offset + 4);
|
|
||||||
grub_pci_write (pciaddr_eecp, 0);
|
|
||||||
/* Ensure PCI register is written */
|
|
||||||
grub_pci_read (pciaddr_eecp);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
grub_dprintf ("ehci", "inithw: EHCI grub_ehci_pci_iter: ownership OK\n");
|
|
||||||
|
|
||||||
/* Now we can setup EHCI (maybe...) */
|
/* Now we can setup EHCI (maybe...) */
|
||||||
|
|
||||||
/* Check if EHCI is halted and halt it if not */
|
/* Check if EHCI is halted and halt it if not */
|
||||||
@ -863,8 +696,8 @@ grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
|||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: OK at all\n");
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: OK at all\n");
|
||||||
|
|
||||||
grub_dprintf ("ehci",
|
grub_dprintf ("ehci",
|
||||||
"EHCI grub_ehci_pci_iter: iobase of oper. regs: %08x\n",
|
"EHCI grub_ehci_pci_iter: iobase of oper. regs: %08llx\n",
|
||||||
(base & GRUB_EHCI_ADDR_MEM_MASK));
|
(unsigned long long) (grub_addr_t) regs);
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: COMMAND: %08x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: COMMAND: %08x\n",
|
||||||
grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND));
|
grub_ehci_oper_read32 (e, GRUB_EHCI_COMMAND));
|
||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: STATUS: %08x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: STATUS: %08x\n",
|
||||||
@ -880,7 +713,7 @@ grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
|
|||||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: CONFIG_FLAG: %08x\n",
|
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: CONFIG_FLAG: %08x\n",
|
||||||
grub_ehci_oper_read32 (e, GRUB_EHCI_CONFIG_FLAG));
|
grub_ehci_oper_read32 (e, GRUB_EHCI_CONFIG_FLAG));
|
||||||
|
|
||||||
return 0;
|
return;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
if (e)
|
if (e)
|
||||||
@ -894,7 +727,7 @@ fail:
|
|||||||
}
|
}
|
||||||
grub_free (e);
|
grub_free (e);
|
||||||
|
|
||||||
return 0;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1891,12 +1724,6 @@ grub_ehci_detect_dev (grub_usb_controller_t dev, int port, int *changed)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
grub_ehci_inithw (void)
|
|
||||||
{
|
|
||||||
grub_pci_iterate (grub_ehci_pci_iter, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_ehci_restore_hw (void)
|
grub_ehci_restore_hw (void)
|
||||||
{
|
{
|
||||||
@ -1997,7 +1824,7 @@ GRUB_MOD_INIT (ehci)
|
|||||||
grub_stop_disk_firmware ();
|
grub_stop_disk_firmware ();
|
||||||
|
|
||||||
grub_boot_time ("Initing EHCI hardware");
|
grub_boot_time ("Initing EHCI hardware");
|
||||||
grub_ehci_inithw ();
|
grub_ehci_pci_scan ();
|
||||||
grub_boot_time ("Registering EHCI driver");
|
grub_boot_time ("Registering EHCI driver");
|
||||||
grub_usb_controller_dev_register (&usb_controller);
|
grub_usb_controller_dev_register (&usb_controller);
|
||||||
grub_boot_time ("EHCI driver registered");
|
grub_boot_time ("EHCI driver registered");
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <grub/dl.h>
|
#include <grub/dl.h>
|
||||||
#include <grub/pci.h>
|
#include <grub/dma.h>
|
||||||
#include <grub/mm.h>
|
#include <grub/mm.h>
|
||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
#include <grub/usb.h>
|
#include <grub/usb.h>
|
||||||
|
@ -635,7 +635,7 @@ grub_cmd_acpi (struct grub_extcmd_context *ctxt, int argc, char **args)
|
|||||||
grub_size_t size;
|
grub_size_t size;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
file = grub_file_open (args[i]);
|
file = grub_file_open (args[i], GRUB_FILE_TYPE_ACPI_TABLE);
|
||||||
if (! file)
|
if (! file)
|
||||||
{
|
{
|
||||||
free_tables ();
|
free_tables ();
|
||||||
|
@ -121,8 +121,8 @@ grub_cmd_blocklist (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
if (argc < 1)
|
if (argc < 1)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
|
||||||
grub_file_filter_disable_compression ();
|
file = grub_file_open (args[0], GRUB_FILE_TYPE_PRINT_BLOCKLIST
|
||||||
file = grub_file_open (args[0]);
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ grub_cmd_cat (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
if (argc != 1)
|
if (argc != 1)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
|
||||||
file = grub_file_open (args[0]);
|
file = grub_file_open (args[0], GRUB_FILE_TYPE_CAT);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
|
@ -45,8 +45,8 @@ grub_cmd_cmp (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
grub_printf_ (N_("Compare file `%s' with `%s':\n"), args[0],
|
grub_printf_ (N_("Compare file `%s' with `%s':\n"), args[0],
|
||||||
args[1]);
|
args[1]);
|
||||||
|
|
||||||
file1 = grub_file_open (args[0]);
|
file1 = grub_file_open (args[0], GRUB_FILE_TYPE_CMP);
|
||||||
file2 = grub_file_open (args[1]);
|
file2 = grub_file_open (args[1], GRUB_FILE_TYPE_CMP);
|
||||||
if (! file1 || ! file2)
|
if (! file1 || ! file2)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ grub_cmd_loadbios (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
file = grub_file_open (argv[1]);
|
file = grub_file_open (argv[1], GRUB_FILE_TYPE_VBE_DUMP);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ grub_cmd_loadbios (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = grub_file_open (argv[0]);
|
file = grub_file_open (argv[0], GRUB_FILE_TYPE_VBE_DUMP);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
|
@ -109,8 +109,10 @@ grub_cmd_lsefi (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
|
|
||||||
status = efi_call_3 (grub_efi_system_table->boot_services->protocols_per_handle,
|
status = efi_call_3 (grub_efi_system_table->boot_services->protocols_per_handle,
|
||||||
handle, &protocols, &num_protocols);
|
handle, &protocols, &num_protocols);
|
||||||
if (status != GRUB_EFI_SUCCESS)
|
if (status != GRUB_EFI_SUCCESS) {
|
||||||
grub_printf ("Unable to retrieve protocols\n");
|
grub_printf ("Unable to retrieve protocols\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (j = 0; j < num_protocols; j++)
|
for (j = 0; j < num_protocols; j++)
|
||||||
{
|
{
|
||||||
for (k = 0; k < ARRAY_SIZE (known_protocols); k++)
|
for (k = 0; k < ARRAY_SIZE (known_protocols); k++)
|
||||||
|
142
grub-core/commands/efi/shim_lock.c
Normal file
142
grub-core/commands/efi/shim_lock.c
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* EFI shim lock verifier.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/efi/efi.h>
|
||||||
|
#include <grub/err.h>
|
||||||
|
#include <grub/file.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/verify.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
#define GRUB_EFI_SHIM_LOCK_GUID \
|
||||||
|
{ 0x605dab50, 0xe046, 0x4300, \
|
||||||
|
{ 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
struct grub_efi_shim_lock_protocol
|
||||||
|
{
|
||||||
|
grub_efi_status_t
|
||||||
|
(*verify) (void *buffer, grub_uint32_t size);
|
||||||
|
};
|
||||||
|
typedef struct grub_efi_shim_lock_protocol grub_efi_shim_lock_protocol_t;
|
||||||
|
|
||||||
|
static grub_efi_guid_t shim_lock_guid = GRUB_EFI_SHIM_LOCK_GUID;
|
||||||
|
static grub_efi_shim_lock_protocol_t *sl;
|
||||||
|
|
||||||
|
/* List of modules which cannot be loaded if UEFI secure boot mode is enabled. */
|
||||||
|
static const char * const disabled_mods[] = {"iorw", "memrw", "wrmsr", NULL};
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
shim_lock_init (grub_file_t io, enum grub_file_type type,
|
||||||
|
void **context __attribute__ ((unused)),
|
||||||
|
enum grub_verify_flags *flags)
|
||||||
|
{
|
||||||
|
const char *b, *e;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
*flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;
|
||||||
|
|
||||||
|
if (!sl)
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
|
||||||
|
switch (type & GRUB_FILE_TYPE_MASK)
|
||||||
|
{
|
||||||
|
case GRUB_FILE_TYPE_GRUB_MODULE:
|
||||||
|
/* Establish GRUB module name. */
|
||||||
|
b = grub_strrchr (io->name, '/');
|
||||||
|
e = grub_strrchr (io->name, '.');
|
||||||
|
|
||||||
|
b = b ? (b + 1) : io->name;
|
||||||
|
e = e ? e : io->name + grub_strlen (io->name);
|
||||||
|
e = (e > b) ? e : io->name + grub_strlen (io->name);
|
||||||
|
|
||||||
|
for (i = 0; disabled_mods[i]; i++)
|
||||||
|
if (!grub_strncmp (b, disabled_mods[i], grub_strlen (b) - grub_strlen (e)))
|
||||||
|
{
|
||||||
|
grub_error (GRUB_ERR_ACCESS_DENIED,
|
||||||
|
N_("module cannot be loaded in UEFI secure boot mode: %s"),
|
||||||
|
io->name);
|
||||||
|
return GRUB_ERR_ACCESS_DENIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fall through. */
|
||||||
|
|
||||||
|
case GRUB_FILE_TYPE_ACPI_TABLE:
|
||||||
|
case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:
|
||||||
|
*flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
|
||||||
|
case GRUB_FILE_TYPE_LINUX_KERNEL:
|
||||||
|
case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:
|
||||||
|
case GRUB_FILE_TYPE_BSD_KERNEL:
|
||||||
|
case GRUB_FILE_TYPE_XNU_KERNEL:
|
||||||
|
case GRUB_FILE_TYPE_PLAN9_KERNEL:
|
||||||
|
for (i = 0; disabled_mods[i]; i++)
|
||||||
|
if (grub_dl_get (disabled_mods[i]))
|
||||||
|
{
|
||||||
|
grub_error (GRUB_ERR_ACCESS_DENIED,
|
||||||
|
N_("cannot boot due to dangerous module in memory: %s"),
|
||||||
|
disabled_mods[i]);
|
||||||
|
return GRUB_ERR_ACCESS_DENIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
*flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;
|
||||||
|
|
||||||
|
/* Fall through. */
|
||||||
|
|
||||||
|
default:
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
shim_lock_write (void *context __attribute__ ((unused)), void *buf, grub_size_t size)
|
||||||
|
{
|
||||||
|
if (sl->verify (buf, size) != GRUB_EFI_SUCCESS)
|
||||||
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad shim signature"));
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct grub_file_verifier shim_lock =
|
||||||
|
{
|
||||||
|
.name = "shim_lock",
|
||||||
|
.init = shim_lock_init,
|
||||||
|
.write = shim_lock_write
|
||||||
|
};
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(shim_lock)
|
||||||
|
{
|
||||||
|
sl = grub_efi_locate_protocol (&shim_lock_guid, 0);
|
||||||
|
grub_verifier_register (&shim_lock);
|
||||||
|
|
||||||
|
if (!sl)
|
||||||
|
return;
|
||||||
|
|
||||||
|
grub_dl_set_persistent (mod);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(shim_lock)
|
||||||
|
{
|
||||||
|
grub_verifier_unregister (&shim_lock);
|
||||||
|
}
|
333
grub-core/commands/efi/tpm.c
Normal file
333
grub-core/commands/efi/tpm.c
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2018 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* EFI TPM support code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/err.h>
|
||||||
|
#include <grub/i18n.h>
|
||||||
|
#include <grub/efi/api.h>
|
||||||
|
#include <grub/efi/efi.h>
|
||||||
|
#include <grub/efi/tpm.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/tpm.h>
|
||||||
|
#include <grub/term.h>
|
||||||
|
|
||||||
|
typedef TCG_PCR_EVENT grub_tpm_event_t;
|
||||||
|
|
||||||
|
static grub_efi_guid_t tpm_guid = EFI_TPM_GUID;
|
||||||
|
static grub_efi_guid_t tpm2_guid = EFI_TPM2_GUID;
|
||||||
|
|
||||||
|
static grub_efi_handle_t *grub_tpm_handle;
|
||||||
|
static grub_uint8_t grub_tpm_version;
|
||||||
|
|
||||||
|
static grub_int8_t tpm1_present = -1;
|
||||||
|
static grub_int8_t tpm2_present = -1;
|
||||||
|
|
||||||
|
static grub_efi_boolean_t
|
||||||
|
grub_tpm1_present (grub_efi_tpm_protocol_t *tpm)
|
||||||
|
{
|
||||||
|
grub_efi_status_t status;
|
||||||
|
TCG_EFI_BOOT_SERVICE_CAPABILITY caps;
|
||||||
|
grub_uint32_t flags;
|
||||||
|
grub_efi_physical_address_t eventlog, lastevent;
|
||||||
|
|
||||||
|
if (tpm1_present != -1)
|
||||||
|
return (grub_efi_boolean_t) tpm1_present;
|
||||||
|
|
||||||
|
caps.Size = (grub_uint8_t) sizeof (caps);
|
||||||
|
|
||||||
|
status = efi_call_5 (tpm->status_check, tpm, &caps, &flags, &eventlog,
|
||||||
|
&lastevent);
|
||||||
|
|
||||||
|
if (status != GRUB_EFI_SUCCESS || caps.TPMDeactivatedFlag
|
||||||
|
|| !caps.TPMPresentFlag)
|
||||||
|
return tpm1_present = 0;
|
||||||
|
|
||||||
|
return tpm1_present = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_efi_boolean_t
|
||||||
|
grub_tpm2_present (grub_efi_tpm2_protocol_t *tpm)
|
||||||
|
{
|
||||||
|
grub_efi_status_t status;
|
||||||
|
EFI_TCG2_BOOT_SERVICE_CAPABILITY caps;
|
||||||
|
|
||||||
|
caps.Size = (grub_uint8_t) sizeof (caps);
|
||||||
|
|
||||||
|
if (tpm2_present != -1)
|
||||||
|
return (grub_efi_boolean_t) tpm2_present;
|
||||||
|
|
||||||
|
status = efi_call_2 (tpm->get_capability, tpm, &caps);
|
||||||
|
|
||||||
|
if (status != GRUB_EFI_SUCCESS || !caps.TPMPresentFlag)
|
||||||
|
return tpm2_present = 0;
|
||||||
|
|
||||||
|
return tpm2_present = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_efi_boolean_t
|
||||||
|
grub_tpm_handle_find (grub_efi_handle_t *tpm_handle,
|
||||||
|
grub_efi_uint8_t *protocol_version)
|
||||||
|
{
|
||||||
|
grub_efi_handle_t *handles;
|
||||||
|
grub_efi_uintn_t num_handles;
|
||||||
|
|
||||||
|
if (grub_tpm_handle != NULL)
|
||||||
|
{
|
||||||
|
*tpm_handle = grub_tpm_handle;
|
||||||
|
*protocol_version = grub_tpm_version;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &tpm_guid, NULL,
|
||||||
|
&num_handles);
|
||||||
|
if (handles && num_handles > 0)
|
||||||
|
{
|
||||||
|
grub_tpm_handle = handles[0];
|
||||||
|
*tpm_handle = handles[0];
|
||||||
|
grub_tpm_version = 1;
|
||||||
|
*protocol_version = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &tpm2_guid, NULL,
|
||||||
|
&num_handles);
|
||||||
|
if (handles && num_handles > 0)
|
||||||
|
{
|
||||||
|
grub_tpm_handle = handles[0];
|
||||||
|
*tpm_handle = handles[0];
|
||||||
|
grub_tpm_version = 2;
|
||||||
|
*protocol_version = 2;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm1_execute (grub_efi_handle_t tpm_handle,
|
||||||
|
PassThroughToTPM_InputParamBlock *inbuf,
|
||||||
|
PassThroughToTPM_OutputParamBlock *outbuf)
|
||||||
|
{
|
||||||
|
grub_efi_status_t status;
|
||||||
|
grub_efi_tpm_protocol_t *tpm;
|
||||||
|
grub_uint32_t inhdrsize = sizeof (*inbuf) - sizeof (inbuf->TPMOperandIn);
|
||||||
|
grub_uint32_t outhdrsize =
|
||||||
|
sizeof (*outbuf) - sizeof (outbuf->TPMOperandOut);
|
||||||
|
|
||||||
|
tpm = grub_efi_open_protocol (tpm_handle, &tpm_guid,
|
||||||
|
GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||||
|
|
||||||
|
if (!grub_tpm1_present (tpm))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* UEFI TPM protocol takes the raw operand block, no param block header. */
|
||||||
|
status = efi_call_5 (tpm->pass_through_to_tpm, tpm,
|
||||||
|
inbuf->IPBLength - inhdrsize, inbuf->TPMOperandIn,
|
||||||
|
outbuf->OPBLength - outhdrsize, outbuf->TPMOperandOut);
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case GRUB_EFI_SUCCESS:
|
||||||
|
return 0;
|
||||||
|
case GRUB_EFI_DEVICE_ERROR:
|
||||||
|
return grub_error (GRUB_ERR_IO, N_("Command failed"));
|
||||||
|
case GRUB_EFI_INVALID_PARAMETER:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("Invalid parameter"));
|
||||||
|
case GRUB_EFI_BUFFER_TOO_SMALL:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||||
|
N_("Output buffer too small"));
|
||||||
|
case GRUB_EFI_NOT_FOUND:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("TPM unavailable"));
|
||||||
|
default:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("Unknown TPM error"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm2_execute (grub_efi_handle_t tpm_handle,
|
||||||
|
PassThroughToTPM_InputParamBlock *inbuf,
|
||||||
|
PassThroughToTPM_OutputParamBlock *outbuf)
|
||||||
|
{
|
||||||
|
grub_efi_status_t status;
|
||||||
|
grub_efi_tpm2_protocol_t *tpm;
|
||||||
|
grub_uint32_t inhdrsize = sizeof (*inbuf) - sizeof (inbuf->TPMOperandIn);
|
||||||
|
grub_uint32_t outhdrsize =
|
||||||
|
sizeof (*outbuf) - sizeof (outbuf->TPMOperandOut);
|
||||||
|
|
||||||
|
tpm = grub_efi_open_protocol (tpm_handle, &tpm2_guid,
|
||||||
|
GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||||
|
|
||||||
|
if (!grub_tpm2_present (tpm))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* UEFI TPM protocol takes the raw operand block, no param block header. */
|
||||||
|
status = efi_call_5 (tpm->submit_command, tpm,
|
||||||
|
inbuf->IPBLength - inhdrsize, inbuf->TPMOperandIn,
|
||||||
|
outbuf->OPBLength - outhdrsize, outbuf->TPMOperandOut);
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case GRUB_EFI_SUCCESS:
|
||||||
|
return 0;
|
||||||
|
case GRUB_EFI_DEVICE_ERROR:
|
||||||
|
return grub_error (GRUB_ERR_IO, N_("Command failed"));
|
||||||
|
case GRUB_EFI_INVALID_PARAMETER:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("Invalid parameter"));
|
||||||
|
case GRUB_EFI_BUFFER_TOO_SMALL:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||||
|
N_("Output buffer too small"));
|
||||||
|
case GRUB_EFI_NOT_FOUND:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("TPM unavailable"));
|
||||||
|
default:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("Unknown TPM error"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_tpm_execute (PassThroughToTPM_InputParamBlock *inbuf,
|
||||||
|
PassThroughToTPM_OutputParamBlock *outbuf)
|
||||||
|
{
|
||||||
|
grub_efi_handle_t tpm_handle;
|
||||||
|
grub_uint8_t protocol_version;
|
||||||
|
|
||||||
|
/* Absence of a TPM isn't a failure. */
|
||||||
|
if (!grub_tpm_handle_find (&tpm_handle, &protocol_version))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (protocol_version == 1)
|
||||||
|
return grub_tpm1_execute (tpm_handle, inbuf, outbuf);
|
||||||
|
else
|
||||||
|
return grub_tpm2_execute (tpm_handle, inbuf, outbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm1_log_event (grub_efi_handle_t tpm_handle, unsigned char *buf,
|
||||||
|
grub_size_t size, grub_uint8_t pcr,
|
||||||
|
const char *description)
|
||||||
|
{
|
||||||
|
grub_tpm_event_t *event;
|
||||||
|
grub_efi_status_t status;
|
||||||
|
grub_efi_tpm_protocol_t *tpm;
|
||||||
|
grub_efi_physical_address_t lastevent;
|
||||||
|
grub_uint32_t algorithm;
|
||||||
|
grub_uint32_t eventnum = 0;
|
||||||
|
|
||||||
|
tpm = grub_efi_open_protocol (tpm_handle, &tpm_guid,
|
||||||
|
GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||||
|
|
||||||
|
if (!grub_tpm1_present (tpm))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
event = grub_zalloc (sizeof (*event) + grub_strlen (description) + 1);
|
||||||
|
if (!event)
|
||||||
|
return grub_error (GRUB_ERR_OUT_OF_MEMORY,
|
||||||
|
N_("cannot allocate TPM event buffer"));
|
||||||
|
|
||||||
|
event->PCRIndex = pcr;
|
||||||
|
event->EventType = EV_IPL;
|
||||||
|
event->EventSize = grub_strlen (description) + 1;
|
||||||
|
grub_memcpy (event->Event, description, event->EventSize);
|
||||||
|
|
||||||
|
algorithm = TCG_ALG_SHA;
|
||||||
|
status = efi_call_7 (tpm->log_extend_event, tpm, (grub_addr_t) buf, (grub_uint64_t) size,
|
||||||
|
algorithm, event, &eventnum, &lastevent);
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case GRUB_EFI_SUCCESS:
|
||||||
|
return 0;
|
||||||
|
case GRUB_EFI_DEVICE_ERROR:
|
||||||
|
return grub_error (GRUB_ERR_IO, N_("Command failed"));
|
||||||
|
case GRUB_EFI_INVALID_PARAMETER:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("Invalid parameter"));
|
||||||
|
case GRUB_EFI_BUFFER_TOO_SMALL:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||||
|
N_("Output buffer too small"));
|
||||||
|
case GRUB_EFI_NOT_FOUND:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("TPM unavailable"));
|
||||||
|
default:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("Unknown TPM error"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm2_log_event (grub_efi_handle_t tpm_handle, unsigned char *buf,
|
||||||
|
grub_size_t size, grub_uint8_t pcr,
|
||||||
|
const char *description)
|
||||||
|
{
|
||||||
|
EFI_TCG2_EVENT *event;
|
||||||
|
grub_efi_status_t status;
|
||||||
|
grub_efi_tpm2_protocol_t *tpm;
|
||||||
|
|
||||||
|
tpm = grub_efi_open_protocol (tpm_handle, &tpm2_guid,
|
||||||
|
GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||||
|
|
||||||
|
if (!grub_tpm2_present (tpm))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
event =
|
||||||
|
grub_zalloc (sizeof (EFI_TCG2_EVENT) + grub_strlen (description) + 1);
|
||||||
|
if (!event)
|
||||||
|
return grub_error (GRUB_ERR_OUT_OF_MEMORY,
|
||||||
|
N_("cannot allocate TPM event buffer"));
|
||||||
|
|
||||||
|
event->Header.HeaderSize = sizeof (EFI_TCG2_EVENT_HEADER);
|
||||||
|
event->Header.HeaderVersion = 1;
|
||||||
|
event->Header.PCRIndex = pcr;
|
||||||
|
event->Header.EventType = EV_IPL;
|
||||||
|
event->Size =
|
||||||
|
sizeof (*event) - sizeof (event->Event) + grub_strlen (description) + 1;
|
||||||
|
grub_memcpy (event->Event, description, grub_strlen (description) + 1);
|
||||||
|
|
||||||
|
status = efi_call_5 (tpm->hash_log_extend_event, tpm, 0, (grub_addr_t) buf,
|
||||||
|
(grub_uint64_t) size, event);
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case GRUB_EFI_SUCCESS:
|
||||||
|
return 0;
|
||||||
|
case GRUB_EFI_DEVICE_ERROR:
|
||||||
|
return grub_error (GRUB_ERR_IO, N_("Command failed"));
|
||||||
|
case GRUB_EFI_INVALID_PARAMETER:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("Invalid parameter"));
|
||||||
|
case GRUB_EFI_BUFFER_TOO_SMALL:
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||||
|
N_("Output buffer too small"));
|
||||||
|
case GRUB_EFI_NOT_FOUND:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("TPM unavailable"));
|
||||||
|
default:
|
||||||
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("Unknown TPM error"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_tpm_log_event (unsigned char *buf, grub_size_t size, grub_uint8_t pcr,
|
||||||
|
const char *description)
|
||||||
|
{
|
||||||
|
grub_efi_handle_t tpm_handle;
|
||||||
|
grub_efi_uint8_t protocol_version;
|
||||||
|
|
||||||
|
if (!grub_tpm_handle_find (&tpm_handle, &protocol_version))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (protocol_version == 1)
|
||||||
|
return grub_tpm1_log_event (tpm_handle, buf, size, pcr, description);
|
||||||
|
else
|
||||||
|
return grub_tpm2_log_event (tpm_handle, buf, size, pcr, description);
|
||||||
|
}
|
@ -27,6 +27,8 @@
|
|||||||
#include <grub/elf.h>
|
#include <grub/elf.h>
|
||||||
#include <grub/xen_file.h>
|
#include <grub/xen_file.h>
|
||||||
#include <grub/efi/pe32.h>
|
#include <grub/efi/pe32.h>
|
||||||
|
#include <grub/arm/linux.h>
|
||||||
|
#include <grub/arm64/linux.h>
|
||||||
#include <grub/i386/linux.h>
|
#include <grub/i386/linux.h>
|
||||||
#include <grub/xnu.h>
|
#include <grub/xnu.h>
|
||||||
#include <grub/machoload.h>
|
#include <grub/machoload.h>
|
||||||
@ -88,6 +90,10 @@ static const struct grub_arg_option options[] = {
|
|||||||
N_("Check if FILE is ARM64 EFI file"), 0, 0},
|
N_("Check if FILE is ARM64 EFI file"), 0, 0},
|
||||||
{"is-arm-efi", 0, 0,
|
{"is-arm-efi", 0, 0,
|
||||||
N_("Check if FILE is ARM EFI file"), 0, 0},
|
N_("Check if FILE is ARM EFI file"), 0, 0},
|
||||||
|
{"is-riscv32-efi", 0, 0,
|
||||||
|
N_("Check if FILE is RISC-V 32bit EFI file"), 0, 0},
|
||||||
|
{"is-riscv64-efi", 0, 0,
|
||||||
|
N_("Check if FILE is RISC-V 64bit EFI file"), 0, 0},
|
||||||
{"is-hibernated-hiberfil", 0, 0,
|
{"is-hibernated-hiberfil", 0, 0,
|
||||||
N_("Check if FILE is hiberfil.sys in hibernated state"), 0, 0},
|
N_("Check if FILE is hiberfil.sys in hibernated state"), 0, 0},
|
||||||
{"is-x86_64-xnu", 0, 0,
|
{"is-x86_64-xnu", 0, 0,
|
||||||
@ -128,6 +134,7 @@ enum
|
|||||||
IS_IA_EFI,
|
IS_IA_EFI,
|
||||||
IS_ARM64_EFI,
|
IS_ARM64_EFI,
|
||||||
IS_ARM_EFI,
|
IS_ARM_EFI,
|
||||||
|
IS_RISCV_EFI,
|
||||||
IS_HIBERNATED,
|
IS_HIBERNATED,
|
||||||
IS_XNU64,
|
IS_XNU64,
|
||||||
IS_XNU32,
|
IS_XNU32,
|
||||||
@ -163,7 +170,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
if (type == -1)
|
if (type == -1)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no type specified");
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no type specified");
|
||||||
|
|
||||||
file = grub_file_open (args[0]);
|
file = grub_file_open (args[0], GRUB_FILE_TYPE_XNU_KERNEL);
|
||||||
if (!file)
|
if (!file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
switch (type)
|
switch (type)
|
||||||
@ -383,21 +390,19 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
}
|
}
|
||||||
case IS_ARM_LINUX:
|
case IS_ARM_LINUX:
|
||||||
{
|
{
|
||||||
grub_uint32_t sig, sig_pi;
|
struct linux_arm_kernel_header lh;
|
||||||
if (grub_file_read (file, &sig_pi, 4) != 4)
|
|
||||||
|
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||||
break;
|
break;
|
||||||
/* Raspberry pi. */
|
/* Short forward branch in A32 state (for Raspberry pi kernels). */
|
||||||
if (sig_pi == grub_cpu_to_le32_compile_time (0xea000006))
|
if (lh.code0 == grub_cpu_to_le32_compile_time (0xea000006))
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (grub_file_seek (file, 0x24) == (grub_size_t) -1)
|
if (lh.magic ==
|
||||||
break;
|
grub_cpu_to_le32_compile_time (GRUB_LINUX_ARM_MAGIC_SIGNATURE))
|
||||||
if (grub_file_read (file, &sig, 4) != 4)
|
|
||||||
break;
|
|
||||||
if (sig == grub_cpu_to_le32_compile_time (0x016f2818))
|
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
@ -406,13 +411,13 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
}
|
}
|
||||||
case IS_ARM64_LINUX:
|
case IS_ARM64_LINUX:
|
||||||
{
|
{
|
||||||
grub_uint32_t sig;
|
struct linux_arm64_kernel_header lh;
|
||||||
|
|
||||||
if (grub_file_seek (file, 0x38) == (grub_size_t) -1)
|
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||||
break;
|
break;
|
||||||
if (grub_file_read (file, &sig, 4) != 4)
|
|
||||||
break;
|
if (lh.magic ==
|
||||||
if (sig == grub_cpu_to_le32_compile_time (0x644d5241))
|
grub_cpu_to_le32_compile_time (GRUB_LINUX_ARM64_MAGIC_SIGNATURE))
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
@ -497,7 +502,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
case IS_X86_LINUX32:
|
case IS_X86_LINUX32:
|
||||||
case IS_X86_LINUX:
|
case IS_X86_LINUX:
|
||||||
{
|
{
|
||||||
struct linux_kernel_header lh;
|
struct linux_i386_kernel_header lh;
|
||||||
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||||
break;
|
break;
|
||||||
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55))
|
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55))
|
||||||
@ -508,7 +513,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
|
|
||||||
/* FIXME: some really old kernels (< 1.3.73) will fail this. */
|
/* FIXME: some really old kernels (< 1.3.73) will fail this. */
|
||||||
if (lh.header !=
|
if (lh.header !=
|
||||||
grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||||
|| grub_le_to_cpu16 (lh.version) < 0x0200)
|
|| grub_le_to_cpu16 (lh.version) < 0x0200)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -521,7 +526,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
/* FIXME: 2.03 is not always good enough (Linux 2.4 can be 2.03 and
|
/* FIXME: 2.03 is not always good enough (Linux 2.4 can be 2.03 and
|
||||||
still not support 32-bit boot. */
|
still not support 32-bit boot. */
|
||||||
if (lh.header !=
|
if (lh.header !=
|
||||||
grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||||
|| grub_le_to_cpu16 (lh.version) < 0x0203)
|
|| grub_le_to_cpu16 (lh.version) < 0x0203)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -546,7 +551,8 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
case IS_XNU64:
|
case IS_XNU64:
|
||||||
case IS_XNU32:
|
case IS_XNU32:
|
||||||
{
|
{
|
||||||
macho = grub_macho_open (args[0], (type == IS_XNU64));
|
macho = grub_macho_open (args[0], GRUB_FILE_TYPE_XNU_KERNEL,
|
||||||
|
(type == IS_XNU64));
|
||||||
if (!macho)
|
if (!macho)
|
||||||
break;
|
break;
|
||||||
/* FIXME: more checks? */
|
/* FIXME: more checks? */
|
||||||
@ -570,6 +576,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
case IS_IA_EFI:
|
case IS_IA_EFI:
|
||||||
case IS_ARM64_EFI:
|
case IS_ARM64_EFI:
|
||||||
case IS_ARM_EFI:
|
case IS_ARM_EFI:
|
||||||
|
case IS_RISCV_EFI:
|
||||||
{
|
{
|
||||||
char signature[4];
|
char signature[4];
|
||||||
grub_uint32_t pe_offset;
|
grub_uint32_t pe_offset;
|
||||||
@ -615,7 +622,13 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
&& coff_head.machine !=
|
&& coff_head.machine !=
|
||||||
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_ARMTHUMB_MIXED))
|
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_ARMTHUMB_MIXED))
|
||||||
break;
|
break;
|
||||||
if (type == IS_IA_EFI || type == IS_64_EFI || type == IS_ARM64_EFI)
|
if (type == IS_RISCV_EFI
|
||||||
|
&& coff_head.machine !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_RISCV64))
|
||||||
|
/* TODO: Determine bitness dynamically */
|
||||||
|
break;
|
||||||
|
if (type == IS_IA_EFI || type == IS_64_EFI || type == IS_ARM64_EFI ||
|
||||||
|
type == IS_RISCV_EFI)
|
||||||
{
|
{
|
||||||
struct grub_pe64_optional_header o64;
|
struct grub_pe64_optional_header o64;
|
||||||
if (grub_file_read (file, &o64, sizeof (o64)) != sizeof (o64))
|
if (grub_file_read (file, &o64, sizeof (o64)) != sizeof (o64))
|
||||||
|
@ -113,7 +113,7 @@ check_list (const gcry_md_spec_t *hash, const char *hashfilename,
|
|||||||
if (hash->mdlen > GRUB_CRYPTO_MAX_MDLEN)
|
if (hash->mdlen > GRUB_CRYPTO_MAX_MDLEN)
|
||||||
return grub_error (GRUB_ERR_BUG, "mdlen is too long");
|
return grub_error (GRUB_ERR_BUG, "mdlen is too long");
|
||||||
|
|
||||||
hashlist = grub_file_open (hashfilename);
|
hashlist = grub_file_open (hashfilename, GRUB_FILE_TYPE_HASHLIST);
|
||||||
if (!hashlist)
|
if (!hashlist)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
@ -141,17 +141,15 @@ check_list (const gcry_md_spec_t *hash, const char *hashfilename,
|
|||||||
filename = grub_xasprintf ("%s/%s", prefix, p);
|
filename = grub_xasprintf ("%s/%s", prefix, p);
|
||||||
if (!filename)
|
if (!filename)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
if (!uncompress)
|
file = grub_file_open (filename, GRUB_FILE_TYPE_TO_HASH
|
||||||
grub_file_filter_disable_compression ();
|
| (!uncompress ? GRUB_FILE_TYPE_NO_DECOMPRESS
|
||||||
file = grub_file_open (filename);
|
: GRUB_FILE_TYPE_NONE));
|
||||||
grub_free (filename);
|
grub_free (filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
file = grub_file_open (p, GRUB_FILE_TYPE_TO_HASH
|
||||||
if (!uncompress)
|
| (!uncompress ? GRUB_FILE_TYPE_NO_DECOMPRESS
|
||||||
grub_file_filter_disable_compression ();
|
: GRUB_FILE_TYPE_NONE));
|
||||||
file = grub_file_open (p);
|
|
||||||
}
|
|
||||||
if (!file)
|
if (!file)
|
||||||
{
|
{
|
||||||
grub_file_close (hashlist);
|
grub_file_close (hashlist);
|
||||||
@ -242,9 +240,9 @@ grub_cmd_hashsum (struct grub_extcmd_context *ctxt,
|
|||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
unsigned j;
|
unsigned j;
|
||||||
if (!uncompress)
|
file = grub_file_open (args[i], GRUB_FILE_TYPE_TO_HASH
|
||||||
grub_file_filter_disable_compression ();
|
| (!uncompress ? GRUB_FILE_TYPE_NO_DECOMPRESS
|
||||||
file = grub_file_open (args[i]);
|
: GRUB_FILE_TYPE_NONE));
|
||||||
if (!file)
|
if (!file)
|
||||||
{
|
{
|
||||||
if (!keep)
|
if (!keep)
|
||||||
|
@ -90,7 +90,7 @@ grub_cmd_hexdump (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
{
|
{
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
|
|
||||||
file = grub_file_open (args[0]);
|
file = grub_file_open (args[0], GRUB_FILE_TYPE_HEXCAT);
|
||||||
if (! file)
|
if (! file)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
#include <grub/command.h>
|
#include <grub/command.h>
|
||||||
#include <grub/i18n.h>
|
#include <grub/i18n.h>
|
||||||
#include <grub/i386/coreboot/lbio.h>
|
#include <grub/coreboot/lbio.h>
|
||||||
#include <grub/i386/tsc.h>
|
#include <grub/i386/tsc.h>
|
||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
#include <grub/command.h>
|
#include <grub/command.h>
|
||||||
#include <grub/i18n.h>
|
#include <grub/i18n.h>
|
||||||
#include <grub/i386/coreboot/lbio.h>
|
#include <grub/coreboot/lbio.h>
|
||||||
#include <grub/i386/tsc.h>
|
#include <grub/i386/tsc.h>
|
||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
@ -93,7 +93,7 @@ grub_cmd_play (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
grub_uint32_t tempo;
|
grub_uint32_t tempo;
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
|
|
||||||
file = grub_file_open (args[0]);
|
file = grub_file_open (args[0], GRUB_FILE_TYPE_AUDIO);
|
||||||
|
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
102
grub-core/commands/i386/rdmsr.c
Normal file
102
grub-core/commands/i386/rdmsr.c
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/* rdmsr.c - Read CPU model-specific registers. */
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2019 Free Software Foundation, Inc.
|
||||||
|
* Based on gcc/gcc/config/i386/driver-i386.c
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/env.h>
|
||||||
|
#include <grub/command.h>
|
||||||
|
#include <grub/extcmd.h>
|
||||||
|
#include <grub/i18n.h>
|
||||||
|
#include <grub/i386/cpuid.h>
|
||||||
|
#include <grub/i386/rdmsr.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE("GPLv3+");
|
||||||
|
|
||||||
|
static grub_extcmd_t cmd_read;
|
||||||
|
|
||||||
|
static const struct grub_arg_option options[] =
|
||||||
|
{
|
||||||
|
{0, 'v', 0, N_("Save read value into variable VARNAME."),
|
||||||
|
N_("VARNAME"), ARG_TYPE_STRING},
|
||||||
|
{0, 0, 0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_msr_read (grub_extcmd_context_t ctxt, int argc, char **argv)
|
||||||
|
{
|
||||||
|
grub_uint32_t manufacturer[3], max_cpuid, a, b, c, features, addr;
|
||||||
|
grub_uint64_t value;
|
||||||
|
char *ptr;
|
||||||
|
char buf[sizeof("1122334455667788")];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The CPUID instruction should be used to determine whether MSRs
|
||||||
|
* are supported. (CPUID.01H:EDX[5] = 1)
|
||||||
|
*/
|
||||||
|
if (! grub_cpu_is_cpuid_supported ())
|
||||||
|
return grub_error (GRUB_ERR_BUG, N_("unsupported instruction"));
|
||||||
|
|
||||||
|
grub_cpuid (0, max_cpuid, manufacturer[0], manufacturer[2], manufacturer[1]);
|
||||||
|
|
||||||
|
if (max_cpuid < 1)
|
||||||
|
return grub_error (GRUB_ERR_BUG, N_("unsupported instruction"));
|
||||||
|
|
||||||
|
grub_cpuid (1, a, b, c, features);
|
||||||
|
|
||||||
|
if (!(features & (1 << 5)))
|
||||||
|
return grub_error (GRUB_ERR_BUG, N_("unsupported instruction"));
|
||||||
|
|
||||||
|
if (argc != 1)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
||||||
|
|
||||||
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
ptr = argv[0];
|
||||||
|
addr = grub_strtoul (ptr, &ptr, 0);
|
||||||
|
|
||||||
|
if (grub_errno != GRUB_ERR_NONE)
|
||||||
|
return grub_errno;
|
||||||
|
if (*ptr != '\0')
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("invalid argument"));
|
||||||
|
|
||||||
|
value = grub_msr_read (addr);
|
||||||
|
|
||||||
|
if (ctxt->state[0].set)
|
||||||
|
{
|
||||||
|
grub_snprintf (buf, sizeof(buf), "%llx", (unsigned long long) value);
|
||||||
|
grub_env_set (ctxt->state[0].arg, buf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
grub_printf ("0x%llx\n", (unsigned long long) value);
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(rdmsr)
|
||||||
|
{
|
||||||
|
cmd_read = grub_register_extcmd ("rdmsr", grub_cmd_msr_read, 0, N_("ADDR"),
|
||||||
|
N_("Read a CPU model specific register."),
|
||||||
|
options);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(rdmsr)
|
||||||
|
{
|
||||||
|
grub_unregister_extcmd (cmd_read);
|
||||||
|
}
|
93
grub-core/commands/i386/wrmsr.c
Normal file
93
grub-core/commands/i386/wrmsr.c
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/* wrmsr.c - Write CPU model-specific registers. */
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2019 Free Software Foundation, Inc.
|
||||||
|
* Based on gcc/gcc/config/i386/driver-i386.c
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/env.h>
|
||||||
|
#include <grub/command.h>
|
||||||
|
#include <grub/extcmd.h>
|
||||||
|
#include <grub/i18n.h>
|
||||||
|
#include <grub/i386/cpuid.h>
|
||||||
|
#include <grub/i386/wrmsr.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE("GPLv3+");
|
||||||
|
|
||||||
|
static grub_command_t cmd_write;
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_msr_write (grub_command_t cmd __attribute__ ((unused)), int argc, char **argv)
|
||||||
|
{
|
||||||
|
grub_uint32_t manufacturer[3], max_cpuid, a, b, c, features, addr;
|
||||||
|
grub_uint64_t value;
|
||||||
|
char *ptr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The CPUID instruction should be used to determine whether MSRs
|
||||||
|
* are supported. (CPUID.01H:EDX[5] = 1)
|
||||||
|
*/
|
||||||
|
if (!grub_cpu_is_cpuid_supported ())
|
||||||
|
return grub_error (GRUB_ERR_BUG, N_("unsupported instruction"));
|
||||||
|
|
||||||
|
grub_cpuid (0, max_cpuid, manufacturer[0], manufacturer[2], manufacturer[1]);
|
||||||
|
|
||||||
|
if (max_cpuid < 1)
|
||||||
|
return grub_error (GRUB_ERR_BUG, N_("unsupported instruction"));
|
||||||
|
|
||||||
|
grub_cpuid (1, a, b, c, features);
|
||||||
|
|
||||||
|
if (!(features & (1 << 5)))
|
||||||
|
return grub_error (GRUB_ERR_BUG, N_("unsupported instruction"));
|
||||||
|
|
||||||
|
if (argc != 2)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("two arguments expected"));
|
||||||
|
|
||||||
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
ptr = argv[0];
|
||||||
|
addr = grub_strtoul (ptr, &ptr, 0);
|
||||||
|
|
||||||
|
if (grub_errno != GRUB_ERR_NONE)
|
||||||
|
return grub_errno;
|
||||||
|
if (*ptr != '\0')
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("invalid argument"));
|
||||||
|
|
||||||
|
ptr = argv[1];
|
||||||
|
value = grub_strtoull (ptr, &ptr, 0);
|
||||||
|
|
||||||
|
if (grub_errno != GRUB_ERR_NONE)
|
||||||
|
return grub_errno;
|
||||||
|
if (*ptr != '\0')
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("invalid argument"));
|
||||||
|
|
||||||
|
grub_msr_write (addr, value);
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(wrmsr)
|
||||||
|
{
|
||||||
|
cmd_write = grub_register_command ("wrmsr", grub_cmd_msr_write, N_("ADDR VALUE"),
|
||||||
|
N_("Write a value to a CPU model specific register."));
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(wrmsr)
|
||||||
|
{
|
||||||
|
grub_unregister_command (cmd_write);
|
||||||
|
}
|
@ -40,7 +40,7 @@ static struct grub_keyboard_layout layout_us = {
|
|||||||
/* 0x10 */ 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
|
/* 0x10 */ 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
|
||||||
/* 0x18 */ 'u', 'v', 'w', 'x', 'y', 'z', '1', '2',
|
/* 0x18 */ 'u', 'v', 'w', 'x', 'y', 'z', '1', '2',
|
||||||
/* 0x20 */ '3', '4', '5', '6', '7', '8', '9', '0',
|
/* 0x20 */ '3', '4', '5', '6', '7', '8', '9', '0',
|
||||||
/* 0x28 */ '\n', '\e', '\b', '\t', ' ', '-', '=', '[',
|
/* 0x28 */ '\n', GRUB_TERM_ESC, GRUB_TERM_BACKSPACE, GRUB_TERM_TAB, ' ', '-', '=', '[',
|
||||||
/* According to usage table 0x31 should be mapped to '/'
|
/* According to usage table 0x31 should be mapped to '/'
|
||||||
but testing with real keyboard shows that 0x32 is remapped to '/'.
|
but testing with real keyboard shows that 0x32 is remapped to '/'.
|
||||||
Map 0x31 to 0.
|
Map 0x31 to 0.
|
||||||
@ -82,8 +82,8 @@ static struct grub_keyboard_layout layout_us = {
|
|||||||
/* 0x10 */ 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
/* 0x10 */ 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
||||||
/* 0x18 */ 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '@',
|
/* 0x18 */ 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '@',
|
||||||
/* 0x20 */ '#', '$', '%', '^', '&', '*', '(', ')',
|
/* 0x20 */ '#', '$', '%', '^', '&', '*', '(', ')',
|
||||||
/* 0x28 */ '\n' | GRUB_TERM_SHIFT, '\e' | GRUB_TERM_SHIFT,
|
/* 0x28 */ '\n' | GRUB_TERM_SHIFT, GRUB_TERM_ESC | GRUB_TERM_SHIFT,
|
||||||
/* 0x2a */ '\b' | GRUB_TERM_SHIFT, '\t' | GRUB_TERM_SHIFT,
|
/* 0x2a */ GRUB_TERM_BACKSPACE | GRUB_TERM_SHIFT, GRUB_TERM_TAB | GRUB_TERM_SHIFT,
|
||||||
/* 0x2c */ ' ' | GRUB_TERM_SHIFT, '_', '+', '{',
|
/* 0x2c */ ' ' | GRUB_TERM_SHIFT, '_', '+', '{',
|
||||||
/* According to usage table 0x31 should be mapped to '/'
|
/* According to usage table 0x31 should be mapped to '/'
|
||||||
but testing with real keyboard shows that 0x32 is remapped to '/'.
|
but testing with real keyboard shows that 0x32 is remapped to '/'.
|
||||||
@ -220,7 +220,7 @@ grub_cmd_keymap (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
else
|
else
|
||||||
filename = argv[0];
|
filename = argv[0];
|
||||||
|
|
||||||
file = grub_file_open (filename);
|
file = grub_file_open (filename, GRUB_FILE_TYPE_KEYBOARD_LAYOUT);
|
||||||
if (! file)
|
if (! file)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ legacy_file (const char *filename)
|
|||||||
if (!suffix)
|
if (!suffix)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
file = grub_file_open (filename);
|
file = grub_file_open (filename, GRUB_FILE_TYPE_CONFIG);
|
||||||
if (! file)
|
if (! file)
|
||||||
{
|
{
|
||||||
grub_free (suffix);
|
grub_free (suffix);
|
||||||
|
@ -44,7 +44,8 @@ static const struct grub_arg_option options[] =
|
|||||||
PUBKEY filter (that insists upon properly signed files) as well. PUBKEY
|
PUBKEY filter (that insists upon properly signed files) as well. PUBKEY
|
||||||
filter is restored before the function returns. */
|
filter is restored before the function returns. */
|
||||||
static grub_file_t
|
static grub_file_t
|
||||||
open_envblk_file (char *filename, int untrusted)
|
open_envblk_file (char *filename,
|
||||||
|
enum grub_file_type type)
|
||||||
{
|
{
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
char *buf = 0;
|
char *buf = 0;
|
||||||
@ -72,13 +73,7 @@ open_envblk_file (char *filename, int untrusted)
|
|||||||
grub_strcpy (filename + len + 1, GRUB_ENVBLK_DEFCFG);
|
grub_strcpy (filename + len + 1, GRUB_ENVBLK_DEFCFG);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The filters that are disabled will be re-enabled by the call to
|
file = grub_file_open (filename, type);
|
||||||
grub_file_open() after this particular file is opened. */
|
|
||||||
grub_file_filter_disable_compression ();
|
|
||||||
if (untrusted)
|
|
||||||
grub_file_filter_disable_pubkey ();
|
|
||||||
|
|
||||||
file = grub_file_open (filename);
|
|
||||||
|
|
||||||
grub_free (buf);
|
grub_free (buf);
|
||||||
return file;
|
return file;
|
||||||
@ -171,7 +166,10 @@ grub_cmd_load_env (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
whitelist.list = args;
|
whitelist.list = args;
|
||||||
|
|
||||||
/* state[0] is the -f flag; state[1] is the --skip-sig flag */
|
/* state[0] is the -f flag; state[1] is the --skip-sig flag */
|
||||||
file = open_envblk_file ((state[0].set) ? state[0].arg : 0, state[1].set);
|
file = open_envblk_file ((state[0].set) ? state[0].arg : 0,
|
||||||
|
GRUB_FILE_TYPE_LOADENV
|
||||||
|
| (state[1].set
|
||||||
|
? GRUB_FILE_TYPE_SKIP_SIGNATURE : GRUB_FILE_TYPE_NONE));
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
@ -206,7 +204,10 @@ grub_cmd_list_env (grub_extcmd_context_t ctxt,
|
|||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
grub_envblk_t envblk;
|
grub_envblk_t envblk;
|
||||||
|
|
||||||
file = open_envblk_file ((state[0].set) ? state[0].arg : 0, 0);
|
file = open_envblk_file ((state[0].set) ? state[0].arg : 0,
|
||||||
|
GRUB_FILE_TYPE_LOADENV
|
||||||
|
| (state[1].set
|
||||||
|
? GRUB_FILE_TYPE_SKIP_SIGNATURE : GRUB_FILE_TYPE_NONE));
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
@ -390,7 +391,8 @@ grub_cmd_save_env (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no variable is specified");
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no variable is specified");
|
||||||
|
|
||||||
file = open_envblk_file ((state[0].set) ? state[0].arg : 0,
|
file = open_envblk_file ((state[0].set) ? state[0].arg : 0,
|
||||||
1 /* allow untrusted */);
|
GRUB_FILE_TYPE_SAVEENV
|
||||||
|
| GRUB_FILE_TYPE_SKIP_SIGNATURE);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
|
@ -129,8 +129,8 @@ print_files_long (const char *filename, const struct grub_dirhook_info *info,
|
|||||||
|
|
||||||
/* XXX: For ext2fs symlinks are detected as files while they
|
/* XXX: For ext2fs symlinks are detected as files while they
|
||||||
should be reported as directories. */
|
should be reported as directories. */
|
||||||
grub_file_filter_disable_compression ();
|
file = grub_file_open (pathname, GRUB_FILE_TYPE_GET_SIZE
|
||||||
file = grub_file_open (pathname);
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
if (! file)
|
if (! file)
|
||||||
{
|
{
|
||||||
grub_errno = 0;
|
grub_errno = 0;
|
||||||
@ -201,6 +201,15 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
|
|||||||
if (grub_errno == GRUB_ERR_UNKNOWN_FS)
|
if (grub_errno == GRUB_ERR_UNKNOWN_FS)
|
||||||
grub_errno = GRUB_ERR_NONE;
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
|
||||||
|
#ifdef GRUB_MACHINE_IEEE1275
|
||||||
|
/*
|
||||||
|
* Close device to prevent a double open in grub_normal_print_device_info().
|
||||||
|
* Otherwise it may lead to hangs on some IEEE 1275 platforms.
|
||||||
|
*/
|
||||||
|
grub_device_close (dev);
|
||||||
|
dev = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
grub_normal_print_device_info (device_name);
|
grub_normal_print_device_info (device_name);
|
||||||
}
|
}
|
||||||
else if (fs)
|
else if (fs)
|
||||||
@ -212,9 +221,9 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (longlist)
|
if (longlist)
|
||||||
(fs->dir) (dev, path, print_files_long, &ctx);
|
(fs->fs_dir) (dev, path, print_files_long, &ctx);
|
||||||
else
|
else
|
||||||
(fs->dir) (dev, path, print_files, &ctx);
|
(fs->fs_dir) (dev, path, print_files, &ctx);
|
||||||
|
|
||||||
if (grub_errno == GRUB_ERR_BAD_FILE_TYPE
|
if (grub_errno == GRUB_ERR_BAD_FILE_TYPE
|
||||||
&& path[grub_strlen (path) - 1] != '/')
|
&& path[grub_strlen (path) - 1] != '/')
|
||||||
@ -225,8 +234,8 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
|
|||||||
struct grub_dirhook_info info;
|
struct grub_dirhook_info info;
|
||||||
grub_errno = 0;
|
grub_errno = 0;
|
||||||
|
|
||||||
grub_file_filter_disable_compression ();
|
file = grub_file_open (dirname, GRUB_FILE_TYPE_GET_SIZE
|
||||||
file = grub_file_open (dirname);
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
if (! file)
|
if (! file)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
@ -159,12 +159,12 @@ grub_mac_bless_file (grub_device_t dev, const char *path_in, int intel)
|
|||||||
*tail = 0;
|
*tail = 0;
|
||||||
ctx.dirname = tail + 1;
|
ctx.dirname = tail + 1;
|
||||||
|
|
||||||
(fs->dir) (dev, *path == 0 ? "/" : path, find_inode, &ctx);
|
(fs->fs_dir) (dev, *path == 0 ? "/" : path, find_inode, &ctx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ctx.dirname = path + 1;
|
ctx.dirname = path + 1;
|
||||||
(fs->dir) (dev, "/", find_inode, &ctx);
|
(fs->fs_dir) (dev, "/", find_inode, &ctx);
|
||||||
}
|
}
|
||||||
if (!ctx.found)
|
if (!ctx.found)
|
||||||
{
|
{
|
||||||
|
@ -52,8 +52,8 @@ static struct
|
|||||||
int key;
|
int key;
|
||||||
} hotkey_aliases[] =
|
} hotkey_aliases[] =
|
||||||
{
|
{
|
||||||
{"backspace", '\b'},
|
{"backspace", GRUB_TERM_BACKSPACE},
|
||||||
{"tab", '\t'},
|
{"tab", GRUB_TERM_TAB},
|
||||||
{"delete", GRUB_TERM_KEY_DC},
|
{"delete", GRUB_TERM_KEY_DC},
|
||||||
{"insert", GRUB_TERM_KEY_INSERT},
|
{"insert", GRUB_TERM_KEY_INSERT},
|
||||||
{"f1", GRUB_TERM_KEY_F1},
|
{"f1", GRUB_TERM_KEY_F1},
|
||||||
|
@ -43,7 +43,7 @@ grub_mini_cmd_cat (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
if (argc < 1)
|
if (argc < 1)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
|
||||||
file = grub_file_open (argv[0]);
|
file = grub_file_open (argv[0], GRUB_FILE_TYPE_CAT);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
@ -137,6 +137,9 @@ grub_mini_cmd_rmmod (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
if (! mod)
|
if (! mod)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no such module");
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no such module");
|
||||||
|
|
||||||
|
if (grub_dl_is_persistent (mod))
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "cannot unload persistent module");
|
||||||
|
|
||||||
if (grub_dl_unref (mod) <= 0)
|
if (grub_dl_unref (mod) <= 0)
|
||||||
grub_dl_unload (mod);
|
grub_dl_unload (mod);
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@ get_uuid (const char *name, char **uuid, int getnative)
|
|||||||
/* Firmware disks. */
|
/* Firmware disks. */
|
||||||
case GRUB_DISK_DEVICE_BIOSDISK_ID:
|
case GRUB_DISK_DEVICE_BIOSDISK_ID:
|
||||||
case GRUB_DISK_DEVICE_OFDISK_ID:
|
case GRUB_DISK_DEVICE_OFDISK_ID:
|
||||||
|
case GRUB_DISK_DEVICE_OBDISK_ID:
|
||||||
case GRUB_DISK_DEVICE_EFIDISK_ID:
|
case GRUB_DISK_DEVICE_EFIDISK_ID:
|
||||||
case GRUB_DISK_DEVICE_NAND_ID:
|
case GRUB_DISK_DEVICE_NAND_ID:
|
||||||
case GRUB_DISK_DEVICE_ARCDISK_ID:
|
case GRUB_DISK_DEVICE_ARCDISK_ID:
|
||||||
@ -108,7 +109,7 @@ get_uuid (const char *name, char **uuid, int getnative)
|
|||||||
grub_device_close (dev);
|
grub_device_close (dev);
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
if (!fs->uuid || fs->uuid (dev, uuid) || !*uuid)
|
if (!fs->fs_uuid || fs->fs_uuid (dev, uuid) || !*uuid)
|
||||||
{
|
{
|
||||||
grub_device_close (dev);
|
grub_device_close (dev);
|
||||||
|
|
||||||
@ -242,7 +243,8 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
if (! filename)
|
if (! filename)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
file = grub_file_open (filename);
|
file = grub_file_open (filename,
|
||||||
|
GRUB_FILE_TYPE_GRUB_MODULE);
|
||||||
grub_free (filename);
|
grub_free (filename);
|
||||||
if (! file)
|
if (! file)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -193,7 +193,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
{
|
{
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
|
|
||||||
file = grub_file_open (filename);
|
file = grub_file_open (filename, GRUB_FILE_TYPE_GRUB_MODULE_LIST);
|
||||||
if (file)
|
if (file)
|
||||||
{
|
{
|
||||||
char *buf = 0;
|
char *buf = 0;
|
||||||
|
@ -30,16 +30,10 @@
|
|||||||
#include <grub/env.h>
|
#include <grub/env.h>
|
||||||
#include <grub/kernel.h>
|
#include <grub/kernel.h>
|
||||||
#include <grub/extcmd.h>
|
#include <grub/extcmd.h>
|
||||||
|
#include <grub/verify.h>
|
||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
struct grub_verified
|
|
||||||
{
|
|
||||||
grub_file_t file;
|
|
||||||
void *buf;
|
|
||||||
};
|
|
||||||
typedef struct grub_verified *grub_verified_t;
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
OPTION_SKIP_SIG = 0
|
OPTION_SKIP_SIG = 0
|
||||||
@ -445,23 +439,27 @@ rsa_pad (gcry_mpi_t *hmpi, grub_uint8_t *hval,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct grub_pubkey_context
|
||||||
|
{
|
||||||
|
grub_file_t sig;
|
||||||
|
struct signature_v4_header v4;
|
||||||
|
grub_uint8_t v;
|
||||||
|
const gcry_md_spec_t *hash;
|
||||||
|
void *hash_context;
|
||||||
|
};
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_verify_signature_real (char *buf, grub_size_t size,
|
grub_verify_signature_init (struct grub_pubkey_context *ctxt, grub_file_t sig)
|
||||||
grub_file_t f, grub_file_t sig,
|
|
||||||
struct grub_public_key *pkey)
|
|
||||||
{
|
{
|
||||||
grub_size_t len;
|
grub_size_t len;
|
||||||
grub_uint8_t v;
|
|
||||||
grub_uint8_t h;
|
grub_uint8_t h;
|
||||||
grub_uint8_t t;
|
grub_uint8_t t;
|
||||||
grub_uint8_t pk;
|
grub_uint8_t pk;
|
||||||
const gcry_md_spec_t *hash;
|
|
||||||
struct signature_v4_header v4;
|
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
grub_size_t i;
|
|
||||||
gcry_mpi_t mpis[10];
|
|
||||||
grub_uint8_t type = 0;
|
grub_uint8_t type = 0;
|
||||||
|
|
||||||
|
grub_memset (ctxt, 0, sizeof (*ctxt));
|
||||||
|
|
||||||
err = read_packet_header (sig, &type, &len);
|
err = read_packet_header (sig, &type, &len);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
@ -469,18 +467,18 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
if (type != 0x2)
|
if (type != 0x2)
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
|
|
||||||
if (grub_file_read (sig, &v, sizeof (v)) != sizeof (v))
|
if (grub_file_read (sig, &ctxt->v, sizeof (ctxt->v)) != sizeof (ctxt->v))
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
|
|
||||||
if (v != 4)
|
if (ctxt->v != 4)
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
|
|
||||||
if (grub_file_read (sig, &v4, sizeof (v4)) != sizeof (v4))
|
if (grub_file_read (sig, &ctxt->v4, sizeof (ctxt->v4)) != sizeof (ctxt->v4))
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
|
|
||||||
h = v4.hash;
|
h = ctxt->v4.hash;
|
||||||
t = v4.type;
|
t = ctxt->v4.type;
|
||||||
pk = v4.pkeyalgo;
|
pk = ctxt->v4.pkeyalgo;
|
||||||
|
|
||||||
if (t != 0)
|
if (t != 0)
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
@ -491,16 +489,40 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
if (pk >= ARRAY_SIZE (pkalgos) || pkalgos[pk].name == NULL)
|
if (pk >= ARRAY_SIZE (pkalgos) || pkalgos[pk].name == NULL)
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
|
|
||||||
hash = grub_crypto_lookup_md_by_name (hashes[h]);
|
ctxt->hash = grub_crypto_lookup_md_by_name (hashes[h]);
|
||||||
if (!hash)
|
if (!ctxt->hash)
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, "hash `%s' not loaded", hashes[h]);
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, "hash `%s' not loaded", hashes[h]);
|
||||||
|
|
||||||
grub_dprintf ("crypt", "alive\n");
|
grub_dprintf ("crypt", "alive\n");
|
||||||
|
|
||||||
|
ctxt->hash_context = grub_zalloc (ctxt->hash->contextsize);
|
||||||
|
if (!ctxt->hash_context)
|
||||||
|
return grub_errno;
|
||||||
|
|
||||||
|
ctxt->hash->init (ctxt->hash_context);
|
||||||
|
ctxt->sig = sig;
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_pubkey_write (void *ctxt_, void *buf, grub_size_t size)
|
||||||
{
|
{
|
||||||
void *context = NULL;
|
struct grub_pubkey_context *ctxt = ctxt_;
|
||||||
|
ctxt->hash->write (ctxt->hash_context, buf, size);
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_verify_signature_real (struct grub_pubkey_context *ctxt,
|
||||||
|
struct grub_public_key *pkey)
|
||||||
|
{
|
||||||
|
gcry_mpi_t mpis[10];
|
||||||
|
grub_uint8_t pk = ctxt->v4.pkeyalgo;
|
||||||
|
grub_size_t i;
|
||||||
|
grub_uint8_t *readbuf = NULL;
|
||||||
unsigned char *hval;
|
unsigned char *hval;
|
||||||
grub_ssize_t rem = grub_be_to_cpu16 (v4.hashed_sub);
|
grub_ssize_t rem = grub_be_to_cpu16 (ctxt->v4.hashed_sub);
|
||||||
grub_uint32_t headlen = grub_cpu_to_be32 (rem + 6);
|
grub_uint32_t headlen = grub_cpu_to_be32 (rem + 6);
|
||||||
grub_uint8_t s;
|
grub_uint8_t s;
|
||||||
grub_uint16_t unhashed_sub;
|
grub_uint16_t unhashed_sub;
|
||||||
@ -509,45 +531,29 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
gcry_mpi_t hmpi;
|
gcry_mpi_t hmpi;
|
||||||
grub_uint64_t keyid = 0;
|
grub_uint64_t keyid = 0;
|
||||||
struct grub_public_subkey *sk;
|
struct grub_public_subkey *sk;
|
||||||
grub_uint8_t *readbuf = NULL;
|
|
||||||
|
|
||||||
context = grub_zalloc (hash->contextsize);
|
readbuf = grub_malloc (READBUF_SIZE);
|
||||||
readbuf = grub_zalloc (READBUF_SIZE);
|
if (!readbuf)
|
||||||
if (!context || !readbuf)
|
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
hash->init (context);
|
ctxt->hash->write (ctxt->hash_context, &ctxt->v, sizeof (ctxt->v));
|
||||||
if (buf)
|
ctxt->hash->write (ctxt->hash_context, &ctxt->v4, sizeof (ctxt->v4));
|
||||||
hash->write (context, buf, size);
|
|
||||||
else
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
r = grub_file_read (f, readbuf, READBUF_SIZE);
|
|
||||||
if (r < 0)
|
|
||||||
goto fail;
|
|
||||||
if (r == 0)
|
|
||||||
break;
|
|
||||||
hash->write (context, readbuf, r);
|
|
||||||
}
|
|
||||||
|
|
||||||
hash->write (context, &v, sizeof (v));
|
|
||||||
hash->write (context, &v4, sizeof (v4));
|
|
||||||
while (rem)
|
while (rem)
|
||||||
{
|
{
|
||||||
r = grub_file_read (sig, readbuf,
|
r = grub_file_read (ctxt->sig, readbuf,
|
||||||
rem < READBUF_SIZE ? rem : READBUF_SIZE);
|
rem < READBUF_SIZE ? rem : READBUF_SIZE);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
if (r == 0)
|
if (r == 0)
|
||||||
break;
|
break;
|
||||||
hash->write (context, readbuf, r);
|
ctxt->hash->write (ctxt->hash_context, readbuf, r);
|
||||||
rem -= r;
|
rem -= r;
|
||||||
}
|
}
|
||||||
hash->write (context, &v, sizeof (v));
|
ctxt->hash->write (ctxt->hash_context, &ctxt->v, sizeof (ctxt->v));
|
||||||
s = 0xff;
|
s = 0xff;
|
||||||
hash->write (context, &s, sizeof (s));
|
ctxt->hash->write (ctxt->hash_context, &s, sizeof (s));
|
||||||
hash->write (context, &headlen, sizeof (headlen));
|
ctxt->hash->write (ctxt->hash_context, &headlen, sizeof (headlen));
|
||||||
r = grub_file_read (sig, &unhashed_sub, sizeof (unhashed_sub));
|
r = grub_file_read (ctxt->sig, &unhashed_sub, sizeof (unhashed_sub));
|
||||||
if (r != sizeof (unhashed_sub))
|
if (r != sizeof (unhashed_sub))
|
||||||
goto fail;
|
goto fail;
|
||||||
{
|
{
|
||||||
@ -556,7 +562,7 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
rem = grub_be_to_cpu16 (unhashed_sub);
|
rem = grub_be_to_cpu16 (unhashed_sub);
|
||||||
if (rem > READBUF_SIZE)
|
if (rem > READBUF_SIZE)
|
||||||
goto fail;
|
goto fail;
|
||||||
r = grub_file_read (sig, readbuf, rem);
|
r = grub_file_read (ctxt->sig, readbuf, rem);
|
||||||
if (r != rem)
|
if (r != rem)
|
||||||
goto fail;
|
goto fail;
|
||||||
for (ptr = readbuf; ptr < readbuf + rem; ptr += l)
|
for (ptr = readbuf; ptr < readbuf + rem; ptr += l)
|
||||||
@ -582,25 +588,25 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hash->final (context);
|
ctxt->hash->final (ctxt->hash_context);
|
||||||
|
|
||||||
grub_dprintf ("crypt", "alive\n");
|
grub_dprintf ("crypt", "alive\n");
|
||||||
|
|
||||||
hval = hash->read (context);
|
hval = ctxt->hash->read (ctxt->hash_context);
|
||||||
|
|
||||||
if (grub_file_read (sig, hash_start, sizeof (hash_start)) != sizeof (hash_start))
|
if (grub_file_read (ctxt->sig, hash_start, sizeof (hash_start)) != sizeof (hash_start))
|
||||||
goto fail;
|
goto fail;
|
||||||
if (grub_memcmp (hval, hash_start, sizeof (hash_start)) != 0)
|
if (grub_memcmp (hval, hash_start, sizeof (hash_start)) != 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
grub_dprintf ("crypt", "@ %x\n", (int)grub_file_tell (sig));
|
grub_dprintf ("crypt", "@ %x\n", (int)grub_file_tell (ctxt->sig));
|
||||||
|
|
||||||
for (i = 0; i < pkalgos[pk].nmpisig; i++)
|
for (i = 0; i < pkalgos[pk].nmpisig; i++)
|
||||||
{
|
{
|
||||||
grub_uint16_t l;
|
grub_uint16_t l;
|
||||||
grub_size_t lb;
|
grub_size_t lb;
|
||||||
grub_dprintf ("crypt", "alive\n");
|
grub_dprintf ("crypt", "alive\n");
|
||||||
if (grub_file_read (sig, &l, sizeof (l)) != sizeof (l))
|
if (grub_file_read (ctxt->sig, &l, sizeof (l)) != sizeof (l))
|
||||||
goto fail;
|
goto fail;
|
||||||
grub_dprintf ("crypt", "alive\n");
|
grub_dprintf ("crypt", "alive\n");
|
||||||
lb = (grub_be_to_cpu16 (l) + 7) / 8;
|
lb = (grub_be_to_cpu16 (l) + 7) / 8;
|
||||||
@ -608,7 +614,7 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
if (lb > READBUF_SIZE - sizeof (grub_uint16_t))
|
if (lb > READBUF_SIZE - sizeof (grub_uint16_t))
|
||||||
goto fail;
|
goto fail;
|
||||||
grub_dprintf ("crypt", "alive\n");
|
grub_dprintf ("crypt", "alive\n");
|
||||||
if (grub_file_read (sig, readbuf + sizeof (grub_uint16_t), lb) != (grub_ssize_t) lb)
|
if (grub_file_read (ctxt->sig, readbuf + sizeof (grub_uint16_t), lb) != (grub_ssize_t) lb)
|
||||||
goto fail;
|
goto fail;
|
||||||
grub_dprintf ("crypt", "alive\n");
|
grub_dprintf ("crypt", "alive\n");
|
||||||
grub_memcpy (readbuf, &l, sizeof (l));
|
grub_memcpy (readbuf, &l, sizeof (l));
|
||||||
@ -632,7 +638,7 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pkalgos[pk].pad (&hmpi, hval, hash, sk))
|
if (pkalgos[pk].pad (&hmpi, hval, ctxt->hash, sk))
|
||||||
goto fail;
|
goto fail;
|
||||||
if (!*pkalgos[pk].algo)
|
if (!*pkalgos[pk].algo)
|
||||||
{
|
{
|
||||||
@ -649,25 +655,76 @@ grub_verify_signature_real (char *buf, grub_size_t size,
|
|||||||
if ((*pkalgos[pk].algo)->verify (0, hmpi, mpis, sk->mpis, 0, 0))
|
if ((*pkalgos[pk].algo)->verify (0, hmpi, mpis, sk->mpis, 0, 0))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
grub_free (context);
|
|
||||||
grub_free (readbuf);
|
grub_free (readbuf);
|
||||||
|
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
grub_free (context);
|
|
||||||
grub_free (readbuf);
|
grub_free (readbuf);
|
||||||
if (!grub_errno)
|
if (!grub_errno)
|
||||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
grub_pubkey_close_real (struct grub_pubkey_context *ctxt)
|
||||||
|
{
|
||||||
|
if (ctxt->sig)
|
||||||
|
grub_file_close (ctxt->sig);
|
||||||
|
if (ctxt->hash_context)
|
||||||
|
grub_free (ctxt->hash_context);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
grub_pubkey_close (void *ctxt)
|
||||||
|
{
|
||||||
|
grub_pubkey_close_real (ctxt);
|
||||||
|
grub_free (ctxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_verify_signature (grub_file_t f, grub_file_t sig,
|
grub_verify_signature (grub_file_t f, const char *fsig,
|
||||||
struct grub_public_key *pkey)
|
struct grub_public_key *pkey)
|
||||||
{
|
{
|
||||||
return grub_verify_signature_real (0, 0, f, sig, pkey);
|
grub_file_t sig;
|
||||||
|
grub_err_t err;
|
||||||
|
struct grub_pubkey_context ctxt;
|
||||||
|
grub_uint8_t *readbuf = NULL;
|
||||||
|
|
||||||
|
sig = grub_file_open (fsig,
|
||||||
|
GRUB_FILE_TYPE_SIGNATURE
|
||||||
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
|
if (!sig)
|
||||||
|
return grub_errno;
|
||||||
|
|
||||||
|
err = grub_verify_signature_init (&ctxt, sig);
|
||||||
|
if (err)
|
||||||
|
{
|
||||||
|
grub_file_close (sig);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
readbuf = grub_zalloc (READBUF_SIZE);
|
||||||
|
if (!readbuf)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
grub_ssize_t r;
|
||||||
|
r = grub_file_read (f, readbuf, READBUF_SIZE);
|
||||||
|
if (r < 0)
|
||||||
|
goto fail;
|
||||||
|
if (r == 0)
|
||||||
|
break;
|
||||||
|
err = grub_pubkey_write (&ctxt, readbuf, r);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_verify_signature_real (&ctxt, pkey);
|
||||||
|
fail:
|
||||||
|
grub_pubkey_close_real (&ctxt);
|
||||||
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
@ -680,10 +737,12 @@ grub_cmd_trust (grub_extcmd_context_t ctxt,
|
|||||||
if (argc < 1)
|
if (argc < 1)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
||||||
|
|
||||||
grub_file_filter_disable_compression ();
|
pkf = grub_file_open (args[0],
|
||||||
if (ctxt->state[OPTION_SKIP_SIG].set)
|
GRUB_FILE_TYPE_PUBLIC_KEY_TRUST
|
||||||
grub_file_filter_disable_pubkey ();
|
| GRUB_FILE_TYPE_NO_DECOMPRESS
|
||||||
pkf = grub_file_open (args[0]);
|
| (ctxt->state[OPTION_SKIP_SIG].set
|
||||||
|
? GRUB_FILE_TYPE_SKIP_SIGNATURE
|
||||||
|
: GRUB_FILE_TYPE_NONE));
|
||||||
if (!pkf)
|
if (!pkf)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
pk = grub_load_public_key (pkf);
|
pk = grub_load_public_key (pkf);
|
||||||
@ -757,7 +816,7 @@ static grub_err_t
|
|||||||
grub_cmd_verify_signature (grub_extcmd_context_t ctxt,
|
grub_cmd_verify_signature (grub_extcmd_context_t ctxt,
|
||||||
int argc, char **args)
|
int argc, char **args)
|
||||||
{
|
{
|
||||||
grub_file_t f = NULL, sig = NULL;
|
grub_file_t f = NULL;
|
||||||
grub_err_t err = GRUB_ERR_NONE;
|
grub_err_t err = GRUB_ERR_NONE;
|
||||||
struct grub_public_key *pk = NULL;
|
struct grub_public_key *pk = NULL;
|
||||||
|
|
||||||
@ -771,10 +830,12 @@ grub_cmd_verify_signature (grub_extcmd_context_t ctxt,
|
|||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
{
|
{
|
||||||
grub_file_t pkf;
|
grub_file_t pkf;
|
||||||
grub_file_filter_disable_compression ();
|
pkf = grub_file_open (args[2],
|
||||||
if (ctxt->state[OPTION_SKIP_SIG].set)
|
GRUB_FILE_TYPE_PUBLIC_KEY
|
||||||
grub_file_filter_disable_pubkey ();
|
| GRUB_FILE_TYPE_NO_DECOMPRESS
|
||||||
pkf = grub_file_open (args[2]);
|
| (ctxt->state[OPTION_SKIP_SIG].set
|
||||||
|
? GRUB_FILE_TYPE_SKIP_SIGNATURE
|
||||||
|
: GRUB_FILE_TYPE_NONE));
|
||||||
if (!pkf)
|
if (!pkf)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
pk = grub_load_public_key (pkf);
|
pk = grub_load_public_key (pkf);
|
||||||
@ -786,26 +847,15 @@ grub_cmd_verify_signature (grub_extcmd_context_t ctxt,
|
|||||||
grub_file_close (pkf);
|
grub_file_close (pkf);
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_file_filter_disable_all ();
|
f = grub_file_open (args[0], GRUB_FILE_TYPE_VERIFY_SIGNATURE);
|
||||||
f = grub_file_open (args[0]);
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
err = grub_errno;
|
err = grub_errno;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_file_filter_disable_all ();
|
err = grub_verify_signature (f, args[1], pk);
|
||||||
sig = grub_file_open (args[1]);
|
|
||||||
if (!sig)
|
|
||||||
{
|
|
||||||
err = grub_errno;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = grub_verify_signature (f, sig, pk);
|
|
||||||
fail:
|
fail:
|
||||||
if (sig)
|
|
||||||
grub_file_close (sig);
|
|
||||||
if (f)
|
if (f)
|
||||||
grub_file_close (f);
|
grub_file_close (f);
|
||||||
if (pk)
|
if (pk)
|
||||||
@ -815,135 +865,53 @@ grub_cmd_verify_signature (grub_extcmd_context_t ctxt,
|
|||||||
|
|
||||||
static int sec = 0;
|
static int sec = 0;
|
||||||
|
|
||||||
static void
|
|
||||||
verified_free (grub_verified_t verified)
|
|
||||||
{
|
|
||||||
if (verified)
|
|
||||||
{
|
|
||||||
grub_free (verified->buf);
|
|
||||||
grub_free (verified);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static grub_ssize_t
|
|
||||||
verified_read (struct grub_file *file, char *buf, grub_size_t len)
|
|
||||||
{
|
|
||||||
grub_verified_t verified = file->data;
|
|
||||||
|
|
||||||
grub_memcpy (buf, (char *) verified->buf + file->offset, len);
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
verified_close (struct grub_file *file)
|
grub_pubkey_init (grub_file_t io, enum grub_file_type type __attribute__ ((unused)),
|
||||||
{
|
void **context, enum grub_verify_flags *flags)
|
||||||
grub_verified_t verified = file->data;
|
|
||||||
|
|
||||||
grub_file_close (verified->file);
|
|
||||||
verified_free (verified);
|
|
||||||
file->data = 0;
|
|
||||||
|
|
||||||
/* device and name are freed by parent */
|
|
||||||
file->device = 0;
|
|
||||||
file->name = 0;
|
|
||||||
|
|
||||||
return grub_errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct grub_fs verified_fs =
|
|
||||||
{
|
|
||||||
.name = "verified_read",
|
|
||||||
.read = verified_read,
|
|
||||||
.close = verified_close
|
|
||||||
};
|
|
||||||
|
|
||||||
static grub_file_t
|
|
||||||
grub_pubkey_open (grub_file_t io, const char *filename)
|
|
||||||
{
|
{
|
||||||
grub_file_t sig;
|
grub_file_t sig;
|
||||||
char *fsuf, *ptr;
|
char *fsuf, *ptr;
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
grub_file_filter_t curfilt[GRUB_FILE_FILTER_MAX];
|
struct grub_pubkey_context *ctxt;
|
||||||
grub_file_t ret;
|
|
||||||
grub_verified_t verified;
|
|
||||||
|
|
||||||
if (!sec)
|
if (!sec)
|
||||||
return io;
|
{
|
||||||
if (io->device->disk &&
|
*flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;
|
||||||
(io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID
|
return GRUB_ERR_NONE;
|
||||||
|| io->device->disk->dev->id == GRUB_DISK_DEVICE_PROCFS_ID))
|
}
|
||||||
return io;
|
|
||||||
fsuf = grub_malloc (grub_strlen (filename) + sizeof (".sig"));
|
fsuf = grub_malloc (grub_strlen (io->name) + sizeof (".sig"));
|
||||||
if (!fsuf)
|
if (!fsuf)
|
||||||
return NULL;
|
return grub_errno;
|
||||||
ptr = grub_stpcpy (fsuf, filename);
|
ptr = grub_stpcpy (fsuf, io->name);
|
||||||
grub_memcpy (ptr, ".sig", sizeof (".sig"));
|
grub_memcpy (ptr, ".sig", sizeof (".sig"));
|
||||||
|
|
||||||
grub_memcpy (curfilt, grub_file_filters_enabled,
|
sig = grub_file_open (fsuf, GRUB_FILE_TYPE_SIGNATURE);
|
||||||
sizeof (curfilt));
|
|
||||||
grub_file_filter_disable_all ();
|
|
||||||
sig = grub_file_open (fsuf);
|
|
||||||
grub_memcpy (grub_file_filters_enabled, curfilt,
|
|
||||||
sizeof (curfilt));
|
|
||||||
grub_free (fsuf);
|
grub_free (fsuf);
|
||||||
if (!sig)
|
if (!sig)
|
||||||
return NULL;
|
return grub_errno;
|
||||||
|
|
||||||
ret = grub_malloc (sizeof (*ret));
|
ctxt = grub_malloc (sizeof (*ctxt));
|
||||||
if (!ret)
|
if (!ctxt)
|
||||||
{
|
{
|
||||||
grub_file_close (sig);
|
grub_file_close (sig);
|
||||||
return NULL;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
*ret = *io;
|
err = grub_verify_signature_init (ctxt, sig);
|
||||||
|
|
||||||
ret->fs = &verified_fs;
|
|
||||||
ret->not_easily_seekable = 0;
|
|
||||||
if (ret->size >> (sizeof (grub_size_t) * GRUB_CHAR_BIT - 1))
|
|
||||||
{
|
|
||||||
grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
|
||||||
"big file signature isn't implemented yet");
|
|
||||||
grub_file_close (sig);
|
|
||||||
grub_free (ret);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
verified = grub_malloc (sizeof (*verified));
|
|
||||||
if (!verified)
|
|
||||||
{
|
|
||||||
grub_file_close (sig);
|
|
||||||
grub_free (ret);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
verified->buf = grub_malloc (ret->size);
|
|
||||||
if (!verified->buf)
|
|
||||||
{
|
|
||||||
grub_file_close (sig);
|
|
||||||
grub_free (verified);
|
|
||||||
grub_free (ret);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (grub_file_read (io, verified->buf, ret->size) != (grub_ssize_t) ret->size)
|
|
||||||
{
|
|
||||||
if (!grub_errno)
|
|
||||||
grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"),
|
|
||||||
filename);
|
|
||||||
grub_file_close (sig);
|
|
||||||
verified_free (verified);
|
|
||||||
grub_free (ret);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = grub_verify_signature_real (verified->buf, ret->size, 0, sig, NULL);
|
|
||||||
grub_file_close (sig);
|
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
verified_free (verified);
|
grub_free (ctxt);
|
||||||
grub_free (ret);
|
grub_file_close (sig);
|
||||||
return NULL;
|
return err;
|
||||||
}
|
}
|
||||||
verified->file = io;
|
*context = ctxt;
|
||||||
ret->data = verified;
|
return GRUB_ERR_NONE;
|
||||||
return ret;
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_pubkey_fini (void *ctxt)
|
||||||
|
{
|
||||||
|
return grub_verify_signature_real (ctxt, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@ -966,14 +934,22 @@ pseudo_read (struct grub_file *file, char *buf, grub_size_t len)
|
|||||||
struct grub_fs pseudo_fs =
|
struct grub_fs pseudo_fs =
|
||||||
{
|
{
|
||||||
.name = "pseudo",
|
.name = "pseudo",
|
||||||
.read = pseudo_read
|
.fs_read = pseudo_read
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct grub_file_verifier grub_pubkey_verifier =
|
||||||
|
{
|
||||||
|
.name = "pgp",
|
||||||
|
.init = grub_pubkey_init,
|
||||||
|
.fini = grub_pubkey_fini,
|
||||||
|
.write = grub_pubkey_write,
|
||||||
|
.close = grub_pubkey_close,
|
||||||
|
};
|
||||||
|
|
||||||
static grub_extcmd_t cmd, cmd_trust;
|
static grub_extcmd_t cmd, cmd_trust;
|
||||||
static grub_command_t cmd_distrust, cmd_list;
|
static grub_command_t cmd_distrust, cmd_list;
|
||||||
|
|
||||||
GRUB_MOD_INIT(verify)
|
GRUB_MOD_INIT(pgp)
|
||||||
{
|
{
|
||||||
const char *val;
|
const char *val;
|
||||||
struct grub_module_header *header;
|
struct grub_module_header *header;
|
||||||
@ -984,8 +960,6 @@ GRUB_MOD_INIT(verify)
|
|||||||
else
|
else
|
||||||
sec = 0;
|
sec = 0;
|
||||||
|
|
||||||
grub_file_filter_register (GRUB_FILE_FILTER_PUBKEY, grub_pubkey_open);
|
|
||||||
|
|
||||||
grub_register_variable_hook ("check_signatures", 0, grub_env_write_sec);
|
grub_register_variable_hook ("check_signatures", 0, grub_env_write_sec);
|
||||||
grub_env_export ("check_signatures");
|
grub_env_export ("check_signatures");
|
||||||
|
|
||||||
@ -1030,11 +1004,13 @@ GRUB_MOD_INIT(verify)
|
|||||||
cmd_distrust = grub_register_command ("distrust", grub_cmd_distrust,
|
cmd_distrust = grub_register_command ("distrust", grub_cmd_distrust,
|
||||||
N_("PUBKEY_ID"),
|
N_("PUBKEY_ID"),
|
||||||
N_("Remove PUBKEY_ID from trusted keys."));
|
N_("Remove PUBKEY_ID from trusted keys."));
|
||||||
|
|
||||||
|
grub_verifier_register (&grub_pubkey_verifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
GRUB_MOD_FINI(verify)
|
GRUB_MOD_FINI(pgp)
|
||||||
{
|
{
|
||||||
grub_file_filter_unregister (GRUB_FILE_FILTER_PUBKEY);
|
grub_verifier_unregister (&grub_pubkey_verifier);
|
||||||
grub_unregister_extcmd (cmd);
|
grub_unregister_extcmd (cmd);
|
||||||
grub_unregister_extcmd (cmd_trust);
|
grub_unregister_extcmd (cmd_trust);
|
||||||
grub_unregister_command (cmd_list);
|
grub_unregister_command (cmd_list);
|
@ -113,10 +113,10 @@ grub_cmd_probe (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
if (state[4].set)
|
if (state[4].set)
|
||||||
{
|
{
|
||||||
char *uuid;
|
char *uuid;
|
||||||
if (! fs->uuid)
|
if (! fs->fs_uuid)
|
||||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||||
N_("%s does not support UUIDs"), fs->name);
|
N_("%s does not support UUIDs"), fs->name);
|
||||||
err = fs->uuid (dev, &uuid);
|
err = fs->fs_uuid (dev, &uuid);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
if (! uuid)
|
if (! uuid)
|
||||||
@ -134,11 +134,11 @@ grub_cmd_probe (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
if (state[5].set)
|
if (state[5].set)
|
||||||
{
|
{
|
||||||
char *label;
|
char *label;
|
||||||
if (! fs->label)
|
if (! fs->fs_label)
|
||||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||||
N_("filesystem `%s' does not support labels"),
|
N_("filesystem `%s' does not support labels"),
|
||||||
fs->name);
|
fs->name);
|
||||||
err = fs->label (dev, &label);
|
err = fs->fs_label (dev, &label);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
if (! label)
|
if (! label)
|
||||||
|
@ -81,8 +81,8 @@ iterate_device (const char *name, void *data)
|
|||||||
if (! buf)
|
if (! buf)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
grub_file_filter_disable_compression ();
|
file = grub_file_open (buf, GRUB_FILE_TYPE_FS_SEARCH
|
||||||
file = grub_file_open (buf);
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
if (file)
|
if (file)
|
||||||
{
|
{
|
||||||
found = 1;
|
found = 1;
|
||||||
@ -103,9 +103,9 @@ iterate_device (const char *name, void *data)
|
|||||||
fs = grub_fs_probe (dev);
|
fs = grub_fs_probe (dev);
|
||||||
|
|
||||||
#ifdef DO_SEARCH_FS_UUID
|
#ifdef DO_SEARCH_FS_UUID
|
||||||
#define read_fn uuid
|
#define read_fn fs_uuid
|
||||||
#else
|
#else
|
||||||
#define read_fn label
|
#define read_fn fs_label
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (fs && fs->read_fn)
|
if (fs && fs->read_fn)
|
||||||
|
@ -133,15 +133,15 @@ get_fileinfo (char *path, struct test_parse_ctx *ctx)
|
|||||||
|
|
||||||
/* Fetch writing time. */
|
/* Fetch writing time. */
|
||||||
ctx->file_info.mtimeset = 0;
|
ctx->file_info.mtimeset = 0;
|
||||||
if (fs->mtime)
|
if (fs->fs_mtime)
|
||||||
{
|
{
|
||||||
if (! fs->mtime (dev, &ctx->file_info.mtime))
|
if (! fs->fs_mtime (dev, &ctx->file_info.mtime))
|
||||||
ctx->file_info.mtimeset = 1;
|
ctx->file_info.mtimeset = 1;
|
||||||
grub_errno = GRUB_ERR_NONE;
|
grub_errno = GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
(fs->dir) (dev, path, find_file, ctx);
|
(fs->fs_dir) (dev, path, find_file, ctx);
|
||||||
|
|
||||||
grub_device_close (dev);
|
grub_device_close (dev);
|
||||||
grub_free (path);
|
grub_free (path);
|
||||||
@ -355,8 +355,8 @@ test_parse (char **args, int *argn, int argc)
|
|||||||
if (grub_strcmp (args[*argn], "-s") == 0)
|
if (grub_strcmp (args[*argn], "-s") == 0)
|
||||||
{
|
{
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
grub_file_filter_disable_compression ();
|
file = grub_file_open (args[*argn + 1], GRUB_FILE_TYPE_GET_SIZE
|
||||||
file = grub_file_open (args[*argn + 1]);
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
update_val (file && (grub_file_size (file) != 0), &ctx);
|
update_val (file && (grub_file_size (file) != 0), &ctx);
|
||||||
if (file)
|
if (file)
|
||||||
grub_file_close (file);
|
grub_file_close (file);
|
||||||
|
@ -57,7 +57,7 @@ grub_cmd_testload (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
if (argc < 1)
|
if (argc < 1)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
|
||||||
file = grub_file_open (argv[0]);
|
file = grub_file_open (argv[0], GRUB_FILE_TYPE_TESTLOAD);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ grub_cmd_testspeed (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
file = grub_file_open (args[0]);
|
file = grub_file_open (args[0], GRUB_FILE_TYPE_TESTLOAD);
|
||||||
if (file == NULL)
|
if (file == NULL)
|
||||||
goto quit;
|
goto quit;
|
||||||
|
|
||||||
|
102
grub-core/commands/tpm.c
Normal file
102
grub-core/commands/tpm.c
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2018 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Core TPM support code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/err.h>
|
||||||
|
#include <grub/i18n.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/tpm.h>
|
||||||
|
#include <grub/term.h>
|
||||||
|
#include <grub/verify.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_tpm_measure (unsigned char *buf, grub_size_t size, grub_uint8_t pcr,
|
||||||
|
const char *description)
|
||||||
|
{
|
||||||
|
return grub_tpm_log_event (buf, size, pcr, description);
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm_verify_init (grub_file_t io,
|
||||||
|
enum grub_file_type type __attribute__ ((unused)),
|
||||||
|
void **context, enum grub_verify_flags *flags)
|
||||||
|
{
|
||||||
|
*context = io->name;
|
||||||
|
*flags |= GRUB_VERIFY_FLAGS_SINGLE_CHUNK;
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm_verify_write (void *context, void *buf, grub_size_t size)
|
||||||
|
{
|
||||||
|
return grub_tpm_measure (buf, size, GRUB_BINARY_PCR, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_tpm_verify_string (char *str, enum grub_verify_string_type type)
|
||||||
|
{
|
||||||
|
const char *prefix = NULL;
|
||||||
|
char *description;
|
||||||
|
grub_err_t status;
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case GRUB_VERIFY_KERNEL_CMDLINE:
|
||||||
|
prefix = "kernel_cmdline: ";
|
||||||
|
break;
|
||||||
|
case GRUB_VERIFY_MODULE_CMDLINE:
|
||||||
|
prefix = "module_cmdline: ";
|
||||||
|
break;
|
||||||
|
case GRUB_VERIFY_COMMAND:
|
||||||
|
prefix = "grub_cmd: ";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
description = grub_malloc (grub_strlen (str) + grub_strlen (prefix) + 1);
|
||||||
|
if (!description)
|
||||||
|
return grub_errno;
|
||||||
|
grub_memcpy (description, prefix, grub_strlen (prefix));
|
||||||
|
grub_memcpy (description + grub_strlen (prefix), str,
|
||||||
|
grub_strlen (str) + 1);
|
||||||
|
status =
|
||||||
|
grub_tpm_measure ((unsigned char *) str, grub_strlen (str),
|
||||||
|
GRUB_STRING_PCR, description);
|
||||||
|
grub_free (description);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct grub_file_verifier grub_tpm_verifier = {
|
||||||
|
.name = "tpm",
|
||||||
|
.init = grub_tpm_verify_init,
|
||||||
|
.write = grub_tpm_verify_write,
|
||||||
|
.verify_string = grub_tpm_verify_string,
|
||||||
|
};
|
||||||
|
|
||||||
|
GRUB_MOD_INIT (tpm)
|
||||||
|
{
|
||||||
|
grub_verifier_register (&grub_tpm_verifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI (tpm)
|
||||||
|
{
|
||||||
|
grub_verifier_unregister (&grub_tpm_verifier);
|
||||||
|
}
|
228
grub-core/commands/verifiers.c
Normal file
228
grub-core/commands/verifiers.c
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Verifiers helper.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/file.h>
|
||||||
|
#include <grub/verify.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
struct grub_file_verifier *grub_file_verifiers;
|
||||||
|
|
||||||
|
struct grub_verified
|
||||||
|
{
|
||||||
|
grub_file_t file;
|
||||||
|
void *buf;
|
||||||
|
};
|
||||||
|
typedef struct grub_verified *grub_verified_t;
|
||||||
|
|
||||||
|
static void
|
||||||
|
verified_free (grub_verified_t verified)
|
||||||
|
{
|
||||||
|
if (verified)
|
||||||
|
{
|
||||||
|
grub_free (verified->buf);
|
||||||
|
grub_free (verified);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_ssize_t
|
||||||
|
verified_read (struct grub_file *file, char *buf, grub_size_t len)
|
||||||
|
{
|
||||||
|
grub_verified_t verified = file->data;
|
||||||
|
|
||||||
|
grub_memcpy (buf, (char *) verified->buf + file->offset, len);
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
verified_close (struct grub_file *file)
|
||||||
|
{
|
||||||
|
grub_verified_t verified = file->data;
|
||||||
|
|
||||||
|
grub_file_close (verified->file);
|
||||||
|
verified_free (verified);
|
||||||
|
file->data = 0;
|
||||||
|
|
||||||
|
/* Device and name are freed by parent. */
|
||||||
|
file->device = 0;
|
||||||
|
file->name = 0;
|
||||||
|
|
||||||
|
return grub_errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct grub_fs verified_fs =
|
||||||
|
{
|
||||||
|
.name = "verified_read",
|
||||||
|
.fs_read = verified_read,
|
||||||
|
.fs_close = verified_close
|
||||||
|
};
|
||||||
|
|
||||||
|
static grub_file_t
|
||||||
|
grub_verifiers_open (grub_file_t io, enum grub_file_type type)
|
||||||
|
{
|
||||||
|
grub_verified_t verified = NULL;
|
||||||
|
struct grub_file_verifier *ver;
|
||||||
|
void *context;
|
||||||
|
grub_file_t ret = 0;
|
||||||
|
grub_err_t err;
|
||||||
|
int defer = 0;
|
||||||
|
|
||||||
|
grub_dprintf ("verify", "file: %s type: %d\n", io->name, type);
|
||||||
|
|
||||||
|
if ((type & GRUB_FILE_TYPE_MASK) == GRUB_FILE_TYPE_SIGNATURE
|
||||||
|
|| (type & GRUB_FILE_TYPE_MASK) == GRUB_FILE_TYPE_VERIFY_SIGNATURE
|
||||||
|
|| (type & GRUB_FILE_TYPE_SKIP_SIGNATURE))
|
||||||
|
return io;
|
||||||
|
|
||||||
|
if (io->device->disk &&
|
||||||
|
(io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID
|
||||||
|
|| io->device->disk->dev->id == GRUB_DISK_DEVICE_PROCFS_ID))
|
||||||
|
return io;
|
||||||
|
|
||||||
|
FOR_LIST_ELEMENTS(ver, grub_file_verifiers)
|
||||||
|
{
|
||||||
|
enum grub_verify_flags flags = 0;
|
||||||
|
err = ver->init (io, type, &context, &flags);
|
||||||
|
if (err)
|
||||||
|
goto fail_noclose;
|
||||||
|
if (flags & GRUB_VERIFY_FLAGS_DEFER_AUTH)
|
||||||
|
{
|
||||||
|
defer = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!(flags & GRUB_VERIFY_FLAGS_SKIP_VERIFICATION))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ver)
|
||||||
|
{
|
||||||
|
if (defer)
|
||||||
|
{
|
||||||
|
grub_error (GRUB_ERR_ACCESS_DENIED,
|
||||||
|
N_("verification requested but nobody cares: %s"), io->name);
|
||||||
|
goto fail_noclose;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* No verifiers wanted to verify. Just return underlying file. */
|
||||||
|
return io;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = grub_malloc (sizeof (*ret));
|
||||||
|
if (!ret)
|
||||||
|
{
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
*ret = *io;
|
||||||
|
|
||||||
|
ret->fs = &verified_fs;
|
||||||
|
ret->not_easily_seekable = 0;
|
||||||
|
if (ret->size >> (sizeof (grub_size_t) * GRUB_CHAR_BIT - 1))
|
||||||
|
{
|
||||||
|
grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||||
|
N_("big file signature isn't implemented yet"));
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
verified = grub_malloc (sizeof (*verified));
|
||||||
|
if (!verified)
|
||||||
|
{
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
verified->buf = grub_malloc (ret->size);
|
||||||
|
if (!verified->buf)
|
||||||
|
{
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
if (grub_file_read (io, verified->buf, ret->size) != (grub_ssize_t) ret->size)
|
||||||
|
{
|
||||||
|
if (!grub_errno)
|
||||||
|
grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"),
|
||||||
|
io->name);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ver->write (context, verified->buf, ret->size);
|
||||||
|
if (err)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
err = ver->fini ? ver->fini (context) : GRUB_ERR_NONE;
|
||||||
|
if (err)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
if (ver->close)
|
||||||
|
ver->close (context);
|
||||||
|
|
||||||
|
FOR_LIST_ELEMENTS_NEXT(ver, grub_file_verifiers)
|
||||||
|
{
|
||||||
|
enum grub_verify_flags flags = 0;
|
||||||
|
err = ver->init (io, type, &context, &flags);
|
||||||
|
if (err)
|
||||||
|
goto fail_noclose;
|
||||||
|
if (flags & GRUB_VERIFY_FLAGS_SKIP_VERIFICATION ||
|
||||||
|
/* Verification done earlier. So, we are happy here. */
|
||||||
|
flags & GRUB_VERIFY_FLAGS_DEFER_AUTH)
|
||||||
|
continue;
|
||||||
|
err = ver->write (context, verified->buf, ret->size);
|
||||||
|
if (err)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
err = ver->fini ? ver->fini (context) : GRUB_ERR_NONE;
|
||||||
|
if (err)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
if (ver->close)
|
||||||
|
ver->close (context);
|
||||||
|
}
|
||||||
|
|
||||||
|
verified->file = io;
|
||||||
|
ret->data = verified;
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
ver->close (context);
|
||||||
|
fail_noclose:
|
||||||
|
verified_free (verified);
|
||||||
|
grub_free (ret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_verify_string (char *str, enum grub_verify_string_type type)
|
||||||
|
{
|
||||||
|
struct grub_file_verifier *ver;
|
||||||
|
FOR_LIST_ELEMENTS(ver, grub_file_verifiers)
|
||||||
|
{
|
||||||
|
grub_err_t err;
|
||||||
|
err = ver->verify_string ? ver->verify_string (str, type) : GRUB_ERR_NONE;
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(verifiers)
|
||||||
|
{
|
||||||
|
grub_file_filter_register (GRUB_FILE_FILTER_VERIFY, grub_verifiers_open);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(verifiers)
|
||||||
|
{
|
||||||
|
grub_file_filter_unregister (GRUB_FILE_FILTER_VERIFY);
|
||||||
|
}
|
@ -370,7 +370,7 @@ match_files (const char *prefix, const char *suffix, const char *end,
|
|||||||
else
|
else
|
||||||
path = ctx.dir;
|
path = ctx.dir;
|
||||||
|
|
||||||
if (fs->dir (dev, path, match_files_iter, &ctx))
|
if (fs->fs_dir (dev, path, match_files_iter, &ctx))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
grub_free (ctx.dir);
|
grub_free (ctx.dir);
|
||||||
@ -452,7 +452,7 @@ check_file (const char *dir, const char *basename)
|
|||||||
else
|
else
|
||||||
path = dir;
|
path = dir;
|
||||||
|
|
||||||
fs->dir (dev, path[0] ? path : "/", check_file_iter, &ctx);
|
fs->fs_dir (dev, path[0] ? path : "/", check_file_iter, &ctx);
|
||||||
if (grub_errno == 0 && basename[0] == 0)
|
if (grub_errno == 0 && basename[0] == 0)
|
||||||
ctx.found = 1;
|
ctx.found = 1;
|
||||||
|
|
||||||
|
@ -82,6 +82,20 @@ enum grub_ahci_hba_port_command
|
|||||||
GRUB_AHCI_HBA_PORT_CMD_FR = 0x4000,
|
GRUB_AHCI_HBA_PORT_CMD_FR = 0x4000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum grub_ahci_hba_port_int_status
|
||||||
|
{
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_IFS = (1UL << 27),
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_HBDS = (1UL << 28),
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_HBFS = (1UL << 29),
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_TFES = (1UL << 30),
|
||||||
|
};
|
||||||
|
|
||||||
|
#define GRUB_AHCI_HBA_PORT_IS_FATAL_MASK ( \
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_IFS | \
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_HBDS | \
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_HBFS | \
|
||||||
|
GRUB_AHCI_HBA_PORT_IS_TFES)
|
||||||
|
|
||||||
struct grub_ahci_hba
|
struct grub_ahci_hba
|
||||||
{
|
{
|
||||||
grub_uint32_t cap;
|
grub_uint32_t cap;
|
||||||
@ -562,7 +576,7 @@ grub_ahci_pciinit (grub_pci_device_t dev,
|
|||||||
grub_ahci_readwrite_real (dev, &parms2, 1, 1);*/
|
grub_ahci_readwrite_real (dev, &parms2, 1, 1);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
endtime = grub_get_time_ms () + 10000;
|
endtime = grub_get_time_ms () + 32000;
|
||||||
|
|
||||||
while (grub_get_time_ms () < endtime)
|
while (grub_get_time_ms () < endtime)
|
||||||
{
|
{
|
||||||
@ -1026,7 +1040,8 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
|
|||||||
|
|
||||||
endtime = grub_get_time_ms () + (spinup ? 20000 : 20000);
|
endtime = grub_get_time_ms () + (spinup ? 20000 : 20000);
|
||||||
while ((dev->hba->ports[dev->port].command_issue & 1))
|
while ((dev->hba->ports[dev->port].command_issue & 1))
|
||||||
if (grub_get_time_ms () > endtime)
|
if (grub_get_time_ms () > endtime ||
|
||||||
|
(dev->hba->ports[dev->port].intstatus & GRUB_AHCI_HBA_PORT_IS_FATAL_MASK))
|
||||||
{
|
{
|
||||||
grub_dprintf ("ahci", "AHCI status <%x %x %x %x>\n",
|
grub_dprintf ("ahci", "AHCI status <%x %x %x %x>\n",
|
||||||
dev->hba->ports[dev->port].command_issue,
|
dev->hba->ports[dev->port].command_issue,
|
||||||
@ -1034,6 +1049,9 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
|
|||||||
dev->hba->ports[dev->port].intstatus,
|
dev->hba->ports[dev->port].intstatus,
|
||||||
dev->hba->ports[dev->port].task_file_data);
|
dev->hba->ports[dev->port].task_file_data);
|
||||||
dev->hba->ports[dev->port].command_issue = 0;
|
dev->hba->ports[dev->port].command_issue = 0;
|
||||||
|
if (dev->hba->ports[dev->port].intstatus & GRUB_AHCI_HBA_PORT_IS_FATAL_MASK)
|
||||||
|
err = grub_error (GRUB_ERR_IO, "AHCI transfer error");
|
||||||
|
else
|
||||||
err = grub_error (GRUB_ERR_IO, "AHCI transfer timed out");
|
err = grub_error (GRUB_ERR_IO, "AHCI transfer timed out");
|
||||||
if (!reset)
|
if (!reset)
|
||||||
grub_ahci_reset_port (dev, 1);
|
grub_ahci_reset_port (dev, 1);
|
||||||
|
@ -296,11 +296,11 @@ static struct grub_disk_dev grub_arcdisk_dev =
|
|||||||
{
|
{
|
||||||
.name = "arcdisk",
|
.name = "arcdisk",
|
||||||
.id = GRUB_DISK_DEVICE_ARCDISK_ID,
|
.id = GRUB_DISK_DEVICE_ARCDISK_ID,
|
||||||
.iterate = grub_arcdisk_iterate,
|
.disk_iterate = grub_arcdisk_iterate,
|
||||||
.open = grub_arcdisk_open,
|
.disk_open = grub_arcdisk_open,
|
||||||
.close = grub_arcdisk_close,
|
.disk_close = grub_arcdisk_close,
|
||||||
.read = grub_arcdisk_read,
|
.disk_read = grub_arcdisk_read,
|
||||||
.write = grub_arcdisk_write,
|
.disk_write = grub_arcdisk_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -510,11 +510,11 @@ static struct grub_disk_dev grub_atadisk_dev =
|
|||||||
{
|
{
|
||||||
.name = "ATA",
|
.name = "ATA",
|
||||||
.id = GRUB_DISK_DEVICE_ATA_ID,
|
.id = GRUB_DISK_DEVICE_ATA_ID,
|
||||||
.iterate = grub_ata_iterate,
|
.disk_iterate = grub_ata_iterate,
|
||||||
.open = grub_ata_open,
|
.disk_open = grub_ata_open,
|
||||||
.close = grub_ata_close,
|
.disk_close = grub_ata_close,
|
||||||
.read = grub_ata_read,
|
.disk_read = grub_ata_read,
|
||||||
.write = grub_ata_write,
|
.disk_write = grub_ata_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1015,13 +1015,13 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
static struct grub_disk_dev grub_cryptodisk_dev = {
|
static struct grub_disk_dev grub_cryptodisk_dev = {
|
||||||
.name = "cryptodisk",
|
.name = "cryptodisk",
|
||||||
.id = GRUB_DISK_DEVICE_CRYPTODISK_ID,
|
.id = GRUB_DISK_DEVICE_CRYPTODISK_ID,
|
||||||
.iterate = grub_cryptodisk_iterate,
|
.disk_iterate = grub_cryptodisk_iterate,
|
||||||
.open = grub_cryptodisk_open,
|
.disk_open = grub_cryptodisk_open,
|
||||||
.close = grub_cryptodisk_close,
|
.disk_close = grub_cryptodisk_close,
|
||||||
.read = grub_cryptodisk_read,
|
.disk_read = grub_cryptodisk_read,
|
||||||
.write = grub_cryptodisk_write,
|
.disk_write = grub_cryptodisk_write,
|
||||||
#ifdef GRUB_UTIL
|
#ifdef GRUB_UTIL
|
||||||
.memberlist = grub_cryptodisk_memberlist,
|
.disk_memberlist = grub_cryptodisk_memberlist,
|
||||||
#endif
|
#endif
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
@ -228,9 +228,9 @@ scan_devices (const char *arname)
|
|||||||
for (pull = 0; pull < GRUB_DISK_PULL_MAX; pull++)
|
for (pull = 0; pull < GRUB_DISK_PULL_MAX; pull++)
|
||||||
for (p = grub_disk_dev_list; p; p = p->next)
|
for (p = grub_disk_dev_list; p; p = p->next)
|
||||||
if (p->id != GRUB_DISK_DEVICE_DISKFILTER_ID
|
if (p->id != GRUB_DISK_DEVICE_DISKFILTER_ID
|
||||||
&& p->iterate)
|
&& p->disk_iterate)
|
||||||
{
|
{
|
||||||
if ((p->iterate) (scan_disk_hook, NULL, pull))
|
if ((p->disk_iterate) (scan_disk_hook, NULL, pull))
|
||||||
return;
|
return;
|
||||||
if (arname && is_lv_readable (find_lv (arname), 1))
|
if (arname && is_lv_readable (find_lv (arname), 1))
|
||||||
return;
|
return;
|
||||||
@ -311,9 +311,9 @@ grub_diskfilter_memberlist (grub_disk_t disk)
|
|||||||
for (pull = 0; pv && pull < GRUB_DISK_PULL_MAX; pull++)
|
for (pull = 0; pv && pull < GRUB_DISK_PULL_MAX; pull++)
|
||||||
for (p = grub_disk_dev_list; pv && p; p = p->next)
|
for (p = grub_disk_dev_list; pv && p; p = p->next)
|
||||||
if (p->id != GRUB_DISK_DEVICE_DISKFILTER_ID
|
if (p->id != GRUB_DISK_DEVICE_DISKFILTER_ID
|
||||||
&& p->iterate)
|
&& p->disk_iterate)
|
||||||
{
|
{
|
||||||
(p->iterate) (scan_disk_hook, NULL, pull);
|
(p->disk_iterate) (scan_disk_hook, NULL, pull);
|
||||||
while (pv && pv->disk)
|
while (pv && pv->disk)
|
||||||
pv = pv->next;
|
pv = pv->next;
|
||||||
}
|
}
|
||||||
@ -1325,14 +1325,14 @@ static struct grub_disk_dev grub_diskfilter_dev =
|
|||||||
{
|
{
|
||||||
.name = "diskfilter",
|
.name = "diskfilter",
|
||||||
.id = GRUB_DISK_DEVICE_DISKFILTER_ID,
|
.id = GRUB_DISK_DEVICE_DISKFILTER_ID,
|
||||||
.iterate = grub_diskfilter_iterate,
|
.disk_iterate = grub_diskfilter_iterate,
|
||||||
.open = grub_diskfilter_open,
|
.disk_open = grub_diskfilter_open,
|
||||||
.close = grub_diskfilter_close,
|
.disk_close = grub_diskfilter_close,
|
||||||
.read = grub_diskfilter_read,
|
.disk_read = grub_diskfilter_read,
|
||||||
.write = grub_diskfilter_write,
|
.disk_write = grub_diskfilter_write,
|
||||||
#ifdef GRUB_UTIL
|
#ifdef GRUB_UTIL
|
||||||
.memberlist = grub_diskfilter_memberlist,
|
.disk_memberlist = grub_diskfilter_memberlist,
|
||||||
.raidname = grub_diskfilter_getname,
|
.disk_raidname = grub_diskfilter_getname,
|
||||||
#endif
|
#endif
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
@ -129,6 +129,9 @@ find_parent_device (struct grub_efidisk_data *devices,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ldp = grub_efi_find_last_device_path (dp);
|
ldp = grub_efi_find_last_device_path (dp);
|
||||||
|
if (! ldp)
|
||||||
|
return 0;
|
||||||
|
|
||||||
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
||||||
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
||||||
ldp->length = sizeof (*ldp);
|
ldp->length = sizeof (*ldp);
|
||||||
@ -159,6 +162,9 @@ is_child (struct grub_efidisk_data *child,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ldp = grub_efi_find_last_device_path (dp);
|
ldp = grub_efi_find_last_device_path (dp);
|
||||||
|
if (! ldp)
|
||||||
|
return 0;
|
||||||
|
|
||||||
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
||||||
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
||||||
ldp->length = sizeof (*ldp);
|
ldp->length = sizeof (*ldp);
|
||||||
@ -627,11 +633,11 @@ static struct grub_disk_dev grub_efidisk_dev =
|
|||||||
{
|
{
|
||||||
.name = "efidisk",
|
.name = "efidisk",
|
||||||
.id = GRUB_DISK_DEVICE_EFIDISK_ID,
|
.id = GRUB_DISK_DEVICE_EFIDISK_ID,
|
||||||
.iterate = grub_efidisk_iterate,
|
.disk_iterate = grub_efidisk_iterate,
|
||||||
.open = grub_efidisk_open,
|
.disk_open = grub_efidisk_open,
|
||||||
.close = grub_efidisk_close,
|
.disk_close = grub_efidisk_close,
|
||||||
.read = grub_efidisk_read,
|
.disk_read = grub_efidisk_read,
|
||||||
.write = grub_efidisk_write,
|
.disk_write = grub_efidisk_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -830,6 +836,9 @@ grub_efidisk_get_device_name (grub_efi_handle_t *handle)
|
|||||||
{
|
{
|
||||||
grub_efi_device_path_t *dup_ldp;
|
grub_efi_device_path_t *dup_ldp;
|
||||||
dup_ldp = grub_efi_find_last_device_path (dup_dp);
|
dup_ldp = grub_efi_find_last_device_path (dup_dp);
|
||||||
|
if (! dup_ldp)
|
||||||
|
break;
|
||||||
|
|
||||||
if (!(GRUB_EFI_DEVICE_PATH_TYPE (dup_ldp) == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE
|
if (!(GRUB_EFI_DEVICE_PATH_TYPE (dup_ldp) == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE
|
||||||
&& (GRUB_EFI_DEVICE_PATH_SUBTYPE (dup_ldp) == GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE
|
&& (GRUB_EFI_DEVICE_PATH_SUBTYPE (dup_ldp) == GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE
|
||||||
|| GRUB_EFI_DEVICE_PATH_SUBTYPE (dup_ldp) == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)))
|
|| GRUB_EFI_DEVICE_PATH_SUBTYPE (dup_ldp) == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)))
|
||||||
|
@ -84,11 +84,11 @@ static struct grub_disk_dev grub_host_dev =
|
|||||||
/* The only important line in this file :-) */
|
/* The only important line in this file :-) */
|
||||||
.name = "host",
|
.name = "host",
|
||||||
.id = GRUB_DISK_DEVICE_HOST_ID,
|
.id = GRUB_DISK_DEVICE_HOST_ID,
|
||||||
.iterate = grub_host_iterate,
|
.disk_iterate = grub_host_iterate,
|
||||||
.open = grub_host_open,
|
.disk_open = grub_host_open,
|
||||||
.close = grub_host_close,
|
.disk_close = grub_host_close,
|
||||||
.read = grub_host_read,
|
.disk_read = grub_host_read,
|
||||||
.write = grub_host_write,
|
.disk_write = grub_host_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -637,11 +637,11 @@ static struct grub_disk_dev grub_biosdisk_dev =
|
|||||||
{
|
{
|
||||||
.name = "biosdisk",
|
.name = "biosdisk",
|
||||||
.id = GRUB_DISK_DEVICE_BIOSDISK_ID,
|
.id = GRUB_DISK_DEVICE_BIOSDISK_ID,
|
||||||
.iterate = grub_biosdisk_iterate,
|
.disk_iterate = grub_biosdisk_iterate,
|
||||||
.open = grub_biosdisk_open,
|
.disk_open = grub_biosdisk_open,
|
||||||
.close = grub_biosdisk_close,
|
.disk_close = grub_biosdisk_close,
|
||||||
.read = grub_biosdisk_read,
|
.disk_read = grub_biosdisk_read,
|
||||||
.write = grub_biosdisk_write,
|
.disk_write = grub_biosdisk_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -223,11 +223,11 @@ static struct grub_disk_dev grub_nand_dev =
|
|||||||
{
|
{
|
||||||
.name = "nand",
|
.name = "nand",
|
||||||
.id = GRUB_DISK_DEVICE_NAND_ID,
|
.id = GRUB_DISK_DEVICE_NAND_ID,
|
||||||
.iterate = grub_nand_iterate,
|
.disk_iterate = grub_nand_iterate,
|
||||||
.open = grub_nand_open,
|
.disk_open = grub_nand_open,
|
||||||
.close = grub_nand_close,
|
.disk_close = grub_nand_close,
|
||||||
.read = grub_nand_read,
|
.disk_read = grub_nand_read,
|
||||||
.write = grub_nand_write,
|
.disk_write = grub_nand_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
1076
grub-core/disk/ieee1275/obdisk.c
Normal file
1076
grub-core/disk/ieee1275/obdisk.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -615,11 +615,11 @@ static struct grub_disk_dev grub_ofdisk_dev =
|
|||||||
{
|
{
|
||||||
.name = "ofdisk",
|
.name = "ofdisk",
|
||||||
.id = GRUB_DISK_DEVICE_OFDISK_ID,
|
.id = GRUB_DISK_DEVICE_OFDISK_ID,
|
||||||
.iterate = grub_ofdisk_iterate,
|
.disk_iterate = grub_ofdisk_iterate,
|
||||||
.open = grub_ofdisk_open,
|
.disk_open = grub_ofdisk_open,
|
||||||
.close = grub_ofdisk_close,
|
.disk_close = grub_ofdisk_close,
|
||||||
.read = grub_ofdisk_read,
|
.disk_read = grub_ofdisk_read,
|
||||||
.write = grub_ofdisk_write,
|
.disk_write = grub_ofdisk_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ msdos_has_ldm_partition (grub_disk_t dsk)
|
|||||||
return has_ldm;
|
return has_ldm;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const grub_gpt_part_type_t ldm_type = GRUB_GPT_PARTITION_TYPE_LDM;
|
static const grub_gpt_part_guid_t ldm_type = GRUB_GPT_PARTITION_TYPE_LDM;
|
||||||
|
|
||||||
/* Helper for gpt_ldm_sector. */
|
/* Helper for gpt_ldm_sector. */
|
||||||
static int
|
static int
|
||||||
|
@ -92,7 +92,8 @@ grub_cmd_loopback (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
|
||||||
file = grub_file_open (args[1]);
|
file = grub_file_open (args[1], GRUB_FILE_TYPE_LOOPBACK
|
||||||
|
| GRUB_FILE_TYPE_NO_DECOMPRESS);
|
||||||
if (! file)
|
if (! file)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
@ -221,10 +222,10 @@ static struct grub_disk_dev grub_loopback_dev =
|
|||||||
{
|
{
|
||||||
.name = "loopback",
|
.name = "loopback",
|
||||||
.id = GRUB_DISK_DEVICE_LOOPBACK_ID,
|
.id = GRUB_DISK_DEVICE_LOOPBACK_ID,
|
||||||
.iterate = grub_loopback_iterate,
|
.disk_iterate = grub_loopback_iterate,
|
||||||
.open = grub_loopback_open,
|
.disk_open = grub_loopback_open,
|
||||||
.read = grub_loopback_read,
|
.disk_read = grub_loopback_read,
|
||||||
.write = grub_loopback_write,
|
.disk_write = grub_loopback_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,11 +77,11 @@ static struct grub_disk_dev grub_memdisk_dev =
|
|||||||
{
|
{
|
||||||
.name = "memdisk",
|
.name = "memdisk",
|
||||||
.id = GRUB_DISK_DEVICE_MEMDISK_ID,
|
.id = GRUB_DISK_DEVICE_MEMDISK_ID,
|
||||||
.iterate = grub_memdisk_iterate,
|
.disk_iterate = grub_memdisk_iterate,
|
||||||
.open = grub_memdisk_open,
|
.disk_open = grub_memdisk_open,
|
||||||
.close = grub_memdisk_close,
|
.disk_close = grub_memdisk_close,
|
||||||
.read = grub_memdisk_read,
|
.disk_read = grub_memdisk_read,
|
||||||
.write = grub_memdisk_write,
|
.disk_write = grub_memdisk_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -74,14 +74,26 @@ mod_255 (unsigned x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
raid6_recover_read_node (void *data, int disknr,
|
||||||
char *buf, grub_disk_addr_t sector, grub_size_t size)
|
grub_uint64_t sector,
|
||||||
|
void *buf, grub_size_t size)
|
||||||
|
{
|
||||||
|
struct grub_diskfilter_segment *array = data;
|
||||||
|
|
||||||
|
return grub_diskfilter_read_node (&array->nodes[disknr],
|
||||||
|
(grub_disk_addr_t)sector,
|
||||||
|
size >> GRUB_DISK_SECTOR_BITS, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_raid6_recover_gen (void *data, grub_uint64_t nstripes, int disknr, int p,
|
||||||
|
char *buf, grub_uint64_t sector, grub_size_t size,
|
||||||
|
int layout, raid_recover_read_t read_func)
|
||||||
{
|
{
|
||||||
int i, q, pos;
|
int i, q, pos;
|
||||||
int bad1 = -1, bad2 = -1;
|
int bad1 = -1, bad2 = -1;
|
||||||
char *pbuf = 0, *qbuf = 0;
|
char *pbuf = 0, *qbuf = 0;
|
||||||
|
|
||||||
size <<= GRUB_DISK_SECTOR_BITS;
|
|
||||||
pbuf = grub_zalloc (size);
|
pbuf = grub_zalloc (size);
|
||||||
if (!pbuf)
|
if (!pbuf)
|
||||||
goto quit;
|
goto quit;
|
||||||
@ -91,17 +103,17 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
|||||||
goto quit;
|
goto quit;
|
||||||
|
|
||||||
q = p + 1;
|
q = p + 1;
|
||||||
if (q == (int) array->node_count)
|
if (q == (int) nstripes)
|
||||||
q = 0;
|
q = 0;
|
||||||
|
|
||||||
pos = q + 1;
|
pos = q + 1;
|
||||||
if (pos == (int) array->node_count)
|
if (pos == (int) nstripes)
|
||||||
pos = 0;
|
pos = 0;
|
||||||
|
|
||||||
for (i = 0; i < (int) array->node_count - 2; i++)
|
for (i = 0; i < (int) nstripes - 2; i++)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
if (array->layout & GRUB_RAID_LAYOUT_MUL_FROM_POS)
|
if (layout & GRUB_RAID_LAYOUT_MUL_FROM_POS)
|
||||||
c = pos;
|
c = pos;
|
||||||
else
|
else
|
||||||
c = i;
|
c = i;
|
||||||
@ -109,8 +121,7 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
|||||||
bad1 = c;
|
bad1 = c;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (! grub_diskfilter_read_node (&array->nodes[pos], sector,
|
if (!read_func (data, pos, sector, buf, size))
|
||||||
size >> GRUB_DISK_SECTOR_BITS, buf))
|
|
||||||
{
|
{
|
||||||
grub_crypto_xor (pbuf, pbuf, buf, size);
|
grub_crypto_xor (pbuf, pbuf, buf, size);
|
||||||
grub_raid_block_mulx (c, buf, size);
|
grub_raid_block_mulx (c, buf, size);
|
||||||
@ -128,7 +139,7 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
|||||||
}
|
}
|
||||||
|
|
||||||
pos++;
|
pos++;
|
||||||
if (pos == (int) array->node_count)
|
if (pos == (int) nstripes)
|
||||||
pos = 0;
|
pos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,16 +150,14 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
|||||||
if (bad2 < 0)
|
if (bad2 < 0)
|
||||||
{
|
{
|
||||||
/* One bad device */
|
/* One bad device */
|
||||||
if ((! grub_diskfilter_read_node (&array->nodes[p], sector,
|
if (!read_func (data, p, sector, buf, size))
|
||||||
size >> GRUB_DISK_SECTOR_BITS, buf)))
|
|
||||||
{
|
{
|
||||||
grub_crypto_xor (buf, buf, pbuf, size);
|
grub_crypto_xor (buf, buf, pbuf, size);
|
||||||
goto quit;
|
goto quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_errno = GRUB_ERR_NONE;
|
grub_errno = GRUB_ERR_NONE;
|
||||||
if (grub_diskfilter_read_node (&array->nodes[q], sector,
|
if (read_func (data, q, sector, buf, size))
|
||||||
size >> GRUB_DISK_SECTOR_BITS, buf))
|
|
||||||
goto quit;
|
goto quit;
|
||||||
|
|
||||||
grub_crypto_xor (buf, buf, qbuf, size);
|
grub_crypto_xor (buf, buf, qbuf, size);
|
||||||
@ -160,14 +169,12 @@ grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
|||||||
/* Two bad devices */
|
/* Two bad devices */
|
||||||
unsigned c;
|
unsigned c;
|
||||||
|
|
||||||
if (grub_diskfilter_read_node (&array->nodes[p], sector,
|
if (read_func (data, p, sector, buf, size))
|
||||||
size >> GRUB_DISK_SECTOR_BITS, buf))
|
|
||||||
goto quit;
|
goto quit;
|
||||||
|
|
||||||
grub_crypto_xor (pbuf, pbuf, buf, size);
|
grub_crypto_xor (pbuf, pbuf, buf, size);
|
||||||
|
|
||||||
if (grub_diskfilter_read_node (&array->nodes[q], sector,
|
if (read_func (data, q, sector, buf, size))
|
||||||
size >> GRUB_DISK_SECTOR_BITS, buf))
|
|
||||||
goto quit;
|
goto quit;
|
||||||
|
|
||||||
grub_crypto_xor (qbuf, qbuf, buf, size);
|
grub_crypto_xor (qbuf, qbuf, buf, size);
|
||||||
@ -190,6 +197,15 @@ quit:
|
|||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_raid6_recover (struct grub_diskfilter_segment *array, int disknr, int p,
|
||||||
|
char *buf, grub_disk_addr_t sector, grub_size_t size)
|
||||||
|
{
|
||||||
|
return grub_raid6_recover_gen (array, array->node_count, disknr, p, buf,
|
||||||
|
sector, size << GRUB_DISK_SECTOR_BITS,
|
||||||
|
array->layout, raid6_recover_read_node);
|
||||||
|
}
|
||||||
|
|
||||||
GRUB_MOD_INIT(raid6rec)
|
GRUB_MOD_INIT(raid6rec)
|
||||||
{
|
{
|
||||||
grub_raid6_init_table ();
|
grub_raid6_init_table ();
|
||||||
|
@ -747,11 +747,11 @@ static struct grub_disk_dev grub_scsi_dev =
|
|||||||
{
|
{
|
||||||
.name = "scsi",
|
.name = "scsi",
|
||||||
.id = GRUB_DISK_DEVICE_SCSI_ID,
|
.id = GRUB_DISK_DEVICE_SCSI_ID,
|
||||||
.iterate = grub_scsi_iterate,
|
.disk_iterate = grub_scsi_iterate,
|
||||||
.open = grub_scsi_open,
|
.disk_open = grub_scsi_open,
|
||||||
.close = grub_scsi_close,
|
.disk_close = grub_scsi_close,
|
||||||
.read = grub_scsi_read,
|
.disk_read = grub_scsi_read,
|
||||||
.write = grub_scsi_write,
|
.disk_write = grub_scsi_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -264,23 +264,33 @@ uboot_disk_read (struct grub_disk *disk,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
uboot_disk_write (struct grub_disk *disk __attribute__ ((unused)),
|
uboot_disk_write (struct grub_disk *disk,
|
||||||
grub_disk_addr_t sector __attribute__ ((unused)),
|
grub_disk_addr_t offset, grub_size_t numblocks, const char *buf)
|
||||||
grub_size_t size __attribute__ ((unused)),
|
|
||||||
const char *buf __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
struct ubootdisk_data *d;
|
||||||
"attempt to write (not supported)");
|
int retval;
|
||||||
|
|
||||||
|
d = disk->data;
|
||||||
|
|
||||||
|
retval = grub_uboot_dev_write (d->dev, buf, numblocks, offset);
|
||||||
|
grub_dprintf ("ubootdisk",
|
||||||
|
"retval=%d, numblocks=%d, sector=%llu\n",
|
||||||
|
retval, numblocks, (grub_uint64_t) offset);
|
||||||
|
|
||||||
|
if (retval != 0)
|
||||||
|
return grub_error (GRUB_ERR_IO, "U-Boot disk write error");
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct grub_disk_dev grub_ubootdisk_dev = {
|
static struct grub_disk_dev grub_ubootdisk_dev = {
|
||||||
.name = "ubootdisk",
|
.name = "ubootdisk",
|
||||||
.id = GRUB_DISK_DEVICE_UBOOTDISK_ID,
|
.id = GRUB_DISK_DEVICE_UBOOTDISK_ID,
|
||||||
.iterate = uboot_disk_iterate,
|
.disk_iterate = uboot_disk_iterate,
|
||||||
.open = uboot_disk_open,
|
.disk_open = uboot_disk_open,
|
||||||
.close = uboot_disk_close,
|
.disk_close = uboot_disk_close,
|
||||||
.read = uboot_disk_read,
|
.disk_read = uboot_disk_read,
|
||||||
.write = uboot_disk_write,
|
.disk_write = uboot_disk_write,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user