2010-08-20 12:51:31 +00:00
|
|
|
# -*- makefile -*-
|
|
|
|
|
2010-09-11 14:58:06 +00:00
|
|
|
CFLAGS_PLATFORM=
|
|
|
|
|
2011-04-08 11:57:56 +00:00
|
|
|
export LC_COLLATE := C
|
|
|
|
unexport LC_ALL
|
|
|
|
|
2010-08-20 04:44:29 +00:00
|
|
|
# Platform specific options
|
|
|
|
if COND_sparc64_ieee1275
|
2015-02-22 00:53:00 +00:00
|
|
|
LDFLAGS_PLATFORM = -Wl,-melf64_sparc
|
2013-12-09 23:05:28 +00:00
|
|
|
endif
|
2013-04-07 00:41:07 +00:00
|
|
|
if COND_arm
|
2013-12-08 01:59:21 +00:00
|
|
|
if !COND_emu
|
2013-04-07 00:41:07 +00:00
|
|
|
LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache
|
|
|
|
endif
|
2013-12-08 01:59:21 +00:00
|
|
|
endif
|
2013-11-16 19:52:55 +00:00
|
|
|
if COND_arm64
|
|
|
|
CFLAGS_PLATFORM += -mcmodel=large
|
|
|
|
endif
|
2015-06-15 12:10:19 +00:00
|
|
|
if COND_powerpc_ieee1275
|
|
|
|
CFLAGS_PLATFORM += -mcpu=powerpc
|
|
|
|
endif
|
2010-08-20 04:44:29 +00:00
|
|
|
|
|
|
|
# Other options
|
|
|
|
|
2010-08-30 04:07:35 +00:00
|
|
|
CPPFLAGS_DEFAULT = -DGRUB_FILE=\"$(subst $(srcdir)/,,$<)\"
|
2010-08-20 04:44:29 +00:00
|
|
|
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
|
2013-01-11 20:32:42 +00:00
|
|
|
CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/src/
|
2013-05-30 19:36:12 +00:00
|
|
|
CCASFLAGS_DEFAULT = $(CPPFLAGS_DEFAULT) -DASM_FILE=1
|
2013-08-14 08:56:55 +00:00
|
|
|
BUILD_CPPFLAGS += $(CPPFLAGS_DEFAULT)
|
2010-08-20 04:44:29 +00:00
|
|
|
|
2015-01-24 16:44:19 +00:00
|
|
|
CFLAGS_KERNEL = $(CFLAGS_PLATFORM) -ffreestanding
|
2015-03-03 19:23:42 +00:00
|
|
|
LDFLAGS_KERNEL = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC)
|
2013-10-25 14:07:01 +00:00
|
|
|
CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1
|
2010-08-20 04:44:29 +00:00
|
|
|
CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
2015-12-31 17:13:59 +00:00
|
|
|
STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version -R .MIPS.abiflags -R .ARM.exidx
|
2010-08-20 04:44:29 +00:00
|
|
|
|
2015-01-24 16:44:19 +00:00
|
|
|
CFLAGS_MODULE = $(CFLAGS_PLATFORM) -ffreestanding
|
|
|
|
LDFLAGS_MODULE = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r,-d
|
2010-08-20 04:44:29 +00:00
|
|
|
CPPFLAGS_MODULE = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
|
|
|
CCASFLAGS_MODULE = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
|
|
|
|
2015-01-24 16:44:19 +00:00
|
|
|
CFLAGS_IMAGE = $(CFLAGS_PLATFORM) -fno-builtin
|
|
|
|
LDFLAGS_IMAGE = $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-S
|
2010-08-20 04:44:29 +00:00
|
|
|
CPPFLAGS_IMAGE = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
|
|
|
CCASFLAGS_IMAGE = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
|
|
|
|
|
|
|
CFLAGS_PROGRAM =
|
|
|
|
LDFLAGS_PROGRAM =
|
|
|
|
CPPFLAGS_PROGRAM =
|
|
|
|
CCASFLAGS_PROGRAM =
|
|
|
|
|
2010-10-19 05:14:57 +00:00
|
|
|
CFLAGS_LIBRARY =
|
|
|
|
CPPFLAGS_LIBRARY =
|
|
|
|
CCASFLAGS_LIBRARY =
|
2010-08-20 04:44:29 +00:00
|
|
|
|
|
|
|
# Other variables
|
|
|
|
|
|
|
|
grubconfdir = $(sysconfdir)/grub.d
|
2012-02-27 00:44:10 +00:00
|
|
|
platformdir = $(pkglibdir)/$(target_cpu)-$(platform)
|
2012-02-23 16:21:38 +00:00
|
|
|
starfielddir = $(pkgdatadir)/themes/starfield
|
2010-08-20 04:44:29 +00:00
|
|
|
|
2016-02-17 16:58:05 +00:00
|
|
|
CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion
|
2019-02-27 10:03:55 +00:00
|
|
|
CPPFLAGS_GNULIB = -I$(top_builddir)/grub-core/lib/gnulib -I$(top_srcdir)/grub-core/lib/gnulib
|
2010-08-20 04:44:29 +00:00
|
|
|
|
|
|
|
CFLAGS_POSIX = -fno-builtin
|
|
|
|
CPPFLAGS_POSIX = -I$(top_srcdir)/grub-core/lib/posix_wrap
|
|
|
|
|
2013-11-07 05:35:50 +00:00
|
|
|
CFLAGS_GCRY = -Wno-error -Wno-missing-field-initializers -Wno-redundant-decls -Wno-undef $(CFLAGS_POSIX)
|
2013-01-11 20:32:42 +00:00
|
|
|
CPPFLAGS_GCRY = -I$(top_srcdir)/grub-core/lib/libgcrypt_wrap $(CPPFLAGS_POSIX) -D_GCRYPT_IN_LIBGCRYPT=1 -I$(top_srcdir)/include/grub/gcrypt
|
|
|
|
|
2010-08-20 04:44:29 +00:00
|
|
|
CPPFLAGS_EFIEMU = -I$(top_srcdir)/grub-core/efiemu/runtime
|
|
|
|
|
2010-08-29 15:52:41 +00:00
|
|
|
# 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_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
|
|
|
|
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'
|
2017-05-08 19:19:59 +00:00
|
|
|
CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'
|
2010-08-29 15:52:41 +00:00
|
|
|
CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \
|
|
|
|
$(CPPFLAGS_PARTTOOL_LIST) $(CPPFLAGS_PARTMAP_LIST) \
|
2017-05-08 19:19:59 +00:00
|
|
|
$(CPPFLAGS_TERMINAL_LIST) $(CPPFLAGS_COMMAND_LIST) \
|
|
|
|
$(CPPFLAGS_FDT_LIST)
|
2010-08-29 15:52:41 +00:00
|
|
|
|
2010-08-20 04:44:29 +00:00
|
|
|
# Define these variables to calm down automake
|
|
|
|
|
|
|
|
IMG_FILES =
|
|
|
|
MOD_FILES =
|
|
|
|
MODULE_FILES =
|
2010-08-29 15:52:41 +00:00
|
|
|
MARKER_FILES =
|
2010-08-20 04:44:29 +00:00
|
|
|
KERNEL_HEADER_FILES =
|
|
|
|
|
|
|
|
man_MANS =
|
|
|
|
noinst_DATA =
|
2012-01-24 12:17:36 +00:00
|
|
|
pkgdata_DATA =
|
2010-08-20 04:44:29 +00:00
|
|
|
bin_SCRIPTS =
|
|
|
|
sbin_SCRIPTS =
|
|
|
|
bin_PROGRAMS =
|
|
|
|
platform_DATA =
|
|
|
|
sbin_PROGRAMS =
|
|
|
|
check_SCRIPTS =
|
2013-05-14 16:54:05 +00:00
|
|
|
dist_grubconf_DATA =
|
2010-08-20 04:44:29 +00:00
|
|
|
check_PROGRAMS =
|
2010-08-23 07:53:56 +00:00
|
|
|
noinst_SCRIPTS =
|
2010-08-20 04:44:29 +00:00
|
|
|
noinst_PROGRAMS =
|
|
|
|
grubconf_SCRIPTS =
|
|
|
|
noinst_LIBRARIES =
|
2010-09-03 15:53:00 +00:00
|
|
|
dist_noinst_DATA =
|
2012-02-18 19:25:11 +00:00
|
|
|
platform_SCRIPTS =
|
|
|
|
platform_PROGRAMS =
|
2010-08-20 04:44:29 +00:00
|
|
|
|
|
|
|
TESTS =
|
|
|
|
EXTRA_DIST =
|
|
|
|
CLEANFILES =
|
|
|
|
BUILT_SOURCES =
|
2010-08-20 12:51:31 +00:00
|
|
|
|
2013-11-13 12:42:24 +00:00
|
|
|
# Rules for Automake input
|
2010-08-20 12:51:31 +00:00
|
|
|
|
|
|
|
.PRECIOUS: $(top_srcdir)/Makefile.util.am
|
2013-11-13 12:42:24 +00:00
|
|
|
$(top_srcdir)/Makefile.util.am: $(top_srcdir)/gentpl.py $(top_srcdir)/Makefile.util.def $(top_srcdir)/Makefile.utilgcry.def
|
python: Use AM_PATH_PYTHON to determine interpreter for gentpl.py
gentpl.py is python2/3-agnostic, but there's no way to cause it
to be run with any interpreter other than 'python', it's just
hard-coded into Makefile.common that way. Adjust that to use
AM_PATH_PYTHON (provided by automake) to find an interpreter
and run gentpl.py with that instead. This makes grub buildable
when `python` does not exist (but rather `python3` or `python2`
or `python2.7`, etc.) Minimum version is set to 2.6 as this is
the first version with `__future__.print_function` available.
Note, AM_PATH_PYTHON respects the PYTHON environment variable
and will treat its value as the *only* candidate for a valid
interpreter if it is set - when PYTHON is set, AM_PATH_PYTHON
will not try to find any alternative interpreter, it will only
check whether the interpreter set as the value of PYTHON meets
the requirements and use it if so or fail if not. This means
that when using grub's `autogen.sh`, as it too uses the value
of the PYTHON environment variable (and if it is not set, just
sets it to 'python') you cannot rely on AM_PATH_PYTHON
interpreter discovery. If your desired Python interpreter is
not just 'python', you must set the PYTHON environment variable,
e.g. 'PYTHON=/usr/local/bin/python3 ./autogen.sh'. The specified
interpreter will then be used both by autogen.sh itself and by
the autotools-driven build scripts.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
2018-07-04 16:55:52 +00:00
|
|
|
$(PYTHON) $^ > $@.new || (rm -f $@.new; exit 1)
|
2010-08-20 12:51:31 +00:00
|
|
|
mv $@.new $@
|
|
|
|
|
|
|
|
.PRECIOUS: $(top_srcdir)/grub-core/Makefile.core.am
|
2013-11-13 12:42:24 +00:00
|
|
|
$(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
|
2019-02-27 10:03:55 +00:00
|
|
|
if [ "x$$GRUB_CONTRIB" != x ]; then echo "You need to run ./bootstrap manually." >&2; exit 1; fi
|
python: Use AM_PATH_PYTHON to determine interpreter for gentpl.py
gentpl.py is python2/3-agnostic, but there's no way to cause it
to be run with any interpreter other than 'python', it's just
hard-coded into Makefile.common that way. Adjust that to use
AM_PATH_PYTHON (provided by automake) to find an interpreter
and run gentpl.py with that instead. This makes grub buildable
when `python` does not exist (but rather `python3` or `python2`
or `python2.7`, etc.) Minimum version is set to 2.6 as this is
the first version with `__future__.print_function` available.
Note, AM_PATH_PYTHON respects the PYTHON environment variable
and will treat its value as the *only* candidate for a valid
interpreter if it is set - when PYTHON is set, AM_PATH_PYTHON
will not try to find any alternative interpreter, it will only
check whether the interpreter set as the value of PYTHON meets
the requirements and use it if so or fail if not. This means
that when using grub's `autogen.sh`, as it too uses the value
of the PYTHON environment variable (and if it is not set, just
sets it to 'python') you cannot rely on AM_PATH_PYTHON
interpreter discovery. If your desired Python interpreter is
not just 'python', you must set the PYTHON environment variable,
e.g. 'PYTHON=/usr/local/bin/python3 ./autogen.sh'. The specified
interpreter will then be used both by autogen.sh itself and by
the autotools-driven build scripts.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
2018-07-04 16:55:52 +00:00
|
|
|
$(PYTHON) $^ > $@.new || (rm -f $@.new; exit 1)
|
2010-08-20 12:51:31 +00:00
|
|
|
mv $@.new $@
|