mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-28 18:19:23 +00:00
To enable hardware acceleration, this commit ports the feature detection logic from libgcrypt. This allows us to check if the compiler supports specific assembly instructions, including SSSE3, Intel SHA extensions, SSE4.1, AVX, AVX2, AVX512, and BMI2. To simplify the initial implementation, support for x86_64 feature detection is currently limited to the x86_64 EFI target. Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
155 lines
5.3 KiB
Makefile
155 lines
5.3 KiB
Makefile
# -*- makefile -*-
|
|
|
|
CFLAGS_PLATFORM=
|
|
|
|
export LC_COLLATE := C
|
|
unexport LC_ALL
|
|
|
|
# Platform specific options
|
|
if COND_sparc64_ieee1275
|
|
LDFLAGS_PLATFORM = -Wl,-melf64_sparc
|
|
endif
|
|
if COND_arm
|
|
if !COND_emu
|
|
LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache
|
|
endif
|
|
endif
|
|
if COND_arm64
|
|
CFLAGS_PLATFORM += -mcmodel=large
|
|
endif
|
|
if COND_powerpc_ieee1275
|
|
CFLAGS_PLATFORM += -mcpu=powerpc
|
|
endif
|
|
if COND_HAVE_PCI
|
|
CFLAGS_PLATFORM += -DGRUB_HAS_PCI
|
|
endif
|
|
|
|
CPPFLAGS_GCRY_ASM = @CPPFLAGS_GCRY_ASM@
|
|
|
|
# Other options
|
|
|
|
CPPFLAGS_DEFAULT = -DGRUB_FILE=\"$(subst $(srcdir)/,,$<)\"
|
|
CPPFLAGS_DEFAULT += -I$(builddir)
|
|
CPPFLAGS_DEFAULT += -I$(srcdir)
|
|
CPPFLAGS_DEFAULT += -I$(top_builddir)
|
|
CPPFLAGS_DEFAULT += -I$(top_srcdir)
|
|
CPPFLAGS_DEFAULT += -I$(top_srcdir)/include
|
|
CPPFLAGS_DEFAULT += -I$(top_builddir)/include
|
|
CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/src/
|
|
CCASFLAGS_DEFAULT = $(CPPFLAGS_DEFAULT) -DASM_FILE=1
|
|
BUILD_CPPFLAGS += $(CPPFLAGS_DEFAULT)
|
|
|
|
CFLAGS_KERNEL = $(CFLAGS_PLATFORM) -ffreestanding
|
|
LDFLAGS_KERNEL = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC)
|
|
CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1
|
|
CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
|
STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version -R .MIPS.abiflags -R .ARM.exidx
|
|
if !COND_emu
|
|
if COND_HAVE_ASM_USCORE
|
|
LDFLAGS_KERNEL += -Wl,--defsym=_malloc=_grub_malloc -Wl,--defsym=_free=_grub_free
|
|
else
|
|
LDFLAGS_KERNEL += -Wl,--defsym=malloc=grub_malloc -Wl,--defsym=free=grub_free
|
|
endif
|
|
endif
|
|
|
|
CFLAGS_MODULE = $(CFLAGS_PLATFORM) -ffreestanding
|
|
LDFLAGS_MODULE = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r
|
|
CPPFLAGS_MODULE = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
|
CCASFLAGS_MODULE = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
|
|
|
CFLAGS_IMAGE = $(CFLAGS_PLATFORM) -fno-builtin
|
|
LDFLAGS_IMAGE = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-S
|
|
CPPFLAGS_IMAGE = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
|
CCASFLAGS_IMAGE = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
|
|
|
CFLAGS_PROGRAM =
|
|
LDFLAGS_PROGRAM =
|
|
CPPFLAGS_PROGRAM =
|
|
CCASFLAGS_PROGRAM =
|
|
|
|
CFLAGS_LIBRARY =
|
|
CPPFLAGS_LIBRARY =
|
|
CCASFLAGS_LIBRARY =
|
|
|
|
# Other variables
|
|
|
|
grubconfdir = $(sysconfdir)/grub.d
|
|
platformdir = $(pkglibdir)/$(target_cpu)-$(platform)
|
|
starfielddir = $(pkgdatadir)/themes/starfield
|
|
|
|
CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion -Wno-error=attributes
|
|
CPPFLAGS_GNULIB = -I$(top_builddir)/grub-core/lib/gnulib -I$(top_srcdir)/grub-core/lib/gnulib
|
|
|
|
CFLAGS_POSIX = -fno-builtin
|
|
CPPFLAGS_POSIX = -I$(top_srcdir)/grub-core/lib/posix_wrap
|
|
|
|
CFLAGS_GCRY = -Wno-sign-compare -Wno-missing-field-initializers -Wno-redundant-decls -Wno-undef $(CFLAGS_POSIX)
|
|
CPPFLAGS_GCRY = -I$(top_srcdir)/grub-core/lib/libgcrypt_wrap $(CPPFLAGS_POSIX) -D_GCRYPT_IN_LIBGCRYPT=1 -D_GCRYPT_CONFIG_H_INCLUDED=1 -I$(top_srcdir)/include/grub/gcrypt
|
|
|
|
CPPFLAGS_EFIEMU = -I$(top_srcdir)/grub-core/efiemu/runtime
|
|
|
|
# List file macros for recognizing /interesting/ modules
|
|
CPPFLAGS_FS_LIST = -Dgrub_fs_register=FS_LIST_MARKER
|
|
CPPFLAGS_VIDEO_LIST= -Dgrub_video_register=VIDEO_LIST_MARKER
|
|
CPPFLAGS_PARTMAP_LIST = -Dgrub_partition_map_register=PARTMAP_LIST_MARKER
|
|
CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER
|
|
CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
|
|
CPPFLAGS_TERMINAL_LIST += '-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
|
|
CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'
|
|
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_lockdown(...)=COMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'
|
|
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
|
|
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd_lockdown(...)=EXTCOMMAND_LOCKDOWN_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_PARTTOOL_LIST) $(CPPFLAGS_PARTMAP_LIST) \
|
|
$(CPPFLAGS_TERMINAL_LIST) $(CPPFLAGS_COMMAND_LIST) \
|
|
$(CPPFLAGS_FDT_LIST)
|
|
|
|
# Define these variables to calm down automake
|
|
|
|
IMG_FILES =
|
|
MOD_FILES =
|
|
MODULE_FILES =
|
|
MARKER_FILES =
|
|
KERNEL_HEADER_FILES =
|
|
EXTRA_DEPS =
|
|
|
|
bin_SCRIPTS =
|
|
bin_PROGRAMS =
|
|
check_SCRIPTS_native =
|
|
check_SCRIPTS_nonnative =
|
|
check_PROGRAMS_native =
|
|
check_PROGRAMS_nonnative =
|
|
dist_grubconf_DATA =
|
|
dist_noinst_DATA =
|
|
grubconf_SCRIPTS =
|
|
man_MANS =
|
|
noinst_DATA =
|
|
noinst_SCRIPTS =
|
|
noinst_PROGRAMS =
|
|
noinst_LIBRARIES =
|
|
pkgdata_DATA =
|
|
platform_DATA =
|
|
platform_SCRIPTS =
|
|
platform_PROGRAMS =
|
|
sbin_SCRIPTS =
|
|
sbin_PROGRAMS =
|
|
|
|
EXTRA_DIST =
|
|
CLEANFILES =
|
|
BUILT_SOURCES =
|
|
|
|
# Rules for Automake input
|
|
|
|
.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
|
|
$(PYTHON) $^ > $@.new || (rm -f $@.new; exit 1)
|
|
mv $@.new $@
|
|
|
|
.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
|
|
if [ "x$$GRUB_CONTRIB" != x ]; then echo "You need to run ./bootstrap manually." >&2; exit 1; fi
|
|
$(PYTHON) $^ > $@.new || (rm -f $@.new; exit 1)
|
|
mv $@.new $@
|