merge with mainline
This commit is contained in:
commit
8fdefb9253
571 changed files with 9244 additions and 5950 deletions
19
.bzrignore
19
.bzrignore
|
@ -19,7 +19,6 @@ config.status
|
||||||
config.sub
|
config.sub
|
||||||
configure
|
configure
|
||||||
conf/*.mk
|
conf/*.mk
|
||||||
conf/gcry.rmk
|
|
||||||
*.d
|
*.d
|
||||||
DISTLIST
|
DISTLIST
|
||||||
docs/*.info
|
docs/*.info
|
||||||
|
@ -40,6 +39,7 @@ grub-fstest
|
||||||
grub_fstest_init.c
|
grub_fstest_init.c
|
||||||
grub_fstest_init.h
|
grub_fstest_init.h
|
||||||
grub-install
|
grub-install
|
||||||
|
grub-macho2img
|
||||||
grub-mk*
|
grub-mk*
|
||||||
grub-pbkdf2
|
grub-pbkdf2
|
||||||
grub-pe2elf
|
grub-pe2elf
|
||||||
|
@ -78,3 +78,20 @@ symlist.c
|
||||||
trigtables.c
|
trigtables.c
|
||||||
update-grub_lib
|
update-grub_lib
|
||||||
unidata.c
|
unidata.c
|
||||||
|
Makefile.in
|
||||||
|
GPATH
|
||||||
|
GRTAGS
|
||||||
|
GSYMS
|
||||||
|
GTAGS
|
||||||
|
Makefile.tpl
|
||||||
|
compile
|
||||||
|
depcomp
|
||||||
|
mdate-sh
|
||||||
|
texinfo.tex
|
||||||
|
grub-core/lib/libgcrypt-grub
|
||||||
|
**/.deps-util
|
||||||
|
**/.deps-core
|
||||||
|
Makefile.util.am
|
||||||
|
grub-core/Makefile.core.am
|
||||||
|
grub-core/Makefile.gcry.am
|
||||||
|
grub-core/Makefile.gcry.def
|
||||||
|
|
223
ABOUT-NLS
Normal file
223
ABOUT-NLS
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
1 Notes on the Free Translation Project
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
Free software is going international! The Free Translation Project is
|
||||||
|
a way to get maintainers of free software, translators, and users all
|
||||||
|
together, so that free software will gradually become able to speak many
|
||||||
|
languages. A few packages already provide translations for their
|
||||||
|
messages.
|
||||||
|
|
||||||
|
If you found this `ABOUT-NLS' file inside a distribution, you may
|
||||||
|
assume that the distributed package does use GNU `gettext' internally,
|
||||||
|
itself available at your nearest GNU archive site. But you do _not_
|
||||||
|
need to install GNU `gettext' prior to configuring, installing or using
|
||||||
|
this package with messages translated.
|
||||||
|
|
||||||
|
Installers will find here some useful hints. These notes also
|
||||||
|
explain how users should proceed for getting the programs to use the
|
||||||
|
available translations. They tell how people wanting to contribute and
|
||||||
|
work on translations can contact the appropriate team.
|
||||||
|
|
||||||
|
When reporting bugs in the `intl/' directory or bugs which may be
|
||||||
|
related to internationalization, you should tell about the version of
|
||||||
|
`gettext' which is used. The information can be found in the
|
||||||
|
`intl/VERSION' file, in internationalized packages.
|
||||||
|
|
||||||
|
1.1 Quick configuration advice
|
||||||
|
==============================
|
||||||
|
|
||||||
|
If you want to exploit the full power of internationalization, you
|
||||||
|
should configure it using
|
||||||
|
|
||||||
|
./configure --with-included-gettext
|
||||||
|
|
||||||
|
to force usage of internationalizing routines provided within this
|
||||||
|
package, despite the existence of internationalizing capabilities in the
|
||||||
|
operating system where this package is being installed. So far, only
|
||||||
|
the `gettext' implementation in the GNU C library version 2 provides as
|
||||||
|
many features (such as locale alias, message inheritance, automatic
|
||||||
|
charset conversion or plural form handling) as the implementation here.
|
||||||
|
It is also not possible to offer this additional functionality on top
|
||||||
|
of a `catgets' implementation. Future versions of GNU `gettext' will
|
||||||
|
very likely convey even more functionality. So it might be a good idea
|
||||||
|
to change to GNU `gettext' as soon as possible.
|
||||||
|
|
||||||
|
So you need _not_ provide this option if you are using GNU libc 2 or
|
||||||
|
you have installed a recent copy of the GNU gettext package with the
|
||||||
|
included `libintl'.
|
||||||
|
|
||||||
|
1.2 INSTALL Matters
|
||||||
|
===================
|
||||||
|
|
||||||
|
Some packages are "localizable" when properly installed; the programs
|
||||||
|
they contain can be made to speak your own native language. Most such
|
||||||
|
packages use GNU `gettext'. Other packages have their own ways to
|
||||||
|
internationalization, predating GNU `gettext'.
|
||||||
|
|
||||||
|
By default, this package will be installed to allow translation of
|
||||||
|
messages. It will automatically detect whether the system already
|
||||||
|
provides the GNU `gettext' functions. If not, the included GNU
|
||||||
|
`gettext' library will be used. This library is wholly contained
|
||||||
|
within this package, usually in the `intl/' subdirectory, so prior
|
||||||
|
installation of the GNU `gettext' package is _not_ required.
|
||||||
|
Installers may use special options at configuration time for changing
|
||||||
|
the default behaviour. The commands:
|
||||||
|
|
||||||
|
./configure --with-included-gettext
|
||||||
|
./configure --disable-nls
|
||||||
|
|
||||||
|
will, respectively, bypass any pre-existing `gettext' to use the
|
||||||
|
internationalizing routines provided within this package, or else,
|
||||||
|
_totally_ disable translation of messages.
|
||||||
|
|
||||||
|
When you already have GNU `gettext' installed on your system and run
|
||||||
|
configure without an option for your new package, `configure' will
|
||||||
|
probably detect the previously built and installed `libintl.a' file and
|
||||||
|
will decide to use this. This might not be desirable. You should use
|
||||||
|
the more recent version of the GNU `gettext' library. I.e. if the file
|
||||||
|
`intl/VERSION' shows that the library which comes with this package is
|
||||||
|
more recent, you should use
|
||||||
|
|
||||||
|
./configure --with-included-gettext
|
||||||
|
|
||||||
|
to prevent auto-detection.
|
||||||
|
|
||||||
|
The configuration process will not test for the `catgets' function
|
||||||
|
and therefore it will not be used. The reason is that even an
|
||||||
|
emulation of `gettext' on top of `catgets' could not provide all the
|
||||||
|
extensions of the GNU `gettext' library.
|
||||||
|
|
||||||
|
Internationalized packages usually have many `po/LL.po' files, where
|
||||||
|
LL gives an ISO 639 two-letter code identifying the language. Unless
|
||||||
|
translations have been forbidden at `configure' time by using the
|
||||||
|
`--disable-nls' switch, all available translations are installed
|
||||||
|
together with the package. However, the environment variable `LINGUAS'
|
||||||
|
may be set, prior to configuration, to limit the installed set.
|
||||||
|
`LINGUAS' should then contain a space separated list of two-letter
|
||||||
|
codes, stating which languages are allowed.
|
||||||
|
|
||||||
|
1.3 Using This Package
|
||||||
|
======================
|
||||||
|
|
||||||
|
As a user, if your language has been installed for this package, you
|
||||||
|
only have to set the `LANG' environment variable to the appropriate
|
||||||
|
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
||||||
|
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
||||||
|
suppose that you speak German and live in Germany. At the shell
|
||||||
|
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
||||||
|
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
||||||
|
This can be done from your `.login' or `.profile' file, once and for
|
||||||
|
all.
|
||||||
|
|
||||||
|
You might think that the country code specification is redundant.
|
||||||
|
But in fact, some languages have dialects in different countries. For
|
||||||
|
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
||||||
|
country code serves to distinguish the dialects.
|
||||||
|
|
||||||
|
The locale naming convention of `LL_CC', with `LL' denoting the
|
||||||
|
language and `CC' denoting the country, is the one use on systems based
|
||||||
|
on GNU libc. On other systems, some variations of this scheme are
|
||||||
|
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
||||||
|
locales supported by your system for your language by running the
|
||||||
|
command `locale -a | grep '^LL''.
|
||||||
|
|
||||||
|
Not all programs have translations for all languages. By default, an
|
||||||
|
English message is shown in place of a nonexistent translation. If you
|
||||||
|
understand other languages, you can set up a priority list of languages.
|
||||||
|
This is done through a different environment variable, called
|
||||||
|
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
||||||
|
for the purpose of message handling, but you still need to have `LANG'
|
||||||
|
set to the primary language; this is required by other parts of the
|
||||||
|
system libraries. For example, some Swedish users who would rather
|
||||||
|
read translations in German than English for when Swedish is not
|
||||||
|
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
||||||
|
|
||||||
|
Special advice for Norwegian users: The language code for Norwegian
|
||||||
|
bokma*l changed from `no' to `nb' recently (in 2003). During the
|
||||||
|
transition period, while some message catalogs for this language are
|
||||||
|
installed under `nb' and some older ones under `no', it's recommended
|
||||||
|
for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
|
||||||
|
older translations are used.
|
||||||
|
|
||||||
|
In the `LANGUAGE' environment variable, but not in the `LANG'
|
||||||
|
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
||||||
|
to denote the language's main dialect. For example, `de' is equivalent
|
||||||
|
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
||||||
|
(Portuguese as spoken in Portugal) in this context.
|
||||||
|
|
||||||
|
1.4 Translating Teams
|
||||||
|
=====================
|
||||||
|
|
||||||
|
For the Free Translation Project to be a success, we need interested
|
||||||
|
people who like their own language and write it well, and who are also
|
||||||
|
able to synergize with other translators speaking the same language.
|
||||||
|
Each translation team has its own mailing list. The up-to-date list of
|
||||||
|
teams can be found at the Free Translation Project's homepage,
|
||||||
|
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
||||||
|
area.
|
||||||
|
|
||||||
|
If you'd like to volunteer to _work_ at translating messages, you
|
||||||
|
should become a member of the translating team for your own language.
|
||||||
|
The subscribing address is _not_ the same as the list itself, it has
|
||||||
|
`-request' appended. For example, speakers of Swedish can send a
|
||||||
|
message to `sv-request@li.org', having this message body:
|
||||||
|
|
||||||
|
subscribe
|
||||||
|
|
||||||
|
Keep in mind that team members are expected to participate
|
||||||
|
_actively_ in translations, or at solving translational difficulties,
|
||||||
|
rather than merely lurking around. If your team does not exist yet and
|
||||||
|
you want to start one, or if you are unsure about what to do or how to
|
||||||
|
get started, please write to `translation@iro.umontreal.ca' to reach the
|
||||||
|
coordinator for all translator teams.
|
||||||
|
|
||||||
|
The English team is special. It works at improving and uniformizing
|
||||||
|
the terminology in use. Proven linguistic skills are praised more than
|
||||||
|
programming skills, here.
|
||||||
|
|
||||||
|
1.5 Available Packages
|
||||||
|
======================
|
||||||
|
|
||||||
|
Languages are not equally supported in all packages. The following
|
||||||
|
matrix shows the current state of internationalization, as of October
|
||||||
|
2006. The matrix shows, in regard of each package, for which languages
|
||||||
|
PO files have been submitted to translation coordination, with a
|
||||||
|
translation percentage of at least 50%.
|
||||||
|
|
||||||
|
# Matrix here is removed!
|
||||||
|
|
||||||
|
Some counters in the preceding matrix are higher than the number of
|
||||||
|
visible blocks let us expect. This is because a few extra PO files are
|
||||||
|
used for implementing regional variants of languages, or language
|
||||||
|
dialects.
|
||||||
|
|
||||||
|
For a PO file in the matrix above to be effective, the package to
|
||||||
|
which it applies should also have been internationalized and
|
||||||
|
distributed as such by its maintainer. There might be an observable
|
||||||
|
lag between the mere existence a PO file and its wide availability in a
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
If October 2006 seems to be old, you may fetch a more recent copy of
|
||||||
|
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||||
|
matrix with full percentage details can be found at
|
||||||
|
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||||
|
|
||||||
|
1.6 Using `gettext' in new packages
|
||||||
|
===================================
|
||||||
|
|
||||||
|
If you are writing a freely available program and want to
|
||||||
|
internationalize it you are welcome to use GNU `gettext' in your
|
||||||
|
package. Of course you have to respect the GNU Library General Public
|
||||||
|
License which covers the use of the GNU `gettext' library. This means
|
||||||
|
in particular that even non-free programs can use `libintl' as a shared
|
||||||
|
library, whereas only free software can use `libintl' as a static
|
||||||
|
library or use modified versions of `libintl'.
|
||||||
|
|
||||||
|
Once the sources are changed appropriately and the setup can handle
|
||||||
|
the use of `gettext' the only thing missing are the translations. The
|
||||||
|
Free Translation Project is also available for packages which are not
|
||||||
|
developed inside the GNU project. Therefore the information given above
|
||||||
|
applies also for every other Free Software Project. Contact
|
||||||
|
`translation@iro.umontreal.ca' to make the `.pot' files available to
|
||||||
|
the translation teams.
|
||||||
|
|
837
ChangeLog
837
ChangeLog
|
@ -1,3 +1,840 @@
|
||||||
|
2010-08-25 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
Multiple variable names support to "export" command.
|
||||||
|
|
||||||
|
* normal/context.c (grub_cmd_export): "export" command supports
|
||||||
|
multiple variable names.
|
||||||
|
|
||||||
|
2010-08-23 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||||
|
|
||||||
|
* util/grub.d/30_os-prober.in: Fix conversion from grub-probe
|
||||||
|
--target=drive output to Mach device name.
|
||||||
|
|
||||||
|
2010-08-23 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
New Automake based build system for GRUB.
|
||||||
|
|
||||||
|
* ABOUT-NLS: New file.
|
||||||
|
* Makefile.am: New file. GRUB host utils' rules that doesn't fit
|
||||||
|
in Makefile.util.def file.
|
||||||
|
* Makefile.util.def: New file. Autogen build definitions file for
|
||||||
|
GRUB host utils.
|
||||||
|
* conf/Makefile.common: New file. Common variables for GRUB host
|
||||||
|
utils and target modules.
|
||||||
|
* conf/Makefile.extra-dist: New file. Extra files for make dist.
|
||||||
|
* docs/Makefile.am: New file. Automake file for docs.
|
||||||
|
* gentpl.py: New file. Python script to generate Autogen
|
||||||
|
template.
|
||||||
|
* grub-core/Makefile.am: New file. GRUB target modules' rules
|
||||||
|
that doesn't fit in Makefile.core.def file.
|
||||||
|
* grub-core/Makefile.core.def: New file. Autogen build
|
||||||
|
definitions file for GRUB target modules.
|
||||||
|
* grub-core/lib/setjmp.S: New file. Wrapper for target_cpu
|
||||||
|
specific setjmp.S file.
|
||||||
|
* po/Makefile.am: New file.
|
||||||
|
|
||||||
|
* .bzrignore: New ignores.
|
||||||
|
* INSTALL: New requirements, without Ruby.
|
||||||
|
* acinclude.m4: Use TARGET_IMG_BASE_LDOPT variable instead.
|
||||||
|
* autogen.sh: Updated to invoke autogen as necessary.
|
||||||
|
* configure.ac: Separate *FLAGS with HOST_ and TARGET_ prefixes,
|
||||||
|
and defines for Automake conditionals.
|
||||||
|
* geninit.sh: Refactoring.
|
||||||
|
|
||||||
|
* include/grub/dl.h: Allow build rules to define GRUB_MOD_* if
|
||||||
|
necessary.
|
||||||
|
* include/grub/emu/getroot.h (grub_make_system_path_relative_to_its_root):
|
||||||
|
New prototype.
|
||||||
|
|
||||||
|
* include/grub/test.h: Fix functional test modules' naming.
|
||||||
|
* grub-core/tests/example_functional_test.c: Fix test module name.
|
||||||
|
|
||||||
|
* util/misc.c: Hosted versions' of grub functions for libgrub.a
|
||||||
|
* tests/lib/unit_test.c: Remove hosted versions of grub functions.
|
||||||
|
* util/grub-editenv.c: Likewise.
|
||||||
|
* util/grub-fstest.c: Likewise.
|
||||||
|
* util/grub-mkdevicemap.c: Likewise.
|
||||||
|
* util/grub-mkfont.c: Likewise.
|
||||||
|
* util/grub-mkimage.c: Likewise.
|
||||||
|
* util/grub-mkpasswd-pbkdf2.c: Likewise.
|
||||||
|
* util/grub-probe.c: Likewise.
|
||||||
|
* util/grub-script-check.c: Likewise.
|
||||||
|
* util/i386/pc/grub-setup.c: Likewise.
|
||||||
|
* util/sparc64/ieee1275/grub-setup.c: Likewise.
|
||||||
|
|
||||||
|
* tests/util/grub-shell.in: Fix override directory path.
|
||||||
|
* util/grub-mkrescue.in: Replace @pkglib_DATA@ with files.
|
||||||
|
* util/import_gcry.py: Create Makefile.gcry.def file instead.
|
||||||
|
|
||||||
|
* util/lvm.c: Update #includes.
|
||||||
|
* util/raid.c: Likewise.
|
||||||
|
* util/resolve.c: Likewise.
|
||||||
|
* grub-core/bus/emu/pci.c: Likewise.
|
||||||
|
* grub-core/lib/posix_wrap/stdlib.h: Likewise.
|
||||||
|
* grub-core/lib/posix_wrap/string.h: Likewise.
|
||||||
|
* grub-core/kern/emu/main.c: Likewise.
|
||||||
|
|
||||||
|
* grub-core/gensymlist.sh: New file. Script for generating kernel
|
||||||
|
symbols file.
|
||||||
|
* grub-core/genmoddep.awk: Support new kernel_syms.lst format.
|
||||||
|
|
||||||
|
* grub-core/gentrigtables.c: Fix unused variable warnings.
|
||||||
|
|
||||||
|
* Makefile.in: Removed.
|
||||||
|
* conf/any-emu.rmk: Removed.
|
||||||
|
* conf/common.rmk: Removed.
|
||||||
|
* conf/i386-coreboot.rmk: Removed.
|
||||||
|
* conf/i386-efi.rmk: Removed.
|
||||||
|
* conf/i386-ieee1275.rmk: Removed.
|
||||||
|
* conf/i386-multiboot.rmk: Removed.
|
||||||
|
* conf/i386-pc.rmk: Removed.
|
||||||
|
* conf/i386-qemu.rmk: Removed.
|
||||||
|
* conf/i386.rmk: Removed.
|
||||||
|
* conf/mips-yeeloong.rmk: Removed.
|
||||||
|
* conf/mips.rmk: Removed.
|
||||||
|
* conf/powerpc-ieee1275.rmk: Removed.
|
||||||
|
* conf/sparc64-ieee1275.rmk: Removed.
|
||||||
|
* conf/tests.rmk: Removed.
|
||||||
|
* conf/x86-efi.rmk: Removed.
|
||||||
|
* conf/x86_64-efi.rmk: Removed.
|
||||||
|
* gendistlist.sh: Removed.
|
||||||
|
* geninitheader.sh: Removed.
|
||||||
|
* genkernsyms.sh.in: Removed.
|
||||||
|
* genmk.rb: Removed.
|
||||||
|
* gensymlist.sh.in: Removed.
|
||||||
|
* mkinstalldirs: Removed.
|
||||||
|
* boot: Moved ...
|
||||||
|
* grub-core/boot: ... to here.
|
||||||
|
* bus: Moved ...
|
||||||
|
* grub-core/bus: ... to here.
|
||||||
|
* commands: Moved ...
|
||||||
|
* grub-core/commands: ... to here.
|
||||||
|
* disk: Moved ...
|
||||||
|
* grub-core/disk: ... to here.
|
||||||
|
* efiemu: Moved ...
|
||||||
|
* grub-core/efiemu: ... to here.
|
||||||
|
* font: Moved ...
|
||||||
|
* grub-core/font: ... to here.
|
||||||
|
* fs: Moved ...
|
||||||
|
* grub-core/fs: ... to here.
|
||||||
|
* gencmdlist.sh: Moved ...
|
||||||
|
* grub-core/gencmdlist.sh: ... to here.
|
||||||
|
* genemuinit.sh: Moved ...
|
||||||
|
* grub-core/genemuinit.sh: ... to here.
|
||||||
|
* genemuinitheader.sh: Moved ...
|
||||||
|
* grub-core/genemuinitheader.sh: ... to here.
|
||||||
|
* genfslist.sh: Moved ...
|
||||||
|
* grub-core/genfslist.sh: ... to here.
|
||||||
|
* genhandlerlist.sh: Moved ...
|
||||||
|
* grub-core/genhandlerlist.sh: ... to here.
|
||||||
|
* genmoddep.awk: Moved ...
|
||||||
|
* grub-core/genmoddep.awk: ... to here.
|
||||||
|
* genmodsrc.sh: Moved ...
|
||||||
|
* grub-core/genmodsrc.sh: ... to here.
|
||||||
|
* genpartmaplist.sh: Moved ...
|
||||||
|
* grub-core/genpartmaplist.sh: ... to here.
|
||||||
|
* genparttoollist.sh: Moved ...
|
||||||
|
* grub-core/genparttoollist.sh: ... to here.
|
||||||
|
* genterminallist.sh: Moved ...
|
||||||
|
* grub-core/genterminallist.sh: ... to here.
|
||||||
|
* gentrigtables.c: Moved ...
|
||||||
|
* grub-core/gentrigtables.c: ... to here.
|
||||||
|
* genvideolist.sh: Moved ...
|
||||||
|
* grub-core/genvideolist.sh: ... to here.
|
||||||
|
* gettext: Moved ...
|
||||||
|
* grub-core/gettext: ... to here.
|
||||||
|
* gfxmenu: Moved ...
|
||||||
|
* grub-core/gfxmenu: ... to here.
|
||||||
|
* gnulib: Moved ...
|
||||||
|
* grub-core/gnulib: ... to here.
|
||||||
|
* hello: Moved ...
|
||||||
|
* grub-core/hello: ... to here.
|
||||||
|
* hook: Moved ...
|
||||||
|
* grub-core/hook: ... to here.
|
||||||
|
* io: Moved ...
|
||||||
|
* grub-core/io: ... to here.
|
||||||
|
* kern: Moved ...
|
||||||
|
* grub-core/kern: ... to here.
|
||||||
|
* lib: Moved ...
|
||||||
|
* grub-core/lib: ... to here.
|
||||||
|
* loader: Moved ...
|
||||||
|
* grub-core/loader: ... to here.
|
||||||
|
* mmap: Moved ...
|
||||||
|
* grub-core/mmap: ... to here.
|
||||||
|
* normal: Moved ...
|
||||||
|
* grub-core/normal: ... to here.
|
||||||
|
* partmap: Moved ...
|
||||||
|
* grub-core/partmap: ... to here.
|
||||||
|
* parttool: Moved ...
|
||||||
|
* grub-core/parttool: ... to here.
|
||||||
|
* script: Moved ...
|
||||||
|
* grub-core/script: ... to here.
|
||||||
|
* term: Moved ...
|
||||||
|
* grub-core/term: ... to here
|
||||||
|
* tests/example_functional_test.c: Moved ...
|
||||||
|
* grub-core/tests/example_functional_test.c: ... to here.
|
||||||
|
* tests/lib/functional_test.c: Moved ...
|
||||||
|
* grub-core/tests/lib/functional_test.c: ... to here.
|
||||||
|
* tests/lib/test.c: Moved ...
|
||||||
|
* grub-core/tests/lib/test.c: ... to here.
|
||||||
|
* video: Moved ...
|
||||||
|
* grub-core/video: ... to here.
|
||||||
|
|
||||||
|
2010-08-23 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
Replace --enable-grub-emu-modules with grub-emu-lite.
|
||||||
|
|
||||||
|
* kern/emu/cache.S: New file. Wrapper for $target_cpu specific
|
||||||
|
cache.S.
|
||||||
|
|
||||||
|
* include/grub/emu/misc.h (grub_emu_init): New prototype.
|
||||||
|
* kern/emu/full.c: New file. For grub-emu specific initialization.
|
||||||
|
* kern/emu/lite.c: New file. For grub-emu-lite initialization.
|
||||||
|
* kern/emu/main.c: Call initialization function grub_emu_init.
|
||||||
|
|
||||||
|
* Makefile.in: Include grub-emu-lite in install.
|
||||||
|
* commands/parttool.c: Use grub_no_autoload to differentiate
|
||||||
|
between grub-emu and grub-emu-lite.
|
||||||
|
* include/grub/misc.h: New variable grub_no_autoload.
|
||||||
|
|
||||||
|
* conf/any-emu.rmk: New rules for grub-emu-lite.
|
||||||
|
* configure.ac: Remove --enable-grub-emu-modules.
|
||||||
|
* genmk.rb: Cleanup unnecessary rules.
|
||||||
|
* include/grub/dl.h: Remove GRUB_NO_MODULES macro.
|
||||||
|
|
||||||
|
* normal/main.c: Don't load list files on grub-emu-lite.
|
||||||
|
* util/misc.c (grub_arch_sync_caches): Removed.
|
||||||
|
|
||||||
|
2010-08-23 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* kern/mips/startup.S (grub_prefix): Update comment to refer to
|
||||||
|
grub-mkimage rather than grub-mkelfimage.
|
||||||
|
* kern/powerpc/ieee1275/startup.S (grub_prefix): Likewise.
|
||||||
|
|
||||||
|
2010-08-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* term/at_keyboard.c (grub_at_keyboard_getkey_noblock): Don't discard
|
||||||
|
a key after CapsLock or NumLock. It's just a qemu bug.
|
||||||
|
|
||||||
|
2010-08-21 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/usb.h (grub_usb_device): Add 'data' field back. It's
|
||||||
|
needed by libusb wrapper.
|
||||||
|
|
||||||
|
2010-08-21 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||||
|
|
||||||
|
* docs/grub.texi (GNU/Hurd): Document booting GNU/Hurd.
|
||||||
|
|
||||||
|
2010-08-21 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* loader/multiboot.c (grub_cmd_module): Don't unzip module if
|
||||||
|
--nounzip is passed.
|
||||||
|
|
||||||
|
2010-08-20 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
USB hotunplugging and USB serial support.
|
||||||
|
|
||||||
|
* bus/usb/ohci.c (grub_ohci_transfer): Fill *actual and respect timeout.
|
||||||
|
* bus/usb/uhci.c (grub_free_queue): Compute *actual.
|
||||||
|
(grub_uhci_transfer): Respect timeout and set *actual.
|
||||||
|
* bus/usb/usb.c (grub_usb_device_initialize): Correctly skip fields of
|
||||||
|
non-standard length.
|
||||||
|
(grub_usb_device_attach): Autoload modules.
|
||||||
|
(GRUB_MOD_INIT): Set grub_term_poll_usb.
|
||||||
|
(GRUB_MOD_FINI): Unset grub_term_poll_usb.
|
||||||
|
* bus/usb/usbhub.c (grub_usb_hub): Replace speed with devices. All
|
||||||
|
users updated.
|
||||||
|
(grub_usb_add_hub): Fill nports and children.
|
||||||
|
(attach_root_port): Receive hub instead of controller.
|
||||||
|
All users updated. Fill hub->devices.
|
||||||
|
(grub_usb_root_hub): Allocate hub->devices.
|
||||||
|
(detach_device): New function.
|
||||||
|
(poll_nonroot_hub): Fill children and detach devices.
|
||||||
|
* bus/usb/usbtrans.c (grub_usb_bulk_readwrite): Accept timeout and
|
||||||
|
actual arguments. All users updated.
|
||||||
|
(grub_usb_bulk_read_extended): New function.
|
||||||
|
* bus/usb/serial/common.c: New file.
|
||||||
|
* bus/usb/serial/ftdi.c: Likewise.
|
||||||
|
* bus/usb/serial/pl2303.c: Likewise.
|
||||||
|
* commands/terminal.c (handle_command): Support wildcard.
|
||||||
|
* commands/usbtest.c: Output "Unknown" instead of empty string.
|
||||||
|
* conf/any-emu.rmk (pkglib_MODULES): Add usbserial_common.mod.
|
||||||
|
(usbserial_common_mod_SOURCES): New variable.
|
||||||
|
(usbserial_common_mod_CFLAGS): Likewise.
|
||||||
|
(usbserial_common_mod_LDFLAGS): Likewise.
|
||||||
|
(pkglib_MODULES): Add usbserial_pl2303.mod.
|
||||||
|
(usbserial_pl2303_mod_SOURCES): New variable.
|
||||||
|
(usbserial_pl2303_mod_CFLAGS): Likewise.
|
||||||
|
(usbserial_pl2303_mod_LDFLAGS): Likewise.
|
||||||
|
(pkglib_MODULES): Add usbserial_ftdi.mod.
|
||||||
|
(usbserial_ftdi_mod_SOURCES): New variable.
|
||||||
|
(usbserial_ftdi_mod_CFLAGS): Likewise.
|
||||||
|
(usbserial_ftdi_mod_LDFLAGS): Likewise.
|
||||||
|
(pkglib_MODULES): Add serial.mod.
|
||||||
|
(serial_mod_SOURCES): New variable.
|
||||||
|
(serial_mod_CFLAGS): Likewise.
|
||||||
|
(serial_mod_LDFLAGS): Likewise.
|
||||||
|
* conf/i386-pc.rmk: Likewise.
|
||||||
|
* conf/mips-yeeloong.rmk: Likewise.
|
||||||
|
* conf/i386.rmk (serial_mod_SOURCES): Add term/ns8250.c.
|
||||||
|
* conf/mips-yeeloong.rmk (kernel_img_SOURCES): Likewise.
|
||||||
|
* disk/usbms.c (first_available_slot): New variable.
|
||||||
|
(grub_usbms_attach): Don't reuse free slots due to potential cache
|
||||||
|
problems.
|
||||||
|
* include/grub/serial.h: Moved to ..
|
||||||
|
* include/grub/ns8250.h: ...this.
|
||||||
|
* include/grub/serial.h: New file.
|
||||||
|
* include/grub/term.h (grub_term_poll_usb): New variable.
|
||||||
|
* include/grub/terminfo.h (grub_terminfo_input_state): Pass term to
|
||||||
|
readkey. All users updated.
|
||||||
|
(grub_terminfo_output_state): Pass term to put.
|
||||||
|
* include/grub/usb.h (GRUB_USB_REQTYPE): New enum.
|
||||||
|
(grub_usb_controller_dev): Add timeout and actual arguments to
|
||||||
|
transfer. All users updated.
|
||||||
|
(grub_usb_interface): New field detach_data.
|
||||||
|
(grub_usb_device): New fields children and nports.
|
||||||
|
(grub_usb_ep_type_t): New type.
|
||||||
|
(grub_usb_get_ep_type): New function.
|
||||||
|
(grub_usb_bulk_read_extended): Likewise.
|
||||||
|
* include/grub/usbdesc.h (grub_usb_desc): New type.
|
||||||
|
* include/grub/usbserial.h: New file.
|
||||||
|
* include/grub/usbtrans.h (grub_usb_transaction): New field preceding.
|
||||||
|
* kern/term.c (grub_term_poll_usb): New variable.
|
||||||
|
(grub_getkey): Call grub_term_poll_usb if set.
|
||||||
|
(grub_checkkey): Likewise.
|
||||||
|
(grub_getkeystatus): Likewise.
|
||||||
|
* term/serial.c: Moved controller-specific parts to ...
|
||||||
|
* term/ns8250.c: ... here.
|
||||||
|
* term/serial.c: Mostly rewritten.
|
||||||
|
* term/usb_keyboard.c: Reorganised to use GET_REPORT only on attaching
|
||||||
|
according to spec.
|
||||||
|
|
||||||
|
2010-08-20 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Make kFreeBSD code more generic to support ext2fs as root, ufs as
|
||||||
|
a separate module and maybe other interesting combinations.
|
||||||
|
|
||||||
|
* util/grub.d/10_kfreebsd.in (load_kfreebsd_module): New function.
|
||||||
|
(kfreebsd_entry): Use load_kfreebsd_module() to load modules.
|
||||||
|
(kfreebsd_entry): Add generic filesystem module load routine.
|
||||||
|
Map GRUB `ext2' to kFreeBSD `ext2fs'.
|
||||||
|
|
||||||
|
2010-08-20 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* commands/i386/pc/sendkey.c (keysym_table): Rename "numlock" to
|
||||||
|
"numcenter" (I misunderstood the purpose of this entry).
|
||||||
|
* docs/grub.texi (sendkey): Likewise.
|
||||||
|
|
||||||
|
2010-08-20 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* commands/i386/pc/sendkey.c (options): Remove "keep" from all
|
||||||
|
status flag options; simply omitting the option is equivalent and
|
||||||
|
simpler. Rename "wait" to "pause". Rename "sysreq" to "sysrq".
|
||||||
|
(keysym_table): Rename "num5numlock" to "numlock".
|
||||||
|
(grub_cmd_sendkey): Reinitialise `andmask' and `ormask', so that we
|
||||||
|
can uniformly say that only the last of multiple `sendkey'
|
||||||
|
invocations has any effect.
|
||||||
|
* docs/grub.texi (sendkey): New section.
|
||||||
|
|
||||||
|
2010-08-19 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* commands/i386/pc/sendkey.c (options): Fix three typos.
|
||||||
|
|
||||||
|
2010-08-19 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement sendkey support.
|
||||||
|
|
||||||
|
* commands/i386/pc/sendkey.c: New file.
|
||||||
|
* conf/i386-pc.rmk (pkglib_MODULES): Add sendkey.mod.
|
||||||
|
(sendkey_mod_SOURCES): New variable.
|
||||||
|
(sendkey_mod_CFLAGS): Likewise.
|
||||||
|
(sendkey_mod_LDFLAGS): Likewise.
|
||||||
|
|
||||||
|
2010-08-18 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* configure.ac: Move AM_INIT_AUTOMAKE after AC_CANONICAL_TARGET to
|
||||||
|
fix warnings from Autoconf.
|
||||||
|
|
||||||
|
2010-08-18 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* acinclude.m4 (grub_ASM_USCORE): Use a more accurate grep pattern,
|
||||||
|
to avoid false positives with some assemblers that output things
|
||||||
|
like "someprefix_func" as part of their output.
|
||||||
|
|
||||||
|
2010-08-15 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* kern/emu/misc.c (grub_get_libzfs_handle): Handle libzfs_init()
|
||||||
|
errors.
|
||||||
|
* kern/emu/getroot.c (find_root_device_from_libzfs): Handle
|
||||||
|
grub_get_libzfs_handle() errors.
|
||||||
|
|
||||||
|
2010-08-14 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* kern/emu/misc.c (grub_find_zpool_from_dir): Abort function if
|
||||||
|
filesystem is not ZFS.
|
||||||
|
|
||||||
|
2010-08-12 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
Fix for misspelled color names defaulting to black/black (bug
|
||||||
|
reported by Doug Nazar)
|
||||||
|
|
||||||
|
* include/grub/normal.h (grub_parse_color_name_pair): Add return
|
||||||
|
status to prototype.
|
||||||
|
* normal/color.c (grub_parse_color_name_pair): Return failure
|
||||||
|
status.
|
||||||
|
(grub_env_write_color_normal): Ignore bad color names.
|
||||||
|
(grub_env_write_color_highlight): Likewise.
|
||||||
|
* normal/main.c (GRUB_MOD_INIT): Set default color names.
|
||||||
|
|
||||||
|
2010-08-12 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
"shift" command support to GRUB script.
|
||||||
|
|
||||||
|
* include/grub/script_sh.h (grub_script_shift): New prototype.
|
||||||
|
* script/execute.c (grub_script_shift): New function.
|
||||||
|
* script/main.c (grub_script_init): Register shift command.
|
||||||
|
(grub_script_fini): Unregister shift command.
|
||||||
|
* util/grub-script-check.c (grub_script_cmd_shift): New function.
|
||||||
|
|
||||||
|
* tests/grub_script_shift.in: New testcase.
|
||||||
|
* conf/tests.rmk: Rules for new testcase.
|
||||||
|
|
||||||
|
2010-08-12 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
"continue" command support to GRUB script.
|
||||||
|
|
||||||
|
* script/execute.c (grub_script_execute_cmdwhile): Continue support.
|
||||||
|
(grub_script_break): Continue support.
|
||||||
|
* script/main.c (grub_script_init): Register continue command.
|
||||||
|
(grub_script_fini): Unregister continue command.
|
||||||
|
|
||||||
|
* tests/grub_script_continue.in: New testcase.
|
||||||
|
* conf/tests.rmk: Rules for new testcase.
|
||||||
|
|
||||||
|
2010-08-12 BVK Chaitanya <bvk@dbook>
|
||||||
|
|
||||||
|
"break" command support to GRUB script.
|
||||||
|
|
||||||
|
* conf/common.rmk: Rule updates to grub-script-check.
|
||||||
|
* include/grub/misc.h (grub_min): New function.
|
||||||
|
* include/grub/script_sh.h (grub_script_init): New prototype.
|
||||||
|
(grub_script_fini): New prototype.
|
||||||
|
(grub_script_break): New prototype.
|
||||||
|
* script/main.c (grub_script_init): New function.
|
||||||
|
(grub_script_fini): New function.
|
||||||
|
* script/execute.c (grub_script_break): New function.
|
||||||
|
* normal/main.c: Calls to grub_script_{init,fini}.
|
||||||
|
* util/grub-script-check.c (grub_script_break): New function.
|
||||||
|
|
||||||
|
* tests/grub_script_break.in: New testcase.
|
||||||
|
* conf/tests.rmk: Rules for new test case.
|
||||||
|
|
||||||
|
2010-08-12 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
Function parameters support to GRUB script.
|
||||||
|
|
||||||
|
* script/yylex.l (VARIABLE): Regular expression update.
|
||||||
|
* script/function.c (grub_script_function_call): Moved ...
|
||||||
|
* script/execute.c (grub_script_function_call): ... to here.
|
||||||
|
(grub_script_execute_arglist_to_argv): Removed.
|
||||||
|
(grub_script_arglist_to_argv): New function.
|
||||||
|
* script/argv.c: New file.
|
||||||
|
(grub_script_argv_free): New function.
|
||||||
|
(grub_script_argv_next): Likewise.
|
||||||
|
(grub_script_argv_append): Likewise.
|
||||||
|
(grub_script_argv_split_append): Likewise.
|
||||||
|
* include/grub/script_sh.h (grub_script_argv): New struct.
|
||||||
|
(grub_script_argv_free): New function.
|
||||||
|
(grub_script_argv_next): Likewise.
|
||||||
|
(grub_script_argv_append): Likewise.
|
||||||
|
(grub_script_argv_split_append): Likewise.
|
||||||
|
|
||||||
|
* conf/common.rmk (normal.mod): New source script/argv.c.
|
||||||
|
|
||||||
|
* tests/grub_script_echo1.in: More tests.
|
||||||
|
* tests/grub_script_vars1.in: Likewise.
|
||||||
|
* tests/grub_script_functions.in: New test case.
|
||||||
|
* conf/tests.rmk: Rules for new testcase.
|
||||||
|
|
||||||
|
2010-08-12 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
Remove grub_script_cmdblock struct.
|
||||||
|
|
||||||
|
* include/grub/script_sh.h: Remove grub_script_cmdblock.
|
||||||
|
* script/parser.y: Likewise.
|
||||||
|
* script/execute.c: Rename cmdblock suffix to cmdlist.
|
||||||
|
* script/script.c: Likewise.
|
||||||
|
* util/grub-script-check.c: Likewise.
|
||||||
|
|
||||||
|
2010-08-11 Yves Blusseau <blusseau@zetam.org>
|
||||||
|
|
||||||
|
* .bzrignore: add grub-macho2img
|
||||||
|
|
||||||
|
2010-08-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* kern/i386/qemu/init.c (grub_qemu_init_cirrus): Fix compilation error.
|
||||||
|
|
||||||
|
2010-08-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Remove the dump of sm712 initialisation sequence.
|
||||||
|
|
||||||
|
* include/grub/pci.h (GRUB_PCI_CLASS_SUBCLASS_VGA): New const.
|
||||||
|
* include/grub/vga.h (GRUB_VGA_IO_ARX_READ): New register.
|
||||||
|
(GRUB_VGA_IO_MISC_WRITE): Likewise.
|
||||||
|
(GRUB_VGA_CR_*): Added many registers.
|
||||||
|
(GRUB_VGA_SR_*): Likewise.
|
||||||
|
(GRUB_VGA_GR_*): Likewise.
|
||||||
|
(grub_vga_write_arx): New function.
|
||||||
|
(grub_video_hw_config): New struct.
|
||||||
|
(grub_vga_set_geometry): New function.
|
||||||
|
* kern/i386/qemu/init.c (load_palette): Use grub_vga_write_arx and
|
||||||
|
GRUB_PCI_CLASS_SUBCLASS_VGA.
|
||||||
|
* video/cirrus.c (grub_video_cirrus_setup): Use grub_vga_set_geometry.
|
||||||
|
* video/sm712.c (grub_sm712_write_reg): New function
|
||||||
|
(grub_sm712_read_reg): Likewise.
|
||||||
|
(grub_sm712_sr_write): Likewise.
|
||||||
|
(grub_sm712_gr_write): Likewise.
|
||||||
|
(grub_sm712_cr_write): Likewise.
|
||||||
|
(grub_sm712_write_arx): Likewise.
|
||||||
|
(grub_sm712_cr_shadow_write): Likewise.
|
||||||
|
(grub_sm712_write_dda_lookup): Likewise.
|
||||||
|
(grub_video_sm712_setup): Initialise the video rather then
|
||||||
|
blindly replay the dump.
|
||||||
|
(main) [TEST]: Add a routine to be able to compile as standalone for
|
||||||
|
tests.
|
||||||
|
* video/sm712_init.c (sm712_init): Removed.
|
||||||
|
(sm712_sr_seq1): New array.
|
||||||
|
(sm712_sr_seq2): Likewise.
|
||||||
|
|
||||||
|
2010-08-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/vga.h: Add missing grub/pci.h include.
|
||||||
|
|
||||||
|
2010-08-10 Yves Blusseau <blusseau@zetam.org>
|
||||||
|
|
||||||
|
* util/grub-macho2img.c (main): fix typo
|
||||||
|
|
||||||
|
2010-08-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/vga.h (grub_vga_gr_write): Add GRUB_MACHINE_PCI_IO_BASE.
|
||||||
|
(grub_vga_gr_read): Likewise.
|
||||||
|
(grub_vga_cr_write): Likewise.
|
||||||
|
(grub_vga_cr_read): Likewise.
|
||||||
|
(grub_vga_sr_write): Likewise.
|
||||||
|
(grub_vga_sr_read): Likewise.
|
||||||
|
(grub_vga_palette_read): Likewise.
|
||||||
|
(grub_vga_palette_write): Likewise.
|
||||||
|
* video/sm712.c (GRUB_SM712_REG_BASE): New definition.
|
||||||
|
(grub_sm712_sr_read): New function.
|
||||||
|
(grub_video_sm712_setup): Use grub_vga_sr_write and grub_sm712_sr_read.
|
||||||
|
* video/sm712_init.c (sm712_init): Substract GRUB_MACHINE_PCI_IO_BASE.
|
||||||
|
|
||||||
|
2010-08-09 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Filter
|
||||||
|
out unused variables on non-ZFS build.
|
||||||
|
|
||||||
|
2010-08-08 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Fix path generation for sub-filesystems in ZFS.
|
||||||
|
|
||||||
|
* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Add
|
||||||
|
missing slash.
|
||||||
|
|
||||||
|
2010-08-08 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* util/grub-fstest.c (read_file, cmd_cmp): Improve error message.
|
||||||
|
|
||||||
|
2010-08-08 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* util/grub.d/10_kfreebsd.in: When files required for ZFS do not
|
||||||
|
exist, issue a proper error message (rely on `ls' for translated
|
||||||
|
strings).
|
||||||
|
|
||||||
|
2010-08-08 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Fix grub-probe invocation.
|
||||||
|
|
||||||
|
* util/grub.d/10_kfreebsd.in: s/label/fs_label/g.
|
||||||
|
|
||||||
|
2010-08-04 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: Remove checks for getfsstat() and getmntany().
|
||||||
|
Add checks for `<sys/param.h>' and `<sys/mount.h>'.
|
||||||
|
* kern/emu/misc.c [HAVE_GETMNTANY]: Remove `<sys/mnttab.h>'.
|
||||||
|
[HAVE_SYS_PARAM_H]: Include `<sys/param.h>'.
|
||||||
|
[HAVE_SYS_MOUNT_H]: Include `<sys/mount.h>'.
|
||||||
|
[HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_mount_point_from_dir): Remove
|
||||||
|
function.
|
||||||
|
(grub_find_zpool_from_dir): Use statfs() instead of indirect matching
|
||||||
|
via find_mount_point_from_dir() and getfsstat() / getmntany().
|
||||||
|
|
||||||
|
2010-08-04 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* include/grub/emu/misc.h (grub_find_mount_point_from_dir)
|
||||||
|
(grub_find_zpool_from_mount_point): Merge into ...
|
||||||
|
(grub_find_zpool_from_dir): ... this.
|
||||||
|
* kern/emu/misc.c: Likewise.
|
||||||
|
|
||||||
|
* kern/emu/misc.c
|
||||||
|
(grub_make_system_path_relative_to_its_root): Replace
|
||||||
|
grub_find_mount_point_from_dir() / grub_find_zpool_from_mount_point()
|
||||||
|
with grub_find_zpool_from_dir().
|
||||||
|
* kern/emu/getroot.c (find_root_device_from_libzfs): Likewise.
|
||||||
|
|
||||||
|
2010-08-04 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Support OpenSolaris in ZFS device resolution.
|
||||||
|
|
||||||
|
* configure.ac: Check for getmntany().
|
||||||
|
* kern/emu/misc.c [HAVE_GETMNTANY]: Include `<sys/mnttab.h>'.
|
||||||
|
[HAVE_GETMNTANY] (grub_find_zpool_from_mount_point): Add OpenSolaris
|
||||||
|
support.
|
||||||
|
|
||||||
|
2010-08-03 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Fix grub-emu build.
|
||||||
|
|
||||||
|
* include/grub/util/misc.h: Move `<grub/util/libzfs.h>' to ...
|
||||||
|
* include/grub/emu/misc.h: ... here.
|
||||||
|
|
||||||
|
* include/grub/util/misc.h (grub_get_libzfs_handle): Move function ...
|
||||||
|
* include/grub/emu/misc.h (grub_get_libzfs_handle): ... here.
|
||||||
|
|
||||||
|
* util/misc.c: Remove `<grub/util/libzfs.h>'.
|
||||||
|
[HAVE_LIBZFS] (libzfs_handle, fini_libzfs)
|
||||||
|
(grub_get_libzfs_handle): Move to ...
|
||||||
|
* kern/emu/misc.c [HAVE_LIBZFS] (__libzfs_handle, fini_libzfs)
|
||||||
|
(grub_get_libzfs_handle): ... here.
|
||||||
|
|
||||||
|
2010-08-03 BVK Chaitanya <bvk.groups@gmail.com>
|
||||||
|
|
||||||
|
* script/execute.c (grub_script_execute_cmdline): Check for NULL
|
||||||
|
as command name case.
|
||||||
|
|
||||||
|
2010-08-02 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* disk/raid.c (insert_array): Select unique numbers for named arrays
|
||||||
|
as well, for use as keys in the disk cache.
|
||||||
|
|
||||||
|
2010-08-01 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* util/grub.d/10_kfreebsd.in: Initialize ${kfreebsd_device} as the
|
||||||
|
kFreeBSD device name, except on ZFS where the filesystem label is
|
||||||
|
used.
|
||||||
|
(kfreebsd_entry): On ZFS root, load `opensolaris.ko', `zfs.ko' and
|
||||||
|
`/boot/zfs/zpool.cache'.
|
||||||
|
Set mountfrom kernel variable using ${kfreebsd_device}.
|
||||||
|
|
||||||
|
2010-08-01 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Make it even harder to use uninitialized `libzfs_handle' (and
|
||||||
|
make the interface a bit simpler).
|
||||||
|
|
||||||
|
* include/grub/util/misc.h (grub_util_init_libzfs)
|
||||||
|
(libzfs_handle): Remove.
|
||||||
|
(grub_get_libzfs_handle): New prototype.
|
||||||
|
|
||||||
|
* util/misc.c [HAVE_LIBZFS] (libzfs_handle): Add `static'
|
||||||
|
attribute.
|
||||||
|
(grub_util_init_libzfs): Remove.
|
||||||
|
(grub_get_libzfs_handle): New function.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c (find_root_device_from_libzfs): Use
|
||||||
|
grub_get_libzfs_handle() to obtain a libzfs handle instead of
|
||||||
|
accessing `libzfs_handle' directly.
|
||||||
|
|
||||||
|
2010-08-01 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* include/grub/emu/misc.h (grub_find_mount_point_from_dir)
|
||||||
|
(grub_find_zpool_from_mount_point): New function prototypes.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `<sys/mount.h>' to ...
|
||||||
|
* kern/emu/misc.c [HAVE_GETFSSTAT]: ... here.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c (find_mount_point_from_dir): Move to ...
|
||||||
|
* kern/emu/misc.c (grub_find_mount_point_from_dir): ... this. Remove
|
||||||
|
`static' attribute.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c (find_root_device_from_libzfs): Split code for
|
||||||
|
finding zpool from mount point into ...
|
||||||
|
* kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this.
|
||||||
|
|
||||||
|
* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When
|
||||||
|
requested path is part of a ZFS pool, use
|
||||||
|
grub_find_zpool_from_mount_point() to detect its filesystem name,
|
||||||
|
and generate a path with `/fsname@path' syntax.
|
||||||
|
|
||||||
|
2010-08-01 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* include/grub/util/libzfs.h (libzfs_init): Set argument list to
|
||||||
|
(void) rather than () so that this is a proper prototype.
|
||||||
|
|
||||||
|
2010-08-01 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* lib/arg.c (grub_arg_show_help): Add the necessary spacing.
|
||||||
|
|
||||||
|
2010-08-01 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* kern/emu/getroot.c (find_mount_point_from_dir): Compile only if
|
||||||
|
[HAVE_LIBZFS && HAVE_LIBNVPAIR]
|
||||||
|
|
||||||
|
2010-08-01 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* util/grub-mkrescue.in: Remove ${efi_dir} after building efi.img.
|
||||||
|
|
||||||
|
2010-08-01 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* script/yylex.l (NAME): Remove [:digit:], redundant with [:alnum:].
|
||||||
|
|
||||||
|
2010-08-01 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* docs/grub.texi (Simple configuration): Document GRUB_CMDLINE_XEN
|
||||||
|
and GRUB_CMDLINE_XEN_DEFAULT. Recommend setting
|
||||||
|
GRUB_GFXPAYLOAD_LINUX=text rather than unsetting it in order to
|
||||||
|
disable gfxpayload.
|
||||||
|
(Shell-like scripting): Add real content.
|
||||||
|
(Serial terminal): Suggest `terminal_input serial; terminal_output
|
||||||
|
serial' rather than putting the two commands on separate lines,
|
||||||
|
since console input will be inoperative after the first command.
|
||||||
|
(menuentry): Document --class, --users, and --hotkey options.
|
||||||
|
(terminfo): Describe what `visually-ordered UTF-8' means (thanks,
|
||||||
|
Vladimir Serbinenko).
|
||||||
|
|
||||||
|
2010-08-01 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
2010-08-01 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* kern/misc.c (grub_memset): Optimise to reduce cache stalls.
|
||||||
|
|
||||||
|
2010-08-01 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* include/grub/emu/misc.h (grub_find_mount_point_from_dir)
|
||||||
|
(grub_find_zpool_from_mount_point): New function prototypes.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `<sys/mount.h>' to ...
|
||||||
|
* kern/emu/misc.c [HAVE_GETFSSTAT]: ... here.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c (find_mount_point_from_dir): Move to ...
|
||||||
|
* kern/emu/misc.c (grub_find_mount_point_from_dir): ... this. Remove
|
||||||
|
`static' attribute.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c (find_root_device_from_libzfs): Split code for
|
||||||
|
finding zpool from mount point into ...
|
||||||
|
* kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this.
|
||||||
|
|
||||||
|
* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When
|
||||||
|
requested path is part of a ZFS pool, use
|
||||||
|
grub_find_zpool_from_mount_point() to detect its filesystem name,
|
||||||
|
and generate a path with `/fsname@path' syntax.
|
||||||
|
|
||||||
|
2010-08-01 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Prevent accidental use of uninitialized libzfs_handle.
|
||||||
|
|
||||||
|
* util/grub-probe.c (main): Move grub_util_init_libzfs() call to ...
|
||||||
|
* kern/emu/getroot.c (find_root_device_from_libzfs): ... here.
|
||||||
|
* util/misc.c (grub_util_init_libzfs): Make this function idempotent.
|
||||||
|
|
||||||
|
2010-08-01 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* util/grub.d/20_linux_xen.in: Don't use UUID for LVM root (matching
|
||||||
|
util/grub.d/10_linux.in). Fixes Debian bug #591093.
|
||||||
|
|
||||||
|
2010-08-01 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* kern/emu/getroot.c: Include `<grub/util/misc.h>'.
|
||||||
|
|
||||||
|
2010-07-31 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* util/grub.d/10_kfreebsd.in: Make module handling more generic.
|
||||||
|
|
||||||
|
2010-07-31 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* kern/emu/misc.c: Add missing license header.
|
||||||
|
|
||||||
|
2010-07-31 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: Check for `libzfs.h' and `libnvpair.h'.
|
||||||
|
|
||||||
|
* include/grub/util/libnvpair.h: Include `<config.h>'.
|
||||||
|
[HAVE_LIBNVPAIR_H]: Include `<libnvpair.h>' instead of
|
||||||
|
declaring libnvpair prototypes ourselves.
|
||||||
|
* include/grub/util/libzfs.h: Include `<config.h>'.
|
||||||
|
[HAVE_LIBZFS_H]: Include `<libzfs.h>' instead of
|
||||||
|
declaring libzfs prototypes ourselves.
|
||||||
|
|
||||||
|
(libzfs_handle): Moved to ...
|
||||||
|
* include/grub/util/misc.h (libzfs_handle): ... here.
|
||||||
|
Include `<grub/util/libzfs.h>'.
|
||||||
|
|
||||||
|
2010-07-30 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* include/grub/emu/misc.h: Add missing license header.
|
||||||
|
|
||||||
|
2010-07-30 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
Enable `grub-probe -t device' resolution on ZFS.
|
||||||
|
|
||||||
|
* configure.ac: Check for getfsstat(), libzfs and libnvpair.
|
||||||
|
* include/grub/util/libnvpair.h: New file.
|
||||||
|
* include/grub/util/libzfs.h: New file.
|
||||||
|
|
||||||
|
* kern/emu/getroot.c: Include `<assert.h>' and `<error.h>'.
|
||||||
|
[HAVE_LIBZFS && HAVE_LIBNVPAIR]: Include `<grub/util/libzfs.h>' and
|
||||||
|
`<grub/util/libnvpair.h>'.
|
||||||
|
[HAVE_GETFSSTAT]: Include `<sys/mount.h>'.
|
||||||
|
|
||||||
|
(find_mount_point_from_dir): New static function.
|
||||||
|
[HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_root_device_from_libzfs): New
|
||||||
|
function.
|
||||||
|
[HAVE_LIBZFS && HAVE_LIBNVPAIR] (grub_guess_root_device): Use
|
||||||
|
find_root_device_from_libzfs() before ressorting to find_root_device().
|
||||||
|
|
||||||
|
* include/grub/util/misc.h (grub_util_init_libzfs): New function
|
||||||
|
prototype.
|
||||||
|
* util/misc.c: Include `<grub/util/libzfs.h>'.
|
||||||
|
(grub_util_init_libzfs): New function.
|
||||||
|
[HAVE_LIBZFS] (libzfs_handle): New global variable.
|
||||||
|
[HAVE_LIBZFS] (fini_libzfs): New static function.
|
||||||
|
(grub_util_init_libzfs): New function.
|
||||||
|
* util/grub-probe.c (main): Call grub_util_init_libzfs().
|
||||||
|
|
||||||
|
2010-07-30 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* include/grub/emu/misc.h (grub_make_system_path_relative_to_its_root)
|
||||||
|
(xmalloc, xrealloc, xstrdup, xasprintf): Add
|
||||||
|
`warn_unused_result' attribute.
|
||||||
|
* include/grub/misc.h (grub_strdup, grub_strndup, grub_strlen)
|
||||||
|
(grub_xasprintf, grub_xvasprintf): Likewise.
|
||||||
|
* include/grub/emu/misc.h (xasprintf): Remove duplicate prototype.
|
||||||
|
|
||||||
|
2010-07-29 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* util/grub-probe.c (PRINT_FS_LABEL): New enum value.
|
||||||
|
(probe): Handle `PRINT_FS_LABEL'.
|
||||||
|
(main): Handle `-t fs_label'.
|
||||||
|
|
||||||
|
2010-07-29 Robert Millan <rmh@gnu.org>
|
||||||
|
|
||||||
|
* configure.ac: Remove grub-mkisofs checks.
|
||||||
|
|
||||||
|
2010-07-28 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/ieee1275/grub-install.in: Don't use empty grub_device.
|
||||||
|
Reported by: Lennart Sorensen.
|
||||||
|
|
||||||
|
2010-07-20 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/grub.d/00_header.in: Remove compatibility with terminal.mod
|
||||||
|
prior to terminal_input/terminal_output separation. It's been over 1.5
|
||||||
|
years and those versions weren't widely deployed.
|
||||||
|
|
||||||
|
2010-07-22 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* disk/raid.c (insert_array): Don't count named arrays when looking
|
||||||
|
for unused array numbers.
|
||||||
|
Reported and tested by: Michael Guntsche.
|
||||||
|
|
||||||
2010-07-20 Colin Watson <cjwatson@ubuntu.com>
|
2010-07-20 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
* bus/usb/emu/usb.c (grub_usb_poll_devices): Add a dummy
|
* bus/usb/emu/usb.c (grub_usb_poll_devices): Add a dummy
|
||||||
|
|
2
INSTALL
2
INSTALL
|
@ -37,10 +37,10 @@ To build GRUB's graphical terminal (gfxterm), you need:
|
||||||
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.
|
||||||
|
|
||||||
* Ruby 1.6 or later
|
|
||||||
* Python 2.5.2 or later
|
* Python 2.5.2 or later
|
||||||
* Autoconf 2.60 or later
|
* Autoconf 2.60 or later
|
||||||
* Automake 1.10.1 or later
|
* Automake 1.10.1 or later
|
||||||
|
* Autogen 5.10 or later
|
||||||
|
|
||||||
Prerequisites for make-check:
|
Prerequisites for make-check:
|
||||||
|
|
||||||
|
|
85
Makefile.am
Normal file
85
Makefile.am
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
AUTOMAKE_OPTIONS = subdir-objects
|
||||||
|
|
||||||
|
DEPDIR = .deps-util
|
||||||
|
SUBDIRS = . grub-core po docs
|
||||||
|
|
||||||
|
include $(top_srcdir)/conf/Makefile.common
|
||||||
|
include $(top_srcdir)/conf/Makefile.extra-dist
|
||||||
|
|
||||||
|
AM_CFLAGS = $(HOST_CFLAGS)
|
||||||
|
AM_LDFLAGS = $(HOST_LDFLAGS)
|
||||||
|
AM_CPPFLAGS = $(HOST_CPPFLAGS) $(CPPFLAGS_DEFAULT)
|
||||||
|
AM_CCASFLAGS = $(HOST_CCASFLAGS) $(CCASFLAGS_DEFAULT)
|
||||||
|
|
||||||
|
CFLAGS_PROGRAM += $(CFLAGS_GNULIB)
|
||||||
|
LDFLAGS_PROGRAM += $(LDFLAGS_GNULIB)
|
||||||
|
CPPFLAGS_PROGRAM += $(CPPFLAGS_GNULIB)
|
||||||
|
CCASFLAGS_PROGRAM += $(CCASFLAGS_GNULIB)
|
||||||
|
|
||||||
|
include $(srcdir)/Makefile.util.am
|
||||||
|
|
||||||
|
# XXX Use Automake's LEX & YACC support
|
||||||
|
grub_script.tab.h: $(top_srcdir)/grub-core/script/parser.y
|
||||||
|
$(YACC) -d -p grub_script_yy -b grub_script $(top_srcdir)/grub-core/script/parser.y
|
||||||
|
grub_script.tab.c: grub_script.tab.h
|
||||||
|
CLEANFILES += grub_script.tab.c grub_script.tab.h
|
||||||
|
|
||||||
|
# For the lexer.
|
||||||
|
grub_script.yy.h: $(top_srcdir)/grub-core/script/yylex.l
|
||||||
|
$(LEX) -o grub_script.yy.c --header-file=grub_script.yy.h $(top_srcdir)/grub-core/script/yylex.l
|
||||||
|
grub_script.yy.c: grub_script.yy.h
|
||||||
|
CLEANFILES += grub_script.yy.c grub_script.yy.h
|
||||||
|
|
||||||
|
# For libgrub.a
|
||||||
|
libgrub.pp: grub_script.tab.h grub_script.yy.h $(libgrub_a_SOURCES)
|
||||||
|
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgrub_a_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
-D'GRUB_MOD_INIT(x)=@MARKER@x@' $^ > $@ || (rm -f $@; exit 1)
|
||||||
|
CLEANFILES += libgrub.pp
|
||||||
|
|
||||||
|
libgrub_a_init.lst: libgrub.pp
|
||||||
|
cat $< | grep '@MARKER@' | sed 's/@MARKER@\(.*\)@/\1/g' | sort -u > $@ || (rm -f $@; exit 1)
|
||||||
|
CLEANFILES += libgrub_a_init.lst
|
||||||
|
|
||||||
|
libgrub_a_init.c: libgrub_a_init.lst $(top_srcdir)/geninit.sh
|
||||||
|
sh $(top_srcdir)/geninit.sh `cat $<` > $@ || (rm -f $@; exit 1)
|
||||||
|
CLEANFILES += libgrub_a_init.c
|
||||||
|
|
||||||
|
if COND_GRUB_MKFONT
|
||||||
|
if COND_HAVE_FONT_SOURCE
|
||||||
|
grubdata_DATA = unicode.pf2 ascii.pf2 ascii.h widthspec.h
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
unicode.pf2: $(FONT_SOURCE) grub-mkfont
|
||||||
|
$(builddir)/grub-mkfont -o $@ $(FONT_SOURCE)
|
||||||
|
CLEANFILES += unicode.pf2
|
||||||
|
|
||||||
|
# Arrows and lines are needed to draw the menu, so always include them
|
||||||
|
UNICODE_ARROWS=0x2190-0x2193
|
||||||
|
UNICODE_LINES=0x2501-0x251B
|
||||||
|
|
||||||
|
ascii.pf2: $(FONT_SOURCE) grub-mkfont
|
||||||
|
$(builddir)/grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x7f,$(UNICODE_ARROWS),$(UNICODE_LINES)
|
||||||
|
CLEANFILES += ascii.pf2
|
||||||
|
|
||||||
|
ascii.bitmaps: $(FONT_SOURCE) grub-mkfont
|
||||||
|
$(builddir)/grub-mkfont --ascii-bitmaps -o $@ $(FONT_SOURCE)
|
||||||
|
CLEANFILES += ascii.bitmaps
|
||||||
|
|
||||||
|
ascii.h: ascii.bitmaps grub-bin2h
|
||||||
|
$(builddir)/grub-bin2h ascii_bitmaps < $< > $@
|
||||||
|
CLEANFILES += ascii.h $(top_builddir)/grub-core/include/ascii.h
|
||||||
|
|
||||||
|
widthspec.bin: $(FONT_SOURCE) grub-mkfont
|
||||||
|
$(builddir)/grub-mkfont --width-spec -o $@ $(FONT_SOURCE)
|
||||||
|
CLEANFILES += widthspec.bin
|
||||||
|
|
||||||
|
widthspec.h: widthspec.bin grub-bin2h
|
||||||
|
$(builddir)/grub-bin2h widthspec < $< > $@
|
||||||
|
CLEANFILES += widthspec.h
|
||||||
|
|
||||||
|
# Install config.h into platformdir
|
||||||
|
platform_HEADERS = config.h
|
||||||
|
|
||||||
|
pkglib_DATA += grub-mkconfig_lib
|
||||||
|
pkglib_DATA += update-grub_lib
|
575
Makefile.in
575
Makefile.in
|
@ -1,575 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This Makefile.in is free software; the author
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
### The configure script will replace these variables.
|
|
||||||
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
|
|
||||||
transform = @program_transform_name@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
builddir = @builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
pkgdatadir = $(datadir)/`echo @PACKAGE_TARNAME@ | sed '$(transform)'`
|
|
||||||
pkglibdir = $(libdir)/`echo @PACKAGE_TARNAME@/$(target_cpu)-$(platform) | sed '$(transform)'`
|
|
||||||
|
|
||||||
# Internationalization library.
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
TARGET_NO_MODULES = @TARGET_NO_MODULES@
|
|
||||||
|
|
||||||
# Util library.
|
|
||||||
LIBUTIL = @LIBUTIL@
|
|
||||||
|
|
||||||
XGETTEXT = @XGETTEXT@
|
|
||||||
MSGMERGE = @MSGMERGE@
|
|
||||||
MSGFMT = @MSGFMT@
|
|
||||||
|
|
||||||
ifeq (@USE_NLS@,yes)
|
|
||||||
LINGUAS = $(shell for i in $(srcdir)/po/*.po ; do \
|
|
||||||
if test -e $$i ; then echo $$i ; fi ; \
|
|
||||||
done | sed -e "s,.*/po/\(.*\)\.po$$,\1,")
|
|
||||||
else
|
|
||||||
LINGUAS =
|
|
||||||
endif
|
|
||||||
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
|
|
||||||
host_os = @host_os@
|
|
||||||
host_kernel = @host_kernel@
|
|
||||||
host_cpu = @host_cpu@
|
|
||||||
|
|
||||||
target_cpu = @target_cpu@
|
|
||||||
platform = @platform@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
|
|
||||||
mkinstalldirs = $(srcdir)/mkinstalldirs
|
|
||||||
|
|
||||||
LIBS = @LIBS@ $(LIBINTL) $(LIBUTIL)
|
|
||||||
|
|
||||||
CC = @CC@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
POSIX_CFLAGS = -I$(srcdir)/lib/posix_wrap
|
|
||||||
GNULIB_UTIL_CFLAGS = -Wno-undef -Wno-sign-compare -Wno-unused -D_GL_UNUSED="__attribute__ ((unused))" -I$(srcdir)/gnulib
|
|
||||||
GNULIB_CFLAGS = $(GNULIB_UTIL_CFLAGS) $(POSIX_CFLAGS)
|
|
||||||
ASFLAGS = @ASFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@ $(LIBS)
|
|
||||||
CPPFLAGS = @CPPFLAGS@ -I$(builddir) -I$(builddir)/include -I$(srcdir)/gnulib -I$(srcdir)/include -Wall -W \
|
|
||||||
-DGRUB_PKGLIBROOTDIR=\"$(libdir)/`echo @PACKAGE_TARNAME@ | sed '$(transform)'`\" -DLOCALEDIR=\"$(localedir)\"
|
|
||||||
TARGET_CC = @TARGET_CC@
|
|
||||||
TARGET_CFLAGS = -ffreestanding @TARGET_CFLAGS@
|
|
||||||
TARGET_ASFLAGS = -nostdinc -fno-builtin @TARGET_ASFLAGS@
|
|
||||||
TARGET_MODULE_FORMAT = @TARGET_MODULE_FORMAT@
|
|
||||||
TARGET_APPLE_CC = @TARGET_APPLE_CC@
|
|
||||||
OBJCONV = @OBJCONV@
|
|
||||||
TARGET_CPPFLAGS = @TARGET_CPPFLAGS@ -I$(srcdir)/include -I$(builddir) -I$(builddir)/include \
|
|
||||||
-Wall -W
|
|
||||||
TARGET_LDFLAGS = -nostdlib -static-libgcc @TARGET_LDFLAGS@
|
|
||||||
TARGET_IMG_LDSCRIPT = @TARGET_IMG_LDSCRIPT@
|
|
||||||
TARGET_IMG_LDFLAGS = -nostdlib @TARGET_IMG_LDFLAGS@
|
|
||||||
TARGET_IMG_CFLAGS = @TARGET_IMG_CFLAGS@
|
|
||||||
TARGET_OBJ2ELF = @TARGET_OBJ2ELF@
|
|
||||||
kernel_img_LDFLAGS = -lgcc
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
OBJCOPY = @OBJCOPY@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
NM = @NM@
|
|
||||||
RUBY = @RUBY@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
ifeq (, $(MAKEINFO))
|
|
||||||
MAKEINFO = true
|
|
||||||
endif
|
|
||||||
HELP2MAN = @HELP2MAN@
|
|
||||||
ifeq (, $(HELP2MAN))
|
|
||||||
HELP2MAN = true
|
|
||||||
else
|
|
||||||
HELP2MAN := LANG=C $(HELP2MAN) --no-info --source=FSF
|
|
||||||
endif
|
|
||||||
AWK = @AWK@
|
|
||||||
LIBCURSES = @LIBCURSES@
|
|
||||||
LIBUSB = @LIBUSB@
|
|
||||||
LIBSDL = @LIBSDL@
|
|
||||||
LIBPCIACCESS = @LIBPCIACCESS@
|
|
||||||
LEX = @LEX@
|
|
||||||
YACC = @YACC@
|
|
||||||
FONT_SOURCE = @FONT_SOURCE@
|
|
||||||
|
|
||||||
# Options.
|
|
||||||
enable_grub_emu_usb = @enable_grub_emu_usb@
|
|
||||||
enable_grub_emu_sdl = @enable_grub_emu_sdl@
|
|
||||||
enable_grub_emu_pci = @enable_grub_emu_pci@
|
|
||||||
enable_grub_fstest = @enable_grub_fstest@
|
|
||||||
enable_grub_pe2elf = @enable_grub_pe2elf@
|
|
||||||
enable_grub_mkfont = @enable_grub_mkfont@
|
|
||||||
freetype_cflags = @freetype_cflags@
|
|
||||||
freetype_libs = @freetype_libs@
|
|
||||||
enable_efiemu = @enable_efiemu@
|
|
||||||
|
|
||||||
### General variables.
|
|
||||||
|
|
||||||
RMKFILES = $(wildcard $(srcdir)/conf/*.rmk)
|
|
||||||
|
|
||||||
MKFILES = $(patsubst %.rmk,%.mk,$(RMKFILES))
|
|
||||||
|
|
||||||
PKGLIB = $(pkglib_IMAGES) $(pkglib_MODULES) $(pkglib_PROGRAMS) \
|
|
||||||
$(pkglib_DATA) $(pkglib_BUILDDIR)
|
|
||||||
PKGDATA = $(pkgdata_DATA)
|
|
||||||
PROGRAMS = $(bin_UTILITIES) $(sbin_UTILITIES)
|
|
||||||
SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(grub-mkconfig_SCRIPTS) \
|
|
||||||
$(lib_SCRIPTS)
|
|
||||||
INFOS = $(info_INFOS)
|
|
||||||
|
|
||||||
CLEANFILES =
|
|
||||||
MOSTLYCLEANFILES =
|
|
||||||
DISTCLEANFILES = config.status config.cache config.log config.h \
|
|
||||||
Makefile stamp-h stamp-h1 include/grub/cpu include/grub/machine \
|
|
||||||
gensymlist.sh genkernsyms.sh build_env.mk \
|
|
||||||
docs/grub.info docs/version.texi docs/stamp-vti
|
|
||||||
|
|
||||||
MAINTAINER_CLEANFILES = $(srcdir)/configure $(srcdir)/aclocal.m4 \
|
|
||||||
$(MKFILES) $(srcdir)/config.guess \
|
|
||||||
$(srcdir)/config.sub $(srcdir)/install-sh $(srcdir)/missing \
|
|
||||||
$(srcdir)/DISTLIST $(srcdir)/config.h.in $(srcdir)/stamp-h.in \
|
|
||||||
$(srcdir)/unidata.c \
|
|
||||||
$(INFOS)
|
|
||||||
|
|
||||||
# The default target.
|
|
||||||
all: all-local
|
|
||||||
|
|
||||||
### Include an arch-specific Makefile.
|
|
||||||
$(addprefix $(srcdir)/,$(MKFILES)): %.mk: %.rmk genmk.rb
|
|
||||||
if test "x$(RUBY)" = x; then \
|
|
||||||
touch $@; \
|
|
||||||
else \
|
|
||||||
$(RUBY) $(srcdir)/genmk.rb < $< > $@; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifeq ($(platform), emu)
|
|
||||||
include $(srcdir)/conf/any-emu.mk
|
|
||||||
else
|
|
||||||
include $(srcdir)/conf/$(target_cpu)-$(platform).mk
|
|
||||||
# For tests.
|
|
||||||
include $(srcdir)/conf/tests.mk
|
|
||||||
# For external modules.
|
|
||||||
-include $(wildcard $(GRUB_CONTRIB)/*/conf/common.mk)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(TARGET_NO_MODULES), yes)
|
|
||||||
TARGET_CFLAGS += -DGRUB_TARGET_NO_MODULES=1
|
|
||||||
CFLAGS += -DGRUB_TARGET_NO_MODULES=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
### General targets.
|
|
||||||
|
|
||||||
CLEANFILES += $(pkglib_DATA) $(pkgdata_DATA) po/*.mo
|
|
||||||
ifneq ($(TARGET_NO_MODULES), yes)
|
|
||||||
pkglib_DATA += moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst
|
|
||||||
endif
|
|
||||||
moddep.lst: $(DEFSYMFILES) $(UNDSYMFILES) genmoddep.awk
|
|
||||||
cat $(DEFSYMFILES) /dev/null \
|
|
||||||
| $(AWK) -f $(srcdir)/genmoddep.awk $(UNDSYMFILES) > $@ \
|
|
||||||
|| (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
command.lst: $(COMMANDFILES)
|
|
||||||
cat $^ /dev/null | sort > $@
|
|
||||||
|
|
||||||
fs.lst: $(FSFILES)
|
|
||||||
cat $^ /dev/null | sort > $@
|
|
||||||
|
|
||||||
partmap.lst: $(PARTMAPFILES)
|
|
||||||
cat $^ /dev/null | sort > $@
|
|
||||||
|
|
||||||
handler.lst: $(HANDLERFILES)
|
|
||||||
cat $^ /dev/null | sort > $@
|
|
||||||
|
|
||||||
terminal.lst: $(TERMINALFILES)
|
|
||||||
cat $^ /dev/null | sort > $@
|
|
||||||
|
|
||||||
parttool.lst: $(PARTTOOLFILES)
|
|
||||||
cat $^ /dev/null | sort | uniq > $@
|
|
||||||
|
|
||||||
video.lst: $(VIDEOFILES)
|
|
||||||
cat $^ /dev/null | sort | uniq > $@
|
|
||||||
|
|
||||||
crypto.lst: lib/libgcrypt-grub/cipher/crypto.lst
|
|
||||||
cp $^ $@
|
|
||||||
|
|
||||||
ifneq (true, $(MAKEINFO))
|
|
||||||
info_INFOS += docs/grub.info
|
|
||||||
endif
|
|
||||||
|
|
||||||
MOSTLYCLEANFILES += vti.tmp
|
|
||||||
MAINTAINER_CLEANFILES += docs/stamp-vti docs/version.texi
|
|
||||||
docs/version.texi: docs/stamp-vti
|
|
||||||
docs/stamp-vti: docs/grub.texi configure.ac
|
|
||||||
$(MKDIR_P) docs
|
|
||||||
(set `$(SHELL) $(srcdir)/docs/mdate-sh $<`; \
|
|
||||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
|
||||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
|
||||||
echo "@set EDITION $(PACKAGE_VERSION)"; \
|
|
||||||
echo "@set VERSION $(PACKAGE_VERSION)") > vti.tmp
|
|
||||||
@cmp -s vti.tmp $(builddir)/docs/version.texi \
|
|
||||||
|| (echo "Updating $(builddir)/docs/version.texi"; \
|
|
||||||
cp vti.tmp $(builddir)/docs/version.texi)
|
|
||||||
-@rm -f vti.tmp
|
|
||||||
@cp $(builddir)/docs/version.texi $@
|
|
||||||
|
|
||||||
docs/grub.info: docs/grub.texi docs/version.texi docs/fdl.texi
|
|
||||||
$(MKDIR_P) docs
|
|
||||||
$(MAKEINFO) -P $(builddir)/docs --no-split $< -o $@
|
|
||||||
|
|
||||||
ifeq (, $(FONT_SOURCE))
|
|
||||||
else
|
|
||||||
|
|
||||||
ifeq ($(enable_grub_mkfont),yes)
|
|
||||||
|
|
||||||
pkgdata_DATA += unicode.pf2 ascii.pf2 ascii.h
|
|
||||||
CLEANFILES += ascii.bitmaps
|
|
||||||
|
|
||||||
# Arrows and lines are needed to draw the menu, so we always include them
|
|
||||||
UNICODE_ARROWS=0x2190-0x2193
|
|
||||||
UNICODE_LINES=0x2501-0x251B
|
|
||||||
|
|
||||||
unicode.pf2: $(FONT_SOURCE) grub-mkfont
|
|
||||||
$(builddir)/grub-mkfont -o $@ $(FONT_SOURCE)
|
|
||||||
|
|
||||||
ascii.pf2: $(FONT_SOURCE) grub-mkfont
|
|
||||||
$(builddir)/grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x7f,$(UNICODE_ARROWS),$(UNICODE_LINES)
|
|
||||||
|
|
||||||
ascii.bitmaps: $(FONT_SOURCE) grub-mkfont
|
|
||||||
$(builddir)/grub-mkfont --ascii-bitmaps -o $@ $(FONT_SOURCE)
|
|
||||||
|
|
||||||
ascii.h: ascii.bitmaps grub-bin2h
|
|
||||||
$(builddir)/grub-bin2h ascii_bitmaps < $< > $@
|
|
||||||
|
|
||||||
widthspec.bin: $(FONT_SOURCE) grub-mkfont
|
|
||||||
$(builddir)/grub-mkfont --width-spec -o $@ $(FONT_SOURCE)
|
|
||||||
|
|
||||||
widthspec.h: widthspec.bin grub-bin2h
|
|
||||||
$(builddir)/grub-bin2h widthspec < $< > $@
|
|
||||||
|
|
||||||
TARGET_CFLAGS += -DUSE_ASCII_FAILBACK=1 -DHAVE_UNIFONT_WIDTHSPEC=1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Used for building modules externally
|
|
||||||
pkglib_BUILDDIR += build_env.mk
|
|
||||||
build_env.mk: Makefile
|
|
||||||
(\
|
|
||||||
echo "TARGET_CC=$(TARGET_CC)" ; \
|
|
||||||
echo "TARGET_CFLAGS=$(TARGET_CFLAGS)" ; \
|
|
||||||
echo "TARGET_ASFLAGS=$(TARGET_ASFLAGS)" ; \
|
|
||||||
echo "TARGET_CPPFLAGS=$(TARGET_CPPFLAGS) -I$(pkglibdir) -I$(includedir)" ; \
|
|
||||||
echo "STRIP=$(STRIP)" ; \
|
|
||||||
echo "OBJCONV=$(OBJCONV)" ; \
|
|
||||||
echo "TARGET_MODULE_FORMAT=$(TARGET_MODULE_FORMAT)" ; \
|
|
||||||
echo "TARGET_APPLE_CC=$(TARGET_APPLE_CC)" ; \
|
|
||||||
echo "COMMON_ASFLAGS=$(COMMON_ASFLAGS)" ; \
|
|
||||||
echo "COMMON_CFLAGS=$(COMMON_CFLAGS)" ; \
|
|
||||||
echo "COMMON_LDFLAGS=$(COMMON_LDFLAGS)"\
|
|
||||||
) > $@
|
|
||||||
pkglib_BUILDDIR += config.h grub_script.tab.h
|
|
||||||
|
|
||||||
all-local: $(PROGRAMS) $(GRUB_EMU) $(PKGLIB) $(PKGDATA) $(SCRIPTS) $(INFOS) $(MKFILES) $(foreach lang, $(LINGUAS), po/$(lang).mo)
|
|
||||||
|
|
||||||
install: install-local
|
|
||||||
|
|
||||||
install-local: all
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(pkglibdir)
|
|
||||||
rm -f $(DESTDIR)$(pkglibdir)/*
|
|
||||||
@list='$(PKGLIB)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
$(INSTALL_DATA) $$dir$$file $(DESTDIR)$(pkglibdir)/$$dest; \
|
|
||||||
done
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
|
|
||||||
@list='$(PKGDATA)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
$(INSTALL_DATA) $$dir$$file $(DESTDIR)$(pkgdatadir)/$$dest; \
|
|
||||||
done
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
|
|
||||||
@list='$(bin_UTILITIES) $(GRUB_EMU)'; for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
$(INSTALL_PROGRAM) $$dir$$file $(DESTDIR)$(bindir)/$$dest; \
|
|
||||||
PATH="$(builddir):$$PATH" $(HELP2MAN) --section=1 -i $(srcdir)/docs/man/$$file.h2m -o $(DESTDIR)$(mandir)/man1/$$dest.1 $$file; \
|
|
||||||
done
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8
|
|
||||||
@list='$(sbin_UTILITIES)'; for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
$(INSTALL_PROGRAM) $$dir$$file $(DESTDIR)$(sbindir)/$$dest; \
|
|
||||||
PATH="$(builddir):$$PATH" $(HELP2MAN) --section=8 -i $(srcdir)/docs/man/$$file.h2m -o $(DESTDIR)$(mandir)/man8/$$dest.8 $$file; \
|
|
||||||
done
|
|
||||||
@list='$(bin_SCRIPTS)'; for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
$(INSTALL_SCRIPT) $$dir$$file $(DESTDIR)$(bindir)/$$dest; \
|
|
||||||
PATH="$(builddir):$$PATH" $(HELP2MAN) --section=1 -i $(srcdir)/docs/man/$$file.h2m -o $(DESTDIR)$(mandir)/man1/$$dest.1 $$file; \
|
|
||||||
done
|
|
||||||
@list='$(sbin_SCRIPTS)'; for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
$(INSTALL_SCRIPT) $$dir$$file $(DESTDIR)$(sbindir)/$$dest; \
|
|
||||||
PATH="$(builddir):$$PATH" $(HELP2MAN) --section=8 -i $(srcdir)/docs/man/$$file.h2m -o $(DESTDIR)$(mandir)/man8/$$dest.8 $$file; \
|
|
||||||
done
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/grub.d
|
|
||||||
@list='$(grub-mkconfig_SCRIPTS)'; for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
$(INSTALL_SCRIPT) $$dir$$file $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \
|
|
||||||
done
|
|
||||||
@list='$(grub-mkconfig_DATA)'; for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
$(INSTALL_DATA) $$dir$$file $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \
|
|
||||||
done
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(libdir)/grub
|
|
||||||
@list='$(lib_SCRIPTS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
$(INSTALL_DATA) $$dir$$file $(DESTDIR)$(libdir)/grub/$$dest; \
|
|
||||||
done
|
|
||||||
@langs='$(LINGUAS)'; \
|
|
||||||
for lang in $$langs; do \
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)/$(datadir)/locale/$$lang/LC_MESSAGES; \
|
|
||||||
file="po/$$lang.mo"; \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
$(INSTALL_DATA) $$dir$$file $(DESTDIR)/$(datadir)/locale/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
|
|
||||||
done
|
|
||||||
$(SHELL) $(mkinstalldirs) $(DESTDIR)$(infodir)
|
|
||||||
@list='$(info_INFOS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
$(INSTALL_DATA) $$dir$$file $(DESTDIR)$(infodir); \
|
|
||||||
if (install-info --version && \
|
|
||||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
|
||||||
install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$dest" || :; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" install
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
@list='$(PKGLIB)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
rm -f $(DESTDIR)$(pkglibdir)/$$dest; \
|
|
||||||
done
|
|
||||||
@list='$(PKGDATA)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
rm -f $(DESTDIR)$(pkgdatadir)/$$dest; \
|
|
||||||
done
|
|
||||||
@list='$(bin_UTILITIES) $(bin_SCRIPTS) $(GRUB_EMU)'; for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
rm -f $(DESTDIR)$(bindir)/$$dest; \
|
|
||||||
rm -f $(DESTDIR)$(mandir)/man1/$$dest.1; \
|
|
||||||
done
|
|
||||||
@list='$(sbin_UTILITIES) $(sbin_SCRIPTS)'; for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
rm -f $(DESTDIR)$(sbindir)/$$dest; \
|
|
||||||
rm -f $(DESTDIR)$(mandir)/man8/$$dest.8; \
|
|
||||||
done
|
|
||||||
@list='$(grub-mkconfig_SCRIPTS) $(grub-mkconfig_DATA)'; for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \
|
|
||||||
rm -f $(DESTDIR)$(sysconfdir)/grub.d/$$dest; \
|
|
||||||
done
|
|
||||||
@list='$(lib_SCRIPTS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
rm -f $(DESTDIR)$(libdir)/grub/$$dest; \
|
|
||||||
done
|
|
||||||
@list='$(info_INFOS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
dest="`echo $$file | sed 's,.*/,,'`"; \
|
|
||||||
if (install-info --version && \
|
|
||||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
|
||||||
if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$dest"; then \
|
|
||||||
:; \
|
|
||||||
else \
|
|
||||||
test ! -f "$(DESTDIR)$(infodir)/$$dest" || exit 1; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
rm -f $(DESTDIR)$(infodir)/$$dest; \
|
|
||||||
done
|
|
||||||
|
|
||||||
clean: $(CLEAN_IMAGE_TARGETS) $(CLEAN_MODULE_TARGETS) $(CLEAN_UTILITY_TARGETS)
|
|
||||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
|
||||||
|
|
||||||
mostlyclean: clean $(MOSTLYCLEAN_IMAGE_TARGETS) $(MOSTLYCLEAN_MODULE_TARGETS) $(MOSTLYCLEAN_UTILITY_TARGETS)
|
|
||||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
|
||||||
|
|
||||||
distclean: mostlyclean
|
|
||||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
|
||||||
-rm -rf $(srcdir)/autom4te.cache
|
|
||||||
|
|
||||||
maintainer-clean: distclean
|
|
||||||
-test -z "$(MAINTAINER_CLEANFILES)" || rm -f $(MAINTAINER_CLEANFILES)
|
|
||||||
-rmdir $(srcdir)/lib/libgcrypt-grub/cipher
|
|
||||||
-rmdir $(srcdir)/lib/libgcrypt-grub
|
|
||||||
|
|
||||||
info:
|
|
||||||
|
|
||||||
dvi:
|
|
||||||
|
|
||||||
distdir=$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
|
|
||||||
|
|
||||||
DISTLIST: gendistlist.sh
|
|
||||||
$(SHELL) $(srcdir)/gendistlist.sh > $(srcdir)/DISTLIST
|
|
||||||
|
|
||||||
distdir: DISTLIST
|
|
||||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
|
||||||
$(SHELL) $(mkinstalldirs) $(distdir)
|
|
||||||
for i in `cat $(srcdir)/DISTLIST`; do \
|
|
||||||
dir=`echo "$$i" | sed 's:/[^/]*$$::'`; \
|
|
||||||
if test -d $(srcdir)/$$dir; then \
|
|
||||||
$(SHELL) $(mkinstalldirs) $(distdir)/$$dir; \
|
|
||||||
fi; \
|
|
||||||
cp -p $(srcdir)/$$i $(distdir)/$$i || exit 1; \
|
|
||||||
done
|
|
||||||
chmod -R a+r $(distdir)
|
|
||||||
|
|
||||||
GZIP_ENV = --best
|
|
||||||
|
|
||||||
dist: distdir
|
|
||||||
tar chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
|
||||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
|
||||||
|
|
||||||
distcheck: dist
|
|
||||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
|
||||||
GZIP=$(GZIP_ENV) gzip -cd $(distdir).tar.gz | tar xf -
|
|
||||||
chmod -R a-w $(distdir)
|
|
||||||
chmod a+w $(distdir)
|
|
||||||
mkdir $(distdir)/=build
|
|
||||||
mkdir $(distdir)/=inst
|
|
||||||
chmod a-w $(distdir)
|
|
||||||
dc_instdir=`CDPATH=: && cd $(distdir)/=inst && pwd` \
|
|
||||||
&& cd $(distdir)/=build \
|
|
||||||
&& $(SHELL) ../configure --srcdir=.. --prefix=$$dc_instdir \
|
|
||||||
&& $(MAKE) all dvi check install && $(MAKE) uninstall \
|
|
||||||
&& (test `find $$dc_instdir -type f -print | wc -l` -le 1 \
|
|
||||||
|| (echo "Error: files left after uninstall" 1>&2; \
|
|
||||||
exit 1)) \
|
|
||||||
&& $(MAKE) dist && $(MAKE) distclean \
|
|
||||||
&& rm -f $(distdir).tar.gz \
|
|
||||||
&& (test `find . -type f -print | wc -l` -eq 0 \
|
|
||||||
|| (echo "Error: files left after distclean" 1>&2; \
|
|
||||||
exit 1))
|
|
||||||
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
|
|
||||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
|
||||||
sed 'h;s/./=/g;p;x;p;x'
|
|
||||||
|
|
||||||
check: all $(UNIT_TESTS) $(FUNCTIONAL_TESTS) $(SCRIPTED_TESTS)
|
|
||||||
@list="$(UNIT_TESTS)"; \
|
|
||||||
set -e; \
|
|
||||||
for file in $$list; do \
|
|
||||||
$(builddir)/$$file; \
|
|
||||||
done
|
|
||||||
@list="$(FUNCTIONAL_TESTS)"; \
|
|
||||||
set -e; \
|
|
||||||
for file in $$list; do \
|
|
||||||
mod=`basename $$file .mod`; \
|
|
||||||
echo "insmod functional_test; insmod $$mod; functional_test" \
|
|
||||||
| $(builddir)/grub-shell; \
|
|
||||||
done
|
|
||||||
@list="$(SCRIPTED_TESTS)"; \
|
|
||||||
set -e; \
|
|
||||||
for file in $$list; do \
|
|
||||||
$(builddir)/$$file; \
|
|
||||||
done
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .c .o .S .d
|
|
||||||
|
|
||||||
# Regenerate configure and Makefile automatically.
|
|
||||||
$(srcdir)/aclocal.m4: configure.ac acinclude.m4
|
|
||||||
cd $(srcdir) && aclocal
|
|
||||||
|
|
||||||
$(srcdir)/configure: configure.ac aclocal.m4
|
|
||||||
cd $(srcdir) && autoconf
|
|
||||||
|
|
||||||
$(srcdir)/config.h.in: stamp-h.in
|
|
||||||
$(srcdir)/stamp-h.in: configure.ac aclocal.m4
|
|
||||||
cd $(srcdir) && autoheader
|
|
||||||
echo timestamp > $(srcdir)/stamp-h.in
|
|
||||||
|
|
||||||
config.h: stamp-h
|
|
||||||
stamp-h: config.h.in config.status
|
|
||||||
$(SHELL) ./config.status
|
|
||||||
|
|
||||||
Makefile: Makefile.in config.status
|
|
||||||
$(SHELL) ./config.status
|
|
||||||
|
|
||||||
config.status: configure
|
|
||||||
$(SHELL) ./config.status --recheck
|
|
||||||
|
|
||||||
gensymlist.sh: gensymlist.sh.in config.status
|
|
||||||
$(SHELL) ./config.status
|
|
||||||
|
|
||||||
genkernsyms.sh: genkernsyms.sh.in config.status
|
|
||||||
$(SHELL) ./config.status
|
|
||||||
|
|
||||||
$(srcdir)/po/$(PACKAGE).pot: po/POTFILES po/POTFILES-shell
|
|
||||||
cd $(srcdir) && $(XGETTEXT) -ctranslate --from-code=utf-8 -o po/$(PACKAGE).pot -f po/POTFILES --keyword=_ --keyword=N_
|
|
||||||
cd $(srcdir) && $(XGETTEXT) -ctranslate --from-code=utf-8 -o po/$(PACKAGE).pot -f po/POTFILES-shell -j --language=Shell
|
|
||||||
|
|
||||||
$(foreach lang, $(LINGUAS), $(srcdir)/po/$(lang).po): po/$(PACKAGE).pot
|
|
||||||
$(MSGMERGE) -U $@ $^
|
|
||||||
|
|
||||||
po/%.mo: po/%.po
|
|
||||||
$(MKDIR_P) $$(dirname $@)
|
|
||||||
$(MSGFMT) -c --statistics -o $@ $^
|
|
||||||
|
|
||||||
.PHONY: all install install-strip uninstall clean mostlyclean distclean
|
|
||||||
.PHONY: maintainer-clean info dvi dist check
|
|
||||||
|
|
||||||
# Prevent an overflow.
|
|
||||||
.NOEXPORT:
|
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
|
516
Makefile.util.def
Normal file
516
Makefile.util.def
Normal file
|
@ -0,0 +1,516 @@
|
||||||
|
AutoGen definitions Makefile.tpl;
|
||||||
|
|
||||||
|
library = {
|
||||||
|
name = libgrub.a;
|
||||||
|
cflags = '$(CFLAGS_GCRY)';
|
||||||
|
cppflags = '$(CPPFLAGS_GCRY)';
|
||||||
|
|
||||||
|
common_nodist = grub_script.tab.c;
|
||||||
|
common_nodist = grub_script.yy.c;
|
||||||
|
common_nodist = libgrub_a_init.c;
|
||||||
|
common_nodist = grub_script.yy.h;
|
||||||
|
common_nodist = grub_script.tab.h;
|
||||||
|
|
||||||
|
common = grub-core/gnulib/error.c;
|
||||||
|
common = grub-core/gnulib/fnmatch.c;
|
||||||
|
common = grub-core/gnulib/getdelim.c;
|
||||||
|
common = grub-core/gnulib/getline.c;
|
||||||
|
common = grub-core/gnulib/getopt1.c;
|
||||||
|
common = grub-core/gnulib/getopt.c;
|
||||||
|
common = grub-core/gnulib/progname.c;
|
||||||
|
|
||||||
|
common = util/misc.c;
|
||||||
|
common = grub-core/kern/misc.c;
|
||||||
|
common = grub-core/kern/emu/mm.c;
|
||||||
|
common = grub-core/kern/emu/misc.c;
|
||||||
|
common = grub-core/kern/emu/hostfs.c;
|
||||||
|
common = grub-core/kern/emu/getroot.c;
|
||||||
|
common = grub-core/kern/emu/hostdisk.c;
|
||||||
|
|
||||||
|
common = grub-core/commands/blocklist.c;
|
||||||
|
common = grub-core/commands/extcmd.c;
|
||||||
|
common = grub-core/commands/ls.c;
|
||||||
|
common = grub-core/disk/dmraid_nvidia.c;
|
||||||
|
common = grub-core/disk/host.c;
|
||||||
|
common = grub-core/disk/loopback.c;
|
||||||
|
common = grub-core/disk/lvm.c;
|
||||||
|
common = grub-core/disk/mdraid_linux.c;
|
||||||
|
common = grub-core/disk/raid5_recover.c;
|
||||||
|
common = grub-core/disk/raid6_recover.c;
|
||||||
|
common = grub-core/disk/raid.c;
|
||||||
|
common = grub-core/fs/affs.c;
|
||||||
|
common = grub-core/fs/afs_be.c;
|
||||||
|
common = grub-core/fs/afs.c;
|
||||||
|
common = grub-core/fs/befs_be.c;
|
||||||
|
common = grub-core/fs/befs.c;
|
||||||
|
common = grub-core/fs/cpio.c;
|
||||||
|
common = grub-core/fs/ext2.c;
|
||||||
|
common = grub-core/fs/fat.c;
|
||||||
|
common = grub-core/fs/fshelp.c;
|
||||||
|
common = grub-core/fs/hfs.c;
|
||||||
|
common = grub-core/fs/hfsplus.c;
|
||||||
|
common = grub-core/fs/iso9660.c;
|
||||||
|
common = grub-core/fs/jfs.c;
|
||||||
|
common = grub-core/fs/minix.c;
|
||||||
|
common = grub-core/fs/nilfs2.c;
|
||||||
|
common = grub-core/fs/ntfs.c;
|
||||||
|
common = grub-core/fs/ntfscomp.c;
|
||||||
|
common = grub-core/fs/reiserfs.c;
|
||||||
|
common = grub-core/fs/sfs.c;
|
||||||
|
common = grub-core/fs/tar.c;
|
||||||
|
common = grub-core/fs/udf.c;
|
||||||
|
common = grub-core/fs/ufs2.c;
|
||||||
|
common = grub-core/fs/ufs.c;
|
||||||
|
common = grub-core/fs/xfs.c;
|
||||||
|
common = grub-core/kern/command.c;
|
||||||
|
common = grub-core/kern/device.c;
|
||||||
|
common = grub-core/kern/disk.c;
|
||||||
|
common = grub-core/kern/env.c;
|
||||||
|
common = grub-core/kern/err.c;
|
||||||
|
common = grub-core/kern/file.c;
|
||||||
|
common = grub-core/kern/fs.c;
|
||||||
|
common = grub-core/kern/list.c;
|
||||||
|
common = grub-core/kern/partition.c;
|
||||||
|
common = grub-core/lib/arg.c;
|
||||||
|
common = grub-core/lib/crc.c;
|
||||||
|
common = grub-core/lib/crypto.c;
|
||||||
|
common = grub-core/lib/envblk.c;
|
||||||
|
common = grub-core/lib/hexdump.c;
|
||||||
|
common = grub-core/lib/libgcrypt-grub/cipher/sha512.c;
|
||||||
|
common = grub-core/lib/LzFind.c;
|
||||||
|
common = grub-core/lib/LzmaEnc.c;
|
||||||
|
common = grub-core/lib/pbkdf2.c;
|
||||||
|
common = grub-core/normal/datetime.c;
|
||||||
|
common = grub-core/normal/misc.c;
|
||||||
|
common = grub-core/partmap/acorn.c;
|
||||||
|
common = grub-core/partmap/amiga.c;
|
||||||
|
common = grub-core/partmap/apple.c;
|
||||||
|
common = grub-core/partmap/gpt.c;
|
||||||
|
common = grub-core/partmap/msdos.c;
|
||||||
|
common = grub-core/partmap/sun.c;
|
||||||
|
common = grub-core/script/function.c;
|
||||||
|
common = grub-core/script/lexer.c;
|
||||||
|
common = grub-core/script/main.c;
|
||||||
|
common = grub-core/script/script.c;
|
||||||
|
common = grub-core/script/argv.c;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-bin2h;
|
||||||
|
common = util/bin2h.c;
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
mansection = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-mkimage;
|
||||||
|
mansection = 1;
|
||||||
|
|
||||||
|
common = util/grub-mkimage.c;
|
||||||
|
common = util/resolve.c;
|
||||||
|
extra_dist = util/grub-mkimagexx.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
cppflags = '-DGRUB_PKGLIBROOTDIR=\"$(pkglibrootdir)\"';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-mkrelpath;
|
||||||
|
mansection = 1;
|
||||||
|
|
||||||
|
common = util/grub-mkrelpath.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-script-check;
|
||||||
|
mansection = 1;
|
||||||
|
|
||||||
|
common = util/grub-script-check.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-editenv;
|
||||||
|
mansection = 1;
|
||||||
|
|
||||||
|
common = util/grub-editenv.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-mkpasswd-pbkdf2;
|
||||||
|
mansection = 1;
|
||||||
|
|
||||||
|
common = util/grub-mkpasswd-pbkdf2.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
cflags = '$(CFLAGS_GCRY)';
|
||||||
|
cppflags = '$(CPPFLAGS_GCRY)';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-macho2img;
|
||||||
|
mansection = 1;
|
||||||
|
common = util/grub-macho2img.c;
|
||||||
|
condition = COND_APPLE_CC;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-pe2elf;
|
||||||
|
mansection = 1;
|
||||||
|
common = util/grub-pe2elf.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL)';
|
||||||
|
condition = COND_GRUB_PE2ELF;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-fstest;
|
||||||
|
mansection = 1;
|
||||||
|
common = util/grub-fstest.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
condition = COND_GRUB_FSTEST;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-mkfont;
|
||||||
|
mansection = 1;
|
||||||
|
common = util/grub-mkfont.c;
|
||||||
|
common = grub-core/unidata.c;
|
||||||
|
|
||||||
|
cflags = '$(freetype_cflags)';
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER)';
|
||||||
|
ldflags = '$(freetype_libs)';
|
||||||
|
condition = COND_GRUB_MKFONT;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-mkdevicemap;
|
||||||
|
installdir = sbin;
|
||||||
|
mansection = 8;
|
||||||
|
|
||||||
|
common = util/grub-mkdevicemap.c;
|
||||||
|
common = util/deviceiter.c;
|
||||||
|
nosparc64 = util/devicemap.c;
|
||||||
|
|
||||||
|
sparc64_ieee1275 = util/ieee1275/ofpath.c;
|
||||||
|
sparc64_ieee1275 = util/ieee1275/devicemap.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL)';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-probe;
|
||||||
|
installdir = sbin;
|
||||||
|
mansection = 8;
|
||||||
|
common = util/grub-probe.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL)';
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-setup;
|
||||||
|
installdir = sbin;
|
||||||
|
mansection = 8;
|
||||||
|
i386_pc = util/i386/pc/grub-setup.c;
|
||||||
|
i386_pc = util/raid.c;
|
||||||
|
i386_pc = util/lvm.c;
|
||||||
|
|
||||||
|
sparc64_ieee1275 = util/ieee1275/ofpath.c;
|
||||||
|
sparc64_ieee1275 = util/sparc64/ieee1275/grub-setup.c;
|
||||||
|
sparc64_ieee1275 = util/raid.c;
|
||||||
|
sparc64_ieee1275 = util/lvm.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL)';
|
||||||
|
|
||||||
|
enable = i386_pc;
|
||||||
|
enable = sparc64_ieee1275;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-ofpathname;
|
||||||
|
installdir = sbin;
|
||||||
|
ieee1275 = util/ieee1275/grub-ofpathname.c;
|
||||||
|
ieee1275 = util/ieee1275/ofpath.c;
|
||||||
|
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
enable = sparc64_ieee1275;
|
||||||
|
};
|
||||||
|
|
||||||
|
data = {
|
||||||
|
common = util/grub.d/README;
|
||||||
|
installdir = grubconf;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '00_header';
|
||||||
|
common = util/grub.d/00_header.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '10_windows';
|
||||||
|
common = util/grub.d/10_windows.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
condition = COND_HOST_WINDOWS;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '10_hurd';
|
||||||
|
common = util/grub.d/10_hurd.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
condition = COND_HOST_HURD;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '10_kfreebsd';
|
||||||
|
common = util/grub.d/10_kfreebsd.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
condition = COND_HOST_KFREEBSD;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '10_netbsd';
|
||||||
|
common = util/grub.d/10_netbsd.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
condition = COND_HOST_NETBSD;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '10_linux';
|
||||||
|
common = util/grub.d/10_linux.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
condition = COND_HOST_LINUX;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '20_linux_xen';
|
||||||
|
common = util/grub.d/20_linux_xen.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
condition = COND_HOST_LINUX;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '30_os-prober';
|
||||||
|
common = util/grub.d/30_os-prober.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '40_custom';
|
||||||
|
common = util/grub.d/40_custom.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = '41_custom';
|
||||||
|
common = util/grub.d/41_custom.in;
|
||||||
|
installdir = grubconf;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
mansection = 1;
|
||||||
|
name = grub-mkrescue;
|
||||||
|
x86_noieee1275 = util/grub-mkrescue.in;
|
||||||
|
powerpc_ieee1275 = util/powerpc/ieee1275/grub-mkrescue.in;
|
||||||
|
enable = i386_pc;
|
||||||
|
enable = x86_efi;
|
||||||
|
enable = i386_qemu;
|
||||||
|
enable = i386_coreboot;
|
||||||
|
enable = powerpc_ieee1275;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
mansection = 8;
|
||||||
|
installdir = sbin;
|
||||||
|
name = grub-install;
|
||||||
|
|
||||||
|
mips = util/grub-install.in;
|
||||||
|
i386_noefi_noieee1275 = util/grub-install.in;
|
||||||
|
|
||||||
|
x86_efi = util/i386/efi/grub-install.in;
|
||||||
|
i386_ieee1275 = util/ieee1275/grub-install.in;
|
||||||
|
powerpc_ieee1275 = util/ieee1275/grub-install.in;
|
||||||
|
|
||||||
|
enable = x86;
|
||||||
|
enable = mips;
|
||||||
|
enable = powerpc_ieee1275;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = grub-mkconfig;
|
||||||
|
common = util/grub-mkconfig.in;
|
||||||
|
mansection = 8;
|
||||||
|
installdir = sbin;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = grub-set-default;
|
||||||
|
common = util/grub-set-default.in;
|
||||||
|
mansection = 8;
|
||||||
|
installdir = sbin;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = grub-reboot;
|
||||||
|
common = util/grub-reboot.in;
|
||||||
|
mansection = 8;
|
||||||
|
installdir = sbin;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = grub-mkconfig_lib;
|
||||||
|
common = util/grub-mkconfig_lib.in;
|
||||||
|
installdir = noinst;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = update-grub_lib;
|
||||||
|
common = util/update-grub_lib.in;
|
||||||
|
installdir = noinst;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = grub-shell;
|
||||||
|
common = tests/util/grub-shell.in;
|
||||||
|
installdir = noinst;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
name = grub-shell-tester;
|
||||||
|
common = tests/util/grub-shell-tester.in;
|
||||||
|
installdir = noinst;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = example_scripted_test;
|
||||||
|
common = tests/example_scripted_test.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = example_grub_script_test;
|
||||||
|
common = tests/example_grub_script_test.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_echo1;
|
||||||
|
common = tests/grub_script_echo1.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_echo_keywords;
|
||||||
|
common = tests/grub_script_echo_keywords.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_vars1;
|
||||||
|
common = tests/grub_script_vars1.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_for1;
|
||||||
|
common = tests/grub_script_for1.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_while1;
|
||||||
|
common = tests/grub_script_while1.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_if;
|
||||||
|
common = tests/grub_script_if.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_blanklines;
|
||||||
|
common = tests/grub_script_blanklines.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_final_semicolon;
|
||||||
|
common = tests/grub_script_final_semicolon.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_dollar;
|
||||||
|
common = tests/grub_script_dollar.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_comments;
|
||||||
|
common = tests/grub_script_comments.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_functions;
|
||||||
|
common = tests/grub_script_functions.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_break;
|
||||||
|
common = tests/grub_script_break.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_continue;
|
||||||
|
common = tests/grub_script_continue.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_shift;
|
||||||
|
common = tests/grub_script_shift.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = {
|
||||||
|
testcase;
|
||||||
|
name = grub_script_expansion;
|
||||||
|
common = tests/grub_script_expansion.in;
|
||||||
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
testcase;
|
||||||
|
name = example_unit_test;
|
||||||
|
common = tests/example_unit_test.c;
|
||||||
|
common = tests/lib/unit_test.c;
|
||||||
|
common = grub-core/kern/list.c;
|
||||||
|
common = grub-core/kern/misc.c;
|
||||||
|
common = grub-core/tests/lib/test.c;
|
||||||
|
cflags = -Wno-format;
|
||||||
|
ldadd = libgrub.a;
|
||||||
|
ldflags = '$(LIBDEVMAPPER)';
|
||||||
|
};
|
|
@ -38,6 +38,7 @@ dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by
|
||||||
dnl Erich Boleyn and modified by Yoshinori K. Okuji.
|
dnl Erich Boleyn and modified by Yoshinori K. Okuji.
|
||||||
AC_DEFUN([grub_ASM_USCORE],
|
AC_DEFUN([grub_ASM_USCORE],
|
||||||
[AC_REQUIRE([AC_PROG_CC])
|
[AC_REQUIRE([AC_PROG_CC])
|
||||||
|
AC_REQUIRE([AC_PROG_EGREP])
|
||||||
AC_MSG_CHECKING([if C symbols get an underscore after compilation])
|
AC_MSG_CHECKING([if C symbols get an underscore after compilation])
|
||||||
AC_CACHE_VAL(grub_cv_asm_uscore,
|
AC_CACHE_VAL(grub_cv_asm_uscore,
|
||||||
[cat > conftest.c <<\EOF
|
[cat > conftest.c <<\EOF
|
||||||
|
@ -56,7 +57,7 @@ else
|
||||||
AC_MSG_ERROR([${CC-cc} failed to produce assembly code])
|
AC_MSG_ERROR([${CC-cc} failed to produce assembly code])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep _func conftest.s >/dev/null 2>&1; then
|
if $EGREP '(^|[^_[:alnum]])_func' conftest.s >/dev/null 2>&1; then
|
||||||
grub_cv_asm_uscore=yes
|
grub_cv_asm_uscore=yes
|
||||||
else
|
else
|
||||||
grub_cv_asm_uscore=no
|
grub_cv_asm_uscore=no
|
||||||
|
@ -93,7 +94,7 @@ else
|
||||||
fi
|
fi
|
||||||
grub_cv_prog_objcopy_absolute=yes
|
grub_cv_prog_objcopy_absolute=yes
|
||||||
for link_addr in 0x2000 0x8000 0x7C00; do
|
for link_addr in 0x2000 0x8000 0x7C00; do
|
||||||
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib ${TARGET_IMG_LDFLAGS_AC}$link_addr conftest.o -o conftest.exec]); then :
|
if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},$link_addr conftest.o -o conftest.exec]); then :
|
||||||
else
|
else
|
||||||
AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
|
AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
|
||||||
fi
|
fi
|
||||||
|
|
35
autogen.sh
35
autogen.sh
|
@ -1,25 +1,26 @@
|
||||||
#! /bin/sh
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
aclocal
|
autogen --version >/dev/null || exit 1
|
||||||
autoconf
|
|
||||||
autoheader
|
|
||||||
|
|
||||||
# FIXME: automake doesn't like that there's no Makefile.am
|
echo "Importing unicode..."
|
||||||
automake -a -c -f || true
|
python util/import_unicode.py unicode/UnicodeData.txt unicode/BidiMirroring.txt unicode/ArabicShaping.txt grub-core/unidata.c
|
||||||
|
|
||||||
|
echo "Importing libgcrypt..."
|
||||||
|
python util/import_gcry.py grub-core/lib/libgcrypt/ grub-core
|
||||||
|
|
||||||
|
echo "Creating Makefile.tpl..."
|
||||||
|
python gentpl.py | sed -e '/^$/{N;/^\n$/D;}' > Makefile.tpl
|
||||||
|
|
||||||
|
echo "Running autogen..."
|
||||||
|
autogen -T Makefile.tpl Makefile.util.def | sed -e '/^$/{N;/^\n$/D;}' > Makefile.util.am
|
||||||
|
autogen -T Makefile.tpl grub-core/Makefile.core.def | sed -e '/^$/{N;/^\n$/D;}' > grub-core/Makefile.core.am
|
||||||
|
autogen -T Makefile.tpl grub-core/Makefile.gcry.def | sed -e '/^$/{N;/^\n$/D;}' > grub-core/Makefile.gcry.am
|
||||||
|
|
||||||
|
echo "Saving timestamps..."
|
||||||
echo timestamp > stamp-h.in
|
echo timestamp > stamp-h.in
|
||||||
|
|
||||||
python util/import_gcry.py lib/libgcrypt/ .
|
echo "Running autoreconf..."
|
||||||
|
autoreconf -vi
|
||||||
python util/import_unicode.py unicode/UnicodeData.txt unicode/BidiMirroring.txt unicode/ArabicShaping.txt unidata.c
|
|
||||||
|
|
||||||
for rmk in conf/*.rmk ${GRUB_CONTRIB}/*/conf/*.rmk; do
|
|
||||||
if test -e $rmk ; then
|
|
||||||
ruby genmk.rb < $rmk > `echo $rmk | sed 's/\.rmk$/.mk/'`
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
sh gendistlist.sh > DISTLIST
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
144
conf/Makefile.common
Normal file
144
conf/Makefile.common
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
# -*- makefile -*-
|
||||||
|
|
||||||
|
# Platform specific options
|
||||||
|
if COND_i386_pc
|
||||||
|
CFLAGS_PLATFORM = -mrtd -mregparm=3
|
||||||
|
endif
|
||||||
|
if COND_i386_efi
|
||||||
|
LDFLAGS_PLATFORM = -melf_i386
|
||||||
|
endif
|
||||||
|
if COND_x86_64_efi
|
||||||
|
LDFLAGS_PLATFORM = -melf_x86_64
|
||||||
|
endif
|
||||||
|
if COND_i386_qemu
|
||||||
|
CFLAGS_PLATFORM = -mrtd -mregparm=3
|
||||||
|
endif
|
||||||
|
if COND_i386_coreboot
|
||||||
|
CFLAGS_PLATFORM = -mrtd -mregparm=3
|
||||||
|
endif
|
||||||
|
if COND_i386_ieee1275
|
||||||
|
CFLAGS_PLATFORM = -mrtd -mregparm=3
|
||||||
|
endif
|
||||||
|
if COND_mips_yeeloong
|
||||||
|
CFLAGS_PLATFORM = -march=mips3 -mexplicit-relocs -mflush-func=grub_cpu_flush_cache
|
||||||
|
CPPFLAGS_PLATFORM = -DUSE_ASCII_FAILBACK
|
||||||
|
CCASFLAGS_PLATFORM = -march=mips3
|
||||||
|
endif
|
||||||
|
if COND_sparc64_ieee1275
|
||||||
|
CFLAGS_PLATFORM = -mno-app-regs
|
||||||
|
LDFLAGS_PLATFORM = -melf64_sparc -mno-relax
|
||||||
|
endif
|
||||||
|
|
||||||
|
# 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
|
||||||
|
CCASFLAGS_DEFAULT = -DASM_FILE=1
|
||||||
|
|
||||||
|
LDADD_KERNEL = -lgcc
|
||||||
|
CFLAGS_KERNEL = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding
|
||||||
|
LDFLAGS_KERNEL = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib -Wl,-N -static-libgcc
|
||||||
|
CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
||||||
|
CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
||||||
|
STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment
|
||||||
|
|
||||||
|
CFLAGS_MODULE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding
|
||||||
|
LDFLAGS_MODULE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib -Wl,-N,-r,-d
|
||||||
|
CPPFLAGS_MODULE = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
||||||
|
CCASFLAGS_MODULE = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
||||||
|
|
||||||
|
CFLAGS_IMAGE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -fno-builtin
|
||||||
|
LDFLAGS_IMAGE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib -Wl,-N,-S
|
||||||
|
CPPFLAGS_IMAGE = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM)
|
||||||
|
CCASFLAGS_IMAGE = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
||||||
|
|
||||||
|
CFLAGS_PROGRAM =
|
||||||
|
LDFLAGS_PROGRAM =
|
||||||
|
CPPFLAGS_PROGRAM =
|
||||||
|
CCASFLAGS_PROGRAM =
|
||||||
|
|
||||||
|
CFLAGS_LIBRARY = $(CFLAGS_PROGRAM)
|
||||||
|
CPPFLAGS_LIBRARY = $(CPPFLAGS_PROGRAM)
|
||||||
|
CCASFLAGS_LIBRARY = $(CCASFLAGS_PROGRAM)
|
||||||
|
|
||||||
|
# Other variables
|
||||||
|
|
||||||
|
grubconfdir = $(sysconfdir)/grub.d
|
||||||
|
grubdatadir = $(datadir)/`echo @PACKAGE_TARNAME@ | sed '$(transform)'`
|
||||||
|
platformdir = $(pkglibrootdir)/$(target_cpu)-$(platform)
|
||||||
|
|
||||||
|
CFLAGS_GCRY = -Wno-error -Wno-missing-field-initializers
|
||||||
|
CPPFLAGS_GCRY = -I$(top_srcdir)/grub-core/lib/libgcrypt_wrap
|
||||||
|
|
||||||
|
CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -D_GL_UNUSED="__attribute__ ((unused))"
|
||||||
|
CPPFLAGS_GNULIB = -I$(top_srcdir)/grub-core/gnulib
|
||||||
|
|
||||||
|
CFLAGS_POSIX = -fno-builtin
|
||||||
|
CPPFLAGS_POSIX = -I$(top_srcdir)/grub-core/lib/posix_wrap
|
||||||
|
|
||||||
|
CPPFLAGS_EFIEMU = -I$(top_srcdir)/grub-core/efiemu/runtime
|
||||||
|
|
||||||
|
# Define these variables to calm down automake
|
||||||
|
|
||||||
|
FS_FILES =
|
||||||
|
DEF_FILES =
|
||||||
|
UND_FILES =
|
||||||
|
IMG_FILES =
|
||||||
|
MOD_FILES =
|
||||||
|
VIDEO_FILES =
|
||||||
|
MODULE_FILES =
|
||||||
|
HANDLER_FILES =
|
||||||
|
PARTMAP_FILES =
|
||||||
|
COMMAND_FILES =
|
||||||
|
PARTTOOL_FILES =
|
||||||
|
TERMINAL_FILES =
|
||||||
|
KERNEL_HEADER_FILES =
|
||||||
|
|
||||||
|
man_MANS =
|
||||||
|
noinst_DATA =
|
||||||
|
pkglib_DATA =
|
||||||
|
bin_SCRIPTS =
|
||||||
|
sbin_SCRIPTS =
|
||||||
|
bin_PROGRAMS =
|
||||||
|
platform_DATA =
|
||||||
|
sbin_PROGRAMS =
|
||||||
|
check_SCRIPTS =
|
||||||
|
grubconf_DATA =
|
||||||
|
check_PROGRAMS =
|
||||||
|
noinst_SCRIPTS =
|
||||||
|
pkglib_SCRIPTS =
|
||||||
|
noinst_PROGRAMS =
|
||||||
|
grubconf_SCRIPTS =
|
||||||
|
noinst_LIBRARIES =
|
||||||
|
|
||||||
|
TESTS =
|
||||||
|
EXTRA_DIST =
|
||||||
|
CLEANFILES =
|
||||||
|
BUILT_SOURCES =
|
||||||
|
|
||||||
|
# Rules for autogen definition files
|
||||||
|
|
||||||
|
.PRECIOUS: $(top_srcdir)/Makefile.tpl
|
||||||
|
$(top_srcdir)/Makefile.tpl: $(top_srcdir)/gentpl.py
|
||||||
|
python $< | sed -e '/^$$/{N;/^\\n$$/D;}' > $@.new || (rm -f $@.new; exit 1)
|
||||||
|
mv $@.new $@
|
||||||
|
|
||||||
|
.PRECIOUS: $(top_srcdir)/Makefile.util.am
|
||||||
|
$(top_srcdir)/Makefile.util.am: $(top_srcdir)/Makefile.util.def $(top_srcdir)/Makefile.tpl
|
||||||
|
autogen -T $(top_srcdir)/Makefile.tpl $< | sed -e '/^$$/{N;/^\\n$$/D;}' > $@.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)/grub-core/Makefile.core.def $(top_srcdir)/Makefile.tpl
|
||||||
|
autogen -T $(top_srcdir)/Makefile.tpl $< | sed -e '/^$$/{N;/^\\n$$/D;}' > $@.new || (rm -f $@.new; exit 1)
|
||||||
|
mv $@.new $@
|
||||||
|
|
||||||
|
.PRECIOUS: $(top_srcdir)/grub-core/Makefile.gcry.am
|
||||||
|
$(top_srcdir)/grub-core/Makefile.gcry.am: $(top_srcdir)/grub-core/Makefile.gcry.def $(top_srcdir)/Makefile.tpl
|
||||||
|
autogen -T $(top_srcdir)/Makefile.tpl $< | sed -e '/^$$/{N;/^\\n$$/D;}' > $@.new || (rm -f $@.new; exit 1)
|
||||||
|
mv $@.new $@
|
33
conf/Makefile.extra-dist
Normal file
33
conf/Makefile.extra-dist
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
EXTRA_DIST += autogen.sh
|
||||||
|
EXTRA_DIST += geninit.sh
|
||||||
|
|
||||||
|
EXTRA_DIST += gentpl.py
|
||||||
|
EXTRA_DIST += Makefile.tpl
|
||||||
|
EXTRA_DIST += Makefile.util.def
|
||||||
|
|
||||||
|
EXTRA_DIST += docs/man
|
||||||
|
EXTRA_DIST += docs/grub.cfg
|
||||||
|
|
||||||
|
EXTRA_DIST += conf/i386-pc-cygwin-img-ld.sc
|
||||||
|
|
||||||
|
EXTRA_DIST += grub-core/Makefile.core.def
|
||||||
|
EXTRA_DIST += grub-core/Makefile.gcry.def
|
||||||
|
|
||||||
|
EXTRA_DIST += grub-core/genmoddep.awk
|
||||||
|
EXTRA_DIST += grub-core/genmodsrc.sh
|
||||||
|
EXTRA_DIST += grub-core/genfslist.sh
|
||||||
|
EXTRA_DIST += grub-core/gencmdlist.sh
|
||||||
|
EXTRA_DIST += grub-core/gensymlist.sh
|
||||||
|
EXTRA_DIST += grub-core/genemuinit.sh
|
||||||
|
EXTRA_DIST += grub-core/genvideolist.sh
|
||||||
|
EXTRA_DIST += grub-core/genhandlerlist.sh
|
||||||
|
EXTRA_DIST += grub-core/genpartmaplist.sh
|
||||||
|
EXTRA_DIST += grub-core/genterminallist.sh
|
||||||
|
EXTRA_DIST += grub-core/genparttoollist.sh
|
||||||
|
EXTRA_DIST += grub-core/genemuinitheader.sh
|
||||||
|
|
||||||
|
EXTRA_DIST += $(shell find $(top_srcdir)/include -name '*.h')
|
||||||
|
EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/gnulib -name '*.h')
|
||||||
|
EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/efiemu -name '*.h')
|
||||||
|
EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/lib/posix_wrap -name '*.h')
|
||||||
|
EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/lib/libgcrypt_wrap -name '*.h')
|
112
conf/any-emu.rmk
112
conf/any-emu.rmk
|
@ -1,112 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
kernel_img_RELOCATABLE = yes
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
kernel_img_SOURCES = kern/device.c kern/disk.c kern/dl.c kern/env.c \
|
|
||||||
kern/err.c kern/list.c kern/command.c \
|
|
||||||
kern/corecmd.c kern/file.c kern/fs.c kern/main.c kern/misc.c \
|
|
||||||
kern/parser.c kern/partition.c kern/term.c \
|
|
||||||
kern/rescue_reader.c kern/rescue_parser.c \
|
|
||||||
\
|
|
||||||
kern/emu/main.c kern/emu/mm.c kern/emu/misc.c \
|
|
||||||
kern/emu/getroot.c kern/emu/time.c kern/emu/hostdisk.c \
|
|
||||||
kern/emu/hostfs.c kern/emu/console.c \
|
|
||||||
\
|
|
||||||
gnulib/progname.c disk/host.c
|
|
||||||
kernel_img_HEADERS += datetime.h emu/misc.h
|
|
||||||
kernel_img_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-char-subscripts -Wno-unused -Wno-deprecated-declarations -Wno-undef -I$(srcdir)/gnulib
|
|
||||||
kernel_img_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
TARGET_NO_STRIP = yes
|
|
||||||
|
|
||||||
ifneq ($(TARGET_NO_MODULES), yes)
|
|
||||||
kernel_img_SOURCES += symlist.c kern/$(target_cpu)/dl.c
|
|
||||||
else
|
|
||||||
kernel_img_SOURCES += grub_emu_init.c
|
|
||||||
endif
|
|
||||||
ifneq ($(target_cpu), i386)
|
|
||||||
ifneq ($(target_cpu), x86_64)
|
|
||||||
kernel_img_SOURCES += kern/$(target_cpu)/cache.S
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
pkglib_MODULES += halt.mod
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
ifeq ($(target_cpu), i386)
|
|
||||||
pkglib_MODULES += cpuid.mod
|
|
||||||
cpuid_mod_SOURCES = commands/i386/cpuid.c
|
|
||||||
cpuid_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cpuid_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
grub_emu_LDFLAGS = $(LIBCURSES)
|
|
||||||
|
|
||||||
ifeq ($(enable_grub_emu_usb), yes)
|
|
||||||
kernel_img_HEADERS += libusb.h
|
|
||||||
|
|
||||||
pkglib_MODULES += libusb.mod
|
|
||||||
libusb_mod_SOURCES = bus/usb/emu/usb.c
|
|
||||||
libusb_mod_CFLAGS =
|
|
||||||
libusb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usb.mod
|
|
||||||
pkglib_MODULES += usb.mod
|
|
||||||
usb_mod_SOURCES = bus/usb/usb.c
|
|
||||||
usb_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usbtest.mod
|
|
||||||
pkglib_MODULES += usbtest.mod
|
|
||||||
usbtest_mod_SOURCES = commands/usbtest.c
|
|
||||||
usbtest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usbtest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usbms.mod
|
|
||||||
pkglib_MODULES += usbms.mod
|
|
||||||
usbms_mod_SOURCES = disk/usbms.c
|
|
||||||
usbms_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usbms_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
grub_emu_LDFLAGS += $(LIBUSB)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(enable_grub_emu_sdl), yes)
|
|
||||||
pkglib_MODULES += sdl.mod
|
|
||||||
sdl_mod_SOURCES = video/emu/sdl.c
|
|
||||||
sdl_mod_CFLAGS =
|
|
||||||
sdl_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
grub_emu_LDFLAGS += $(LIBSDL)
|
|
||||||
kernel_img_HEADERS += sdl.h
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(enable_grub_emu_pci), yes)
|
|
||||||
pkglib_MODULES += pci.mod
|
|
||||||
pci_mod_SOURCES = bus/emu/pci.c commands/lspci.c
|
|
||||||
pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
grub_emu_LDFLAGS += $(LIBPCIACCESS)
|
|
||||||
kernel_img_HEADERS += libpciaccess.h
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
||||||
|
|
||||||
grub_emu_init.h: genemuinitheader.sh $(pkglib_MODULES)
|
|
||||||
rm -f $@; echo $(pkglib_MODULES) | sh $(srcdir)/genemuinitheader.sh $(NM) > $@
|
|
||||||
DISTCLEANFILES += grub_emu_init.h
|
|
||||||
|
|
||||||
grub_emu_init.c: genemuinit.sh $(pkglib_MODULES) grub_emu_init.h
|
|
||||||
rm -f $@; echo $(pkglib_MODULES) | sh $(srcdir)/genemuinit.sh $(NM) > $@
|
|
||||||
DISTCLEANFILES += grub_emu_init.c
|
|
||||||
|
|
||||||
CLEANFILES += grub-emu
|
|
||||||
ifneq ($(TARGET_NO_MODULES), yes)
|
|
||||||
grub-emu: $(pkglib_PROGRAMS)
|
|
||||||
$(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS)
|
|
||||||
else
|
|
||||||
grub-emu: $(pkglib_MODULES) $(pkglib_PROGRAMS)
|
|
||||||
$(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS)
|
|
||||||
endif
|
|
||||||
GRUB_EMU=grub-emu
|
|
||||||
|
|
837
conf/common.rmk
837
conf/common.rmk
|
@ -1,837 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
# Used by various components. These rules need to precede them.
|
|
||||||
script/lexer.c_DEPENDENCIES = grub_script.tab.h grub_script.yy.h
|
|
||||||
|
|
||||||
sbin_UTILITIES += grub-mkdevicemap
|
|
||||||
grub_mkdevicemap_SOURCES = gnulib/progname.c util/grub-mkdevicemap.c \
|
|
||||||
util/deviceiter.c \
|
|
||||||
util/misc.c kern/emu/misc.c \
|
|
||||||
kern/env.c kern/err.c kern/list.c kern/misc.c kern/emu/mm.c
|
|
||||||
|
|
||||||
ifeq ($(target_cpu)-$(platform), sparc64-ieee1275)
|
|
||||||
grub_mkdevicemap_SOURCES += util/ieee1275/ofpath.c util/ieee1275/devicemap.c
|
|
||||||
else
|
|
||||||
grub_mkdevicemap_SOURCES += util/devicemap.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For grub-mkimage.
|
|
||||||
bin_UTILITIES += grub-mkimage
|
|
||||||
grub_mkimage_SOURCES = gnulib/progname.c util/grub-mkimage.c util/misc.c \
|
|
||||||
util/resolve.c kern/emu/misc.c lib/LzmaEnc.c lib/LzFind.c
|
|
||||||
util/grub-mkimage.c_DEPENDENCIES = Makefile
|
|
||||||
|
|
||||||
# For grub-probe.
|
|
||||||
sbin_UTILITIES += grub-probe
|
|
||||||
util/grub-probe.c_DEPENDENCIES = grub_probe_init.h
|
|
||||||
grub_probe_SOURCES = gnulib/progname.c util/grub-probe.c \
|
|
||||||
kern/emu/hostdisk.c util/misc.c kern/emu/misc.c kern/emu/getroot.c kern/emu/mm.c \
|
|
||||||
kern/device.c kern/disk.c kern/err.c kern/misc.c \
|
|
||||||
kern/partition.c kern/file.c kern/list.c \
|
|
||||||
\
|
|
||||||
fs/affs.c fs/cpio.c fs/fat.c fs/ext2.c fs/hfs.c \
|
|
||||||
fs/hfsplus.c fs/iso9660.c fs/udf.c fs/jfs.c fs/minix.c \
|
|
||||||
fs/nilfs2.c fs/ntfs.c fs/ntfscomp.c fs/reiserfs.c \
|
|
||||||
fs/sfs.c fs/ufs.c fs/ufs2.c fs/xfs.c fs/afs.c \
|
|
||||||
fs/afs_be.c fs/befs.c fs/befs_be.c fs/tar.c \
|
|
||||||
\
|
|
||||||
partmap/msdos.c partmap/bsdlabel.c partmap/apple.c \
|
|
||||||
partmap/sun.c partmap/sunpc.c partmap/gpt.c \
|
|
||||||
kern/fs.c kern/env.c fs/fshelp.c \
|
|
||||||
disk/raid.c disk/raid5_recover.c disk/raid6_recover.c \
|
|
||||||
disk/mdraid_linux.c disk/lvm.c grub_probe_init.c
|
|
||||||
|
|
||||||
ifeq ($(enable_grub_fstest), yes)
|
|
||||||
bin_UTILITIES += grub-fstest
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For grub-fstest.
|
|
||||||
util/grub-fstest.c_DEPENDENCIES = grub_fstest_init.h
|
|
||||||
grub_fstest_SOURCES = gnulib/progname.c util/grub-fstest.c kern/emu/hostfs.c \
|
|
||||||
util/misc.c kern/emu/misc.c kern/emu/mm.c \
|
|
||||||
kern/file.c kern/device.c kern/disk.c kern/err.c kern/misc.c \
|
|
||||||
disk/host.c disk/loopback.c kern/list.c kern/command.c \
|
|
||||||
lib/arg.c commands/extcmd.c normal/datetime.c normal/misc.c \
|
|
||||||
lib/hexdump.c lib/crc.c commands/blocklist.c commands/ls.c \
|
|
||||||
\
|
|
||||||
fs/affs.c fs/cpio.c fs/fat.c fs/ext2.c fs/hfs.c \
|
|
||||||
fs/hfsplus.c fs/iso9660.c fs/udf.c fs/jfs.c fs/minix.c \
|
|
||||||
fs/nilfs2.c fs/ntfs.c fs/ntfscomp.c fs/reiserfs.c fs/sfs.c \
|
|
||||||
fs/ufs.c fs/ufs2.c fs/xfs.c fs/afs.c fs/afs_be.c fs/befs.c \
|
|
||||||
fs/befs_be.c fs/tar.c \
|
|
||||||
\
|
|
||||||
kern/partition.c partmap/msdos.c partmap/bsdlabel.c \
|
|
||||||
partmap/apple.c partmap/sun.c partmap/sunpc.c partmap/gpt.c \
|
|
||||||
kern/fs.c kern/env.c fs/fshelp.c disk/raid.c \
|
|
||||||
disk/raid5_recover.c disk/raid6_recover.c \
|
|
||||||
disk/mdraid_linux.c disk/dmraid_nvidia.c disk/lvm.c \
|
|
||||||
grub_fstest_init.c
|
|
||||||
|
|
||||||
# For grub-mkfont.
|
|
||||||
ifeq ($(enable_grub_mkfont), yes)
|
|
||||||
bin_UTILITIES += grub-mkfont
|
|
||||||
grub_mkfont_SOURCES = gnulib/progname.c util/grub-mkfont.c util/misc.c \
|
|
||||||
unidata.c kern/emu/misc.c
|
|
||||||
grub_mkfont_CFLAGS = $(freetype_cflags)
|
|
||||||
grub_mkfont_LDFLAGS = $(freetype_libs)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For grub-mkrelpath.
|
|
||||||
bin_UTILITIES += grub-mkrelpath
|
|
||||||
grub_mkrelpath_SOURCES = gnulib/progname.c util/grub-mkrelpath.c util/misc.c kern/emu/misc.c
|
|
||||||
|
|
||||||
bin_UTILITIES += grub-bin2h
|
|
||||||
grub_bin2h_SOURCES = gnulib/progname.c util/bin2h.c
|
|
||||||
|
|
||||||
# For the lexer.
|
|
||||||
grub_script.yy.c grub_script.yy.h: script/yylex.l
|
|
||||||
$(LEX) -o grub_script.yy.c --header-file=grub_script.yy.h $(srcdir)/script/yylex.l
|
|
||||||
DISTCLEANFILES += grub_script.yy.c grub_script.yy.h
|
|
||||||
|
|
||||||
# For grub-script-check.
|
|
||||||
bin_UTILITIES += grub-script-check
|
|
||||||
grub_script_check_SOURCES = gnulib/progname.c gnulib/getdelim.c gnulib/getline.c \
|
|
||||||
util/grub-script-check.c util/misc.c kern/emu/misc.c kern/emu/mm.c \
|
|
||||||
script/main.c script/script.c script/function.c script/lexer.c \
|
|
||||||
kern/err.c kern/list.c \
|
|
||||||
kern/misc.c kern/env.c grub_script.tab.c \
|
|
||||||
grub_script.yy.c
|
|
||||||
grub_script_check_CFLAGS = $(GNULIB_UTIL_CFLAGS)
|
|
||||||
grub_script_check_DEPENDENCIES = grub_script.tab.h
|
|
||||||
MOSTLYCLEANFILES += symlist.c kernel_syms.lst
|
|
||||||
DEFSYMFILES += kernel_syms.lst
|
|
||||||
|
|
||||||
kernel_img_HEADERS += boot.h cache.h device.h disk.h dl.h elf.h elfload.h \
|
|
||||||
env.h err.h file.h fs.h kernel.h loader.h misc.h mm.h net.h parser.h \
|
|
||||||
partition.h msdos_partition.h reader.h symbol.h term.h time.h types.h \
|
|
||||||
list.h command.h i18n.h env_private.h libgcc.h
|
|
||||||
|
|
||||||
ifneq ($(platform), emu)
|
|
||||||
kernel_img_HEADERS += machine/memory.h machine/loader.h
|
|
||||||
endif
|
|
||||||
|
|
||||||
symlist.c: $(addprefix include/grub/,$(kernel_img_HEADERS)) config.h gensymlist.sh
|
|
||||||
/bin/sh gensymlist.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
kernel_syms.lst: $(addprefix include/grub/,$(kernel_img_HEADERS)) config.h genkernsyms.sh
|
|
||||||
/bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
# For the parser.
|
|
||||||
grub_script.tab.c grub_script.tab.h: script/parser.y
|
|
||||||
$(YACC) -d -p grub_script_yy -b grub_script $(srcdir)/script/parser.y
|
|
||||||
DISTCLEANFILES += grub_script.tab.c grub_script.tab.h
|
|
||||||
|
|
||||||
# For grub-probe.
|
|
||||||
grub_probe_init.lst: geninit.sh $(filter-out grub_probe_init.c,$(grub_probe_SOURCES))
|
|
||||||
rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
|
|
||||||
DISTCLEANFILES += grub_probe_init.lst
|
|
||||||
|
|
||||||
grub_probe_init.h: grub_probe_init.lst $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) geninitheader.sh
|
|
||||||
rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
|
|
||||||
DISTCLEANFILES += grub_probe_init.h
|
|
||||||
|
|
||||||
grub_probe_init.c: grub_probe_init.lst $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) geninit.sh grub_probe_init.h
|
|
||||||
rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
|
|
||||||
DISTCLEANFILES += grub_probe_init.c
|
|
||||||
|
|
||||||
# For grub-setup.
|
|
||||||
grub_setup_init.lst: geninit.sh $(filter-out grub_setup_init.c,$(grub_setup_SOURCES))
|
|
||||||
rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
|
|
||||||
DISTCLEANFILES += grub_setup_init.lst
|
|
||||||
|
|
||||||
grub_setup_init.h: grub_setup_init.lst $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) geninitheader.sh
|
|
||||||
rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
|
|
||||||
DISTCLEANFILES += grub_setup_init.h
|
|
||||||
|
|
||||||
grub_setup_init.c: grub_setup_init.lst $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) geninit.sh grub_setup_init.h
|
|
||||||
rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
|
|
||||||
DISTCLEANFILES += grub_setup_init.c
|
|
||||||
|
|
||||||
# For grub-fstest.
|
|
||||||
grub_fstest_init.lst: geninit.sh $(filter-out grub_fstest_init.c,$(grub_fstest_SOURCES))
|
|
||||||
rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
|
|
||||||
DISTCLEANFILES += grub_fstest_init.lst
|
|
||||||
|
|
||||||
grub_fstest_init.h: grub_fstest_init.lst $(filter-out grub_fstest_init.c,$(grub_fstest_SOURCES)) geninitheader.sh
|
|
||||||
rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
|
|
||||||
DISTCLEANFILES += grub_fstest_init.h
|
|
||||||
|
|
||||||
grub_fstest_init.c: grub_fstest_init.lst $(filter-out grub_fstest_init.c,$(grub_fstest_SOURCES)) geninit.sh grub_fstest_init.h
|
|
||||||
rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
|
|
||||||
DISTCLEANFILES += grub_fstest_init.c
|
|
||||||
|
|
||||||
# for grub-editenv
|
|
||||||
bin_UTILITIES += grub-editenv
|
|
||||||
grub_editenv_SOURCES = gnulib/progname.c util/grub-editenv.c lib/envblk.c util/misc.c kern/emu/misc.c kern/emu/mm.c kern/misc.c kern/err.c
|
|
||||||
CLEANFILES += grub-editenv
|
|
||||||
|
|
||||||
# Needed for genmk.rb to work
|
|
||||||
ifeq (0,1)
|
|
||||||
bin_UTILITIES += grub-macho2img grub-pe2elf
|
|
||||||
endif
|
|
||||||
|
|
||||||
grub_pe2elf_SOURCES = gnulib/progname.c util/grub-pe2elf.c util/misc.c kern/emu/misc.c
|
|
||||||
CLEANFILES += grub-pe2elf
|
|
||||||
|
|
||||||
grub_macho2img_SOURCES = util/grub-macho2img.c
|
|
||||||
CLEANFILES += grub-macho2img
|
|
||||||
|
|
||||||
# For grub-mkconfig
|
|
||||||
grub-mkconfig: util/grub-mkconfig.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
sbin_SCRIPTS += grub-mkconfig
|
|
||||||
CLEANFILES += grub-mkconfig
|
|
||||||
|
|
||||||
grub-mkconfig_lib: util/grub-mkconfig_lib.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
lib_SCRIPTS += grub-mkconfig_lib
|
|
||||||
CLEANFILES += grub-mkconfig_lib
|
|
||||||
|
|
||||||
update-grub_lib: util/update-grub_lib.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
lib_SCRIPTS += update-grub_lib
|
|
||||||
CLEANFILES += update-grub_lib
|
|
||||||
|
|
||||||
grub-gettext_lib: util/grub-gettext_lib.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
lib_DATA += grub-gettext_lib
|
|
||||||
CLEANFILES += grub-gettext_lib
|
|
||||||
|
|
||||||
%: util/grub.d/%.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
grub-mkconfig_SCRIPTS = 00_header 30_os-prober 40_custom 41_custom
|
|
||||||
ifneq (, $(host_kernel))
|
|
||||||
grub-mkconfig_SCRIPTS += 10_$(host_kernel)
|
|
||||||
endif
|
|
||||||
ifeq (linux, $(host_kernel))
|
|
||||||
grub-mkconfig_SCRIPTS += 20_linux_xen
|
|
||||||
endif
|
|
||||||
|
|
||||||
CLEANFILES += $(grub-mkconfig_SCRIPTS)
|
|
||||||
|
|
||||||
grub-mkconfig_DATA += util/grub.d/README
|
|
||||||
|
|
||||||
# For grub-set-default.
|
|
||||||
grub-set-default: util/grub-set-default.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
sbin_SCRIPTS += grub-set-default
|
|
||||||
CLEANFILES += grub-set-default
|
|
||||||
|
|
||||||
# For grub-reboot.
|
|
||||||
grub-reboot: util/grub-reboot.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
sbin_SCRIPTS += grub-reboot
|
|
||||||
CLEANFILES += grub-reboot
|
|
||||||
|
|
||||||
# Filing systems.
|
|
||||||
pkglib_MODULES += fshelp.mod fat.mod ufs1.mod ufs2.mod ext2.mod ntfs.mod \
|
|
||||||
ntfscomp.mod minix.mod hfs.mod jfs.mod iso9660.mod xfs.mod \
|
|
||||||
affs.mod sfs.mod hfsplus.mod reiserfs.mod cpio.mod tar.mod \
|
|
||||||
udf.mod afs.mod afs_be.mod befs.mod befs_be.mod
|
|
||||||
|
|
||||||
# For fshelp.mod.
|
|
||||||
fshelp_mod_SOURCES = fs/fshelp.c
|
|
||||||
fshelp_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
fshelp_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For fat.mod.
|
|
||||||
fat_mod_SOURCES = fs/fat.c
|
|
||||||
fat_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
fat_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ufs1.mod.
|
|
||||||
ufs1_mod_SOURCES = fs/ufs.c
|
|
||||||
ufs1_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ufs1_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ufs2.mod.
|
|
||||||
ufs2_mod_SOURCES = fs/ufs2.c
|
|
||||||
ufs2_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ufs2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ext2.mod.
|
|
||||||
ext2_mod_SOURCES = fs/ext2.c
|
|
||||||
ext2_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ext2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ntfs.mod.
|
|
||||||
ntfs_mod_SOURCES = fs/ntfs.c
|
|
||||||
ntfs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ntfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ntfscomp.mod.
|
|
||||||
ntfscomp_mod_SOURCES = fs/ntfscomp.c
|
|
||||||
ntfscomp_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ntfscomp_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For minix.mod.
|
|
||||||
minix_mod_SOURCES = fs/minix.c
|
|
||||||
minix_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
minix_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For nilfs2.mod.
|
|
||||||
pkglib_MODULES += nilfs2.mod
|
|
||||||
nilfs2_mod_SOURCES = fs/nilfs2.c
|
|
||||||
nilfs2_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
nilfs2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For hfs.mod.
|
|
||||||
hfs_mod_SOURCES = fs/hfs.c
|
|
||||||
hfs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
hfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For jfs.mod.
|
|
||||||
jfs_mod_SOURCES = fs/jfs.c
|
|
||||||
jfs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
jfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For iso9660.mod.
|
|
||||||
iso9660_mod_SOURCES = fs/iso9660.c
|
|
||||||
iso9660_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
iso9660_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For xfs.mod.
|
|
||||||
xfs_mod_SOURCES = fs/xfs.c
|
|
||||||
xfs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
xfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For affs.mod.
|
|
||||||
affs_mod_SOURCES = fs/affs.c
|
|
||||||
affs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
affs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For sfs.mod.
|
|
||||||
sfs_mod_SOURCES = fs/sfs.c
|
|
||||||
sfs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
sfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For hfsplus.mod.
|
|
||||||
hfsplus_mod_SOURCES = fs/hfsplus.c
|
|
||||||
hfsplus_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
hfsplus_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For reiserfs.mod.
|
|
||||||
reiserfs_mod_SOURCES = fs/reiserfs.c
|
|
||||||
reiserfs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
reiserfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For cpio.mod.
|
|
||||||
cpio_mod_SOURCES = fs/cpio.c
|
|
||||||
cpio_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cpio_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For tar.mod.
|
|
||||||
tar_mod_SOURCES = fs/tar.c
|
|
||||||
tar_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
tar_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For udf.mod.
|
|
||||||
udf_mod_SOURCES = fs/udf.c
|
|
||||||
udf_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
udf_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For afs.mod.
|
|
||||||
afs_mod_SOURCES = fs/afs.c
|
|
||||||
afs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
afs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For afs_be.mod.
|
|
||||||
afs_be_mod_SOURCES = fs/afs_be.c
|
|
||||||
afs_be_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
afs_be_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For befs.mod.
|
|
||||||
befs_mod_SOURCES = fs/befs.c
|
|
||||||
befs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
befs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For befs_be.mod.
|
|
||||||
befs_be_mod_SOURCES = fs/befs_be.c
|
|
||||||
befs_be_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
befs_be_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Partition maps.
|
|
||||||
|
|
||||||
pkglib_MODULES += part_amiga.mod
|
|
||||||
part_amiga_mod_SOURCES = partmap/amiga.c
|
|
||||||
part_amiga_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_amiga_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_apple.mod
|
|
||||||
part_apple_mod_SOURCES = partmap/apple.c
|
|
||||||
part_apple_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_apple_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_msdos.mod
|
|
||||||
part_msdos_mod_SOURCES = partmap/msdos.c
|
|
||||||
part_msdos_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_msdos_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_sun.mod
|
|
||||||
part_sun_mod_SOURCES = partmap/sun.c
|
|
||||||
part_sun_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_sun_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_acorn.mod
|
|
||||||
part_acorn_mod_SOURCES = partmap/acorn.c
|
|
||||||
part_acorn_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_acorn_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_gpt.mod
|
|
||||||
part_gpt_mod_SOURCES = partmap/gpt.c
|
|
||||||
part_gpt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_gpt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_bsd.mod
|
|
||||||
part_bsd_mod_SOURCES = partmap/bsdlabel.c
|
|
||||||
part_bsd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_bsd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += part_sunpc.mod
|
|
||||||
part_sunpc_mod_SOURCES = partmap/sunpc.c
|
|
||||||
part_sunpc_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
part_sunpc_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Special disk structures and generic drivers
|
|
||||||
|
|
||||||
pkglib_MODULES += raid.mod raid5rec.mod raid6rec.mod mdraid.mod dm_nv.mod \
|
|
||||||
lvm.mod scsi.mod
|
|
||||||
|
|
||||||
# For raid.mod
|
|
||||||
raid_mod_SOURCES = disk/raid.c
|
|
||||||
raid_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
raid_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For raid5rec.mod
|
|
||||||
raid5rec_mod_SOURCES = disk/raid5_recover.c
|
|
||||||
raid5rec_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
raid5rec_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For raid6rec.mod
|
|
||||||
raid6rec_mod_SOURCES = disk/raid6_recover.c
|
|
||||||
raid6rec_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
raid6rec_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For mdraid.mod
|
|
||||||
mdraid_mod_SOURCES = disk/mdraid_linux.c
|
|
||||||
mdraid_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mdraid_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For dm_nv.mod
|
|
||||||
dm_nv_mod_SOURCES = disk/dmraid_nvidia.c
|
|
||||||
dm_nv_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
dm_nv_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For lvm.mod
|
|
||||||
lvm_mod_SOURCES = disk/lvm.c
|
|
||||||
lvm_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
lvm_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For scsi.mod
|
|
||||||
scsi_mod_SOURCES = disk/scsi.c
|
|
||||||
scsi_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
scsi_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Commands.
|
|
||||||
pkglib_MODULES += minicmd.mod extcmd.mod hello.mod \
|
|
||||||
ls.mod cmp.mod cat.mod help.mod search.mod loopback.mod \
|
|
||||||
configfile.mod echo.mod \
|
|
||||||
test.mod blocklist.mod hexdump.mod \
|
|
||||||
read.mod sleep.mod loadenv.mod crc.mod parttool.mod \
|
|
||||||
msdospart.mod memrw.mod normal.mod \
|
|
||||||
gptsync.mod true.mod probe.mod password.mod \
|
|
||||||
keystatus.mod
|
|
||||||
|
|
||||||
# For password.mod.
|
|
||||||
password_mod_SOURCES = commands/password.c
|
|
||||||
password_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
password_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For gptsync.mod.
|
|
||||||
gptsync_mod_SOURCES = commands/gptsync.c
|
|
||||||
gptsync_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
gptsync_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For minicmd.mod.
|
|
||||||
minicmd_mod_SOURCES = commands/minicmd.c
|
|
||||||
minicmd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
minicmd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For extcmd.mod.
|
|
||||||
extcmd_mod_SOURCES = commands/extcmd.c lib/arg.c
|
|
||||||
extcmd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
extcmd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For hello.mod.
|
|
||||||
hello_mod_SOURCES = hello/hello.c
|
|
||||||
hello_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
hello_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For gfxmenu.mod.
|
|
||||||
pkglib_MODULES += gfxmenu.mod
|
|
||||||
gfxmenu_mod_SOURCES = \
|
|
||||||
gfxmenu/gfxmenu.c \
|
|
||||||
gfxmenu/model.c \
|
|
||||||
gfxmenu/view.c \
|
|
||||||
gfxmenu/icon_manager.c \
|
|
||||||
gfxmenu/theme_loader.c \
|
|
||||||
gfxmenu/widget-box.c \
|
|
||||||
gfxmenu/gui_canvas.c \
|
|
||||||
gfxmenu/gui_circular_progress.c \
|
|
||||||
gfxmenu/gui_box.c \
|
|
||||||
gfxmenu/gui_label.c \
|
|
||||||
gfxmenu/gui_list.c \
|
|
||||||
gfxmenu/gui_image.c \
|
|
||||||
gfxmenu/gui_progress_bar.c \
|
|
||||||
gfxmenu/gui_util.c \
|
|
||||||
gfxmenu/gui_string_util.c \
|
|
||||||
gfxmenu/named_colors.c \
|
|
||||||
gfxmenu/font.c
|
|
||||||
gfxmenu_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
gfxmenu_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For parttool.mod.
|
|
||||||
parttool_mod_SOURCES = commands/parttool.c
|
|
||||||
parttool_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
parttool_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For msdospart.mod.
|
|
||||||
msdospart_mod_SOURCES = parttool/msdospart.c
|
|
||||||
msdospart_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
msdospart_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ls.mod.
|
|
||||||
ls_mod_SOURCES = commands/ls.c
|
|
||||||
ls_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ls_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For cmp.mod.
|
|
||||||
cmp_mod_SOURCES = commands/cmp.c
|
|
||||||
cmp_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cmp_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For cat.mod.
|
|
||||||
cat_mod_SOURCES = commands/cat.c
|
|
||||||
cat_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cat_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For echo.mod
|
|
||||||
echo_mod_SOURCES = commands/echo.c
|
|
||||||
echo_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
echo_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For help.mod.
|
|
||||||
help_mod_SOURCES = commands/help.c
|
|
||||||
help_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
help_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For search.mod.
|
|
||||||
search_mod_SOURCES = commands/search_wrap.c
|
|
||||||
search_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
search_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += search_fs_file.mod search_fs_uuid.mod search_label.mod
|
|
||||||
|
|
||||||
# For search.mod.
|
|
||||||
search_fs_file_mod_SOURCES = commands/search_file.c
|
|
||||||
search_fs_file_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
search_fs_file_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For search.mod.
|
|
||||||
search_label_mod_SOURCES = commands/search_label.c
|
|
||||||
search_label_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
search_label_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For search.mod.
|
|
||||||
search_fs_uuid_mod_SOURCES = commands/search_uuid.c
|
|
||||||
search_fs_uuid_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
search_fs_uuid_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For test.mod.
|
|
||||||
test_mod_SOURCES = commands/test.c
|
|
||||||
test_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
test_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For loopback.mod
|
|
||||||
loopback_mod_SOURCES = disk/loopback.c
|
|
||||||
loopback_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
loopback_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For configfile.mod
|
|
||||||
configfile_mod_SOURCES = commands/configfile.c
|
|
||||||
configfile_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
configfile_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
ifneq ($(platform), ieee1275)
|
|
||||||
# For terminfo.mod.
|
|
||||||
pkglib_MODULES += terminfo.mod
|
|
||||||
terminfo_mod_SOURCES = term/terminfo.c term/tparm.c
|
|
||||||
terminfo_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
terminfo_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For blocklist.mod.
|
|
||||||
blocklist_mod_SOURCES = commands/blocklist.c
|
|
||||||
blocklist_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
blocklist_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For hexdump.mod.
|
|
||||||
hexdump_mod_SOURCES = commands/hexdump.c lib/hexdump.c
|
|
||||||
hexdump_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
hexdump_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For read.mod.
|
|
||||||
read_mod_SOURCES = commands/read.c
|
|
||||||
read_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
read_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For sleep.mod.
|
|
||||||
sleep_mod_SOURCES = commands/sleep.c
|
|
||||||
sleep_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
sleep_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For loadenv.mod.
|
|
||||||
loadenv_mod_SOURCES = commands/loadenv.c lib/envblk.c
|
|
||||||
loadenv_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
loadenv_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For crc.mod.
|
|
||||||
crc_mod_SOURCES = commands/crc.c lib/crc.c
|
|
||||||
crc_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
crc_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For memrw.mod.
|
|
||||||
memrw_mod_SOURCES = commands/memrw.c
|
|
||||||
memrw_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
memrw_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For true.mod
|
|
||||||
true_mod_SOURCES = commands/true.c
|
|
||||||
true_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
true_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For probe.mod.
|
|
||||||
probe_mod_SOURCES = commands/probe.c
|
|
||||||
probe_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
probe_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For keystatus.mod.
|
|
||||||
keystatus_mod_SOURCES = commands/keystatus.c
|
|
||||||
keystatus_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
keystatus_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For normal.mod.
|
|
||||||
ifneq (, $(FONT_SOURCE))
|
|
||||||
normal/charset.c_DEPENDENCIES = widthspec.h
|
|
||||||
endif
|
|
||||||
normal_mod_SOURCES = normal/main.c normal/cmdline.c normal/dyncmd.c \
|
|
||||||
normal/auth.c normal/autofs.c \
|
|
||||||
normal/color.c normal/completion.c normal/datetime.c normal/menu.c \
|
|
||||||
normal/menu_entry.c normal/menu_text.c normal/charset.c \
|
|
||||||
normal/misc.c normal/crypto.c normal/term.c normal/context.c \
|
|
||||||
script/main.c script/script.c script/execute.c script/argv.c unidata.c \
|
|
||||||
script/function.c script/lexer.c grub_script.tab.c grub_script.yy.c
|
|
||||||
normal_mod_CFLAGS = $(COMMON_CFLAGS) $(POSIX_CFLAGS) -Wno-error
|
|
||||||
normal_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
ifneq (, $(FONT_SOURCE))
|
|
||||||
font/font.c_DEPENDENCIES = ascii.h
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Common Video Subsystem specific modules.
|
|
||||||
# On Yeeloong it's part of kernel
|
|
||||||
ifneq ($(platform), yeeloong)
|
|
||||||
|
|
||||||
# For video.mod.
|
|
||||||
pkglib_MODULES += video.mod
|
|
||||||
video_mod_SOURCES = video/video.c
|
|
||||||
video_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
video_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += video_fb.mod
|
|
||||||
video_fb_mod_SOURCES = video/fb/video_fb.c video/fb/fbblit.c \
|
|
||||||
video/fb/fbfill.c video/fb/fbutil.c
|
|
||||||
video_fb_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
video_fb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For bitmap.mod
|
|
||||||
pkglib_MODULES += bitmap.mod
|
|
||||||
bitmap_mod_SOURCES = video/bitmap.c
|
|
||||||
bitmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bitmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For bitmap_scale.mod
|
|
||||||
pkglib_MODULES += bitmap_scale.mod
|
|
||||||
bitmap_scale_mod_SOURCES = video/bitmap_scale.c
|
|
||||||
bitmap_scale_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bitmap_scale_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += font.mod
|
|
||||||
font_mod_SOURCES = font/font_cmd.c font/font.c
|
|
||||||
font_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
font_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For gfxterm.mod.
|
|
||||||
pkglib_MODULES += gfxterm.mod
|
|
||||||
gfxterm_mod_SOURCES = term/gfxterm.c
|
|
||||||
gfxterm_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
gfxterm_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For videotest.mod.
|
|
||||||
pkglib_MODULES += videotest.mod
|
|
||||||
videotest_mod_SOURCES = commands/videotest.c
|
|
||||||
videotest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
videotest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For tga.mod
|
|
||||||
pkglib_MODULES += tga.mod
|
|
||||||
tga_mod_SOURCES = video/readers/tga.c
|
|
||||||
tga_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
tga_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For jpeg.mod.
|
|
||||||
pkglib_MODULES += jpeg.mod
|
|
||||||
jpeg_mod_SOURCES = video/readers/jpeg.c
|
|
||||||
jpeg_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
jpeg_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For png.mod.
|
|
||||||
pkglib_MODULES += png.mod
|
|
||||||
png_mod_SOURCES = video/readers/png.c
|
|
||||||
png_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
png_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Misc.
|
|
||||||
pkglib_MODULES += gzio.mod elf.mod
|
|
||||||
|
|
||||||
# For elf.mod.
|
|
||||||
elf_mod_SOURCES = kern/elf.c
|
|
||||||
elf_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
elf_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For gzio.mod.
|
|
||||||
gzio_mod_SOURCES = io/gzio.c
|
|
||||||
gzio_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
gzio_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# On Yeeloong it's part of kernel
|
|
||||||
ifneq ($(platform), yeeloong)
|
|
||||||
# For bufio.mod.
|
|
||||||
pkglib_MODULES += bufio.mod
|
|
||||||
bufio_mod_SOURCES = io/bufio.c
|
|
||||||
bufio_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bufio_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For gettext.mod.
|
|
||||||
pkglib_MODULES += gettext.mod
|
|
||||||
gettext_mod_SOURCES = gettext/gettext.c
|
|
||||||
gettext_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
gettext_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Misc.
|
|
||||||
pkglib_MODULES += xnu_uuid.mod
|
|
||||||
|
|
||||||
# For elf.mod.
|
|
||||||
xnu_uuid_mod_SOURCES = commands/xnu_uuid.c
|
|
||||||
xnu_uuid_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
xnu_uuid_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += trig.mod
|
|
||||||
trig_mod_SOURCES = trigtables.c
|
|
||||||
trig_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
trig_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
trigtables.c: gentrigtables
|
|
||||||
./gentrigtables > $@
|
|
||||||
DISTCLEANFILES += trigtables.c
|
|
||||||
gentrigtables: gentrigtables.c
|
|
||||||
$(CC) -o $@ $^ $(CPPFLAGS) -lm
|
|
||||||
DISTCLEANFILES += gentrigtables
|
|
||||||
|
|
||||||
pkglib_MODULES += setjmp.mod
|
|
||||||
setjmp_mod_SOURCES = lib/$(target_cpu)/setjmp.S
|
|
||||||
setjmp_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
setjmp_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += regexp.mod
|
|
||||||
regexp_mod_SOURCES = gnulib/regex.c commands/regexp.c commands/wildcard.c
|
|
||||||
regexp_mod_CFLAGS = $(COMMON_CFLAGS) $(GNULIB_CFLAGS)
|
|
||||||
regexp_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += terminal.mod
|
|
||||||
terminal_mod_SOURCES = commands/terminal.c
|
|
||||||
terminal_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
terminal_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += crypto.mod
|
|
||||||
crypto_mod_SOURCES = lib/crypto.c
|
|
||||||
crypto_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
crypto_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += hashsum.mod
|
|
||||||
hashsum_mod_SOURCES = commands/hashsum.c
|
|
||||||
hashsum_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
hashsum_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += pbkdf2.mod
|
|
||||||
pbkdf2_mod_SOURCES = lib/pbkdf2.c
|
|
||||||
pbkdf2_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
pbkdf2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For password_pbkdf2.mod.
|
|
||||||
pkglib_MODULES += password_pbkdf2.mod
|
|
||||||
password_pbkdf2_mod_SOURCES = commands/password_pbkdf2.c
|
|
||||||
password_pbkdf2_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
password_pbkdf2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For memdisk.mod.
|
|
||||||
pkglib_MODULES += memdisk.mod
|
|
||||||
memdisk_mod_SOURCES = disk/memdisk.c
|
|
||||||
memdisk_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
memdisk_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For reboot.mod.
|
|
||||||
pkglib_MODULES += reboot.mod
|
|
||||||
reboot_mod_SOURCES = commands/reboot.c
|
|
||||||
reboot_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
reboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For date.mod
|
|
||||||
pkglib_MODULES += date.mod
|
|
||||||
date_mod_SOURCES = commands/date.c
|
|
||||||
date_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
date_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For datehook.mod
|
|
||||||
pkglib_MODULES += datehook.mod
|
|
||||||
datehook_mod_SOURCES = hook/datehook.c
|
|
||||||
datehook_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datehook_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For lsmmap.mod
|
|
||||||
pkglib_MODULES += lsmmap.mod
|
|
||||||
lsmmap_mod_SOURCES = commands/lsmmap.c
|
|
||||||
lsmmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
lsmmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For boot.mod.
|
|
||||||
pkglib_MODULES += boot.mod
|
|
||||||
boot_mod_SOURCES = commands/boot.c lib/i386/pc/biosnum.c
|
|
||||||
boot_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
boot_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
bin_UTILITIES += grub-mkpasswd-pbkdf2
|
|
||||||
grub_mkpasswd_pbkdf2_SOURCES = gnulib/progname.c gnulib/getdelim.c gnulib/getline.c util/grub-mkpasswd-pbkdf2.c lib/crypto.c lib/libgcrypt-grub/cipher/sha512.c lib/pbkdf2.c util/misc.c kern/emu/misc.c kern/emu/mm.c kern/err.c
|
|
||||||
grub_mkpasswd_pbkdf2_CFLAGS += -Wno-missing-field-initializers -Wno-error -I$(srcdir)/lib/libgcrypt_wrap -DGRUB_MKPASSWD=1
|
|
||||||
|
|
||||||
include $(srcdir)/conf/gcry.mk
|
|
|
@ -1,78 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS = -mrtd -mregparm=3
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
|
|
||||||
pkglib_PROGRAMS += kernel.img
|
|
||||||
kernel_img_SOURCES = kern/i386/coreboot/startup.S \
|
|
||||||
kern/i386/misc.S \
|
|
||||||
kern/i386/coreboot/init.c \
|
|
||||||
kern/i386/coreboot/mmap.c \
|
|
||||||
kern/i386/halt.c \
|
|
||||||
kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/time.c kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/$(target_cpu)/dl.c kern/parser.c kern/partition.c \
|
|
||||||
kern/i386/tsc.c kern/i386/pit.c \
|
|
||||||
kern/generic/rtc_get_time_ms.c \
|
|
||||||
kern/generic/millisleep.c \
|
|
||||||
kern/env.c \
|
|
||||||
term/i386/pc/vga_text.c term/i386/vga_common.c \
|
|
||||||
symlist.c
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x8200,-Bstatic
|
|
||||||
|
|
||||||
sbin_SCRIPTS += grub-install
|
|
||||||
grub_install_SOURCES = util/grub-install.in
|
|
||||||
|
|
||||||
bin_SCRIPTS += grub-mkrescue
|
|
||||||
grub_mkrescue_SOURCES = util/grub-mkrescue.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_MODULES = linux.mod aout.mod halt.mod datetime.mod mmap.mod
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
linux_mod_SOURCES = loader/i386/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For aout.mod.
|
|
||||||
aout_mod_SOURCES = loader/aout.c
|
|
||||||
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
aout_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For bsd.mod
|
|
||||||
pkglib_MODULES += bsd.mod
|
|
||||||
bsd_mod_SOURCES = loader/i386/bsd.c loader/i386/bsd32.c loader/i386/bsd64.c loader/i386/bsd_helper.S loader/i386/bsd_trampoline.S
|
|
||||||
bsd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bsd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
bsd_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/cmos_datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For cmostest.mod
|
|
||||||
pkglib_MODULES += cmostest.mod
|
|
||||||
cmostest_mod_SOURCES = commands/i386/cmostest.c
|
|
||||||
cmostest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cmostest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/i386.mk
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,5 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_LDFLAGS = -melf_i386
|
|
||||||
|
|
||||||
include $(srcdir)/conf/x86-efi.mk
|
|
|
@ -1,82 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS = -mrtd -mregparm=3
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
|
|
||||||
# For kernel.img.
|
|
||||||
kernel_img_SOURCES = kern/i386/ieee1275/startup.S \
|
|
||||||
kern/i386/misc.S \
|
|
||||||
kern/i386/ieee1275/init.c \
|
|
||||||
kern/ieee1275/init.c \
|
|
||||||
kern/ieee1275/mmap.c \
|
|
||||||
kern/ieee1275/cmain.c kern/ieee1275/openfw.c \
|
|
||||||
kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/$(target_cpu)/dl.c kern/parser.c kern/partition.c \
|
|
||||||
kern/env.c \
|
|
||||||
kern/time.c kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/generic/millisleep.c \
|
|
||||||
kern/ieee1275/ieee1275.c \
|
|
||||||
term/ieee1275/ofconsole.c \
|
|
||||||
term/terminfo.c term/tparm.c \
|
|
||||||
disk/ieee1275/ofdisk.c \
|
|
||||||
symlist.c
|
|
||||||
kernel_img_HEADERS += ieee1275/ieee1275.h terminfo.h
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x10000,-Bstatic
|
|
||||||
|
|
||||||
# Scripts.
|
|
||||||
sbin_SCRIPTS = grub-install
|
|
||||||
|
|
||||||
# For grub-install.
|
|
||||||
grub_install_SOURCES = util/ieee1275/grub-install.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_MODULES = halt.mod suspend.mod \
|
|
||||||
aout.mod linux.mod \
|
|
||||||
nand.mod datetime.mod \
|
|
||||||
mmap.mod
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For aout.mod.
|
|
||||||
aout_mod_SOURCES = loader/aout.c
|
|
||||||
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
aout_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For suspend.mod
|
|
||||||
suspend_mod_SOURCES = commands/ieee1275/suspend.c
|
|
||||||
suspend_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
suspend_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
linux_mod_SOURCES = loader/i386/ieee1275/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For nand.mod.
|
|
||||||
nand_mod_SOURCES = disk/ieee1275/nand.c
|
|
||||||
nand_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
nand_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/cmos_datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/i386.mk
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,74 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS = -mrtd -mregparm=3
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
|
|
||||||
GRUB_KERNEL_MACHINE_LINK_ADDR = 0x8200
|
|
||||||
|
|
||||||
pkglib_PROGRAMS += kernel.img
|
|
||||||
kernel_img_SOURCES = kern/i386/coreboot/startup.S \
|
|
||||||
kern/i386/misc.S \
|
|
||||||
kern/i386/coreboot/init.c \
|
|
||||||
kern/i386/multiboot_mmap.c \
|
|
||||||
kern/i386/halt.c \
|
|
||||||
kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/time.c kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/$(target_cpu)/dl.c kern/parser.c kern/partition.c \
|
|
||||||
kern/i386/tsc.c kern/i386/pit.c \
|
|
||||||
kern/generic/rtc_get_time_ms.c \
|
|
||||||
kern/generic/millisleep.c \
|
|
||||||
kern/env.c \
|
|
||||||
term/i386/pc/vga_text.c term/i386/vga_common.c \
|
|
||||||
symlist.c
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,$(GRUB_KERNEL_MACHINE_LINK_ADDR),-Bstatic
|
|
||||||
|
|
||||||
sbin_SCRIPTS += grub-install
|
|
||||||
grub_install_SOURCES = util/grub-install.in
|
|
||||||
|
|
||||||
bin_SCRIPTS += grub-mkrescue
|
|
||||||
grub_mkrescue_SOURCES = util/grub-mkrescue.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_MODULES = linux.mod aout.mod halt.mod datetime.mod mmap.mod
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
linux_mod_SOURCES = loader/i386/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For aout.mod.
|
|
||||||
aout_mod_SOURCES = loader/aout.c
|
|
||||||
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
aout_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For bsd.mod
|
|
||||||
pkglib_MODULES += bsd.mod
|
|
||||||
bsd_mod_SOURCES = loader/i386/bsd.c loader/i386/bsd32.c loader/i386/bsd64.c loader/i386/bsd_helper.S loader/i386/bsd_trampoline.S
|
|
||||||
bsd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bsd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
bsd_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/cmos_datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/i386.mk
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
301
conf/i386-pc.rmk
301
conf/i386-pc.rmk
|
@ -1,301 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS = -mrtd -mregparm=3
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
pkglib_IMAGES = boot.img cdboot.img diskboot.img lnxboot.img pxeboot.img
|
|
||||||
|
|
||||||
# For boot.img.
|
|
||||||
boot_img_SOURCES = boot/i386/pc/boot.S
|
|
||||||
boot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
boot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)0x7C00
|
|
||||||
boot_img_FORMAT = binary
|
|
||||||
|
|
||||||
# For pxeboot.img
|
|
||||||
pxeboot_img_SOURCES = boot/i386/pc/pxeboot.S
|
|
||||||
pxeboot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
pxeboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)0x7C00
|
|
||||||
pxeboot_img_FORMAT = binary
|
|
||||||
|
|
||||||
# For diskboot.img.
|
|
||||||
diskboot_img_SOURCES = boot/i386/pc/diskboot.S
|
|
||||||
diskboot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
diskboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)0x8000
|
|
||||||
diskboot_img_FORMAT = binary
|
|
||||||
|
|
||||||
# For lnxboot.img.
|
|
||||||
lnxboot_img_SOURCES = boot/i386/pc/lnxboot.S
|
|
||||||
lnxboot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
lnxboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)0x6000
|
|
||||||
lnxboot_img_FORMAT = binary
|
|
||||||
|
|
||||||
# For cdboot.img.
|
|
||||||
cdboot_img_SOURCES = boot/i386/pc/cdboot.S
|
|
||||||
cdboot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
cdboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)0x7C00
|
|
||||||
cdboot_img_FORMAT = binary
|
|
||||||
|
|
||||||
# For kernel.img.
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
kernel_img_SOURCES = kern/i386/pc/startup.S \
|
|
||||||
kern/i386/misc.S \
|
|
||||||
kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/time.c kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/$(target_cpu)/dl.c kern/i386/pc/init.c kern/i386/pc/mmap.c \
|
|
||||||
kern/parser.c kern/partition.c \
|
|
||||||
kern/i386/tsc.c kern/i386/pit.c \
|
|
||||||
kern/generic/rtc_get_time_ms.c \
|
|
||||||
kern/generic/millisleep.c \
|
|
||||||
kern/env.c \
|
|
||||||
term/i386/pc/console.c term/i386/vga_common.c \
|
|
||||||
symlist.c
|
|
||||||
kernel_img_HEADERS += machine/biosdisk.h machine/vga.h machine/vbe.h \
|
|
||||||
machine/pxe.h i386/pit.h machine/kernel.h
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS) $(TARGET_IMG_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)0x8200 $(COMMON_CFLAGS)
|
|
||||||
|
|
||||||
# Utilities.
|
|
||||||
sbin_UTILITIES = grub-setup
|
|
||||||
|
|
||||||
# For grub-setup.
|
|
||||||
util/i386/pc/grub-setup.c_DEPENDENCIES = grub_setup_init.h
|
|
||||||
grub_setup_SOURCES = gnulib/progname.c util/i386/pc/grub-setup.c \
|
|
||||||
util/misc.c kern/emu/misc.c kern/emu/getroot.c \
|
|
||||||
kern/emu/hostdisk.c kern/device.c kern/disk.c kern/err.c \
|
|
||||||
kern/misc.c kern/partition.c kern/file.c \
|
|
||||||
kern/emu/mm.c kern/fs.c kern/env.c kern/list.c fs/fshelp.c \
|
|
||||||
\
|
|
||||||
fs/affs.c fs/cpio.c fs/ext2.c fs/fat.c fs/hfs.c \
|
|
||||||
fs/hfsplus.c fs/iso9660.c fs/udf.c fs/jfs.c fs/minix.c \
|
|
||||||
fs/nilfs2.c fs/ntfs.c fs/ntfscomp.c fs/reiserfs.c \
|
|
||||||
fs/sfs.c fs/ufs.c fs/ufs2.c fs/xfs.c fs/afs.c \
|
|
||||||
fs/afs_be.c fs/befs.c fs/befs_be.c fs/tar.c \
|
|
||||||
\
|
|
||||||
partmap/msdos.c partmap/bsdlabel.c partmap/sunpc.c \
|
|
||||||
partmap/gpt.c \
|
|
||||||
\
|
|
||||||
disk/raid.c disk/raid5_recover.c disk/raid6_recover.c \
|
|
||||||
disk/mdraid_linux.c disk/lvm.c \
|
|
||||||
util/raid.c util/lvm.c \
|
|
||||||
grub_setup_init.c
|
|
||||||
|
|
||||||
sbin_SCRIPTS += grub-install
|
|
||||||
grub_install_SOURCES = util/grub-install.in
|
|
||||||
|
|
||||||
bin_SCRIPTS += grub-mkrescue
|
|
||||||
grub_mkrescue_SOURCES = util/grub-mkrescue.in
|
|
||||||
|
|
||||||
pkglib_MODULES = biosdisk.mod chain.mod \
|
|
||||||
halt.mod \
|
|
||||||
vbe.mod vbetest.mod vbeinfo.mod \
|
|
||||||
vga.mod \
|
|
||||||
aout.mod bsd.mod pxe.mod pxecmd.mod datetime.mod \
|
|
||||||
ata_pthru.mod hdparm.mod \
|
|
||||||
usb.mod uhci.mod ohci.mod usbtest.mod usbms.mod usb_keyboard.mod \
|
|
||||||
efiemu.mod mmap.mod acpi.mod drivemap.mod
|
|
||||||
|
|
||||||
# For drivemap.mod.
|
|
||||||
drivemap_mod_SOURCES = commands/i386/pc/drivemap.c \
|
|
||||||
commands/i386/pc/drivemap_int13h.S
|
|
||||||
drivemap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
drivemap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
drivemap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For efiemu.mod.
|
|
||||||
efiemu_mod_SOURCES = efiemu/main.c efiemu/i386/loadcore32.c \
|
|
||||||
efiemu/i386/loadcore64.c efiemu/i386/pc/cfgtables.c \
|
|
||||||
efiemu/mm.c efiemu/loadcore_common.c efiemu/symbols.c \
|
|
||||||
efiemu/loadcore32.c efiemu/loadcore64.c \
|
|
||||||
efiemu/prepare32.c efiemu/prepare64.c efiemu/pnvram.c \
|
|
||||||
efiemu/i386/coredetect.c
|
|
||||||
efiemu_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
efiemu_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For acpi.mod.
|
|
||||||
acpi_mod_SOURCES = commands/acpi.c commands/i386/pc/acpi.c
|
|
||||||
acpi_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
acpi_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c \
|
|
||||||
mmap/i386/pc/mmap.c mmap/i386/pc/mmap_helper.S
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For biosdisk.mod.
|
|
||||||
biosdisk_mod_SOURCES = disk/i386/pc/biosdisk.c
|
|
||||||
biosdisk_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
biosdisk_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For chain.mod.
|
|
||||||
chain_mod_SOURCES = loader/i386/pc/chainloader.c
|
|
||||||
chain_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
chain_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += linux16.mod
|
|
||||||
linux16_mod_SOURCES = loader/i386/pc/linux.c
|
|
||||||
linux16_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux16_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += linux.mod
|
|
||||||
linux_mod_SOURCES = loader/i386/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += xnu.mod
|
|
||||||
xnu_mod_SOURCES = loader/xnu_resume.c loader/i386/xnu.c \
|
|
||||||
loader/macho32.c loader/macho64.c loader/macho.c loader/xnu.c
|
|
||||||
xnu_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
halt_mod_SOURCES = commands/i386/pc/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For vbe.mod.
|
|
||||||
vbe_mod_SOURCES = video/i386/pc/vbe.c
|
|
||||||
vbe_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
vbe_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For vbeinfo.mod.
|
|
||||||
vbeinfo_mod_SOURCES = commands/i386/pc/vbeinfo.c
|
|
||||||
vbeinfo_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
vbeinfo_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For vbetest.mod.
|
|
||||||
vbetest_mod_SOURCES = commands/i386/pc/vbetest.c
|
|
||||||
vbetest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
vbetest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For vga.mod.
|
|
||||||
vga_mod_SOURCES = video/i386/pc/vga.c
|
|
||||||
vga_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
vga_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For aout.mod
|
|
||||||
aout_mod_SOURCES = loader/aout.c
|
|
||||||
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
aout_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For bsd.mod
|
|
||||||
bsd_mod_SOURCES = loader/i386/bsd.c loader/i386/bsd32.c loader/i386/bsd64.c loader/i386/bsd_helper.S loader/i386/bsd_trampoline.S
|
|
||||||
bsd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bsd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
bsd_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For usb.mod
|
|
||||||
usb_mod_SOURCES = bus/usb/usb.c bus/usb/usbtrans.c bus/usb/usbhub.c
|
|
||||||
usb_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usbtest.mod
|
|
||||||
usbtest_mod_SOURCES = commands/usbtest.c
|
|
||||||
usbtest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usbtest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For uhci.mod
|
|
||||||
uhci_mod_SOURCES = bus/usb/uhci.c
|
|
||||||
uhci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
uhci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ohci.mod
|
|
||||||
ohci_mod_SOURCES = bus/usb/ohci.c
|
|
||||||
ohci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ohci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usbms.mod
|
|
||||||
usbms_mod_SOURCES = disk/usbms.c
|
|
||||||
usbms_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usbms_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usb_keyboard.mod
|
|
||||||
usb_keyboard_mod_SOURCES = term/usb_keyboard.c
|
|
||||||
usb_keyboard_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usb_keyboard_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For pxe.mod
|
|
||||||
pxe_mod_SOURCES = fs/i386/pc/pxe.c
|
|
||||||
pxe_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
pxe_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For pxecmd.mod
|
|
||||||
pxecmd_mod_SOURCES = commands/i386/pc/pxecmd.c
|
|
||||||
pxecmd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
pxecmd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/cmos_datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ata_pthru.mod.
|
|
||||||
ata_pthru_mod_SOURCES = disk/ata_pthru.c
|
|
||||||
ata_pthru_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ata_pthru_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For hdparm.mod.
|
|
||||||
hdparm_mod_SOURCES = commands/hdparm.c lib/hexdump.c
|
|
||||||
hdparm_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
hdparm_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For cmostest.mod
|
|
||||||
pkglib_MODULES += cmostest.mod
|
|
||||||
cmostest_mod_SOURCES = commands/i386/cmostest.c
|
|
||||||
cmostest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cmostest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
ifeq ($(enable_efiemu), yes)
|
|
||||||
|
|
||||||
efiemu32.o: efiemu/runtime/efiemu.c $(TARGET_OBJ2ELF)
|
|
||||||
-rm -f $@
|
|
||||||
ifeq ($(TARGET_APPLE_CC), 1)
|
|
||||||
-rm -f $@.bin
|
|
||||||
$(TARGET_CC) -c -m32 -DELF32 -DAPPLE_CC -o $@.bin -Wall -Werror $< -nostdlib -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
|
|
||||||
$(OBJCONV) -felf32 -nu -nd $@.bin $@
|
|
||||||
-rm -f $@.bin
|
|
||||||
else
|
|
||||||
$(TARGET_CC) -c -m32 -DELF32 -o $@ -Wall -Werror $< -nostdlib -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
|
|
||||||
if test ! -z $(TARGET_OBJ2ELF); then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
|
|
||||||
endif
|
|
||||||
|
|
||||||
efiemu64_c.o: efiemu/runtime/efiemu.c
|
|
||||||
ifeq ($(TARGET_APPLE_CC), 1)
|
|
||||||
$(TARGET_CC) -c -m64 -DAPPLE_CC=1 -DELF64 -o $@ -Wall -Werror $< -nostdlib -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
|
|
||||||
else
|
|
||||||
$(TARGET_CC) -c -m64 -DELF64 -o $@ -Wall -Werror $< -nostdlib -mcmodel=large -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
|
|
||||||
endif
|
|
||||||
|
|
||||||
efiemu64_s.o: efiemu/runtime/efiemu.S
|
|
||||||
-rm -f $@
|
|
||||||
ifeq ($(TARGET_APPLE_CC), 1)
|
|
||||||
$(TARGET_CC) -c -m64 -DAPPLE_CC=1 -DELF64 -o $@ -Wall -Werror $< -nostdlib -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
|
|
||||||
else
|
|
||||||
$(TARGET_CC) -c -m64 -DELF64 -o $@ -Wall -Werror $< -nostdlib -mcmodel=large -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
|
|
||||||
endif
|
|
||||||
|
|
||||||
efiemu64.o: efiemu64_c.o efiemu64_s.o $(TARGET_OBJ2ELF)
|
|
||||||
-rm -f $@
|
|
||||||
ifeq ($(TARGET_APPLE_CC), 1)
|
|
||||||
-rm -f $@.bin
|
|
||||||
$(TARGET_CC) -m64 -o $@.bin -Wl,-r $^ -nostdlib
|
|
||||||
$(OBJCONV) -felf64 -nu -nd $@.bin $@
|
|
||||||
-rm -f $@.bin
|
|
||||||
else
|
|
||||||
$(TARGET_CC) -m64 -o $@ -Wl,-r $^ -nostdlib
|
|
||||||
if test ! -z $(TARGET_OBJ2ELF); then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
|
|
||||||
endif
|
|
||||||
|
|
||||||
CLEANFILES += efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o
|
|
||||||
pkglib_DATA += efiemu32.o efiemu64.o
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(srcdir)/conf/i386.mk
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,86 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS = -mrtd -mregparm=3
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
|
|
||||||
GRUB_KERNEL_MACHINE_LINK_ADDR = 0x8200
|
|
||||||
GRUB_BOOT_MACHINE_LINK_ADDR = 0xffe00
|
|
||||||
|
|
||||||
pkglib_IMAGES += boot.img
|
|
||||||
boot_img_SOURCES = boot/i386/qemu/boot.S
|
|
||||||
boot_img_ASFLAGS = $(COMMON_ASFLAGS) -DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)
|
|
||||||
boot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)$(GRUB_BOOT_MACHINE_LINK_ADDR)
|
|
||||||
boot_img_FORMAT = binary
|
|
||||||
|
|
||||||
kern/i386/qemu/init.c_DEPENDENCIES = ascii.h
|
|
||||||
|
|
||||||
pkglib_PROGRAMS += kernel.img
|
|
||||||
kernel_img_SOURCES = kern/i386/qemu/startup.S \
|
|
||||||
kern/i386/misc.S \
|
|
||||||
kern/i386/coreboot/init.c \
|
|
||||||
kern/i386/qemu/init.c \
|
|
||||||
kern/i386/qemu/mmap.c \
|
|
||||||
kern/i386/halt.c \
|
|
||||||
kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/time.c kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/$(target_cpu)/dl.c kern/parser.c kern/partition.c \
|
|
||||||
kern/i386/tsc.c kern/i386/pit.c \
|
|
||||||
kern/generic/rtc_get_time_ms.c \
|
|
||||||
kern/generic/millisleep.c \
|
|
||||||
kern/env.c \
|
|
||||||
term/i386/pc/vga_text.c term/i386/vga_common.c bus/pci.c \
|
|
||||||
symlist.c
|
|
||||||
kernel_img_HEADERS += pci.h
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS) -DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS) -DGRUB_KERNEL_MACHINE_LINK_ADDR=$(GRUB_KERNEL_MACHINE_LINK_ADDR)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)$(GRUB_KERNEL_MACHINE_LINK_ADDR)
|
|
||||||
kernel_img_FORMAT = binary
|
|
||||||
|
|
||||||
sbin_SCRIPTS += grub-install
|
|
||||||
grub_install_SOURCES = util/grub-install.in
|
|
||||||
|
|
||||||
bin_SCRIPTS += grub-mkrescue
|
|
||||||
grub_mkrescue_SOURCES = util/grub-mkrescue.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_MODULES = linux.mod aout.mod halt.mod datetime.mod mmap.mod
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
linux_mod_SOURCES = loader/i386/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For aout.mod.
|
|
||||||
aout_mod_SOURCES = loader/aout.c
|
|
||||||
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
aout_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For bsd.mod
|
|
||||||
pkglib_MODULES += bsd.mod
|
|
||||||
bsd_mod_SOURCES = loader/i386/bsd.c loader/i386/bsd32.c loader/i386/bsd64.c loader/i386/bsd_helper.S loader/i386/bsd_trampoline.S
|
|
||||||
bsd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
bsd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
bsd_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/cmos_datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/i386.mk
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,94 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
pkglib_MODULES += cpuid.mod
|
|
||||||
cpuid_mod_SOURCES = commands/i386/cpuid.c
|
|
||||||
cpuid_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cpuid_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += at_keyboard.mod
|
|
||||||
at_keyboard_mod_SOURCES = term/at_keyboard.c
|
|
||||||
at_keyboard_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
at_keyboard_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += vga_text.mod
|
|
||||||
vga_text_mod_SOURCES = term/i386/pc/vga_text.c term/i386/vga_common.c
|
|
||||||
vga_text_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
vga_text_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += video_cirrus.mod
|
|
||||||
video_cirrus_mod_SOURCES = video/cirrus.c
|
|
||||||
video_cirrus_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
video_cirrus_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += video_bochs.mod
|
|
||||||
video_bochs_mod_SOURCES = video/bochs.c
|
|
||||||
video_bochs_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
video_bochs_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += relocator.mod
|
|
||||||
relocator_mod_SOURCES = lib/i386/relocator.c lib/i386/relocator_asm.S lib/i386/relocator_backward.S
|
|
||||||
relocator_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
relocator_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
relocator_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += ata.mod
|
|
||||||
ata_mod_SOURCES = disk/ata.c
|
|
||||||
ata_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ata_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For setpci.mod
|
|
||||||
pkglib_MODULES += setpci.mod
|
|
||||||
setpci_mod_SOURCES = commands/setpci.c
|
|
||||||
setpci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
setpci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += multiboot.mod
|
|
||||||
multiboot_mod_SOURCES = loader/multiboot.c loader/i386/multiboot_mbi.c
|
|
||||||
multiboot_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
multiboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
multiboot_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += multiboot2.mod
|
|
||||||
multiboot2_mod_SOURCES = loader/multiboot.c loader/multiboot_mbi2.c
|
|
||||||
multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2
|
|
||||||
multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For serial.mod.
|
|
||||||
pkglib_MODULES += serial.mod
|
|
||||||
serial_mod_SOURCES = term/serial.c
|
|
||||||
serial_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# On qemu it's compiled in
|
|
||||||
ifneq ($(platform), qemu)
|
|
||||||
# For pci.mod
|
|
||||||
pkglib_MODULES += pci.mod
|
|
||||||
pci_mod_SOURCES = bus/pci.c
|
|
||||||
pci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For cs5536.mod
|
|
||||||
pkglib_MODULES += cs5536.mod
|
|
||||||
cs5536_mod_SOURCES = bus/cs5536.c
|
|
||||||
cs5536_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
cs5536_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For lspci.mod
|
|
||||||
pkglib_MODULES += lspci.mod
|
|
||||||
lspci_mod_SOURCES = commands/lspci.c
|
|
||||||
lspci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
lspci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For play.mod.
|
|
||||||
pkglib_MODULES += play.mod
|
|
||||||
play_mod_SOURCES = commands/i386/pc/play.c
|
|
||||||
play_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
play_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For iorw.mod.
|
|
||||||
pkglib_MODULES += iorw.mod
|
|
||||||
iorw_mod_SOURCES = commands/iorw.c
|
|
||||||
iorw_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
iorw_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
|
@ -1,125 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
LINK_BASE = 0x80200000
|
|
||||||
target_machine=yeeloong
|
|
||||||
COMMON_CFLAGS += -march=mips3
|
|
||||||
COMMON_ASFLAGS += -march=mips3
|
|
||||||
|
|
||||||
kernel_img_HEADERS += pci.h bitmap.h video.h gfxterm.h font.h \
|
|
||||||
bitmap_scale.h bufio.h cs5536.h machine/pci.h
|
|
||||||
|
|
||||||
include $(srcdir)/conf/mips.mk
|
|
||||||
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
kernel_img_SOURCES = kern/$(target_cpu)/startup.S \
|
|
||||||
kern/main.c kern/device.c kern/$(target_cpu)/init.c \
|
|
||||||
kern/$(target_cpu)/$(target_machine)/init.c \
|
|
||||||
kern/disk.c kern/dl.c kern/err.c kern/file.c kern/fs.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/parser.c kern/partition.c kern/env.c kern/$(target_cpu)/dl.c \
|
|
||||||
kern/generic/millisleep.c kern/generic/rtc_get_time_ms.c kern/time.c \
|
|
||||||
kern/$(target_cpu)/cache.S \
|
|
||||||
\
|
|
||||||
term/at_keyboard.c \
|
|
||||||
font/font_cmd.c font/font.c io/bufio.c \
|
|
||||||
video/video.c video/fb/video_fb.c video/fb/fbblit.c \
|
|
||||||
video/fb/fbfill.c video/fb/fbutil.c video/bitmap.c \
|
|
||||||
video/bitmap_scale.c video/sm712.c bus/pci.c bus/bonito.c \
|
|
||||||
term/gfxterm.c commands/extcmd.c lib/arg.c \
|
|
||||||
bus/cs5536.c term/serial.c term/terminfo.c term/tparm.c \
|
|
||||||
symlist.c
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS) -DUSE_ASCII_FAILBACK
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,$(LINK_BASE),-Bstatic
|
|
||||||
kernel_img_FORMAT = binary
|
|
||||||
|
|
||||||
pkglib_IMAGES += fwstart.img
|
|
||||||
fwstart_img_SOURCES = boot/$(target_cpu)/$(target_machine)/fwstart.S
|
|
||||||
fwstart_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
fwstart_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
fwstart_img_LDFLAGS = $(COMMON_LDFLAGS) -static-libgcc -lgcc \
|
|
||||||
-Wl,-N,-S,-Ttext,0xbfc00000,-Bstatic
|
|
||||||
fwstart_img_FORMAT = binary
|
|
||||||
|
|
||||||
# For ata.mod.
|
|
||||||
pkglib_MODULES += ata.mod
|
|
||||||
ata_mod_SOURCES = disk/ata.c
|
|
||||||
ata_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ata_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For lspci.mod
|
|
||||||
pkglib_MODULES += lspci.mod
|
|
||||||
lspci_mod_SOURCES = commands/lspci.c
|
|
||||||
lspci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
lspci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ata_pthru.mod.
|
|
||||||
pkglib_MODULES += ata_pthru.mod
|
|
||||||
ata_pthru_mod_SOURCES = disk/ata_pthru.c
|
|
||||||
ata_pthru_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ata_pthru_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
pkglib_MODULES += mmap.mod
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/mips/yeeloong/uppermem.c
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
pkglib_MODULES += datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/cmos_datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For lsspd.mod
|
|
||||||
pkglib_MODULES += lsspd.mod
|
|
||||||
lsspd_mod_SOURCES = commands/mips/yeeloong/lsspd.c
|
|
||||||
lsspd_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
lsspd_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += linux.mod
|
|
||||||
linux_mod_SOURCES = loader/$(target_cpu)/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
pkglib_MODULES += halt.mod
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usb.mod
|
|
||||||
pkglib_MODULES += usb.mod
|
|
||||||
usb_mod_SOURCES = bus/usb/usb.c bus/usb/usbtrans.c bus/usb/usbhub.c
|
|
||||||
usb_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usbtest.mod
|
|
||||||
pkglib_MODULES += usbtest.mod
|
|
||||||
usbtest_mod_SOURCES = commands/usbtest.c
|
|
||||||
usbtest_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usbtest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For ohci.mod
|
|
||||||
pkglib_MODULES += ohci.mod
|
|
||||||
ohci_mod_SOURCES = bus/usb/ohci.c
|
|
||||||
ohci_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ohci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usbms.mod
|
|
||||||
pkglib_MODULES += usbms.mod
|
|
||||||
usbms_mod_SOURCES = disk/usbms.c
|
|
||||||
usbms_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usbms_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For usb_keyboard.mod
|
|
||||||
pkglib_MODULES += usb_keyboard.mod
|
|
||||||
usb_keyboard_mod_SOURCES = term/usb_keyboard.c
|
|
||||||
usb_keyboard_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
usb_keyboard_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
sbin_SCRIPTS += grub-install
|
|
||||||
grub_install_SOURCES = util/grub-install.in
|
|
|
@ -1,27 +0,0 @@
|
||||||
|
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS += -mexplicit-relocs -mflush-func=grub_cpu_flush_cache
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
kernel_img_HEADERS += cpu/cache.h
|
|
||||||
|
|
||||||
# Scripts.
|
|
||||||
sbin_SCRIPTS =
|
|
||||||
bin_SCRIPTS =
|
|
||||||
|
|
||||||
# For relocator.mod.
|
|
||||||
pkglib_MODULES += relocator.mod
|
|
||||||
relocator_mod_SOURCES = lib/$(target_cpu)/relocator.c lib/$(target_cpu)/relocator_asm.S
|
|
||||||
relocator_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
relocator_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
relocator_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += multiboot2.mod
|
|
||||||
multiboot2_mod_SOURCES = loader/multiboot.c \
|
|
||||||
loader/multiboot_mbi2.c
|
|
||||||
multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2
|
|
||||||
multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,68 +0,0 @@
|
||||||
|
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
|
|
||||||
kernel_img_HEADERS += ieee1275/ieee1275.h
|
|
||||||
|
|
||||||
# Programs
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
|
|
||||||
kernel_img_SOURCES = kern/powerpc/ieee1275/startup.S kern/ieee1275/cmain.c \
|
|
||||||
kern/ieee1275/ieee1275.c kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/err.c kern/file.c kern/fs.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/ieee1275/init.c \
|
|
||||||
kern/ieee1275/mmap.c \
|
|
||||||
term/ieee1275/ofconsole.c term/terminfo.c term/tparm.c \
|
|
||||||
kern/ieee1275/openfw.c disk/ieee1275/ofdisk.c \
|
|
||||||
kern/parser.c kern/partition.c kern/env.c kern/$(target_cpu)/dl.c \
|
|
||||||
kern/generic/millisleep.c kern/time.c \
|
|
||||||
symlist.c kern/$(target_cpu)/cache.S
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x200000,-Bstatic
|
|
||||||
|
|
||||||
# Scripts.
|
|
||||||
sbin_SCRIPTS = grub-install
|
|
||||||
bin_SCRIPTS = grub-mkrescue
|
|
||||||
|
|
||||||
# For grub-install.
|
|
||||||
grub_install_SOURCES = util/ieee1275/grub-install.in
|
|
||||||
|
|
||||||
# For grub-mkrescue.
|
|
||||||
grub_mkrescue_SOURCES = util/powerpc/ieee1275/grub-mkrescue.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_MODULES += ieee1275_fb.mod
|
|
||||||
ieee1275_fb_mod_SOURCES = video/ieee1275.c
|
|
||||||
ieee1275_fb_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ieee1275_fb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
pkglib_MODULES += linux.mod
|
|
||||||
linux_mod_SOURCES = loader/powerpc/ieee1275/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For suspend.mod
|
|
||||||
pkglib_MODULES += suspend.mod
|
|
||||||
suspend_mod_SOURCES = commands/ieee1275/suspend.c
|
|
||||||
suspend_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
suspend_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod
|
|
||||||
pkglib_MODULES += halt.mod
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
pkglib_MODULES += datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/ieee1275/datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,104 +0,0 @@
|
||||||
|
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_CFLAGS = -mno-app-regs
|
|
||||||
COMMON_LDFLAGS = -melf64_sparc -mno-relax
|
|
||||||
|
|
||||||
# Images.
|
|
||||||
pkglib_IMAGES = boot.img diskboot.img
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
|
|
||||||
# For boot.img.
|
|
||||||
boot_img_SOURCES = boot/sparc64/ieee1275/boot.S
|
|
||||||
boot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
boot_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-Ttext,0x4000
|
|
||||||
boot_img_FORMAT = a.out-sunos-big
|
|
||||||
|
|
||||||
# For diskboot.img.
|
|
||||||
diskboot_img_SOURCES = boot/sparc64/ieee1275/diskboot.S
|
|
||||||
diskboot_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
diskboot_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-Ttext,0x4200
|
|
||||||
diskboot_img_FORMAT = binary
|
|
||||||
|
|
||||||
kernel_img_HEADERS += ieee1275/ieee1275.h cpu/ieee1275/ieee1275.h
|
|
||||||
kernel_img_SOURCES = kern/sparc64/ieee1275/crt0.S kern/ieee1275/cmain.c \
|
|
||||||
kern/ieee1275/ieee1275.c kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/err.c kern/file.c kern/fs.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/sparc64/ieee1275/ieee1275.c \
|
|
||||||
kern/sparc64/ieee1275/init.c \
|
|
||||||
kern/ieee1275/mmap.c \
|
|
||||||
term/ieee1275/ofconsole.c \
|
|
||||||
kern/ieee1275/openfw.c term/terminfo.c term/tparm.c \
|
|
||||||
disk/ieee1275/ofdisk.c \
|
|
||||||
kern/parser.c kern/partition.c kern/env.c kern/$(target_cpu)/dl.c \
|
|
||||||
kern/generic/millisleep.c kern/time.c \
|
|
||||||
symlist.c kern/$(target_cpu)/cache.S
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += -nostdlib -Wl,-N,-Ttext,0x4400,-Bstatic,-melf64_sparc
|
|
||||||
kernel_img_FORMAT = binary
|
|
||||||
|
|
||||||
# Utilities.
|
|
||||||
sbin_UTILITIES = grub-setup grub-ofpathname
|
|
||||||
|
|
||||||
# For grub-setup.
|
|
||||||
util/sparc64/ieee1275/grub-setup.c_DEPENDENCIES = grub_setup_init.h
|
|
||||||
grub_setup_SOURCES = util/sparc64/ieee1275/grub-setup.c \
|
|
||||||
util/ieee1275/ofpath.c util/misc.c kern/emu/hostdisk.c \
|
|
||||||
kern/emu/misc.c kern/emu/getroot.c kern/emu/mm.c kern/device.c \
|
|
||||||
kern/disk.c kern/err.c kern/misc.c \
|
|
||||||
kern/partition.c kern/file.c kern/fs.c kern/env.c kern/list.c \
|
|
||||||
fs/fshelp.c \
|
|
||||||
\
|
|
||||||
fs/affs.c fs/cpio.c fs/ext2.c fs/fat.c fs/hfs.c \
|
|
||||||
fs/hfsplus.c fs/iso9660.c fs/udf.c fs/jfs.c fs/minix.c \
|
|
||||||
fs/nilfs2.c fs/ntfs.c fs/ntfscomp.c fs/reiserfs.c \
|
|
||||||
fs/sfs.c fs/ufs.c fs/ufs2.c fs/xfs.c fs/afs.c \
|
|
||||||
fs/afs_be.c fs/befs.c fs/befs_be.c fs/tar.c \
|
|
||||||
\
|
|
||||||
partmap/amiga.c partmap/apple.c partmap/msdos.c \
|
|
||||||
partmap/bsdlabel.c partmap/sun.c partmap/acorn.c \
|
|
||||||
\
|
|
||||||
disk/raid.c disk/raid5_recover.c disk/raid6_recover.c \
|
|
||||||
disk/mdraid_linux.c disk/lvm.c util/raid.c \
|
|
||||||
util/lvm.c gnulib/progname.c grub_setup_init.c
|
|
||||||
|
|
||||||
# For grub-ofpathname.
|
|
||||||
grub_ofpathname_SOURCES = util/ieee1275/grub-ofpathname.c \
|
|
||||||
util/ieee1275/ofpath.c util/misc.c kern/emu/misc.c \
|
|
||||||
gnulib/progname.c
|
|
||||||
|
|
||||||
# Scripts.
|
|
||||||
sbin_SCRIPTS = grub-install
|
|
||||||
|
|
||||||
# For grub-install.
|
|
||||||
grub_install_SOURCES = util/grub-install.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_MODULES += ieee1275_fb.mod
|
|
||||||
ieee1275_fb_mod_SOURCES = video/ieee1275.c
|
|
||||||
ieee1275_fb_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
ieee1275_fb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
pkglib_MODULES += linux.mod
|
|
||||||
linux_mod_SOURCES = loader/sparc64/ieee1275/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
pkglib_MODULES += halt.mod
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
pkglib_MODULES += datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/ieee1275/datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
102
conf/tests.rmk
102
conf/tests.rmk
|
@ -1,102 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
# For grub-shell
|
|
||||||
grub-shell: tests/util/grub-shell.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
check_SCRIPTS += grub-shell
|
|
||||||
CLEANFILES += grub-shell
|
|
||||||
|
|
||||||
# For grub-shell-tester
|
|
||||||
grub-shell-tester: tests/util/grub-shell-tester.in config.status
|
|
||||||
./config.status --file=$@:$<
|
|
||||||
chmod +x $@
|
|
||||||
check_SCRIPTS += grub-shell-tester
|
|
||||||
CLEANFILES += grub-shell-tester
|
|
||||||
|
|
||||||
pkglib_MODULES += functional_test.mod
|
|
||||||
functional_test_mod_SOURCES = tests/lib/functional_test.c tests/lib/test.c
|
|
||||||
functional_test_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
functional_test_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Rules for unit tests
|
|
||||||
check_UTILITIES += example_unit_test
|
|
||||||
example_unit_test_SOURCES = tests/example_unit_test.c kern/list.c kern/misc.c tests/lib/test.c tests/lib/unit_test.c
|
|
||||||
example_unit_test_CFLAGS = -Wno-format
|
|
||||||
|
|
||||||
# Rules for functional tests
|
|
||||||
pkglib_MODULES += example_functional_test.mod
|
|
||||||
example_functional_test_mod_SOURCES = tests/example_functional_test.c
|
|
||||||
example_functional_test_mod_CFLAGS = -Wno-format $(COMMON_CFLAGS)
|
|
||||||
example_functional_test_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# Rules for scripted tests
|
|
||||||
check_SCRIPTS += example_scripted_test
|
|
||||||
example_scripted_test_SOURCES = tests/example_scripted_test.in
|
|
||||||
|
|
||||||
check_SCRIPTS += example_grub_script_test
|
|
||||||
example_grub_script_test_SOURCES = tests/example_grub_script_test.in
|
|
||||||
|
|
||||||
#
|
|
||||||
# Rules for real tests
|
|
||||||
#
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_echo1
|
|
||||||
grub_script_echo1_SOURCES = tests/grub_script_echo1.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_echo_keywords
|
|
||||||
grub_script_echo_keywords_SOURCES = tests/grub_script_echo_keywords.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_vars1
|
|
||||||
grub_script_vars1_SOURCES = tests/grub_script_vars1.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_for1
|
|
||||||
grub_script_for1_SOURCES = tests/grub_script_for1.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_while1
|
|
||||||
grub_script_while1_SOURCES = tests/grub_script_while1.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_if
|
|
||||||
grub_script_if_SOURCES = tests/grub_script_if.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_blanklines
|
|
||||||
grub_script_blanklines_SOURCES = tests/grub_script_blanklines.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_final_semicolon
|
|
||||||
grub_script_final_semicolon_SOURCES = tests/grub_script_final_semicolon.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_dollar
|
|
||||||
grub_script_dollar_SOURCES = tests/grub_script_dollar.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_comments
|
|
||||||
grub_script_comments_SOURCES = tests/grub_script_comments.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_functions
|
|
||||||
grub_script_functions_SOURCES = tests/grub_script_functions.in
|
|
||||||
|
|
||||||
check_SCRIPTS += grub_script_expansion
|
|
||||||
grub_script_expansion_SOURCES = tests/grub_script_expansion.in
|
|
||||||
|
|
||||||
# List of tests to execute on "make check"
|
|
||||||
# SCRIPTED_TESTS = example_scripted_test
|
|
||||||
# SCRIPTED_TESTS += example_grub_script_test
|
|
||||||
# UNIT_TESTS = example_unit_test
|
|
||||||
# FUNCTIONAL_TESTS = example_functional_test.mod
|
|
||||||
|
|
||||||
SCRIPTED_TESTS = grub_script_echo1
|
|
||||||
SCRIPTED_TESTS += grub_script_echo_keywords
|
|
||||||
SCRIPTED_TESTS += grub_script_vars1
|
|
||||||
SCRIPTED_TESTS += grub_script_for1
|
|
||||||
SCRIPTED_TESTS += grub_script_while1
|
|
||||||
SCRIPTED_TESTS += grub_script_if
|
|
||||||
SCRIPTED_TESTS += grub_script_blanklines
|
|
||||||
SCRIPTED_TESTS += grub_script_final_semicolon
|
|
||||||
SCRIPTED_TESTS += grub_script_dollar
|
|
||||||
SCRIPTED_TESTS += grub_script_comments
|
|
||||||
SCRIPTED_TESTS += grub_script_functions
|
|
||||||
SCRIPTED_TESTS += grub_script_expansion
|
|
||||||
|
|
||||||
# dependencies between tests and testing-tools
|
|
||||||
$(SCRIPTED_TESTS): grub-shell grub-shell-tester
|
|
||||||
$(FUNCTIONAL_TESTS): functional_test.mod
|
|
||||||
|
|
112
conf/x86-efi.rmk
112
conf/x86-efi.rmk
|
@ -1,112 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
# Scripts.
|
|
||||||
sbin_SCRIPTS = grub-install
|
|
||||||
|
|
||||||
# For grub-install.
|
|
||||||
grub_install_SOURCES = util/i386/efi/grub-install.in
|
|
||||||
|
|
||||||
bin_SCRIPTS += grub-mkrescue
|
|
||||||
grub_mkrescue_SOURCES = util/grub-mkrescue.in
|
|
||||||
|
|
||||||
# Modules.
|
|
||||||
pkglib_PROGRAMS = kernel.img
|
|
||||||
pkglib_MODULES = chain.mod appleldr.mod \
|
|
||||||
linux.mod halt.mod \
|
|
||||||
datetime.mod loadbios.mod \
|
|
||||||
fixvideo.mod mmap.mod acpi.mod
|
|
||||||
|
|
||||||
# For kernel.img.
|
|
||||||
kernel_img_RELOCATABLE = yes
|
|
||||||
kernel_img_SOURCES = kern/$(target_cpu)/efi/startup.S kern/main.c kern/device.c \
|
|
||||||
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
|
|
||||||
kern/misc.c kern/mm.c kern/term.c \
|
|
||||||
kern/rescue_parser.c kern/rescue_reader.c \
|
|
||||||
kern/$(target_cpu)/dl.c kern/i386/efi/init.c kern/parser.c kern/partition.c \
|
|
||||||
kern/env.c symlist.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c \
|
|
||||||
term/efi/console.c disk/efi/efidisk.c \
|
|
||||||
kern/time.c kern/list.c kern/command.c kern/corecmd.c \
|
|
||||||
kern/i386/tsc.c kern/i386/pit.c \
|
|
||||||
kern/generic/rtc_get_time_ms.c \
|
|
||||||
kern/generic/millisleep.c
|
|
||||||
ifeq ($(target_cpu),x86_64)
|
|
||||||
kernel_img_SOURCES += kern/x86_64/efi/callwrap.S
|
|
||||||
endif
|
|
||||||
kernel_img_HEADERS += efi/efi.h efi/time.h efi/disk.h i386/pit.h
|
|
||||||
kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For acpi.mod.
|
|
||||||
acpi_mod_SOURCES = commands/acpi.c commands/efi/acpi.c
|
|
||||||
acpi_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
acpi_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For mmap.mod.
|
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c \
|
|
||||||
mmap/efi/mmap.c
|
|
||||||
mmap_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For chain.mod.
|
|
||||||
chain_mod_SOURCES = loader/efi/chainloader.c
|
|
||||||
chain_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
chain_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For appleldr.mod.
|
|
||||||
appleldr_mod_SOURCES = loader/efi/appleloader.c
|
|
||||||
appleldr_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
appleldr_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For linux.mod.
|
|
||||||
ifeq ($(target_cpu), x86_64)
|
|
||||||
linux_mod_SOURCES = loader/i386/efi/linux.c loader/i386/linux_trampoline.S
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
else
|
|
||||||
linux_mod_SOURCES = loader/i386/efi/linux.c
|
|
||||||
linux_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
linux_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For halt.mod.
|
|
||||||
halt_mod_SOURCES = commands/halt.c
|
|
||||||
halt_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For datetime.mod
|
|
||||||
datetime_mod_SOURCES = lib/efi/datetime.c
|
|
||||||
datetime_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For loadbios.mod
|
|
||||||
loadbios_mod_SOURCES = commands/efi/loadbios.c
|
|
||||||
loadbios_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
loadbios_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
# For fixvideo.mod
|
|
||||||
fixvideo_mod_SOURCES = commands/efi/fixvideo.c
|
|
||||||
fixvideo_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
fixvideo_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += efi_uga.mod
|
|
||||||
efi_uga_mod_SOURCES = video/efi_uga.c
|
|
||||||
efi_uga_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
efi_uga_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += efi_gop.mod
|
|
||||||
efi_gop_mod_SOURCES = video/efi_gop.c
|
|
||||||
efi_gop_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
efi_gop_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
|
|
||||||
pkglib_MODULES += xnu.mod
|
|
||||||
xnu_mod_SOURCES = loader/xnu_resume.c loader/i386/xnu.c \
|
|
||||||
loader/macho32.c loader/macho64.c loader/macho.c loader/xnu.c
|
|
||||||
xnu_mod_CFLAGS = $(COMMON_CFLAGS)
|
|
||||||
xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
|
||||||
xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
|
||||||
|
|
||||||
include $(srcdir)/conf/i386.mk
|
|
||||||
include $(srcdir)/conf/common.mk
|
|
|
@ -1,5 +0,0 @@
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
COMMON_LDFLAGS = -melf_x86_64
|
|
||||||
|
|
||||||
include $(srcdir)/conf/x86-efi.mk
|
|
257
configure.ac
257
configure.ac
|
@ -1,3 +1,5 @@
|
||||||
|
# -*- autoconf -*-
|
||||||
|
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
# Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
|
# Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
|
||||||
|
@ -30,17 +32,20 @@ dnl type, so there is no conflict. Variables with the prefix "TARGET_"
|
||||||
dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
|
dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
|
||||||
dnl type.
|
dnl type.
|
||||||
|
|
||||||
|
|
||||||
AC_INIT([GRUB],[1.98],[bug-grub@gnu.org])
|
AC_INIT([GRUB],[1.98],[bug-grub@gnu.org])
|
||||||
AM_INIT_AUTOMAKE()
|
|
||||||
AC_PREREQ(2.60)
|
# We don't want -g -O2 by default in CFLAGS
|
||||||
AC_CONFIG_SRCDIR([include/grub/dl.h])
|
: ${CFLAGS=""}
|
||||||
AC_CONFIG_HEADER([config.h])
|
|
||||||
|
|
||||||
# Checks for host and target systems.
|
# Checks for host and target systems.
|
||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
AC_CANONICAL_TARGET
|
AC_CANONICAL_TARGET
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE()
|
||||||
|
AC_PREREQ(2.60)
|
||||||
|
AC_CONFIG_SRCDIR([include/grub/dl.h])
|
||||||
|
AC_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
# Program name transformations
|
# Program name transformations
|
||||||
AC_ARG_PROGRAM
|
AC_ARG_PROGRAM
|
||||||
|
|
||||||
|
@ -49,19 +54,28 @@ if test "x$TARGET_CFLAGS" = x; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -Os"
|
TARGET_CFLAGS="$TARGET_CFLAGS -Os"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Default HOST_CPPFLAGS
|
||||||
|
HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
|
||||||
|
HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
|
||||||
|
HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_UTIL=1"
|
||||||
|
HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_LIBDIR=\\\"\$(pkglibdir)\\\""
|
||||||
|
HOST_CPPFLAGS="$HOST_CPPFLAGS -DLOCALEDIR=\\\"\$(localedir)\\\""
|
||||||
|
|
||||||
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -Wall -W"
|
||||||
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
|
||||||
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
|
||||||
|
|
||||||
case "$target_cpu" in
|
case "$target_cpu" in
|
||||||
i[[3456]]86) target_cpu=i386 ;;
|
i[[3456]]86) target_cpu=i386 ;;
|
||||||
amd64) target_cpu=x86_64 ;;
|
amd64) target_cpu=x86_64 ;;
|
||||||
sparc) target_cpu=sparc64 ;;
|
sparc) target_cpu=sparc64 ;;
|
||||||
mipsel|mips64el)
|
mipsel|mips64el)
|
||||||
target_cpu=mips;
|
target_cpu=mips;
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -DGRUB_CPU_MIPSEL=1";
|
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
|
||||||
CFLAGS="$CFLAGS -DGRUB_CPU_MIPSEL=1";
|
|
||||||
;;
|
;;
|
||||||
mips|mips64)
|
mips|mips64)
|
||||||
target_cpu=mips;
|
target_cpu=mips;
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -DGRUB_CPU_MIPS=1";
|
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
|
||||||
CFLAGS="$CFLAGS -DGRUB_CPU_MIPS=1";
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -136,25 +150,24 @@ case "$host_os" in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$platform" in
|
case "$platform" in
|
||||||
coreboot) machine_CFLAGS="-DGRUB_MACHINE_COREBOOT=1" ;;
|
coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
|
||||||
multiboot) machine_CFLAGS="-DGRUB_MACHINE_MULTIBOOT=1" ;;
|
multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
|
||||||
efi) machine_CFLAGS="-DGRUB_MACHINE_EFI=1" ;;
|
efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
|
||||||
ieee1275) machine_CFLAGS="-DGRUB_MACHINE_IEEE1275=1" ;;
|
ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
|
||||||
qemu) machine_CFLAGS="-DGRUB_MACHINE_QEMU=1" ;;
|
qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
|
||||||
pc) machine_CFLAGS="-DGRUB_MACHINE_PCBIOS=1" ;;
|
pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
|
||||||
emu) machine_CFLAGS="-DGRUB_MACHINE_EMU=1" ;;
|
emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
|
||||||
yeeloong) machine_CFLAGS="-DGRUB_MACHINE_MIPS_YEELOONG=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
|
yeeloong) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_YEELOONG=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
|
||||||
qemu-mips) machine_CFLAGS="-DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
|
qemu-mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
|
||||||
esac
|
esac
|
||||||
case "$target_cpu" in
|
case "$target_cpu" in
|
||||||
mips) machine_CFLAGS="$machine_CFLAGS -DGRUB_MACHINE_MIPS=1" ;;
|
mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
|
||||||
sparc64) machine_CFLAGS="$machine_CFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
|
sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
|
||||||
esac
|
esac
|
||||||
machine_CFLAGS="$machine_CFLAGS -DMACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
|
machine_CPPFLAGS="$machine_CPPFLAGS -DMACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
|
||||||
|
|
||||||
CFLAGS="$CFLAGS $machine_CFLAGS"
|
HOST_CPPFLAGS="$HOST_CPPFLAGS $machine_CPPFLAGS"
|
||||||
TARGET_ASFLAGS="$TARGET_ASFLAGS $machine_CFLAGS"
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS $machine_CFLAGS"
|
|
||||||
|
|
||||||
AC_SUBST(host_cpu)
|
AC_SUBST(host_cpu)
|
||||||
AC_SUBST(host_os)
|
AC_SUBST(host_os)
|
||||||
|
@ -196,9 +209,11 @@ fi
|
||||||
|
|
||||||
AC_SUBST([FONT_SOURCE])
|
AC_SUBST([FONT_SOURCE])
|
||||||
|
|
||||||
|
AC_PROG_RANLIB
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_AWK
|
AC_PROG_AWK
|
||||||
AC_PROG_LEX
|
AC_PROG_LEX
|
||||||
|
AC_PROG_YACC
|
||||||
AC_PROG_MAKE_SET
|
AC_PROG_MAKE_SET
|
||||||
AC_PROG_MKDIR_P
|
AC_PROG_MKDIR_P
|
||||||
|
|
||||||
|
@ -214,7 +229,6 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# These are not a "must".
|
# These are not a "must".
|
||||||
AC_PATH_PROG(RUBY, ruby)
|
|
||||||
AC_PATH_PROG(MAKEINFO, makeinfo)
|
AC_PATH_PROG(MAKEINFO, makeinfo)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -222,6 +236,9 @@ AC_PATH_PROG(MAKEINFO, makeinfo)
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
AM_PROG_AS
|
||||||
|
|
||||||
# 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])
|
||||||
|
|
||||||
|
@ -236,8 +253,8 @@ AC_CHECK_SIZEOF(long)
|
||||||
|
|
||||||
grub_apple_cc
|
grub_apple_cc
|
||||||
if test x$grub_cv_apple_cc = xyes ; then
|
if test x$grub_cv_apple_cc = xyes ; then
|
||||||
CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
|
HOST_CPPFLAGS="$HOST_CPPFLAGS -DAPPLE_CC=1"
|
||||||
ASFLAGS="$ASFLAGS -DAPPLE_CC=1"
|
HOST_CFLAGS="$HOST_CFLAGS -fnested-functions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$cross_compiling" = xyes; then
|
if test "x$cross_compiling" = xyes; then
|
||||||
|
@ -246,15 +263,9 @@ else
|
||||||
AC_PATH_PROG(HELP2MAN, help2man)
|
AC_PATH_PROG(HELP2MAN, help2man)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for functions.
|
# Check for functions and headers.
|
||||||
AC_CHECK_FUNCS(posix_memalign memalign asprintf vasprintf)
|
AC_CHECK_FUNCS(posix_memalign memalign asprintf vasprintf)
|
||||||
|
AC_CHECK_HEADERS(libzfs.h libnvpair.h sys/param.h sys/mount.h)
|
||||||
# For grub-mkisofs
|
|
||||||
AC_HEADER_MAJOR
|
|
||||||
AC_HEADER_DIRENT
|
|
||||||
AC_CHECK_FUNCS(memmove sbrk strdup lstat getuid getgid)
|
|
||||||
AC_CHECK_HEADERS(sys/mkdev.h sys/sysmacros.h malloc.h termios.h sys/types.h)
|
|
||||||
AC_CHECK_HEADERS(unistd.h string.h strings.h sys/stat.h sys/fcntl.h limits.h)
|
|
||||||
|
|
||||||
# For opendisk() and getrawpartition() on NetBSD.
|
# For opendisk() and getrawpartition() on NetBSD.
|
||||||
# Used in util/deviceiter.c and in util/hostdisk.c.
|
# Used in util/deviceiter.c and in util/hostdisk.c.
|
||||||
|
@ -270,6 +281,13 @@ AC_CHECK_HEADER([util.h], [
|
||||||
])
|
])
|
||||||
AC_SUBST([LIBUTIL])
|
AC_SUBST([LIBUTIL])
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check for host and build compilers.
|
||||||
|
#
|
||||||
|
HOST_CC=$CC
|
||||||
|
AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc],
|
||||||
|
[AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])])
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for target programs.
|
# Check for target programs.
|
||||||
#
|
#
|
||||||
|
@ -294,9 +312,10 @@ else
|
||||||
AC_CHECK_TOOL(STRIP, strip)
|
AC_CHECK_TOOL(STRIP, strip)
|
||||||
AC_CHECK_TOOL(NM, nm)
|
AC_CHECK_TOOL(NM, nm)
|
||||||
fi
|
fi
|
||||||
|
AC_SUBST(HOST_CC)
|
||||||
|
AC_SUBST(BUILD_CC)
|
||||||
AC_SUBST(TARGET_CC)
|
AC_SUBST(TARGET_CC)
|
||||||
|
|
||||||
|
|
||||||
# Test the C compiler for the target environment.
|
# Test the C compiler for the target environment.
|
||||||
tmp_CC="$CC"
|
tmp_CC="$CC"
|
||||||
tmp_CFLAGS="$CFLAGS"
|
tmp_CFLAGS="$CFLAGS"
|
||||||
|
@ -310,8 +329,8 @@ LDFLAGS="$TARGET_LDFLAGS"
|
||||||
LIBS=""
|
LIBS=""
|
||||||
|
|
||||||
# debug flags.
|
# debug flags.
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes \
|
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g"
|
||||||
-Wundef -Wstrict-prototypes -g"
|
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
|
||||||
|
|
||||||
# Force no alignment to save space on i386.
|
# Force no alignment to save space on i386.
|
||||||
if test "x$target_cpu" = xi386; then
|
if test "x$target_cpu" = xi386; then
|
||||||
|
@ -352,9 +371,10 @@ fi
|
||||||
|
|
||||||
grub_apple_target_cc
|
grub_apple_target_cc
|
||||||
if test x$grub_cv_apple_target_cc = xyes ; then
|
if test x$grub_cv_apple_target_cc = xyes ; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -DAPPLE_CC=1 -fnested-functions"
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -DAPPLE_CC=1"
|
||||||
|
TARGET_CFLAGS="$TARGET_CFLAGS -fnested-functions"
|
||||||
|
|
||||||
CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
|
CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
|
||||||
TARGET_ASFLAGS="$TARGET_ASFLAGS -DAPPLE_CC=1"
|
|
||||||
TARGET_APPLE_CC=1
|
TARGET_APPLE_CC=1
|
||||||
AC_CHECK_PROG([OBJCONV], [objconv], [objconv], [])
|
AC_CHECK_PROG([OBJCONV], [objconv], [objconv], [])
|
||||||
if test "x$OBJCONV" = x ; then
|
if test "x$OBJCONV" = x ; then
|
||||||
|
@ -365,45 +385,42 @@ if test x$grub_cv_apple_target_cc = xyes ; then
|
||||||
fi
|
fi
|
||||||
TARGET_IMG_LDSCRIPT=
|
TARGET_IMG_LDSCRIPT=
|
||||||
TARGET_IMG_CFLAGS="-static"
|
TARGET_IMG_CFLAGS="-static"
|
||||||
TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20 -Wl,-image_base,'
|
TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
|
||||||
TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20 -Wl,-image_base,'
|
TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
|
||||||
|
TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
|
||||||
else
|
else
|
||||||
TARGET_APPLE_CC=0
|
TARGET_APPLE_CC=0
|
||||||
# Use linker script if present, otherwise use builtin -N script.
|
# Use linker script if present, otherwise use builtin -N script.
|
||||||
if test -f "${srcdir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"; then
|
if test -f "${srcdir}/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"; then
|
||||||
TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
|
TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
|
||||||
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT} -Wl,-Ttext,"
|
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
|
||||||
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc -Wl,-Ttext,"
|
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
|
||||||
|
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
|
||||||
else
|
else
|
||||||
TARGET_IMG_LDSCRIPT=
|
TARGET_IMG_LDSCRIPT=
|
||||||
TARGET_IMG_LDFLAGS='-Wl,-N -Wl,-Ttext,'
|
TARGET_IMG_LDFLAGS='-Wl,-N'
|
||||||
TARGET_IMG_LDFLAGS_AC='-Wl,-N -Wl,-Ttext,'
|
TARGET_IMG_LDFLAGS_AC='-Wl,-N'
|
||||||
|
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
|
||||||
fi
|
fi
|
||||||
TARGET_IMG_CFLAGS=
|
TARGET_IMG_CFLAGS=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(TARGET_IMG_LDSCRIPT)
|
|
||||||
AC_SUBST(TARGET_IMG_LDFLAGS)
|
|
||||||
AC_SUBST(TARGET_IMG_CFLAGS)
|
|
||||||
|
|
||||||
# For platforms where ELF is not the default link format.
|
# For platforms where ELF is not the default link format.
|
||||||
AC_MSG_CHECKING([for command to convert module to ELF format])
|
AC_MSG_CHECKING([for command to convert module to ELF format])
|
||||||
case "${host_os}" in
|
case "${host_os}" in
|
||||||
cygwin) TARGET_OBJ2ELF='grub-pe2elf';
|
cygwin) TARGET_OBJ2ELF='$(grub_utildir)/grub-pe2elf';
|
||||||
# FIXME: put proper test here
|
# FIXME: put proper test here
|
||||||
AC_DEFINE([NEED_REGISTER_FRAME_INFO], 1,
|
AC_DEFINE([NEED_REGISTER_FRAME_INFO], 1,
|
||||||
[Define to 1 if GCC generates calls to __register_frame_info()])
|
[Define to 1 if GCC generates calls to __register_frame_info()])
|
||||||
;;
|
;;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
AC_SUBST(TARGET_OBJ2ELF)
|
|
||||||
AC_MSG_RESULT([$TARGET_OBJ2ELF])
|
AC_MSG_RESULT([$TARGET_OBJ2ELF])
|
||||||
|
|
||||||
|
|
||||||
if test "x$target_m32" = x1; then
|
if test "x$target_m32" = x1; then
|
||||||
# Force 32-bit mode.
|
# Force 32-bit mode.
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -m32"
|
TARGET_CFLAGS="$TARGET_CFLAGS -m32"
|
||||||
TARGET_ASFLAGS="$TARGET_CFLAGS -m32"
|
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
|
||||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
|
||||||
TARGET_MODULE_FORMAT="elf32"
|
TARGET_MODULE_FORMAT="elf32"
|
||||||
fi
|
fi
|
||||||
|
@ -411,7 +428,7 @@ fi
|
||||||
if test "x$target_m64" = x1; then
|
if test "x$target_m64" = x1; then
|
||||||
# Force 64-bit mode.
|
# Force 64-bit mode.
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -m64"
|
TARGET_CFLAGS="$TARGET_CFLAGS -m64"
|
||||||
TARGET_ASFLAGS="$TARGET_ASFLAGS -m64"
|
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
|
||||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
|
||||||
TARGET_MODULE_FORMAT="elf64"
|
TARGET_MODULE_FORMAT="elf64"
|
||||||
fi
|
fi
|
||||||
|
@ -481,13 +498,30 @@ if test x"$enable_werror" != xno ; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
|
TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(TARGET_CFLAGS)
|
TARGET_CPP="$TARGET_CC -E"
|
||||||
AC_SUBST(TARGET_MODULE_FORMAT)
|
TARGET_CCAS=$TARGET_CC
|
||||||
|
|
||||||
AC_SUBST(OBJCONV)
|
AC_SUBST(OBJCONV)
|
||||||
|
AC_SUBST(TARGET_CPP)
|
||||||
|
AC_SUBST(TARGET_CCAS)
|
||||||
|
AC_SUBST(TARGET_OBJ2ELF)
|
||||||
AC_SUBST(TARGET_APPLE_CC)
|
AC_SUBST(TARGET_APPLE_CC)
|
||||||
AC_SUBST(TARGET_ASFLAGS)
|
AC_SUBST(TARGET_MODULE_FORMAT)
|
||||||
AC_SUBST(TARGET_CPPFLAGS)
|
|
||||||
|
AC_SUBST(TARGET_CFLAGS)
|
||||||
AC_SUBST(TARGET_LDFLAGS)
|
AC_SUBST(TARGET_LDFLAGS)
|
||||||
|
AC_SUBST(TARGET_CPPFLAGS)
|
||||||
|
AC_SUBST(TARGET_CCASFLAGS)
|
||||||
|
|
||||||
|
AC_SUBST(TARGET_IMG_LDSCRIPT)
|
||||||
|
AC_SUBST(TARGET_IMG_LDFLAGS)
|
||||||
|
AC_SUBST(TARGET_IMG_CFLAGS)
|
||||||
|
AC_SUBST(TARGET_IMG_BASE_LDOPT)
|
||||||
|
|
||||||
|
AC_SUBST(HOST_CFLAGS)
|
||||||
|
AC_SUBST(HOST_LDFLAGS)
|
||||||
|
AC_SUBST(HOST_CPPFLAGS)
|
||||||
|
AC_SUBST(HOST_CCASFLAGS)
|
||||||
|
|
||||||
# Set them to their new values for the tests below.
|
# Set them to their new values for the tests below.
|
||||||
CC="$TARGET_CC"
|
CC="$TARGET_CC"
|
||||||
|
@ -527,7 +561,7 @@ if test "x$target_cpu" = xi386; then
|
||||||
if test "$platform" != emu && test "x$TARGET_APPLE_CC" != x1 ; then
|
if test "$platform" != emu && test "x$TARGET_APPLE_CC" != x1 ; then
|
||||||
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
|
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
|
||||||
# Check symbols provided by linker script.
|
# Check symbols provided by linker script.
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC}8000 -Wl,--defsym,___main=0x8100"
|
CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},8000 -Wl,--defsym,___main=0x8100"
|
||||||
fi
|
fi
|
||||||
grub_CHECK_BSS_START_SYMBOL
|
grub_CHECK_BSS_START_SYMBOL
|
||||||
grub_CHECK_END_SYMBOL
|
grub_CHECK_END_SYMBOL
|
||||||
|
@ -619,10 +653,6 @@ AC_ARG_ENABLE([grub-emu-pci],
|
||||||
[AS_HELP_STRING([--enable-grub-emu-pci],
|
[AS_HELP_STRING([--enable-grub-emu-pci],
|
||||||
[build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
|
[build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
|
||||||
|
|
||||||
AC_ARG_ENABLE([grub-emu-modules],
|
|
||||||
[AS_HELP_STRING([--enable-grub-emu-modules],
|
|
||||||
[Support module loading in `grub-emu' debugging utility (default=no)])])
|
|
||||||
|
|
||||||
if test "$platform" = emu; then
|
if test "$platform" = emu; then
|
||||||
missing_ncurses=
|
missing_ncurses=
|
||||||
[# Check for curses libraries.]
|
[# Check for curses libraries.]
|
||||||
|
@ -641,19 +671,6 @@ if test x"$missing_ncurses" = xtrue ; then
|
||||||
AC_MSG_ERROR([grub-emu can't be compiled without ncurses])
|
AC_MSG_ERROR([grub-emu can't be compiled without ncurses])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x"$enable_grub_emu_modules" = xyes ; then
|
|
||||||
TARGET_NO_MODULES=no
|
|
||||||
else
|
|
||||||
TARGET_NO_MODULES=yes
|
|
||||||
fi
|
|
||||||
AC_SUBST(TARGET_NO_MODULES)
|
|
||||||
|
|
||||||
if test "$TARGET_NO_MODULES" = yes ; then
|
|
||||||
# Do not convert modules, otherwise linkage may fail (Cygwin only).
|
|
||||||
# FIXME: Should be checked above before TARGET_OBJ2ELF is set first.
|
|
||||||
TARGET_OBJ2ELF=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x"$enable_grub_emu_usb" = xno ; then
|
if test x"$enable_grub_emu_usb" = xno ; then
|
||||||
grub_emu_usb_excuse="explicitly disabled"
|
grub_emu_usb_excuse="explicitly disabled"
|
||||||
fi
|
fi
|
||||||
|
@ -800,13 +817,79 @@ fi
|
||||||
if test x"$device_mapper_excuse" = x ; then
|
if test x"$device_mapper_excuse" = x ; then
|
||||||
# Check for device-mapper library.
|
# Check for device-mapper library.
|
||||||
AC_CHECK_LIB([devmapper], [dm_task_create],
|
AC_CHECK_LIB([devmapper], [dm_task_create],
|
||||||
[LDFLAGS="$LDFLAGS -ldevmapper"
|
[LIBDEVMAPPER="-ldevmapper"
|
||||||
AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
|
AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
|
||||||
[Define to 1 if you have the devmapper library.])],
|
[Define to 1 if you have the devmapper library.])],
|
||||||
[device_mapper_excuse="need devmapper library"])
|
[device_mapper_excuse="need devmapper library"])
|
||||||
fi
|
fi
|
||||||
|
AC_SUBST([LIBDEVMAPPER])
|
||||||
|
|
||||||
AC_SUBST(ASFLAGS)
|
AC_CHECK_LIB([zfs], [libzfs_init],
|
||||||
|
[LIBZFS="-lzfs"
|
||||||
|
AC_DEFINE([HAVE_LIBZFS], [1],
|
||||||
|
[Define to 1 if you have the ZFS library.])],)
|
||||||
|
AC_SUBST([LIBZFS])
|
||||||
|
|
||||||
|
AC_CHECK_LIB([nvpair], [nvlist_print],
|
||||||
|
[LIBNVPAIR="-lnvpair"
|
||||||
|
AC_DEFINE([HAVE_LIBNVPAIR], [1],
|
||||||
|
[Define to 1 if you have the NVPAIR library.])],)
|
||||||
|
AC_SUBST([LIBNVPAIR])
|
||||||
|
|
||||||
|
pkglibrootdir='$(libdir)'/`echo $PACKAGE | sed "$program_transform_name"`
|
||||||
|
AC_SUBST(pkglibrootdir)
|
||||||
|
|
||||||
|
AC_SUBST([FONT_SOURCE])
|
||||||
|
AS_IF([test x$target_cpu = xi386 -a x$platform = xpc],
|
||||||
|
[AC_SUBST([GRUB_KERNEL_MACHINE_LINK_ADDR], 0x8200)])
|
||||||
|
AS_IF([test x$target_cpu = xi386 -a x$platform = xcoreboot],
|
||||||
|
[AC_SUBST([GRUB_KERNEL_MACHINE_LINK_ADDR], 0x8200)])
|
||||||
|
AS_IF([test x$target_cpu = xi386 -a x$platform = xmultiboot],
|
||||||
|
[AC_SUBST([GRUB_KERNEL_MACHINE_LINK_ADDR], 0x8200)])
|
||||||
|
AS_IF([test x$target_cpu = xmips -a x$platform = xyeeloong],
|
||||||
|
[AC_SUBST([GRUB_KERNEL_MACHINE_LINK_ADDR], 0x80200000)])
|
||||||
|
AS_IF([test x$target_cpu = xpowerpc -a x$platform = xieee1275],
|
||||||
|
[AC_SUBST([GRUB_KERNEL_MACHINE_LINK_ADDR], 0x200000)])
|
||||||
|
AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
|
||||||
|
[AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
|
||||||
|
AS_IF([test x$target_cpu = xi386 -a x$platform = xieee1275],
|
||||||
|
[AC_SUBST([GRUB_KERNEL_MACHINE_LINK_ADDR], 0x10000)])
|
||||||
|
AS_IF([test x$TARGET_APPLE_CC = x1],
|
||||||
|
[AC_SUBST([USE_APPLE_CC_FIXES], yes)])
|
||||||
|
|
||||||
|
#
|
||||||
|
# Automake conditionals
|
||||||
|
#
|
||||||
|
|
||||||
|
AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
|
||||||
|
AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
|
||||||
|
AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
|
||||||
|
AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
|
||||||
|
AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
|
||||||
|
AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
|
||||||
|
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_mips_yeeloong], [test x$target_cpu = xmips -a x$platform = xyeeloong])
|
||||||
|
AM_CONDITIONAL([COND_mips_qemu_mips], [test x$target_cpu = xmips -a x$platform = xqemu_mips])
|
||||||
|
AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
|
||||||
|
AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
|
||||||
|
|
||||||
|
AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
|
||||||
|
AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
|
||||||
|
AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
|
||||||
|
AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
|
||||||
|
AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
|
||||||
|
|
||||||
|
AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
|
||||||
|
AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
|
||||||
|
AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
|
||||||
|
AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
|
||||||
|
AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
|
||||||
|
AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
|
||||||
|
AM_CONDITIONAL([COND_GRUB_FSTEST], [test x$enable_grub_fstest = xyes])
|
||||||
|
AM_CONDITIONAL([COND_GRUB_PE2ELF], [test x$TARGET_OBJ2ELF != x])
|
||||||
|
AM_CONDITIONAL([COND_APPLE_CC], [test x$TARGET_APPLE_CC = x1])
|
||||||
|
AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
|
||||||
|
|
||||||
# Output files.
|
# Output files.
|
||||||
grub_CHECK_LINK_DIR
|
grub_CHECK_LINK_DIR
|
||||||
|
@ -824,8 +907,13 @@ else
|
||||||
cp -rp $srcdir/include/grub/$target_cpu/$platform include/grub/machine 2>/dev/null
|
cp -rp $srcdir/include/grub/$target_cpu/$platform include/grub/machine 2>/dev/null
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
AC_CONFIG_FILES([Makefile gensymlist.sh genkernsyms.sh])
|
|
||||||
|
AC_CONFIG_FILES([Makefile])
|
||||||
|
AC_CONFIG_FILES([grub-core/Makefile])
|
||||||
|
AC_CONFIG_FILES([po/Makefile])
|
||||||
|
AC_CONFIG_FILES([docs/Makefile])
|
||||||
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
|
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
[
|
[
|
||||||
echo "*******************************************************"
|
echo "*******************************************************"
|
||||||
|
@ -847,11 +935,6 @@ echo PCI support for grub-emu: Yes
|
||||||
else
|
else
|
||||||
echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
|
echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
|
||||||
fi
|
fi
|
||||||
if [ x"$TARGET_NO_MODULES" = xno ]; then
|
|
||||||
echo Module support for grub-emu: Yes
|
|
||||||
else
|
|
||||||
echo Module support for grub-emu: No
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if [ x"$enable_mm_debug" = xyes ]; then
|
if [ x"$enable_mm_debug" = xyes ]; then
|
||||||
echo With memory debugging: Yes
|
echo With memory debugging: Yes
|
||||||
|
|
7
docs/Makefile.am
Normal file
7
docs/Makefile.am
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
AUTOMAKE_OPTIONS = subdir-objects
|
||||||
|
|
||||||
|
# AM_MAKEINFOFLAGS = --no-split --no-validate
|
||||||
|
info_TEXINFOS = grub.texi
|
||||||
|
grub_TEXINFOS = fdl.texi
|
||||||
|
|
||||||
|
|
356
docs/grub.texi
356
docs/grub.texi
|
@ -828,11 +828,30 @@ Since GNU/Hurd is Multiboot-compliant, it is easy to boot it; there is
|
||||||
nothing special about it. But do not forget that you have to specify a
|
nothing special about it. But do not forget that you have to specify a
|
||||||
root partition to the kernel.
|
root partition to the kernel.
|
||||||
|
|
||||||
FIXME: this section is incomplete.
|
|
||||||
|
|
||||||
@enumerate
|
@enumerate
|
||||||
@item
|
@item
|
||||||
Run the command @command{boot} (@pxref{boot}).
|
Set GRUB's root device to the same drive as GNU/Hurd's. The command
|
||||||
|
@code{search --file --set /boot/gnumach.gz} or similar may help you
|
||||||
|
(@pxref{search}).
|
||||||
|
|
||||||
|
@item
|
||||||
|
Load the kernel and the modules, like this:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@group
|
||||||
|
grub> @kbd{multiboot /boot/gnumach.gz root=device:hd0s1}
|
||||||
|
grub> @kbd{module /hurd/ext2fs.static ext2fs --readonly \
|
||||||
|
--multiboot-command-line='$@{kernel-command-line@}' \
|
||||||
|
--host-priv-port='$@{host-port@}' \
|
||||||
|
--device-master-port='$@{device-port@}' \
|
||||||
|
--exec-server-task='$@{exec-task@}' -T typed '$@{root@}' \
|
||||||
|
'$(task-create)' '$(task-resume)'}
|
||||||
|
grub> @kbd{module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'}
|
||||||
|
@end group
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@item
|
||||||
|
Finally, run the command @command{boot} (@pxref{boot}).
|
||||||
@end enumerate
|
@end enumerate
|
||||||
|
|
||||||
|
|
||||||
|
@ -1062,6 +1081,11 @@ only to the default menu entry, after those listed in
|
||||||
As @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT}, but for
|
As @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT}, but for
|
||||||
NetBSD.
|
NetBSD.
|
||||||
|
|
||||||
|
@item GRUB_CMDLINE_XEN
|
||||||
|
@itemx GRUB_CMDLINE_XEN_DEFAULT
|
||||||
|
As @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT}, but for
|
||||||
|
Linux and Xen.
|
||||||
|
|
||||||
@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
|
||||||
|
@ -1113,8 +1137,8 @@ try several modes in sequence.
|
||||||
Depending on your kernel, your distribution, your graphics card, and the
|
Depending on your kernel, your distribution, your graphics card, and the
|
||||||
phase of the moon, note that using this option may cause GNU/Linux to suffer
|
phase of the moon, note that using this option may cause GNU/Linux to suffer
|
||||||
from various display problems, particularly during the early part of the
|
from various display problems, particularly during the early part of the
|
||||||
boot sequence. If you have problems, simply unset this option and GRUB will
|
boot sequence. If you have problems, set this option to @samp{text} and
|
||||||
tell Linux to boot in normal text mode.
|
GRUB will tell Linux to boot in normal text mode.
|
||||||
|
|
||||||
@item GRUB_DISABLE_OS_PROBER
|
@item GRUB_DISABLE_OS_PROBER
|
||||||
Normally, @command{grub-mkconfig} will try to use the external
|
Normally, @command{grub-mkconfig} will try to use the external
|
||||||
|
@ -1143,6 +1167,142 @@ that file, making sure to leave at least the first two lines intact.
|
||||||
@node Shell-like scripting
|
@node Shell-like scripting
|
||||||
@section Writing full configuration files directly
|
@section Writing full configuration files directly
|
||||||
|
|
||||||
|
@c Some of this section is derived from the GNU Bash manual page, also
|
||||||
|
@c copyrighted by the FSF.
|
||||||
|
|
||||||
|
@file{grub.cfg} is written in GRUB's built-in scripting language, which has
|
||||||
|
a syntax quite similar to that of GNU Bash and other Bourne shell
|
||||||
|
derivatives.
|
||||||
|
|
||||||
|
@heading Words
|
||||||
|
|
||||||
|
A @dfn{word} is a sequence of characters considered as a single unit by
|
||||||
|
GRUB. Words are separated by @dfn{metacharacters}, which are the following
|
||||||
|
plus space, tab, and newline:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@{ @} | & $ ; < >
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Quoting may be used to include metacharacters in words; see below.
|
||||||
|
|
||||||
|
@heading Reserved words
|
||||||
|
|
||||||
|
Reserved words have a special meaning to GRUB. The following words are
|
||||||
|
recognised as reserved when unquoted and either the first word of a simple
|
||||||
|
command or the third word of a @code{for} command:
|
||||||
|
|
||||||
|
@example
|
||||||
|
! [[ ]] @{ @}
|
||||||
|
case do done elif else esac fi for function
|
||||||
|
if in menuentry select then time until while
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Not all of these reserved words have a useful purpose yet; some are reserved
|
||||||
|
for future expansion.
|
||||||
|
|
||||||
|
@heading Quoting
|
||||||
|
|
||||||
|
Quoting is used to remove the special meaning of certain characters or
|
||||||
|
words. It can be used to treat metacharacters as part of a word, to prevent
|
||||||
|
reserved words from being recognised as such, and to prevent variable
|
||||||
|
expansion.
|
||||||
|
|
||||||
|
There are three quoting mechanisms: the escape character, single quotes, and
|
||||||
|
double quotes.
|
||||||
|
|
||||||
|
A non-quoted backslash (\) is the @dfn{escape character}. It preserves the
|
||||||
|
literal value of the next character that follows, with the exception of
|
||||||
|
newline.
|
||||||
|
|
||||||
|
Enclosing characters in single quotes preserves the literal value of each
|
||||||
|
character within the quotes. A single quote may not occur between single
|
||||||
|
quotes, even when preceded by a backslash.
|
||||||
|
|
||||||
|
Enclosing characters in double quotes preserves the literal value of all
|
||||||
|
characters within the quotes, with the exception of @samp{$} and @samp{\}.
|
||||||
|
The @samp{$} character retains its special meaning within double quotes.
|
||||||
|
The backslash retains its special meaning only when followed by one of the
|
||||||
|
following characters: @samp{$}, @samp{"}, @samp{\}, or newline. A
|
||||||
|
backslash-newline pair is treated as a line continuation (that is, it is
|
||||||
|
removed from the input stream and effectively ignored). A double quote may
|
||||||
|
be quoted within double quotes by preceding it with a backslash.
|
||||||
|
|
||||||
|
@heading Variable expansion
|
||||||
|
|
||||||
|
The @samp{$} character introduces variable expansion. The variable name to
|
||||||
|
be expanded may be enclosed in braces, which are optional but serve to
|
||||||
|
protect the variable to be expanded from characters immediately following it
|
||||||
|
which could be interpreted as part of the name.
|
||||||
|
|
||||||
|
Normal variable names begin with an alphabetic character, followed by zero
|
||||||
|
or more alphanumeric characters.
|
||||||
|
|
||||||
|
Positional variable names consist of one or more digits. These are reserved
|
||||||
|
for future expansion.
|
||||||
|
|
||||||
|
The special variable name @samp{?} expands to the exit status of the most
|
||||||
|
recently executed command.
|
||||||
|
|
||||||
|
@heading Comments
|
||||||
|
|
||||||
|
A word beginning with @samp{#} causes that word and all remaining characters
|
||||||
|
on that line to be ignored.
|
||||||
|
|
||||||
|
@heading Simple commands
|
||||||
|
|
||||||
|
A @dfn{simple command} is a sequence of words separated by spaces or tabs
|
||||||
|
and terminated by a semicolon or a newline. The first word specifies the
|
||||||
|
command to be executed. The remaining words are passed as arguments to the
|
||||||
|
invoked command.
|
||||||
|
|
||||||
|
The return value of a simple command is its exit status.
|
||||||
|
|
||||||
|
@heading Compound commands
|
||||||
|
|
||||||
|
A @dfn{compound command} is one of the following:
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
@item for @var{name} in @var{word} @dots{}; do @var{list}; done
|
||||||
|
The list of words following @code{in} is expanded, generating a list of
|
||||||
|
items. The variable @var{name} is set to each element of this list in turn,
|
||||||
|
and @var{list} is executed each time. The return value is the exit status
|
||||||
|
of the last command that executes. If the expansion of the items following
|
||||||
|
@code{in} results in an empty list, no commands are executed, and the return
|
||||||
|
status is 0.
|
||||||
|
|
||||||
|
@item if @var{list}; then @var{list}; [elif @var{list}; then @var{list};] @dots{} [else @var{list};] fi
|
||||||
|
The @code{if} @var{list} is executed. If its exit status is zero, the
|
||||||
|
@code{then} @var{list} is executed. Otherwise, each @code{elif} @var{list}
|
||||||
|
is executed in turn, and if its exit status is zero, the corresponding
|
||||||
|
@code{then} @var{list} is executed and the command completes. Otherwise,
|
||||||
|
the @code{else} @var{list} is executed, if present. The exit status is the
|
||||||
|
exit status of the last command executed, or zero if no condition tested
|
||||||
|
true.
|
||||||
|
|
||||||
|
@item while @var{cond}; do @var{list}; done
|
||||||
|
@itemx until @var{cond}; do @var{list}; done
|
||||||
|
The @code{while} command continuously executes the @code{do} @var{list} as
|
||||||
|
long as the last command in @var{cond} returns an exit status of zero. The
|
||||||
|
@code{until} command is identical to the @code{while} command, except that
|
||||||
|
the test is negated; the @code{do} @var{list} is executed as long as the
|
||||||
|
last command in @var{cond} returns a non-zero exit status. The exit status
|
||||||
|
of the @code{while} and @code{until} commands is the exit status of the last
|
||||||
|
@code{do} @var{list} command executed, or zero if none was executed.
|
||||||
|
|
||||||
|
@item function @var{name} @{ @var{command}; @dots{} @}
|
||||||
|
This defines a function named @var{name}. The @dfn{body} of the function is
|
||||||
|
the list of commands within braces, each of which must be terminated with a
|
||||||
|
semicolon or a newline. This list of commands will be executed whenever
|
||||||
|
@var{name} is specified as the name of a simple command. Function
|
||||||
|
definitions do not affect the exit status in @code{$?}. When executed, the
|
||||||
|
exit status of a function is the exit status of the last command executed in
|
||||||
|
the body.
|
||||||
|
|
||||||
|
@item menuentry @var{title} [@option{--class=class} @dots{}] [@option{--users=users}] [@option{--hotkey=key}] @{ @var{command}; @dots{} @}
|
||||||
|
@xref{menuentry}.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
@node Embedded configuration
|
@node Embedded configuration
|
||||||
@section Embedding a configuration file into GRUB
|
@section Embedding a configuration file into GRUB
|
||||||
|
@ -1308,8 +1468,7 @@ simple. Here is an example:
|
||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
grub> @kbd{serial --unit=0 --speed=9600}
|
grub> @kbd{serial --unit=0 --speed=9600}
|
||||||
grub> @kbd{terminal_input serial}
|
grub> @kbd{terminal_input serial; terminal_output serial}
|
||||||
grub> @kbd{terminal_output serial}
|
|
||||||
@end group
|
@end group
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@ -1320,11 +1479,14 @@ command accepts many other options, so please refer to @ref{serial},
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
The commands @command{terminal_input} (@pxref{terminal_input}) and
|
The commands @command{terminal_input} (@pxref{terminal_input}) and
|
||||||
@command{terminal_output} (@pxref{terminal_output} choose which type of
|
@command{terminal_output} (@pxref{terminal_output}) choose which type of
|
||||||
terminal you want to use. In the case above, the terminal will be a
|
terminal you want to use. In the case above, the terminal will be a
|
||||||
serial terminal, but you can also pass @code{console} to the command,
|
serial terminal, but you can also pass @code{console} to the command,
|
||||||
as @samp{terminal serial console}. In this case, a terminal in which
|
as @samp{terminal serial console}. In this case, a terminal in which
|
||||||
you press any key will be selected as a GRUB terminal.
|
you press any key will be selected as a GRUB terminal. In the example above,
|
||||||
|
note that you need to put both commands on the same command line, as you
|
||||||
|
will lose the ability to type commands on the console after the first
|
||||||
|
command.
|
||||||
|
|
||||||
However, note that GRUB assumes that your terminal emulator is
|
However, note that GRUB assumes that your terminal emulator is
|
||||||
compatible with VT100 by default. This is true for most terminal
|
compatible with VT100 by default. This is true for most terminal
|
||||||
|
@ -1789,9 +1951,26 @@ These commands can only be used in the menu:
|
||||||
@node menuentry
|
@node menuentry
|
||||||
@subsection menuentry
|
@subsection menuentry
|
||||||
|
|
||||||
@deffn Command title name @dots{}
|
@deffn Command menuentry @var{title} @
|
||||||
Start a new boot entry, and set its name to the contents of the rest of
|
[@option{--class=class} @dots{}] [@option{--users=users}] @
|
||||||
the line, starting with the first non-space character.
|
[@option{--hotkey=key}] @
|
||||||
|
@{ @var{command}; @dots{} @}
|
||||||
|
This defines a GRUB menu entry named @var{title}. When this entry is
|
||||||
|
selected from the menu, GRUB will set the @var{chosen} environment variable
|
||||||
|
to @var{title}, execute the list of commands given within braces, and if the
|
||||||
|
last command in the list returned successfully and a kernel was loaded it
|
||||||
|
will execute the @command{boot} command.
|
||||||
|
|
||||||
|
The @option{--class} option may be used any number of times to group menu
|
||||||
|
entries into classes. Menu themes may display different classes using
|
||||||
|
different styles.
|
||||||
|
|
||||||
|
The @option{--users} option grants specific users access to specific menu
|
||||||
|
entries. @xref{Security}.
|
||||||
|
|
||||||
|
The @option{--hotkey} option associates a hotkey with a menu entry.
|
||||||
|
@var{key} may be a single letter, or one of the aliases @samp{backspace},
|
||||||
|
@samp{tab}, or @samp{delete}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
|
@ -1885,7 +2064,9 @@ The @option{-a} (@option{--ascii}), @option{-u} (@option{--utf8}), and
|
||||||
@option{-v} (@option{--visual-utf8}) options control how non-ASCII text is
|
@option{-v} (@option{--visual-utf8}) options control how non-ASCII text is
|
||||||
displayed. @option{-a} specifies an ASCII-only terminal; @option{-u}
|
displayed. @option{-a} specifies an ASCII-only terminal; @option{-u}
|
||||||
specifies logically-ordered UTF-8; and @option{-v} specifies
|
specifies logically-ordered UTF-8; and @option{-v} specifies
|
||||||
visually-ordered UTF-8.
|
"visually-ordered UTF-8" (in other words, arranged such that a terminal
|
||||||
|
emulator without bidirectional text support will display right-to-left text
|
||||||
|
in the proper order; this is not really proper UTF-8, but a workaround).
|
||||||
|
|
||||||
If no option or terminal type is specified, the current terminal type is
|
If no option or terminal type is specified, the current terminal type is
|
||||||
printed.
|
printed.
|
||||||
|
@ -1932,6 +2113,7 @@ you forget a command, you can run the command @command{help}
|
||||||
* pxe_unload:: Unload the PXE environment
|
* pxe_unload:: Unload the PXE environment
|
||||||
* reboot:: Reboot your computer
|
* reboot:: Reboot your computer
|
||||||
* search:: Search devices by file, label, or UUID
|
* search:: Search devices by file, label, or UUID
|
||||||
|
* sendkey:: Emulate keystrokes
|
||||||
* set:: Set an environment variable
|
* set:: Set an environment variable
|
||||||
* unset:: Unset an environment variable
|
* unset:: Unset an environment variable
|
||||||
* uppermem:: Set the upper memory size
|
* uppermem:: Set the upper memory size
|
||||||
|
@ -2442,6 +2624,154 @@ commands are aliases for @samp{search --file}, @samp{search --label}, and
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
|
@node sendkey
|
||||||
|
@subsection sendkey
|
||||||
|
|
||||||
|
@deffn Command sendkey @
|
||||||
|
[@option{--num}|@option{--caps}|@option{--scroll}|@option{--insert}|@
|
||||||
|
@option{--pause}|@option{--left-shift}|@option{--right-shift}|@
|
||||||
|
@option{--sysrq}|@option{--numkey}|@option{--capskey}|@option{--scrollkey}|@
|
||||||
|
@option{--insertkey}|@option{--left-alt}|@option{--right-alt}|@
|
||||||
|
@option{--left-ctrl}|@option{--right-ctrl} @
|
||||||
|
@samp{on}|@samp{off}]@dots{} @
|
||||||
|
[@option{no-led}] @
|
||||||
|
keystroke
|
||||||
|
Insert keystrokes into the keyboard buffer when booting. Sometimes an
|
||||||
|
operating system or chainloaded boot loader requires particular keys to be
|
||||||
|
pressed: for example, one might need to press a particular key to enter
|
||||||
|
"safe mode", or when chainloading another boot loader one might send
|
||||||
|
keystrokes to it to navigate its menu.
|
||||||
|
|
||||||
|
You may provide up to 16 keystrokes (the length of the BIOS keyboard
|
||||||
|
buffer). Keystroke names may be upper-case or lower-case letters, digits,
|
||||||
|
or taken from the following table:
|
||||||
|
|
||||||
|
@c Please keep this table in the same order as in
|
||||||
|
@c commands/i386/pc/sendkey.c, for ease of maintenance.
|
||||||
|
@c Exception: The function and numeric keys are sorted, for aesthetics.
|
||||||
|
|
||||||
|
@multitable @columnfractions .4 .5
|
||||||
|
@headitem Name @tab Key
|
||||||
|
@item escape @tab Escape
|
||||||
|
@item exclam @tab !
|
||||||
|
@item at @tab @@
|
||||||
|
@item numbersign @tab #
|
||||||
|
@item dollar @tab $
|
||||||
|
@item percent @tab %
|
||||||
|
@item caret @tab ^
|
||||||
|
@item ampersand @tab &
|
||||||
|
@item asterisk @tab *
|
||||||
|
@item parenleft @tab (
|
||||||
|
@item parenright @tab )
|
||||||
|
@item minus @tab -
|
||||||
|
@item underscore @tab _
|
||||||
|
@item equal @tab =
|
||||||
|
@item plus @tab +
|
||||||
|
@item backspace @tab Backspace
|
||||||
|
@item tab @tab Tab
|
||||||
|
@item bracketleft @tab [
|
||||||
|
@item braceleft @tab @{
|
||||||
|
@item bracketright @tab ]
|
||||||
|
@item braceright @tab @}
|
||||||
|
@item enter @tab Enter
|
||||||
|
@item control @tab press and release Control
|
||||||
|
@item semicolon @tab ;
|
||||||
|
@item colon @tab :
|
||||||
|
@item quote @tab '
|
||||||
|
@item doublequote @tab "
|
||||||
|
@item backquote @tab `
|
||||||
|
@item tilde @tab ~
|
||||||
|
@item shift @tab press and release left Shift
|
||||||
|
@item backslash @tab \
|
||||||
|
@item bar @tab |
|
||||||
|
@item comma @tab ,
|
||||||
|
@item less @tab <
|
||||||
|
@item period @tab .
|
||||||
|
@item greater @tab >
|
||||||
|
@item slash @tab /
|
||||||
|
@item question @tab ?
|
||||||
|
@item rshift @tab press and release right Shift
|
||||||
|
@item alt @tab press and release Alt
|
||||||
|
@item space @tab space bar
|
||||||
|
@item capslock @tab Caps Lock
|
||||||
|
@item F1 @tab F1
|
||||||
|
@item F2 @tab F2
|
||||||
|
@item F3 @tab F3
|
||||||
|
@item F4 @tab F4
|
||||||
|
@item F5 @tab F5
|
||||||
|
@item F6 @tab F6
|
||||||
|
@item F7 @tab F7
|
||||||
|
@item F8 @tab F8
|
||||||
|
@item F9 @tab F9
|
||||||
|
@item F10 @tab F10
|
||||||
|
@item F11 @tab F11
|
||||||
|
@item F12 @tab F12
|
||||||
|
@item num1 @tab 1 (numeric keypad)
|
||||||
|
@item num2 @tab 2 (numeric keypad)
|
||||||
|
@item num3 @tab 3 (numeric keypad)
|
||||||
|
@item num4 @tab 4 (numeric keypad)
|
||||||
|
@item num5 @tab 5 (numeric keypad)
|
||||||
|
@item num6 @tab 6 (numeric keypad)
|
||||||
|
@item num7 @tab 7 (numeric keypad)
|
||||||
|
@item num8 @tab 8 (numeric keypad)
|
||||||
|
@item num9 @tab 9 (numeric keypad)
|
||||||
|
@item num0 @tab 0 (numeric keypad)
|
||||||
|
@item numperiod @tab . (numeric keypad)
|
||||||
|
@item numend @tab End (numeric keypad)
|
||||||
|
@item numdown @tab Down (numeric keypad)
|
||||||
|
@item numpgdown @tab Page Down (numeric keypad)
|
||||||
|
@item numleft @tab Left (numeric keypad)
|
||||||
|
@item numcenter @tab 5 with Num Lock inactive (numeric keypad)
|
||||||
|
@item numright @tab Right (numeric keypad)
|
||||||
|
@item numhome @tab Home (numeric keypad)
|
||||||
|
@item numup @tab Up (numeric keypad)
|
||||||
|
@item numpgup @tab Page Up (numeric keypad)
|
||||||
|
@item numinsert @tab Insert (numeric keypad)
|
||||||
|
@item numdelete @tab Delete (numeric keypad)
|
||||||
|
@item numasterisk @tab * (numeric keypad)
|
||||||
|
@item numminus @tab - (numeric keypad)
|
||||||
|
@item numplus @tab + (numeric keypad)
|
||||||
|
@item numslash @tab / (numeric keypad)
|
||||||
|
@item numenter @tab Enter (numeric keypad)
|
||||||
|
@item delete @tab Delete
|
||||||
|
@item insert @tab Insert
|
||||||
|
@item home @tab Home
|
||||||
|
@item end @tab End
|
||||||
|
@item pgdown @tab Page Down
|
||||||
|
@item pgup @tab Page Up
|
||||||
|
@item down @tab Down
|
||||||
|
@item up @tab Up
|
||||||
|
@item left @tab Left
|
||||||
|
@item right @tab Right
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
As well as keystrokes, the @command{sendkey} command takes various options
|
||||||
|
that affect the BIOS keyboard status flags. These options take an @samp{on}
|
||||||
|
or @samp{off} parameter, specifying that the corresponding status flag be
|
||||||
|
set or unset; omitting the option for a given status flag will leave that
|
||||||
|
flag at its initial state at boot. The @option{--num}, @option{--caps},
|
||||||
|
@option{--scroll}, and @option{--insert} options emulate setting the
|
||||||
|
corresponding mode, while the @option{--numkey}, @option{--capskey},
|
||||||
|
@option{--scrollkey}, and @option{--insertkey} options emulate pressing and
|
||||||
|
holding the corresponding key. The other status flag options are
|
||||||
|
self-explanatory.
|
||||||
|
|
||||||
|
If the @option{--no-led} option is given, the status flag options will have
|
||||||
|
no effect on keyboard LEDs.
|
||||||
|
|
||||||
|
If the @command{sendkey} command is given multiple times, then only the last
|
||||||
|
invocation has any effect.
|
||||||
|
|
||||||
|
Since @command{sendkey} manipulates the BIOS keyboard buffer, it may cause
|
||||||
|
hangs, reboots, or other misbehaviour on some systems. If the operating
|
||||||
|
system or boot loader that runs after GRUB uses its own keyboard driver
|
||||||
|
rather than the BIOS keyboard functions, then @command{sendkey} will have no
|
||||||
|
effect.
|
||||||
|
|
||||||
|
This command is only available on PC BIOS systems.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
@node set
|
@node set
|
||||||
@subsection set
|
@subsection set
|
||||||
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (C) 2005, 2008, 2009 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This gendistlist.sh is free software; the author
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
# Generate a list of distributed files.
|
|
||||||
|
|
||||||
EXTRA_DISTFILES="AUTHORS COPYING ChangeLog DISTLIST INSTALL NEWS README \
|
|
||||||
THANKS TODO Makefile.in aclocal.m4 autogen.sh config.guess \
|
|
||||||
config.h.in config.sub configure configure.ac gencmdlist.sh \
|
|
||||||
gendistlist.sh genfslist.sh genhandlerlist.sh geninit.sh \
|
|
||||||
geninitheader.sh genkernsyms.sh.in genmk.rb genmoddep.awk \
|
|
||||||
genmodsrc.sh genpartmaplist.sh genparttoollist.sh \
|
|
||||||
genvideolist.sh \
|
|
||||||
gensymlist.sh.in install-sh mkinstalldirs stamp-h.in"
|
|
||||||
|
|
||||||
DISTDIRS="boot bus commands conf disk docs efiemu font fs hello hook include io \
|
|
||||||
kern lib loader mmap normal partmap parttool script term util video"
|
|
||||||
|
|
||||||
LC_COLLATE=C
|
|
||||||
export LC_COLLATE
|
|
||||||
|
|
||||||
for f in $EXTRA_DISTFILES; do
|
|
||||||
echo $f
|
|
||||||
done
|
|
||||||
|
|
||||||
dir=`dirname $0`
|
|
||||||
cd $dir
|
|
||||||
|
|
||||||
for dir in $DISTDIRS; do
|
|
||||||
for d in `find $dir -type d ! -name .svn ! -name .bzr | sort`; do
|
|
||||||
find $d -maxdepth 1 -name '*.[chSy]' -o -name '*.mk' -o -name '*.rmk' \
|
|
||||||
-o -name '*.rb' -o -name '*.in' -o -name '*.tex' -o -name '*.texi' \
|
|
||||||
-o -name '*.info' -o -name 'grub.cfg' -o -name 'README' \
|
|
||||||
-o -name '*.sc' -o -name 'mdate-sh' -o -name '*.sh' \
|
|
||||||
-o -name 'grub-dumpdevtree' -o -name '*.lua' | sort
|
|
||||||
done
|
|
||||||
done
|
|
30
geninit.sh
30
geninit.sh
|
@ -11,11 +11,6 @@
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
lst="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
header=`echo "${lst}" | sed -e "s/\.lst$/.h/g"`
|
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
/* This file is automatically generated by geninit.sh. DO NOT EDIT! */
|
/* This file is automatically generated by geninit.sh. DO NOT EDIT! */
|
||||||
/*
|
/*
|
||||||
|
@ -36,22 +31,24 @@ cat <<EOF
|
||||||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <$header>
|
#include <grub/emu/misc.h>
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
for mod in "$@"; do
|
||||||
|
echo "extern void grub_${mod}_init (void);"
|
||||||
|
echo "extern void grub_${mod}_fini (void);"
|
||||||
|
done
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
void
|
void
|
||||||
grub_init_all (void)
|
grub_init_all (void)
|
||||||
{
|
{
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
while read line; do
|
for mod in "$@"; do
|
||||||
file=`echo $line | cut -f1 -d:`
|
echo "grub_${mod}_init ();"
|
||||||
if echo $@ | grep $file >/dev/null; then
|
done
|
||||||
echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_init ();/'
|
|
||||||
fi
|
|
||||||
done < ${lst}
|
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
}
|
}
|
||||||
|
@ -63,12 +60,9 @@ grub_fini_all (void)
|
||||||
{
|
{
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
while read line; do
|
for mod in "$@"; do
|
||||||
file=`echo $line | cut -f1 -d:`
|
echo "grub_${mod}_fini ();"
|
||||||
if echo $@ | grep $file >/dev/null; then
|
done
|
||||||
echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_fini ();/'
|
|
||||||
fi
|
|
||||||
done < ${lst}
|
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (C) 2005,2007 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This gensymlist.sh is free software; the author
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
lst="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
cat <<EOF
|
|
||||||
/* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */
|
|
||||||
/*
|
|
||||||
* GRUB -- GRand Unified Bootloader
|
|
||||||
* Copyright (C) 2005,2007 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF
|
|
||||||
void grub_init_all (void);
|
|
||||||
void grub_fini_all (void);
|
|
||||||
EOF
|
|
||||||
|
|
||||||
grep -v '^#' "${lst}" | sed -n '/GRUB_MOD_INIT *([a-zA-Z0-9_]*)/{s/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/void grub_\1_init (void);/;p;}'
|
|
||||||
grep -v '^#' "${lst}" | sed -n '/GRUB_MOD_INIT *([a-zA-Z0-9_]*)/{s/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/void grub_\1_fini (void);/;p;}'
|
|
|
@ -1,27 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (C) 2002,2006,2008 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This gensymlist.sh is free software; the author
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
### The configure script will replace these variables.
|
|
||||||
|
|
||||||
: ${srcdir=@srcdir@}
|
|
||||||
: ${CC=@TARGET_CC@}
|
|
||||||
|
|
||||||
u=
|
|
||||||
grep "^#define HAVE_ASM_USCORE" config.h >/dev/null 2>&1 && u="_"
|
|
||||||
|
|
||||||
$CC @TARGET_CFLAGS@ -DGRUB_SYMBOL_GENERATOR=1 -E -I. -Iinclude -I"$srcdir/include" $* \
|
|
||||||
| grep -v '^#' \
|
|
||||||
| sed -n \
|
|
||||||
-e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/'"$u"'\1 kernel/;p;}' \
|
|
||||||
-e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/'"$u"'\1 kernel/;p;}' \
|
|
||||||
| sort -u
|
|
475
genmk.rb
475
genmk.rb
|
@ -1,475 +0,0 @@
|
||||||
#! /usr/bin/ruby -w
|
|
||||||
#
|
|
||||||
# Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This genmk.rb is free software; the author
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
module Enumerable
|
|
||||||
def collect_with_index
|
|
||||||
ret = []
|
|
||||||
self.each_with_index do |item, index|
|
|
||||||
ret.push(yield(item, index))
|
|
||||||
end
|
|
||||||
ret
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class String
|
|
||||||
def to_var
|
|
||||||
self.gsub(/[^a-zA-Z0-9_@]/, '_')
|
|
||||||
end
|
|
||||||
|
|
||||||
def suffix(str)
|
|
||||||
self.sub(/\.[^\.]*$/, '') + '.' + str
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_obj
|
|
||||||
self.sub(/\.[^\.]*$/, '').to_var + '.o'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Image
|
|
||||||
def initialize(dir, name)
|
|
||||||
@dir = dir
|
|
||||||
@name = name
|
|
||||||
@rule_count = 0
|
|
||||||
end
|
|
||||||
attr_reader :dir, :name
|
|
||||||
|
|
||||||
def rule(sources)
|
|
||||||
prefix = @name.to_var
|
|
||||||
@rule_count += 1
|
|
||||||
exe = @name.suffix('exec')
|
|
||||||
objs = sources.collect do |src|
|
|
||||||
raise "unknown source file `#{src}'" if /\.[cS]$/ !~ src
|
|
||||||
prefix + '-' + src.to_obj
|
|
||||||
end
|
|
||||||
objs_str = objs.join(' ')
|
|
||||||
deps = objs.collect {|obj| obj.suffix('d')}
|
|
||||||
deps_str = deps.join(' ')
|
|
||||||
|
|
||||||
"
|
|
||||||
clean-image-#{@name}.#{@rule_count}:
|
|
||||||
rm -f #{@name} #{exe} #{objs_str}
|
|
||||||
|
|
||||||
CLEAN_IMAGE_TARGETS += clean-image-#{@name}.#{@rule_count}
|
|
||||||
|
|
||||||
mostlyclean-image-#{@name}.#{@rule_count}:
|
|
||||||
rm -f #{deps_str}
|
|
||||||
|
|
||||||
MOSTLYCLEAN_IMAGE_TARGETS += mostlyclean-image-#{@name}.#{@rule_count}
|
|
||||||
|
|
||||||
ifneq ($(TARGET_APPLE_CC),1)
|
|
||||||
#{@name}: #{exe}
|
|
||||||
$(OBJCOPY) -O $(#{prefix}_FORMAT) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .reginfo -R .rel.dyn $< $@
|
|
||||||
else
|
|
||||||
ifneq (#{exe},kernel.exec)
|
|
||||||
#{@name}: #{exe} ./grub-macho2img
|
|
||||||
./grub-macho2img $< $@
|
|
||||||
else
|
|
||||||
#{@name}: #{exe} ./grub-macho2img
|
|
||||||
./grub-macho2img --bss $< $@
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
#{exe}: #{objs_str}
|
|
||||||
$(TARGET_CC) -o $@ $^ $(TARGET_LDFLAGS) $(#{prefix}_LDFLAGS)
|
|
||||||
|
|
||||||
" + objs.collect_with_index do |obj, i|
|
|
||||||
src = sources[i]
|
|
||||||
fake_obj = File.basename(src).suffix('o')
|
|
||||||
dep = deps[i]
|
|
||||||
flag = if /\.c$/ =~ src then 'CFLAGS' else 'ASFLAGS' end
|
|
||||||
extra_flags = if /\.S$/ =~ src then '-DASM_FILE=1' else '' end
|
|
||||||
dir = File.dirname(src)
|
|
||||||
|
|
||||||
"#{obj}: #{src} $(#{src}_DEPENDENCIES)
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -DGRUB_FILE=\\\"#{src}\\\" -MD -c -o $@ $<
|
|
||||||
-include #{dep}
|
|
||||||
|
|
||||||
"
|
|
||||||
end.join('')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Use PModule instead Module, to avoid name conflicting.
|
|
||||||
class PModule
|
|
||||||
def initialize(dir, name)
|
|
||||||
@dir = dir
|
|
||||||
@name = name
|
|
||||||
@rule_count = 0
|
|
||||||
end
|
|
||||||
attr_reader :dir, :name
|
|
||||||
|
|
||||||
def rule(sources)
|
|
||||||
prefix = @name.to_var
|
|
||||||
@rule_count += 1
|
|
||||||
objs = sources.collect do |src|
|
|
||||||
raise "unknown source file `#{src}'" if /\.[cS]$/ !~ src
|
|
||||||
prefix + '-' + src.to_obj
|
|
||||||
end
|
|
||||||
objs_str = objs.join(' ')
|
|
||||||
deps = objs.collect {|obj| obj.suffix('d')}
|
|
||||||
deps_str = deps.join(' ')
|
|
||||||
pre_obj = 'pre-' + @name.suffix('o')
|
|
||||||
mod_src = 'mod-' + @name.suffix('c')
|
|
||||||
mod_obj = mod_src.suffix('o')
|
|
||||||
defsym = 'def-' + @name.suffix('lst')
|
|
||||||
undsym = 'und-' + @name.suffix('lst')
|
|
||||||
mod_name = File.basename(@name, '.mod')
|
|
||||||
symbolic_name = mod_name.sub(/\.[^\.]*$/, '')
|
|
||||||
|
|
||||||
"
|
|
||||||
clean-module-#{@name}.#{@rule_count}:
|
|
||||||
rm -f #{@name} #{mod_obj} #{mod_src} #{pre_obj} #{objs_str} #{undsym}
|
|
||||||
|
|
||||||
CLEAN_MODULE_TARGETS += clean-module-#{@name}.#{@rule_count}
|
|
||||||
|
|
||||||
clean-module-#{@name}-symbol.#{@rule_count}:
|
|
||||||
rm -f #{defsym}
|
|
||||||
|
|
||||||
CLEAN_MODULE_TARGETS += clean-module-#{@name}-symbol.#{@rule_count}
|
|
||||||
DEFSYMFILES += #{defsym}
|
|
||||||
mostlyclean-module-#{@name}.#{@rule_count}:
|
|
||||||
rm -f #{deps_str}
|
|
||||||
|
|
||||||
MOSTLYCLEAN_MODULE_TARGETS += mostlyclean-module-#{@name}.#{@rule_count}
|
|
||||||
UNDSYMFILES += #{undsym}
|
|
||||||
|
|
||||||
ifeq ($(TARGET_NO_MODULES), yes)
|
|
||||||
#{@name}: #{pre_obj} $(TARGET_OBJ2ELF)
|
|
||||||
-rm -f $@
|
|
||||||
$(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ #{pre_obj}
|
|
||||||
if test ! -z \"$(TARGET_OBJ2ELF)\"; then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
|
|
||||||
if test x$(TARGET_NO_STRIP) != xyes ; then $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@; fi
|
|
||||||
else
|
|
||||||
ifneq ($(TARGET_APPLE_CC),1)
|
|
||||||
#{@name}: #{pre_obj} #{mod_obj} $(TARGET_OBJ2ELF)
|
|
||||||
-rm -f $@
|
|
||||||
$(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ #{pre_obj} #{mod_obj}
|
|
||||||
if test ! -z \"$(TARGET_OBJ2ELF)\"; then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
|
|
||||||
if test x$(TARGET_NO_STRIP) != xyes ; then $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@; fi
|
|
||||||
else
|
|
||||||
#{@name}: #{pre_obj} #{mod_obj} $(TARGET_OBJ2ELF)
|
|
||||||
-rm -f $@
|
|
||||||
-rm -f $@.bin
|
|
||||||
$(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@.bin #{pre_obj} #{mod_obj}
|
|
||||||
$(OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -wd1106 -ew2030 -ew2050 -nu -nd $@.bin $@
|
|
||||||
-rm -f $@.bin
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
#{pre_obj}: $(#{prefix}_DEPENDENCIES) #{objs_str}
|
|
||||||
-rm -f $@
|
|
||||||
$(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ #{objs_str}
|
|
||||||
|
|
||||||
#{mod_obj}: #{mod_src}
|
|
||||||
$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(#{prefix}_CFLAGS) -DGRUB_FILE=\\\"#{mod_src}\\\" -c -o $@ $<
|
|
||||||
|
|
||||||
#{mod_src}: $(builddir)/moddep.lst $(srcdir)/genmodsrc.sh
|
|
||||||
sh $(srcdir)/genmodsrc.sh '#{mod_name}' $< > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
ifneq ($(TARGET_APPLE_CC),1)
|
|
||||||
#{defsym}: #{pre_obj}
|
|
||||||
$(NM) -g --defined-only -P -p $< | sed 's/^\\([^ ]*\\).*/\\1 #{mod_name}/' > $@
|
|
||||||
else
|
|
||||||
#{defsym}: #{pre_obj}
|
|
||||||
$(NM) -g -P -p $< | grep -E '^[a-zA-Z0-9_]* [TDS]' | sed 's/^\\([^ ]*\\).*/\\1 #{mod_name}/' > $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
#{undsym}: #{pre_obj}
|
|
||||||
echo '#{mod_name}' > $@
|
|
||||||
$(NM) -u -P -p $< | cut -f1 -d' ' >> $@
|
|
||||||
|
|
||||||
" + objs.collect_with_index do |obj, i|
|
|
||||||
src = sources[i]
|
|
||||||
fake_obj = File.basename(src).suffix('o')
|
|
||||||
extra_target = obj.sub(/\.[^\.]*$/, '') + '-extra'
|
|
||||||
command = 'cmd-' + obj.suffix('lst')
|
|
||||||
fs = 'fs-' + obj.suffix('lst')
|
|
||||||
partmap = 'partmap-' + obj.suffix('lst')
|
|
||||||
handler = 'handler-' + obj.suffix('lst')
|
|
||||||
terminal = 'terminal-' + obj.suffix('lst')
|
|
||||||
parttool = 'parttool-' + obj.suffix('lst')
|
|
||||||
video = 'video-' + obj.suffix('lst')
|
|
||||||
dep = deps[i]
|
|
||||||
flag = if /\.c$/ =~ src then 'CFLAGS' else 'ASFLAGS' end
|
|
||||||
extra_flags = if /\.S$/ =~ src then '-DASM_FILE=1' else '' end
|
|
||||||
dir = File.dirname(src)
|
|
||||||
|
|
||||||
"#{obj}: #{src} $(#{src}_DEPENDENCIES)
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -DGRUB_FILE=\\\"#{src}\\\" -MD -c -o $@ $<
|
|
||||||
-include #{dep}
|
|
||||||
|
|
||||||
clean-module-#{extra_target}.#{@rule_count}:
|
|
||||||
rm -f #{command} #{fs} #{partmap} #{handler} #{parttool} #{video} #{terminal}
|
|
||||||
|
|
||||||
CLEAN_MODULE_TARGETS += clean-module-#{extra_target}.#{@rule_count}
|
|
||||||
|
|
||||||
COMMANDFILES += #{command}
|
|
||||||
FSFILES += #{fs}
|
|
||||||
PARTTOOLFILES += #{parttool}
|
|
||||||
PARTMAPFILES += #{partmap}
|
|
||||||
HANDLERFILES += #{handler}
|
|
||||||
TERMINALFILES += #{terminal}
|
|
||||||
VIDEOFILES += #{video}
|
|
||||||
|
|
||||||
#{command}: #{src} $(#{src}_DEPENDENCIES) gencmdlist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/gencmdlist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
#{fs}: #{src} $(#{src}_DEPENDENCIES) genfslist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} -DGRUB_LST_GENERATOR $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/genfslist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
#{parttool}: #{src} $(#{src}_DEPENDENCIES) genparttoollist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/genparttoollist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
#{partmap}: #{src} $(#{src}_DEPENDENCIES) genpartmaplist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} -DGRUB_LST_GENERATOR $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/genpartmaplist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
#{handler}: #{src} $(#{src}_DEPENDENCIES) genhandlerlist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/genhandlerlist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
#{terminal}: #{src} $(#{src}_DEPENDENCIES) genterminallist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/genterminallist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
#{video}: #{src} $(#{src}_DEPENDENCIES) genvideolist.sh
|
|
||||||
set -e; \
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} -DGRUB_LST_GENERATOR $(TARGET_#{flag}) $(#{prefix}_#{flag}) -E $< \
|
|
||||||
| sh $(srcdir)/genvideolist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
|
||||||
|
|
||||||
"
|
|
||||||
end.join('')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Utility
|
|
||||||
def initialize(dir, name)
|
|
||||||
@dir = dir
|
|
||||||
@name = name
|
|
||||||
@rule_count = 0
|
|
||||||
end
|
|
||||||
def print_tail()
|
|
||||||
prefix = @name.to_var
|
|
||||||
print "#{@name}: $(#{prefix}_DEPENDENCIES) $(#{prefix}_OBJECTS)
|
|
||||||
$(CC) -o $@ $(#{prefix}_OBJECTS) $(LDFLAGS) $(#{prefix}_LDFLAGS)
|
|
||||||
|
|
||||||
"
|
|
||||||
end
|
|
||||||
attr_reader :dir, :name
|
|
||||||
|
|
||||||
def rule(sources)
|
|
||||||
prefix = @name.to_var
|
|
||||||
@rule_count += 1
|
|
||||||
objs = sources.collect do |src|
|
|
||||||
raise "unknown source file `#{src}'" if /\.[cS]$/ !~ src
|
|
||||||
prefix + '-' + src.to_obj
|
|
||||||
end
|
|
||||||
objs_str = objs.join(' ');
|
|
||||||
deps = objs.collect {|obj| obj.suffix('d')}
|
|
||||||
deps_str = deps.join(' ');
|
|
||||||
|
|
||||||
"
|
|
||||||
clean-utility-#{@name}.#{@rule_count}:
|
|
||||||
rm -f #{@name}$(EXEEXT) #{objs_str}
|
|
||||||
|
|
||||||
CLEAN_UTILITY_TARGETS += clean-utility-#{@name}.#{@rule_count}
|
|
||||||
|
|
||||||
mostlyclean-utility-#{@name}.#{@rule_count}:
|
|
||||||
rm -f #{deps_str}
|
|
||||||
|
|
||||||
MOSTLYCLEAN_UTILITY_TARGETS += mostlyclean-utility-#{@name}.#{@rule_count}
|
|
||||||
|
|
||||||
#{prefix}_OBJECTS += #{objs_str}
|
|
||||||
|
|
||||||
" + objs.collect_with_index do |obj, i|
|
|
||||||
src = sources[i]
|
|
||||||
fake_obj = File.basename(src).suffix('o')
|
|
||||||
dep = deps[i]
|
|
||||||
dir = File.dirname(src)
|
|
||||||
|
|
||||||
"#{obj}: #{src} $(#{src}_DEPENDENCIES)
|
|
||||||
$(CC) -I#{dir} -I$(srcdir)/#{dir} $(CPPFLAGS) $(CFLAGS) -DGRUB_UTIL=1 $(#{prefix}_CFLAGS) -DGRUB_FILE=\\\"#{src}\\\" -MD -c -o $@ $<
|
|
||||||
-include #{dep}
|
|
||||||
|
|
||||||
"
|
|
||||||
end.join('')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Program
|
|
||||||
def initialize(dir, name)
|
|
||||||
@dir = dir
|
|
||||||
@name = name
|
|
||||||
end
|
|
||||||
attr_reader :dir, :name
|
|
||||||
|
|
||||||
def print_tail()
|
|
||||||
prefix = @name.to_var
|
|
||||||
print "CLEANFILES += #{@name} $(#{prefix}_OBJECTS)
|
|
||||||
ifeq ($(#{prefix}_RELOCATABLE),yes)
|
|
||||||
#{@name}: $(#{prefix}_DEPENDENCIES) $(#{prefix}_OBJECTS)
|
|
||||||
$(TARGET_CC) -Wl,-r,-d -o $@ $(#{prefix}_OBJECTS) $(TARGET_LDFLAGS) $(#{prefix}_LDFLAGS)
|
|
||||||
if test x$(TARGET_NO_STRIP) != xyes ; then $(STRIP) --strip-unneeded -K start -R .note -R .comment $@; fi
|
|
||||||
else
|
|
||||||
#{@name}: $(#{prefix}_DEPENDENCIES) $(#{prefix}_OBJECTS)
|
|
||||||
$(TARGET_CC) -o $@ $(#{prefix}_OBJECTS) $(TARGET_LDFLAGS) $(#{prefix}_LDFLAGS)
|
|
||||||
if test x$(TARGET_NO_STRIP) != xyes ; then $(STRIP) -R .rel.dyn -R .reginfo -R .note -R .comment $@; fi
|
|
||||||
endif
|
|
||||||
|
|
||||||
"
|
|
||||||
end
|
|
||||||
|
|
||||||
def rule(sources)
|
|
||||||
prefix = @name.to_var
|
|
||||||
objs = sources.collect do |src|
|
|
||||||
raise "unknown source file `#{src}'" if /\.[cS]$/ !~ src
|
|
||||||
prefix + '-' + src.to_obj
|
|
||||||
end
|
|
||||||
deps = objs.collect {|obj| obj.suffix('d')}
|
|
||||||
deps_str = deps.join(' ');
|
|
||||||
|
|
||||||
"MOSTLYCLEANFILES += #{deps_str}
|
|
||||||
|
|
||||||
" + objs.collect_with_index do |obj, i|
|
|
||||||
src = sources[i]
|
|
||||||
fake_obj = File.basename(src).suffix('o')
|
|
||||||
dep = deps[i]
|
|
||||||
flag = if /\.c$/ =~ src then 'CFLAGS' else 'ASFLAGS' end
|
|
||||||
extra_flags = if /\.S$/ =~ src then '-DASM_FILE=1' else '' end
|
|
||||||
dir = File.dirname(src)
|
|
||||||
|
|
||||||
"#{obj}: #{src} $(#{src}_DEPENDENCIES)
|
|
||||||
$(TARGET_CC) -I#{dir} -I$(srcdir)/#{dir} $(TARGET_CPPFLAGS) #{extra_flags} $(TARGET_#{flag}) $(#{prefix}_#{flag}) -DGRUB_FILE=\\\"#{src}\\\" -MD -c -o $@ $<
|
|
||||||
|
|
||||||
-include #{dep}
|
|
||||||
|
|
||||||
#{prefix}_OBJECTS += #{obj}
|
|
||||||
"
|
|
||||||
end.join('')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Script
|
|
||||||
def initialize(dir, name)
|
|
||||||
@dir = dir
|
|
||||||
@name = name
|
|
||||||
end
|
|
||||||
attr_reader :dir, :name
|
|
||||||
|
|
||||||
def rule(sources)
|
|
||||||
if sources.length != 1
|
|
||||||
raise "only a single source file must be specified for a script"
|
|
||||||
end
|
|
||||||
src = sources[0]
|
|
||||||
if /\.in$/ !~ src
|
|
||||||
raise "unknown source file `#{src}'"
|
|
||||||
end
|
|
||||||
|
|
||||||
"CLEANFILES += #{@name}
|
|
||||||
|
|
||||||
#{@name}: #{src} $(#{src}_DEPENDENCIES) config.status
|
|
||||||
./config.status --file=-:#{src} | sed -e 's,@pkglib_DATA@,$(pkglib_DATA),g' > $@
|
|
||||||
chmod +x $@
|
|
||||||
|
|
||||||
"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
images = []
|
|
||||||
utils = []
|
|
||||||
pmodules = []
|
|
||||||
programs = []
|
|
||||||
scripts = []
|
|
||||||
|
|
||||||
l = gets
|
|
||||||
print l
|
|
||||||
print "# Generated by genmk.rb, please don't edit!\n"
|
|
||||||
|
|
||||||
cont = false
|
|
||||||
str = nil
|
|
||||||
while l = gets
|
|
||||||
if cont
|
|
||||||
str += l
|
|
||||||
else
|
|
||||||
str = l
|
|
||||||
end
|
|
||||||
|
|
||||||
print l
|
|
||||||
cont = (/\\$/ =~ l)
|
|
||||||
unless cont
|
|
||||||
str.gsub!(/\\\n/, ' ')
|
|
||||||
|
|
||||||
if /^([a-zA-Z0-9_]+)\s*\+?=\s*(.*?)\s*$/ =~ str
|
|
||||||
var, args = $1, $2
|
|
||||||
|
|
||||||
if var =~ /^([a-zA-Z0-9_]+)_([A-Z]+)$/
|
|
||||||
prefix, type = $1, $2
|
|
||||||
|
|
||||||
case type
|
|
||||||
when 'IMAGES'
|
|
||||||
images += args.split(/\s+/).collect do |img|
|
|
||||||
Image.new(prefix, img)
|
|
||||||
end
|
|
||||||
|
|
||||||
when 'MODULES'
|
|
||||||
pmodules += args.split(/\s+/).collect do |pmod|
|
|
||||||
PModule.new(prefix, pmod)
|
|
||||||
end
|
|
||||||
|
|
||||||
when 'UTILITIES'
|
|
||||||
utils += args.split(/\s+/).collect do |util|
|
|
||||||
Utility.new(prefix, util)
|
|
||||||
end
|
|
||||||
|
|
||||||
when 'PROGRAMS'
|
|
||||||
programs += args.split(/\s+/).collect do |prog|
|
|
||||||
Program.new(prefix, prog)
|
|
||||||
end
|
|
||||||
|
|
||||||
when 'SCRIPTS'
|
|
||||||
scripts += args.split(/\s+/).collect do |script|
|
|
||||||
Script.new(prefix, script)
|
|
||||||
end
|
|
||||||
|
|
||||||
when 'SOURCES'
|
|
||||||
if img = images.detect() {|i| i.name.to_var == prefix}
|
|
||||||
print img.rule(args.split(/\s+/))
|
|
||||||
elsif pmod = pmodules.detect() {|m| m.name.to_var == prefix}
|
|
||||||
print pmod.rule(args.split(/\s+/))
|
|
||||||
elsif util = utils.detect() {|u| u.name.to_var == prefix}
|
|
||||||
print util.rule(args.split(/\s+/))
|
|
||||||
elsif program = programs.detect() {|u| u.name.to_var == prefix}
|
|
||||||
print program.rule(args.split(/\s+/))
|
|
||||||
elsif script = scripts.detect() {|s| s.name.to_var == prefix}
|
|
||||||
print script.rule(args.split(/\s+/))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
utils.each {|util| util.print_tail()}
|
|
||||||
programs.each {|program| program.print_tail()}
|
|
||||||
|
|
537
gentpl.py
Normal file
537
gentpl.py
Normal file
|
@ -0,0 +1,537 @@
|
||||||
|
#! /usr/bin/python
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is the python script used to generate Makefile.tpl
|
||||||
|
#
|
||||||
|
|
||||||
|
GRUB_PLATFORMS = [ "emu", "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot",
|
||||||
|
"i386_multiboot", "i386_ieee1275", "x86_64_efi",
|
||||||
|
"mips_yeeloong", "sparc64_ieee1275",
|
||||||
|
"powerpc_ieee1275" ]
|
||||||
|
|
||||||
|
GROUPS = {}
|
||||||
|
GROUPS["i386"] = [ "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot", "i386_multiboot", "i386_ieee1275" ]
|
||||||
|
GROUPS["x86_64"] = [ "x86_64_efi" ]
|
||||||
|
GROUPS["x86"] = GROUPS["i386"] + GROUPS["x86_64"]
|
||||||
|
GROUPS["x86_efi"] = [ "i386_efi", "x86_64_efi" ]
|
||||||
|
|
||||||
|
GROUPS["nopc"] = GRUB_PLATFORMS[:]; GROUPS["nopc"].remove("i386_pc")
|
||||||
|
GROUPS["x86_efi_pc"] = GROUPS["x86_efi"] + ["i386_pc"]
|
||||||
|
|
||||||
|
GROUPS["x86_noefi"] = GROUPS["x86"][:]; GROUPS["x86_noefi"].remove("i386_efi"); GROUPS["x86_noefi"].remove("x86_64_efi")
|
||||||
|
GROUPS["i386_noefi"] = GROUPS["i386"][:]; GROUPS["i386_noefi"].remove("i386_efi")
|
||||||
|
|
||||||
|
GROUPS["x86_noieee1275"] = GROUPS["x86"][:]; GROUPS["x86_noieee1275"].remove("i386_ieee1275")
|
||||||
|
GROUPS["i386_noieee1275"] = GROUPS["i386"][:]; GROUPS["i386_noieee1275"].remove("i386_ieee1275")
|
||||||
|
|
||||||
|
GROUPS["i386_noefi_noieee1275"] = GROUPS["i386_noefi"][:]; GROUPS["i386_noefi_noieee1275"].remove("i386_ieee1275")
|
||||||
|
|
||||||
|
GROUPS["i386_pc_qemu_coreboot"] = ["i386_pc", "i386_qemu", "i386_coreboot"]
|
||||||
|
GROUPS["i386_coreboot_multiboot"] = ["i386_coreboot", "i386_multiboot"]
|
||||||
|
GROUPS["i386_coreboot_multiboot_qemu"] = ["i386_coreboot", "i386_multiboot", "i386_qemu"]
|
||||||
|
GROUPS["i386_pc_coreboot_multiboot_qemu"] = ["i386_pc", "i386_coreboot", "i386_multiboot", "i386_qemu"]
|
||||||
|
|
||||||
|
GROUPS["mips"] = [ "mips_yeeloong" ]
|
||||||
|
GROUPS["sparc64"] = [ "sparc64_ieee1275" ]
|
||||||
|
GROUPS["powerpc"] = [ "powerpc_ieee1275" ]
|
||||||
|
|
||||||
|
GROUPS["nosparc64"] = GRUB_PLATFORMS[:]; GROUPS["nosparc64"].remove("sparc64_ieee1275")
|
||||||
|
GROUPS["x86_noefi_mips"] = GROUPS["x86_noefi"] + GROUPS["mips"]
|
||||||
|
|
||||||
|
GROUPS["ieee1275"] = [ "i386_ieee1275", "sparc64_ieee1275", "powerpc_ieee1275" ]
|
||||||
|
GROUPS["noieee1275"] = GRUB_PLATFORMS[:]
|
||||||
|
for i in GROUPS["ieee1275"]: GROUPS["noieee1275"].remove(i)
|
||||||
|
GROUPS["ieee1275_mips"] = GROUPS["ieee1275"] + GROUPS["mips"]
|
||||||
|
|
||||||
|
GROUPS["pci"] = GROUPS["x86"] + GROUPS["mips"]
|
||||||
|
|
||||||
|
GROUPS["noemu"] = GRUB_PLATFORMS[:]; GROUPS["noemu"].remove("emu")
|
||||||
|
GROUPS["noemu_noieee1275"] = GRUB_PLATFORMS[:]
|
||||||
|
for i in ["emu"] + GROUPS["ieee1275"]: GROUPS["noemu_noieee1275"].remove(i)
|
||||||
|
|
||||||
|
GROUPS["common"] = GRUB_PLATFORMS[:]
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create platform => groups reverse map, where groups covering that
|
||||||
|
# platform are ordered by their sizes
|
||||||
|
#
|
||||||
|
RMAP = {}
|
||||||
|
for platform in GRUB_PLATFORMS:
|
||||||
|
# initialize with platform itself as a group
|
||||||
|
RMAP[platform] = [ platform ]
|
||||||
|
|
||||||
|
for k in GROUPS.keys():
|
||||||
|
v = GROUPS[k]
|
||||||
|
# skip groups that don't cover this platform
|
||||||
|
if platform not in v: continue
|
||||||
|
|
||||||
|
bigger = []
|
||||||
|
smaller = []
|
||||||
|
# partition currently known groups based on their size
|
||||||
|
for group in RMAP[platform]:
|
||||||
|
if group in GRUB_PLATFORMS: smaller.append(group)
|
||||||
|
elif len(GROUPS[group]) < len(v): smaller.append(group)
|
||||||
|
else: bigger.append(group)
|
||||||
|
# insert in the middle
|
||||||
|
RMAP[platform] = smaller + [ k ] + bigger
|
||||||
|
|
||||||
|
#
|
||||||
|
# Global variables
|
||||||
|
#
|
||||||
|
GVARS = []
|
||||||
|
|
||||||
|
def gvar_add(var, value):
|
||||||
|
if var not in GVARS:
|
||||||
|
GVARS.append(var)
|
||||||
|
return var + " += " + value + "\n"
|
||||||
|
|
||||||
|
def global_variable_initializers():
|
||||||
|
r = ""
|
||||||
|
for var in GVARS:
|
||||||
|
r += var + " ?= \n"
|
||||||
|
return r
|
||||||
|
|
||||||
|
#
|
||||||
|
# Per PROGRAM/SCRIPT variables
|
||||||
|
#
|
||||||
|
|
||||||
|
def var_set(var, value):
|
||||||
|
return var + " = " + value + "\n"
|
||||||
|
|
||||||
|
def var_add(var, value):
|
||||||
|
return var + " += " + value + "\n"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Autogen constructs
|
||||||
|
#
|
||||||
|
|
||||||
|
def set_canonical_name_suffix(suffix): return "[+ % name `export cname=$(echo %s" + suffix + " | sed -e 's/[^0-9A-Za-z@_]/_/g')` +]"
|
||||||
|
def cname(): return "[+ % name `echo $cname` +]"
|
||||||
|
|
||||||
|
def rule(target, source, cmd):
|
||||||
|
if cmd[0] == "\n":
|
||||||
|
return "\n" + target + ": " + source + cmd.replace("\n", "\n\t") + "\n"
|
||||||
|
else:
|
||||||
|
return "\n" + target + ": " + source + "\n\t" + cmd.replace("\n", "\n\t") + "\n"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template for keys with platform names as values, for example:
|
||||||
|
#
|
||||||
|
# kernel = {
|
||||||
|
# nostrip = emu;
|
||||||
|
# ...
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
def if_platform_tagged(platform, tag, snippet_if, snippet_else=None):
|
||||||
|
r = ""
|
||||||
|
r += "[+ IF " + tag + " defined +]"
|
||||||
|
r += "[+ FOR " + tag + " +][+ CASE " + tag + " +]"
|
||||||
|
for group in RMAP[platform]:
|
||||||
|
r += "[+ = \"" + group + "\" +]" + snippet_if
|
||||||
|
|
||||||
|
if snippet_else != None: r += "[+ * +]" + snippet_else
|
||||||
|
r += "[+ ESAC +][+ ENDFOR +]"
|
||||||
|
|
||||||
|
if snippet_else == None:
|
||||||
|
r += "[+ ENDIF +]"
|
||||||
|
return r
|
||||||
|
|
||||||
|
r += "[+ ELSE +]" + snippet_else + "[+ ENDIF +]"
|
||||||
|
return r
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template for tagged values
|
||||||
|
#
|
||||||
|
# module = {
|
||||||
|
# extra_dist = ...
|
||||||
|
# extra_dist = ...
|
||||||
|
# ...
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
def foreach_value(tag, closure):
|
||||||
|
return "[+ FOR " + tag + " +]" + closure("[+ ." + tag + " +]") + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template for handling best matched values for a platform, for example:
|
||||||
|
#
|
||||||
|
# module = {
|
||||||
|
# cflags = '-Wall';
|
||||||
|
# emu_cflags = '-Wall -DGRUB_EMU=1';
|
||||||
|
# ...
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
def foreach_platform_specific_value(platform, suffix, nonetag, closure):
|
||||||
|
r = ""
|
||||||
|
for group in RMAP[platform]:
|
||||||
|
gtag = group + suffix
|
||||||
|
|
||||||
|
if group == RMAP[platform][0]:
|
||||||
|
r += "[+ IF " + gtag + " +]"
|
||||||
|
else:
|
||||||
|
r += "[+ ELIF " + gtag + " +]"
|
||||||
|
|
||||||
|
r += "[+ FOR " + gtag + " +]" + closure("[+ ." + gtag + " +]") + "[+ ENDFOR +]"
|
||||||
|
r += "[+ ELSE +][+ FOR " + nonetag + " +]" + closure("[+ ." + nonetag + " +]") + "[+ ENDFOR +][+ ENDIF +]"
|
||||||
|
return r
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template for handling values from sum of all groups for a platform,
|
||||||
|
# for example:
|
||||||
|
#
|
||||||
|
# module = {
|
||||||
|
# common = kern/misc.c;
|
||||||
|
# emu = kern/emu/misc.c;
|
||||||
|
# ...
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
def foreach_platform_value (platform, suffix, closure):
|
||||||
|
r = ""
|
||||||
|
for group in RMAP[platform]:
|
||||||
|
gtag = group + suffix
|
||||||
|
|
||||||
|
r += "[+ IF " + gtag + " +]"
|
||||||
|
r += "[+ FOR " + gtag + " +]" + closure("[+ ." + gtag + " +]") + "[+ ENDFOR +]"
|
||||||
|
r += "[+ ENDIF +]"
|
||||||
|
return r
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template for gaurding with platform specific "enable" keys, for example:
|
||||||
|
#
|
||||||
|
# module = {
|
||||||
|
# name = pci;
|
||||||
|
# noemu = bus/pci.c;
|
||||||
|
# emu = bus/emu/pci.c;
|
||||||
|
# emu = commands/lspci.c;
|
||||||
|
#
|
||||||
|
# enable = emu;
|
||||||
|
# enable = i386_pc;
|
||||||
|
# enable = x86_efi;
|
||||||
|
# enable = i386_ieee1275;
|
||||||
|
# enable = i386_coreboot;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
def foreach_enabled_platform(closure):
|
||||||
|
r = "[+ IF - enable undefined +]"
|
||||||
|
for platform in GRUB_PLATFORMS:
|
||||||
|
r += "\nif COND_" + platform + "\n" + closure(platform) + "endif\n"
|
||||||
|
r += "[+ ELSE +]"
|
||||||
|
for platform in GRUB_PLATFORMS:
|
||||||
|
x = "\nif COND_" + platform + "\n" + closure(platform) + "endif\n"
|
||||||
|
r += if_platform_tagged(platform, "enable", x)
|
||||||
|
r += "[+ ENDIF +]"
|
||||||
|
return r
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template for gaurding with platform specific automake conditionals,
|
||||||
|
# for example:
|
||||||
|
#
|
||||||
|
# module = {
|
||||||
|
# name = usb;
|
||||||
|
# common = bus/usb/usb.c;
|
||||||
|
# noemu = bus/usb/usbtrans.c;
|
||||||
|
# noemu = bus/usb/usbhub.c;
|
||||||
|
# enable = emu;
|
||||||
|
# enable = i386;
|
||||||
|
# enable = mips_yeeloong;
|
||||||
|
# emu_condition = COND_GRUB_EMU_USB;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
def under_platform_specific_conditionals(platform, snippet):
|
||||||
|
r = foreach_platform_specific_value(platform, "_condition", "condition", lambda cond: "if " + cond + "\n")
|
||||||
|
r += snippet
|
||||||
|
r += foreach_platform_specific_value(platform, "_condition", "condition", lambda cond: "endif " + cond + "\n")
|
||||||
|
return r
|
||||||
|
|
||||||
|
def platform_specific_values(platform, suffix, nonetag):
|
||||||
|
return foreach_platform_specific_value(platform, suffix, nonetag,
|
||||||
|
lambda value: value + " ")
|
||||||
|
|
||||||
|
def platform_values(platform, suffix):
|
||||||
|
return foreach_platform_value(platform, suffix, lambda value: value + " ")
|
||||||
|
|
||||||
|
def extra_dist():
|
||||||
|
return foreach_value("extra_dist", lambda value: value + " ")
|
||||||
|
|
||||||
|
def platform_sources(p): return platform_values(p, "")
|
||||||
|
def platform_nodist_sources(p): return platform_values(p, "_nodist")
|
||||||
|
def platform_dependencies(p): return platform_values(p, "dependencies", "_dependencies")
|
||||||
|
|
||||||
|
def platform_startup(p): return platform_specific_values(p, "_startup", "startup")
|
||||||
|
def platform_ldadd(p): return platform_specific_values(p, "_ldadd", "ldadd")
|
||||||
|
def platform_cflags(p): return platform_specific_values(p, "_cflags", "cflags")
|
||||||
|
def platform_ldflags(p): return platform_specific_values(p, "_ldflags", "ldflags")
|
||||||
|
def platform_cppflags(p): return platform_specific_values(p, "_cppflags", "cppflags")
|
||||||
|
def platform_ccasflags(p): return platform_specific_values(p, "_ccasflags", "ccasflags")
|
||||||
|
def platform_stripflags(p): return platform_specific_values(p, "_stripflags", "stripflags")
|
||||||
|
def platform_objcopyflags(p): return platform_specific_values(p, "_objcopyflags", "objcopyflags")
|
||||||
|
|
||||||
|
def module(platform):
|
||||||
|
r = set_canonical_name_suffix(".module")
|
||||||
|
|
||||||
|
r += gvar_add("noinst_PROGRAMS", "[+ name +].module")
|
||||||
|
r += gvar_add("MODULE_FILES", "[+ name +].module$(EXEEXT)")
|
||||||
|
|
||||||
|
r += var_set(cname() + "_SOURCES", platform_sources(platform) + " ## platform sources")
|
||||||
|
r += var_set("nodist_" + cname() + "_SOURCES", platform_nodist_sources(platform) + " ## platform nodist sources")
|
||||||
|
r += var_set(cname() + "_LDADD", platform_ldadd(platform))
|
||||||
|
r += var_set(cname() + "_CFLAGS", "$(AM_CFLAGS) $(CFLAGS_MODULE) " + platform_cflags(platform))
|
||||||
|
r += var_set(cname() + "_LDFLAGS", "$(AM_LDFLAGS) $(LDFLAGS_MODULE) " + platform_ldflags(platform))
|
||||||
|
r += var_set(cname() + "_CPPFLAGS", "$(AM_CPPFLAGS) $(CPPFLAGS_MODULE) " + platform_cppflags(platform))
|
||||||
|
r += var_set(cname() + "_CCASFLAGS", "$(AM_CCASFLAGS) $(CCASFLAGS_MODULE) " + platform_ccasflags(platform))
|
||||||
|
# r += var_set(cname() + "_DEPENDENCIES", platform_dependencies(platform) + " " + platform_ldadd(platform))
|
||||||
|
|
||||||
|
r += gvar_add("EXTRA_DIST", extra_dist())
|
||||||
|
r += gvar_add("BUILT_SOURCES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
|
||||||
|
r += gvar_add("DEF_FILES", "def-[+ name +].lst")
|
||||||
|
r += gvar_add("UND_FILES", "und-[+ name +].lst")
|
||||||
|
r += gvar_add("MOD_FILES", "[+ name +].mod")
|
||||||
|
r += gvar_add("platform_DATA", "[+ name +].mod")
|
||||||
|
r += gvar_add("CLEANFILES", "def-[+ name +].lst und-[+ name +].lst mod-[+ name +].c mod-[+ name +].o [+ name +].mod")
|
||||||
|
|
||||||
|
r += gvar_add("COMMAND_FILES", "command-[+ name +].lst")
|
||||||
|
r += gvar_add("FS_FILES", "fs-[+ name +].lst")
|
||||||
|
r += gvar_add("VIDEO_FILES", "video-[+ name +].lst")
|
||||||
|
r += gvar_add("PARTMAP_FILES", "partmap-[+ name +].lst")
|
||||||
|
r += gvar_add("HANDLER_FILES", "handler-[+ name +].lst")
|
||||||
|
r += gvar_add("PARTTOOL_FILES", "parttool-[+ name +].lst")
|
||||||
|
r += gvar_add("TERMINAL_FILES", "terminal-[+ name +].lst")
|
||||||
|
r += gvar_add("CLEANFILES", "command-[+ name +].lst fs-[+ name +].lst")
|
||||||
|
r += gvar_add("CLEANFILES", "handler-[+ name +].lst terminal-[+ name +].lst")
|
||||||
|
r += gvar_add("CLEANFILES", "video-[+ name +].lst partmap-[+ name +].lst parttool-[+ name +].lst")
|
||||||
|
|
||||||
|
r += gvar_add("CLEANFILES", "[+ name +].pp")
|
||||||
|
r += """
|
||||||
|
[+ name +].pp: $(""" + cname() + """_SOURCES) $(nodist_""" + cname() + """_SOURCES)
|
||||||
|
$(TARGET_CPP) -DGRUB_LST_GENERATOR $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname() + """_CPPFLAGS) $(CPPFLAGS) $^ > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
def-[+ name +].lst: [+ name +].module$(EXEEXT)
|
||||||
|
if test x$(USE_APPLE_CC_FIXES) = xyes; then \
|
||||||
|
$(NM) -g -P -p $< | grep -E '^[a-zA-Z0-9_]* [TDS]' | sed "s/^\\([^ ]*\\).*/\\1 [+ name +]/" >> $@; \
|
||||||
|
else \
|
||||||
|
$(NM) -g --defined-only -P -p $< | sed "s/^\\([^ ]*\\).*/\\1 [+ name +]/" >> $@; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
und-[+ name +].lst: [+ name +].module$(EXEEXT)
|
||||||
|
$(NM) -u -P -p $< | sed "s/^\\([^ ]*\\).*/\\1 [+ name +]/" >> $@
|
||||||
|
|
||||||
|
mod-[+ name +].c: [+ name +].module$(EXEEXT) moddep.lst genmodsrc.sh
|
||||||
|
sh $(srcdir)/genmodsrc.sh [+ name +] moddep.lst > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
mod-[+ name +].o: mod-[+ name +].c
|
||||||
|
$(TARGET_CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname() + """_CPPFLAGS) $(CPPFLAGS) $(""" + cname() + """_CFLAGS) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
[+ name +].mod: [+ name +].module$(EXEEXT) mod-[+ name +].o
|
||||||
|
if test x$(USE_APPLE_CC_FIXES) = xyes; then \
|
||||||
|
$(CCLD) $(""" + cname() + """_LDFLAGS) $(LDFLAGS) -o $@.bin $^; \
|
||||||
|
$(OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -wd1106 -nu -nd $@.bin $@; \
|
||||||
|
rm -f $@.bin; \
|
||||||
|
else \
|
||||||
|
$(CCLD) -o $@ $(""" + cname() + """_LDFLAGS) $(LDFLAGS) $^; \
|
||||||
|
if test ! -z '$(TARGET_OBJ2ELF)'; then $(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi; \
|
||||||
|
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
command-[+ name +].lst: [+ name +].pp $(srcdir)/gencmdlist.sh
|
||||||
|
cat $< | sh $(srcdir)/gencmdlist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
fs-[+ name +].lst: [+ name +].pp $(srcdir)/genfslist.sh
|
||||||
|
cat $< | sh $(srcdir)/genfslist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
video-[+ name +].lst: [+ name +].pp $(srcdir)/genvideolist.sh
|
||||||
|
cat $< | sh $(srcdir)/genvideolist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
partmap-[+ name +].lst: [+ name +].pp $(srcdir)/genpartmaplist.sh
|
||||||
|
cat $< | sh $(srcdir)/genpartmaplist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
parttool-[+ name +].lst: [+ name +].pp $(srcdir)/genparttoollist.sh
|
||||||
|
cat $< | sh $(srcdir)/genparttoollist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
handler-[+ name +].lst: [+ name +].pp $(srcdir)/genhandlerlist.sh
|
||||||
|
cat $< | sh $(srcdir)/genhandlerlist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
terminal-[+ name +].lst: [+ name +].pp $(srcdir)/genterminallist.sh
|
||||||
|
cat $< | sh $(srcdir)/genterminallist.sh [+ name +] > $@ || (rm -f $@; exit 1)
|
||||||
|
"""
|
||||||
|
return r
|
||||||
|
|
||||||
|
def kernel(platform):
|
||||||
|
r = set_canonical_name_suffix(".exec")
|
||||||
|
r += gvar_add("noinst_PROGRAMS", "[+ name +].exec")
|
||||||
|
r += var_set(cname() + "_SOURCES", platform_startup(platform))
|
||||||
|
r += var_add(cname() + "_SOURCES", platform_sources(platform))
|
||||||
|
r += var_set("nodist_" + cname() + "_SOURCES", platform_nodist_sources(platform) + " ## platform nodist sources")
|
||||||
|
r += var_set(cname() + "_LDADD", platform_ldadd(platform))
|
||||||
|
r += var_set(cname() + "_CFLAGS", "$(AM_CFLAGS) $(CFLAGS_KERNEL) " + platform_cflags(platform))
|
||||||
|
r += var_set(cname() + "_LDFLAGS", "$(AM_LDFLAGS) $(LDFLAGS_KERNEL) " + platform_ldflags(platform))
|
||||||
|
r += var_set(cname() + "_CPPFLAGS", "$(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) " + platform_cppflags(platform))
|
||||||
|
r += var_set(cname() + "_CCASFLAGS", "$(AM_CCASFLAGS) $(CCASFLAGS_KERNEL) " + platform_ccasflags(platform))
|
||||||
|
r += var_set(cname() + "_STRIPFLAGS", "$(AM_STRIPFLAGS) $(STRIPFLAGS_KERNEL) " + platform_stripflags(platform))
|
||||||
|
# r += var_set(cname() + "_DEPENDENCIES", platform_dependencies(platform) + " " + platform_ldadd(platform))
|
||||||
|
|
||||||
|
r += gvar_add("EXTRA_DIST", extra_dist())
|
||||||
|
r += gvar_add("BUILT_SOURCES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
|
||||||
|
r += gvar_add("platform_DATA", "[+ name +].img")
|
||||||
|
r += gvar_add("CLEANFILES", "[+ name +].img")
|
||||||
|
r += rule("[+ name +].img", "[+ name +].exec$(EXEEXT)",
|
||||||
|
if_platform_tagged(platform, "nostrip", "cp $< $@",
|
||||||
|
"$(STRIP) $(" + cname() + "_STRIPFLAGS) -o $@ $<"))
|
||||||
|
return r
|
||||||
|
|
||||||
|
def image(platform):
|
||||||
|
r = set_canonical_name_suffix(".image")
|
||||||
|
r += gvar_add("noinst_PROGRAMS", "[+ name +].image")
|
||||||
|
r += var_set(cname() + "_SOURCES", platform_sources(platform))
|
||||||
|
r += var_set("nodist_" + cname() + "_SOURCES", platform_nodist_sources(platform) + "## platform nodist sources")
|
||||||
|
r += var_set(cname() + "_LDADD", platform_ldadd(platform))
|
||||||
|
r += var_set(cname() + "_CFLAGS", "$(AM_CFLAGS) $(CFLAGS_IMAGE) " + platform_cflags(platform))
|
||||||
|
r += var_set(cname() + "_LDFLAGS", "$(AM_LDFLAGS) $(LDFLAGS_IMAGE) " + platform_ldflags(platform))
|
||||||
|
r += var_set(cname() + "_CPPFLAGS", "$(AM_CPPFLAGS) $(CPPFLAGS_IMAGE) " + platform_cppflags(platform))
|
||||||
|
r += var_set(cname() + "_CCASFLAGS", "$(AM_CCASFLAGS) $(CCASFLAGS_IMAGE) " + platform_ccasflags(platform))
|
||||||
|
r += var_set(cname() + "_OBJCOPYFLAGS", "$(OBJCOPYFLAGS_IMAGE) " + platform_objcopyflags(platform))
|
||||||
|
# r += var_set(cname() + "_DEPENDENCIES", platform_dependencies(platform) + " " + platform_ldadd(platform))
|
||||||
|
|
||||||
|
r += gvar_add("EXTRA_DIST", extra_dist())
|
||||||
|
r += gvar_add("BUILT_SOURCES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
|
||||||
|
r += gvar_add("platform_DATA", "[+ name +].img")
|
||||||
|
r += gvar_add("CLEANFILES", "[+ name +].img")
|
||||||
|
r += rule("[+ name +].img", "[+ name +].image$(EXEEXT)", """
|
||||||
|
if test x$(USE_APPLE_CC_FIXES) = xyes; then \
|
||||||
|
$(MACHO2IMG) $< $@; \
|
||||||
|
else \
|
||||||
|
$(OBJCOPY) $(""" + cname() + """_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .reginfo -R .rel.dyn $< $@; \
|
||||||
|
fi
|
||||||
|
""")
|
||||||
|
return r
|
||||||
|
|
||||||
|
def library(platform):
|
||||||
|
r = set_canonical_name_suffix("")
|
||||||
|
r += gvar_add("noinst_LIBRARIES", "[+ name +]")
|
||||||
|
r += var_set(cname() + "_SOURCES", platform_sources(platform))
|
||||||
|
r += var_set("nodist_" + cname() + "_SOURCES", platform_nodist_sources(platform))
|
||||||
|
r += var_set(cname() + "_CFLAGS", "$(AM_CFLAGS) $(CFLAGS_LIBRARY) " + platform_cflags(platform))
|
||||||
|
r += var_set(cname() + "_CPPFLAGS", "$(AM_CPPFLAGS) $(CPPFLAGS_LIBRARY) " + platform_cppflags(platform))
|
||||||
|
r += var_set(cname() + "_CCASFLAGS", "$(AM_CCASFLAGS) $(CCASFLAGS_LIBRARY) " + platform_ccasflags(platform))
|
||||||
|
# r += var_set(cname() + "_DEPENDENCIES", platform_dependencies(platform) + " " + platform_ldadd(platform))
|
||||||
|
|
||||||
|
r += gvar_add("EXTRA_DIST", extra_dist())
|
||||||
|
r += gvar_add("BUILT_SOURCES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
def installdir(default="bin"):
|
||||||
|
return "[+ IF installdir +][+ installdir +][+ ELSE +]" + default + "[+ ENDIF +]"
|
||||||
|
|
||||||
|
def manpage():
|
||||||
|
r = "if COND_MAN_PAGES\n"
|
||||||
|
r += gvar_add("man_MANS", "[+ name +].[+ mansection +]\n")
|
||||||
|
r += rule("[+ name +].[+ mansection +]", "[+ name +]", """
|
||||||
|
chmod a+x [+ name +]
|
||||||
|
PATH=$(builddir):$$PATH $(HELP2MAN) --section=[+ mansection +] -i $(top_srcdir)/docs/man/[+ name +].h2m -o $@ [+ name +]
|
||||||
|
""")
|
||||||
|
r += gvar_add("CLEANFILES", "[+ name +].[+ mansection +]")
|
||||||
|
r += "endif\n"
|
||||||
|
return r
|
||||||
|
|
||||||
|
def program(platform, test=False):
|
||||||
|
r = set_canonical_name_suffix("")
|
||||||
|
|
||||||
|
r += "[+ IF testcase defined +]"
|
||||||
|
r += gvar_add("check_PROGRAMS", "[+ name +]")
|
||||||
|
r += gvar_add("TESTS", "[+ name +]")
|
||||||
|
r += "[+ ELSE +]"
|
||||||
|
r += gvar_add(installdir() + "_PROGRAMS", "[+ name +]")
|
||||||
|
r += "[+ IF mansection +]" + manpage() + "[+ ENDIF +]"
|
||||||
|
r += "[+ ENDIF +]"
|
||||||
|
|
||||||
|
r += var_set(cname() + "_SOURCES", platform_sources(platform))
|
||||||
|
r += var_set("nodist_" + cname() + "_SOURCES", platform_nodist_sources(platform))
|
||||||
|
r += var_set(cname() + "_LDADD", platform_ldadd(platform))
|
||||||
|
r += var_set(cname() + "_CFLAGS", "$(AM_CFLAGS) $(CFLAGS_PROGRAM) " + platform_cflags(platform))
|
||||||
|
r += var_set(cname() + "_LDFLAGS", "$(AM_LDFLAGS) $(LDFLAGS_PROGRAM) " + platform_ldflags(platform))
|
||||||
|
r += var_set(cname() + "_CPPFLAGS", "$(AM_CPPFLAGS) $(CPPFLAGS_PROGRAM) " + platform_cppflags(platform))
|
||||||
|
r += var_set(cname() + "_CCASFLAGS", "$(AM_CCASFLAGS) $(CCASFLAGS_PROGRAM) " + platform_ccasflags(platform))
|
||||||
|
# r += var_set(cname() + "_DEPENDENCIES", platform_dependencies(platform) + " " + platform_ldadd(platform))
|
||||||
|
|
||||||
|
r += gvar_add("EXTRA_DIST", extra_dist())
|
||||||
|
r += gvar_add("BUILT_SOURCES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)")
|
||||||
|
return r
|
||||||
|
|
||||||
|
def data(platform):
|
||||||
|
r = gvar_add("EXTRA_DIST", platform_sources(platform))
|
||||||
|
r += gvar_add("EXTRA_DIST", extra_dist())
|
||||||
|
r += gvar_add(installdir() + "_DATA", platform_sources(platform))
|
||||||
|
return r
|
||||||
|
|
||||||
|
def script(platform):
|
||||||
|
r = "[+ IF testcase defined +]"
|
||||||
|
r += gvar_add("check_SCRIPTS", "[+ name +]")
|
||||||
|
r += gvar_add ("TESTS", "[+ name +]")
|
||||||
|
r += "[+ ELSE +]"
|
||||||
|
r += gvar_add(installdir() + "_SCRIPTS", "[+ name +]")
|
||||||
|
r += "[+ IF mansection +]" + manpage() + "[+ ENDIF +]"
|
||||||
|
r += "[+ ENDIF +]"
|
||||||
|
|
||||||
|
r += rule("[+ name +]", "$(top_builddir)/config.status " + platform_sources(platform), """
|
||||||
|
$(top_builddir)/config.status --file=-:""" + platform_sources(platform) + """ \
|
||||||
|
| sed -e 's,@pkglib_DATA@,$(pkglib_DATA),g' > $@
|
||||||
|
chmod a+x [+ name +]
|
||||||
|
""")
|
||||||
|
|
||||||
|
r += gvar_add("CLEANFILES", "[+ name +]")
|
||||||
|
r += gvar_add("EXTRA_DIST", platform_sources(platform))
|
||||||
|
return r
|
||||||
|
|
||||||
|
def module_rules():
|
||||||
|
return "[+ FOR module +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, module(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
def kernel_rules():
|
||||||
|
return "[+ FOR kernel +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, kernel(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
def image_rules():
|
||||||
|
return "[+ FOR image +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, image(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
def library_rules():
|
||||||
|
return "[+ FOR library +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, library(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
def program_rules():
|
||||||
|
return "[+ FOR program +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, program(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
def script_rules():
|
||||||
|
return "[+ FOR script +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, script(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
def data_rules():
|
||||||
|
return "[+ FOR data +]" + foreach_enabled_platform(
|
||||||
|
lambda p: under_platform_specific_conditionals(p, data(p))) + "[+ ENDFOR +]"
|
||||||
|
|
||||||
|
print "[+ AutoGen5 template +]\n"
|
||||||
|
a = module_rules()
|
||||||
|
b = kernel_rules()
|
||||||
|
c = image_rules()
|
||||||
|
d = library_rules()
|
||||||
|
e = program_rules()
|
||||||
|
f = script_rules()
|
||||||
|
g = data_rules()
|
||||||
|
z = global_variable_initializers()
|
||||||
|
|
||||||
|
# print z # initializer for all vars
|
||||||
|
print a
|
||||||
|
print b
|
||||||
|
print c
|
||||||
|
print d
|
||||||
|
print e
|
||||||
|
print f
|
||||||
|
print g
|
359
grub-core/Makefile.am
Normal file
359
grub-core/Makefile.am
Normal file
|
@ -0,0 +1,359 @@
|
||||||
|
AUTOMAKE_OPTIONS = subdir-objects
|
||||||
|
|
||||||
|
DEPDIR=.deps-core
|
||||||
|
|
||||||
|
include $(top_srcdir)/conf/Makefile.common
|
||||||
|
|
||||||
|
CC=$(TARGET_CC)
|
||||||
|
CPP=$(TARGET_CC)
|
||||||
|
CCAS=$(TARGET_CC)
|
||||||
|
|
||||||
|
if COND_GRUB_MKFONT
|
||||||
|
if COND_HAVE_FONT_SOURCE
|
||||||
|
TARGET_CFLAGS += -DUSE_ASCII_FAILBACK=1 -DHAVE_UNIFONT_WIDTHSPEC=1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
AM_CFLAGS = $(TARGET_CFLAGS)
|
||||||
|
AM_LDFLAGS = $(TARGET_LDFLAGS)
|
||||||
|
AM_CPPFLAGS = $(TARGET_CPPFLAGS) $(CPPFLAGS_DEFAULT)
|
||||||
|
AM_CCASFLAGS = $(TARGET_CCASFLAGS) $(CCASFLAGS_DEFAULT)
|
||||||
|
|
||||||
|
CFLAGS_PROGRAM += $(CFLAGS_PLATFORM)
|
||||||
|
LDFLAGS_PROGRAM += $(LDFLAGS_PLATFORM)
|
||||||
|
CPPFLAGS_PROGRAM += $(CPPFLAGS_PLATFORM)
|
||||||
|
CCASFLAGS_PROGRAM += $(CCASFLAGS_PLATFORM)
|
||||||
|
|
||||||
|
CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin
|
||||||
|
CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
|
||||||
|
CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
|
||||||
|
|
||||||
|
# gentrigtables
|
||||||
|
gentrigtables: gentrigtables.c
|
||||||
|
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(CPPFLAGS) -lm $<
|
||||||
|
CLEANFILES += gentrigtables
|
||||||
|
|
||||||
|
# trigtables.c
|
||||||
|
trigtables.c: gentrigtables gentrigtables.c $(top_srcdir)/configure.ac
|
||||||
|
$(builddir)/gentrigtables > $@
|
||||||
|
CLEANFILES += trigtables.c
|
||||||
|
|
||||||
|
# XXX Use Automake's LEX & YACC support
|
||||||
|
grub_script.tab.h: script/parser.y
|
||||||
|
$(YACC) -d -p grub_script_yy -b grub_script $<
|
||||||
|
grub_script.tab.c: grub_script.tab.h
|
||||||
|
CLEANFILES += grub_script.tab.c grub_script.tab.h
|
||||||
|
|
||||||
|
# For the lexer.
|
||||||
|
grub_script.yy.h: script/yylex.l
|
||||||
|
$(LEX) -o grub_script.yy.c --header-file=grub_script.yy.h $<
|
||||||
|
grub_script.yy.c: grub_script.yy.h
|
||||||
|
CLEANFILES += grub_script.yy.c grub_script.yy.h
|
||||||
|
|
||||||
|
include $(srcdir)/Makefile.core.am
|
||||||
|
include $(srcdir)/Makefile.gcry.am
|
||||||
|
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/cache.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/command.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/device.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/disk.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dl.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/elf.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/elfload.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env_private.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/err.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/file.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fs.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i18n.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/kernel.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/list.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/misc.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/parser.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/reader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/symbol.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/types.h
|
||||||
|
|
||||||
|
if COND_i386_pc
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/biosdisk.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/console.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/vga.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/vbe.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/pxe.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_i386_efi
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/time.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_i386_coreboot
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/console.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/init.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/loader.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_i386_multiboot
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/console.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/init.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/loader.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_i386_qemu
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/console.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/init.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_i386_ieee1275
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_x86_64_efi
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/time.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_mips_yeeloong
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/memory.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/cache.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bitmap.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.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/bitmap_scale.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libgcc.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/cs5536.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/pci.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/serial.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_powerpc_ieee1275
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libgcc.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_sparc64_ieee1275
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/boot.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/msdos_partition.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libgcc.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sparc64/ieee1275/ieee1275.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_emu
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/time.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/types.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gzio.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/menu.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/datetime.h
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/misc.h
|
||||||
|
if COND_GRUB_EMU_SDL
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sdl.h
|
||||||
|
endif
|
||||||
|
if COND_GRUB_EMU_USB
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libusb.h
|
||||||
|
endif
|
||||||
|
if COND_GRUB_EMU_PCI
|
||||||
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libpciaccess.h
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
symlist.h: $(top_builddir)/config.h $(KERNEL_HEADER_FILES)
|
||||||
|
@list='$^'; \
|
||||||
|
for p in $$list; do \
|
||||||
|
echo "#include <$$p>" >> $@ || (rm -f $@; exit 1); \
|
||||||
|
done
|
||||||
|
CLEANFILES += symlist.h
|
||||||
|
BUILT_SOURCES += symlist.h
|
||||||
|
|
||||||
|
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)
|
||||||
|
cat symlist.p | /bin/sh $(srcdir)/gensymlist.sh $(top_builddir)/config.h $(KERNEL_HEADER_FILES) >$@ || (rm -f $@; exit 1)
|
||||||
|
rm -f symlist.p
|
||||||
|
CLEANFILES += symlist.c
|
||||||
|
BUILT_SOURCES += symlist.c
|
||||||
|
|
||||||
|
noinst_DATA += kernel_syms.lst
|
||||||
|
kernel_syms.lst: $(KERNEL_HEADER_FILES) $(top_builddir)/config.h
|
||||||
|
$(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) $(CFLAGS) -DGRUB_SYMBOL_GENERATOR=1 $^ >kernel_syms.input
|
||||||
|
if grep "^#define HAVE_ASM_USCORE" $(top_builddir)/config.h; then u="_"; else u=""; fi; \
|
||||||
|
cat kernel_syms.input | grep -v '^#' | sed -n \
|
||||||
|
-e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/'"$$u"'\1 kernel/;p;}' \
|
||||||
|
-e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/'"$$u"'\1 kernel/;p;}' \
|
||||||
|
| sort -u >$@
|
||||||
|
rm -f kernel_syms.input
|
||||||
|
CLEANFILES += kernel_syms.lst
|
||||||
|
|
||||||
|
if COND_emu
|
||||||
|
kern/emu/grub_emu-main.$(OBJEXT):grub_emu_init.h
|
||||||
|
grub_emu-grub_emu_init.$(OBJEXT):grub_emu_init.h
|
||||||
|
kern/emu/grub_emu_dyn-main.$(OBJEXT):grub_emu_init.h
|
||||||
|
grub_emu_dyn-grub_emu_init.$(OBJEXT):grub_emu_init.h
|
||||||
|
|
||||||
|
grub_emu_init.h: genemuinitheader.sh $(MOD_FILES)
|
||||||
|
rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinitheader.sh $(NM) > $@
|
||||||
|
CLEANFILES += grub_emu_init.h
|
||||||
|
|
||||||
|
grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MOD_FILES)
|
||||||
|
rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinit.sh $(NM) > $@
|
||||||
|
CLEANFILES += grub_emu_init.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
# .lst files
|
||||||
|
platform_DATA += moddep.lst
|
||||||
|
platform_DATA += fs.lst
|
||||||
|
platform_DATA += command.lst
|
||||||
|
platform_DATA += partmap.lst
|
||||||
|
platform_DATA += handler.lst
|
||||||
|
platform_DATA += terminal.lst
|
||||||
|
platform_DATA += parttool.lst
|
||||||
|
platform_DATA += video.lst
|
||||||
|
platform_DATA += crypto.lst
|
||||||
|
CLEANFILES += moddep.lst
|
||||||
|
CLEANFILES += handler.lst
|
||||||
|
CLEANFILES += terminal.lst
|
||||||
|
CLEANFILES += parttool.lst
|
||||||
|
CLEANFILES += video.lst
|
||||||
|
CLEANFILES += crypto.lst
|
||||||
|
|
||||||
|
fs.lst: $(FS_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += fs.lst
|
||||||
|
|
||||||
|
command.lst: $(COMMAND_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += command.lst
|
||||||
|
|
||||||
|
partmap.lst: $(PARTMAP_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += partmap.lst
|
||||||
|
|
||||||
|
handler.lst: $(HANDLER_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += handler.lst
|
||||||
|
|
||||||
|
terminal.lst: $(TERMINAL_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += terminal.lst
|
||||||
|
|
||||||
|
parttool.lst: $(PARTTOOL_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += parttool.lst
|
||||||
|
|
||||||
|
video.lst: $(VIDEO_FILES)
|
||||||
|
cat $^ /dev/null | sort | uniq > $@
|
||||||
|
CLEANFILES += video.lst
|
||||||
|
|
||||||
|
# but, crypto.lst is simply copied
|
||||||
|
crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst
|
||||||
|
cp $^ $@
|
||||||
|
CLEANFILES += crypto.lst
|
||||||
|
|
||||||
|
# generate global module dependencies list
|
||||||
|
moddep.lst: kernel_syms.lst genmoddep.awk $(DEF_FILES) $(UND_FILES)
|
||||||
|
cat $(DEF_FILES) kernel_syms.lst /dev/null \
|
||||||
|
| $(AWK) -f $(srcdir)/genmoddep.awk $(UND_FILES) > $@ \
|
||||||
|
|| (rm -f $@; exit 1)
|
||||||
|
|
||||||
|
if COND_i386_pc
|
||||||
|
if COND_ENABLE_EFIEMU
|
||||||
|
efiemu32.o: efiemu/runtime/efiemu.c $(TARGET_OBJ2ELF)
|
||||||
|
-rm -f $@; \
|
||||||
|
if test "x$(TARGET_APPLE_CC)" = x1; then \
|
||||||
|
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -DELF32 -DAPPLE_CC -m32 -Wall -Werror -nostdlib -O2 -c -o $@.bin $< || exit 1; \
|
||||||
|
$(OBJCONV) -felf32 -nu -nd $@.bin $@ || exit 1; \
|
||||||
|
rm -f $@.bin; \
|
||||||
|
else \
|
||||||
|
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -DELF32 -m32 -Wall -Werror -nostdlib -O2 -c -o $@ $< || exit 1; \
|
||||||
|
if test ! -z "$(TARGET_OBJ2ELF)"; then $(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
efiemu64_c.o: efiemu/runtime/efiemu.c
|
||||||
|
if test "x$(TARGET_APPLE_CC)" = x1; then \
|
||||||
|
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -DELF64 -DAPPLE_CC=1 -m64 -nostdlib -Wall -Werror -mno-red-zone -c -o $@ $< || exit 1; \
|
||||||
|
else \
|
||||||
|
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -DELF64 -m64 -nostdlib -Wall -Werror -O2 -mcmodel=large -mno-red-zone -c -o $@ $< || exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
efiemu64_s.o: efiemu/runtime/efiemu.S
|
||||||
|
-rm -f $@
|
||||||
|
if test "x$(TARGET_APPLE_CC)" = x1; then \
|
||||||
|
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -DELF64 -DAPPLE_CC=1 -m64 -Wall -Werror -nostdlib -O2 -mno-red-zone -c -o $@ $< || exit 1; \
|
||||||
|
else \
|
||||||
|
$(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFAULT) -DELF64 -m64 -Wall -Werror -nostdlib -O2 -mcmodel=large -mno-red-zone -c -o $@ $< || exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
efiemu64.o: efiemu64_c.o efiemu64_s.o $(TARGET_OBJ2ELEF)
|
||||||
|
-rm -f $@; \
|
||||||
|
if test "x$(TARGET_APPLE_CC)" = x1; then \
|
||||||
|
rm -f $@.bin; \
|
||||||
|
$(TARGET_CC) -m64 -Wl,-r -nostdlib -o $@.bin $^ || exit 1; \
|
||||||
|
$(OBJCONV) -felf64 -nu -nd $@.bin $@ || exit 1; \
|
||||||
|
rm -f $@.bin; \
|
||||||
|
else \
|
||||||
|
$(TARGET_CC) -m64 -nostdlib -Wl,-r -o $@ $^ || exit 1; \
|
||||||
|
if test ! -z "$(TARGET_OBJ2ELF)"; then $(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
platform_DATA += efiemu32.o efiemu64.o
|
||||||
|
CLEANFILES += efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
1406
grub-core/Makefile.core.def
Normal file
1406
grub-core/Makefile.core.def
Normal file
File diff suppressed because it is too large
Load diff
|
@ -20,7 +20,8 @@
|
||||||
#include <grub/mips/yeeloong/pci.h>
|
#include <grub/mips/yeeloong/pci.h>
|
||||||
#include <grub/mips/loongson.h>
|
#include <grub/mips/loongson.h>
|
||||||
#include <grub/pci.h>
|
#include <grub/pci.h>
|
||||||
#include <grub/serial.h>
|
#include <grub/machine/serial.h>
|
||||||
|
#include <grub/ns8250.h>
|
||||||
#include <grub/cs5536.h>
|
#include <grub/cs5536.h>
|
||||||
#include <grub/smbus.h>
|
#include <grub/smbus.h>
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include <grub/pci.h>
|
#include <grub/pci.h>
|
||||||
#include <grub/dl.h>
|
#include <grub/dl.h>
|
||||||
|
#include <grub/emu/misc.h>
|
||||||
#include <grub/util/misc.h>
|
#include <grub/util/misc.h>
|
||||||
|
|
||||||
grub_pci_address_t
|
grub_pci_address_t
|
|
@ -654,7 +654,8 @@ grub_ohci_transaction (grub_ohci_td_t td,
|
||||||
|
|
||||||
static grub_usb_err_t
|
static grub_usb_err_t
|
||||||
grub_ohci_transfer (grub_usb_controller_t dev,
|
grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
grub_usb_transfer_t transfer)
|
grub_usb_transfer_t transfer, int timeout,
|
||||||
|
grub_size_t *actual)
|
||||||
{
|
{
|
||||||
struct grub_ohci *o = (struct grub_ohci *) dev->data;
|
struct grub_ohci *o = (struct grub_ohci *) dev->data;
|
||||||
grub_ohci_ed_t ed_virt;
|
grub_ohci_ed_t ed_virt;
|
||||||
|
@ -680,6 +681,8 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
int err_unrec = 0;
|
int err_unrec = 0;
|
||||||
grub_uint32_t intstatus;
|
grub_uint32_t intstatus;
|
||||||
|
|
||||||
|
*actual = 0;
|
||||||
|
|
||||||
/* Pre-set target for ED - we need it to find proper ED */
|
/* Pre-set target for ED - we need it to find proper ED */
|
||||||
/* Set the device address. */
|
/* Set the device address. */
|
||||||
target = transfer->devaddr;
|
target = transfer->devaddr;
|
||||||
|
@ -832,7 +835,7 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Safety measure to avoid a hang. */
|
/* Safety measure to avoid a hang. */
|
||||||
maxtime = grub_get_time_ms () + 1000;
|
maxtime = grub_get_time_ms () + timeout;
|
||||||
|
|
||||||
/* Wait until the transfer is completed or STALLs. */
|
/* Wait until the transfer is completed or STALLs. */
|
||||||
do
|
do
|
||||||
|
@ -986,6 +989,7 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
transfer->last_trans = tderr_virt->tr_index;
|
transfer->last_trans = tderr_virt->tr_index;
|
||||||
else
|
else
|
||||||
transfer->last_trans = -1;
|
transfer->last_trans = -1;
|
||||||
|
*actual = transfer->size + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (err_halt) /* error, ED is halted by OHCI, i.e. can be modified */
|
else if (err_halt) /* error, ED is halted by OHCI, i.e. can be modified */
|
||||||
|
@ -1032,7 +1036,7 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
/* XXX: Should not happen! */
|
/* XXX: Should not happen! */
|
||||||
grub_error (GRUB_ERR_IO, "OHCI without reporting the reason");
|
grub_error (GRUB_ERR_IO, "OHCI failed without reporting the reason");
|
||||||
err = GRUB_USB_ERR_INTERNAL;
|
err = GRUB_USB_ERR_INTERNAL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1078,12 +1082,14 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
|
|
||||||
case 9:
|
case 9:
|
||||||
/* XXX: Data underrun error. */
|
/* XXX: Data underrun error. */
|
||||||
err = GRUB_USB_ERR_DATA;
|
|
||||||
grub_dprintf ("ohci", "Underrun, failed TD address: %p, index: %d\n",
|
grub_dprintf ("ohci", "Underrun, failed TD address: %p, index: %d\n",
|
||||||
tderr_virt, tderr_virt->tr_index);
|
tderr_virt, tderr_virt->tr_index);
|
||||||
grub_dprintf ("ohci", "Underrun, number of not transferred bytes: %d\n",
|
if (transfer->last_trans == -1)
|
||||||
1 + grub_le_to_cpu32 (tderr_virt->buffer_end)
|
break;
|
||||||
- grub_le_to_cpu32 (tderr_virt->buffer));
|
*actual = transfer->transactions[transfer->last_trans].size
|
||||||
|
- (grub_le_to_cpu32 (tderr_virt->buffer_end)
|
||||||
|
- grub_le_to_cpu32 (tderr_virt->buffer))
|
||||||
|
+ transfer->transactions[transfer->last_trans].preceding;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
|
@ -1172,12 +1178,10 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
transfer->last_trans = tderr_virt->tr_index;
|
transfer->last_trans = tderr_virt->tr_index;
|
||||||
else
|
else
|
||||||
transfer->last_trans = -1;
|
transfer->last_trans = -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set empty ED - set HEAD = TAIL = last (not processed) TD */
|
/* Set empty ED - set HEAD = TAIL = last (not processed) TD */
|
||||||
ed_virt->td_head = grub_cpu_to_le32 ( grub_le_to_cpu32 (
|
ed_virt->td_head = grub_cpu_to_le32 (grub_le_to_cpu32 (ed_virt->td_tail) & ~0xf);
|
||||||
ed_virt->td_tail) & ~0xf);
|
|
||||||
|
|
||||||
/* At this point always should be:
|
/* At this point always should be:
|
||||||
* ED has skip bit set and halted or empty or after next SOF,
|
* ED has skip bit set and halted or empty or after next SOF,
|
125
grub-core/bus/usb/serial/common.c
Normal file
125
grub-core/bus/usb/serial/common.c
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2000,2001,2002,2003,2004,2005,2007,2008,2009,2010 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/serial.h>
|
||||||
|
#include <grub/usbserial.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_usbserial_fini (struct grub_serial_port *port)
|
||||||
|
{
|
||||||
|
port->usbdev->config[port->configno].interf[port->interfno].detach_hook = 0;
|
||||||
|
port->usbdev->config[port->configno].interf[port->interfno].attached = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_usbserial_detach (grub_usb_device_t usbdev, int configno, int interfno)
|
||||||
|
{
|
||||||
|
static struct grub_serial_port *port;
|
||||||
|
port = usbdev->config[configno].interf[interfno].detach_data;
|
||||||
|
|
||||||
|
grub_serial_unregister (port);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int usbnum = 0;
|
||||||
|
|
||||||
|
int
|
||||||
|
grub_usbserial_attach (grub_usb_device_t usbdev, int configno, int interfno,
|
||||||
|
struct grub_serial_driver *driver)
|
||||||
|
{
|
||||||
|
struct grub_serial_port *port;
|
||||||
|
int j;
|
||||||
|
struct grub_usb_desc_if *interf;
|
||||||
|
|
||||||
|
interf = usbdev->config[configno].interf[interfno].descif;
|
||||||
|
|
||||||
|
port = grub_malloc (sizeof (*port));
|
||||||
|
if (!port)
|
||||||
|
{
|
||||||
|
grub_print_error ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
port->name = grub_xasprintf ("usb%d", usbnum++);
|
||||||
|
if (!port->name)
|
||||||
|
{
|
||||||
|
grub_free (port);
|
||||||
|
grub_print_error ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
port->usbdev = usbdev;
|
||||||
|
port->driver = driver;
|
||||||
|
for (j = 0; j < interf->endpointcnt; j++)
|
||||||
|
{
|
||||||
|
struct grub_usb_desc_endp *endp;
|
||||||
|
endp = &usbdev->config[0].interf[interfno].descendp[j];
|
||||||
|
|
||||||
|
if ((endp->endp_addr & 128) && (endp->attrib & 3) == 2)
|
||||||
|
{
|
||||||
|
/* Bulk IN endpoint. */
|
||||||
|
port->in_endp = endp;
|
||||||
|
}
|
||||||
|
else if (!(endp->endp_addr & 128) && (endp->attrib & 3) == 2)
|
||||||
|
{
|
||||||
|
/* Bulk OUT endpoint. */
|
||||||
|
port->out_endp = endp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!port->out_endp || !port->in_endp)
|
||||||
|
{
|
||||||
|
grub_free (port->name);
|
||||||
|
grub_free (port);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
port->configno = configno;
|
||||||
|
port->interfno = interfno;
|
||||||
|
|
||||||
|
grub_serial_config_defaults (port);
|
||||||
|
grub_serial_register (port);
|
||||||
|
|
||||||
|
port->usbdev->config[port->configno].interf[port->interfno].detach_hook
|
||||||
|
= grub_usbserial_detach;
|
||||||
|
port->usbdev->config[port->configno].interf[port->interfno].detach_data
|
||||||
|
= port;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
grub_usbserial_fetch (struct grub_serial_port *port, grub_size_t header_size)
|
||||||
|
{
|
||||||
|
grub_usb_err_t err;
|
||||||
|
grub_size_t actual;
|
||||||
|
|
||||||
|
if (port->bufstart < port->bufend)
|
||||||
|
return port->buf[port->bufstart++];
|
||||||
|
|
||||||
|
err = grub_usb_bulk_read_extended (port->usbdev, port->in_endp->endp_addr,
|
||||||
|
sizeof (port->buf), port->buf, 10,
|
||||||
|
&actual);
|
||||||
|
if (err != GRUB_USB_ERR_NONE)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
port->bufstart = header_size;
|
||||||
|
port->bufend = actual;
|
||||||
|
if (port->bufstart >= port->bufend)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return port->buf[port->bufstart++];
|
||||||
|
}
|
205
grub-core/bus/usb/serial/ftdi.c
Normal file
205
grub-core/bus/usb/serial/ftdi.c
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2000,2001,2002,2003,2004,2005,2007,2008,2009,2010 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/serial.h>
|
||||||
|
#include <grub/types.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/usb.h>
|
||||||
|
#include <grub/usbserial.h>
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
GRUB_FTDI_MODEM_CTRL = 0x01,
|
||||||
|
GRUB_FTDI_FLOW_CTRL = 0x02,
|
||||||
|
GRUB_FTDI_SPEED_CTRL = 0x03,
|
||||||
|
GRUB_FTDI_DATA_CTRL = 0x04
|
||||||
|
};
|
||||||
|
|
||||||
|
#define GRUB_FTDI_MODEM_CTRL_DTRRTS 3
|
||||||
|
#define GRUB_FTDI_FLOW_CTRL_DTRRTS 3
|
||||||
|
|
||||||
|
/* Convert speed to divisor. */
|
||||||
|
static grub_uint32_t
|
||||||
|
get_divisor (unsigned int speed)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
/* The structure for speed vs. divisor. */
|
||||||
|
struct divisor
|
||||||
|
{
|
||||||
|
unsigned int speed;
|
||||||
|
grub_uint32_t div;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The table which lists common configurations. */
|
||||||
|
/* Computed with a division formula with 3MHz as base frequency. */
|
||||||
|
static struct divisor divisor_tab[] =
|
||||||
|
{
|
||||||
|
{ 2400, 0x04e2 },
|
||||||
|
{ 4800, 0x0271 },
|
||||||
|
{ 9600, 0x4138 },
|
||||||
|
{ 19200, 0x809c },
|
||||||
|
{ 38400, 0xc04e },
|
||||||
|
{ 57600, 0xc034 },
|
||||||
|
{ 115200, 0x001a }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Set the baud rate. */
|
||||||
|
for (i = 0; i < ARRAY_SIZE (divisor_tab); i++)
|
||||||
|
if (divisor_tab[i].speed == speed)
|
||||||
|
return divisor_tab[i].div;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
real_config (struct grub_serial_port *port)
|
||||||
|
{
|
||||||
|
grub_uint32_t divisor;
|
||||||
|
const grub_uint16_t parities[] = {
|
||||||
|
[GRUB_SERIAL_PARITY_NONE] = 0x0000,
|
||||||
|
[GRUB_SERIAL_PARITY_ODD] = 0x0100,
|
||||||
|
[GRUB_SERIAL_PARITY_EVEN] = 0x0200
|
||||||
|
};
|
||||||
|
const grub_uint16_t stop_bits[] = {
|
||||||
|
[GRUB_SERIAL_STOP_BITS_1] = 0x0000,
|
||||||
|
[GRUB_SERIAL_STOP_BITS_2] = 0x1000,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (port->configured)
|
||||||
|
return;
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
GRUB_FTDI_MODEM_CTRL,
|
||||||
|
GRUB_FTDI_MODEM_CTRL_DTRRTS, 0, 0, 0);
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
GRUB_FTDI_FLOW_CTRL,
|
||||||
|
GRUB_FTDI_FLOW_CTRL_DTRRTS, 0, 0, 0);
|
||||||
|
|
||||||
|
divisor = get_divisor (port->config.speed);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
GRUB_FTDI_SPEED_CTRL,
|
||||||
|
divisor & 0xffff, divisor >> 16, 0, 0);
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
GRUB_FTDI_DATA_CTRL,
|
||||||
|
parities[port->config.parity]
|
||||||
|
| stop_bits[port->config.stop_bits]
|
||||||
|
| port->config.word_len, 0, 0, 0);
|
||||||
|
|
||||||
|
port->configured = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fetch a key. */
|
||||||
|
static int
|
||||||
|
ftdi_hw_fetch (struct grub_serial_port *port)
|
||||||
|
{
|
||||||
|
real_config (port);
|
||||||
|
|
||||||
|
return grub_usbserial_fetch (port, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Put a character. */
|
||||||
|
static void
|
||||||
|
ftdi_hw_put (struct grub_serial_port *port, const int c)
|
||||||
|
{
|
||||||
|
char cc = c;
|
||||||
|
|
||||||
|
real_config (port);
|
||||||
|
|
||||||
|
grub_usb_bulk_write (port->usbdev, port->out_endp->endp_addr, 1, &cc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
ftdi_hw_configure (struct grub_serial_port *port,
|
||||||
|
struct grub_serial_config *config)
|
||||||
|
{
|
||||||
|
grub_uint16_t divisor;
|
||||||
|
|
||||||
|
divisor = get_divisor (config->speed);
|
||||||
|
if (divisor == 0)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "bad speed");
|
||||||
|
|
||||||
|
if (config->parity != GRUB_SERIAL_PARITY_NONE
|
||||||
|
&& config->parity != GRUB_SERIAL_PARITY_ODD
|
||||||
|
&& config->parity != GRUB_SERIAL_PARITY_EVEN)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unsupported parity");
|
||||||
|
|
||||||
|
if (config->stop_bits != GRUB_SERIAL_STOP_BITS_1
|
||||||
|
&& config->stop_bits != GRUB_SERIAL_STOP_BITS_2)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unsupported stop bits");
|
||||||
|
|
||||||
|
if (config->word_len < 5 || config->word_len > 8)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unsupported word length");
|
||||||
|
|
||||||
|
port->config = *config;
|
||||||
|
port->configured = 0;
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct grub_serial_driver grub_ftdi_driver =
|
||||||
|
{
|
||||||
|
.configure = ftdi_hw_configure,
|
||||||
|
.fetch = ftdi_hw_fetch,
|
||||||
|
.put = ftdi_hw_put,
|
||||||
|
.fini = grub_usbserial_fini
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct
|
||||||
|
{
|
||||||
|
grub_uint16_t vendor, product;
|
||||||
|
} products[] =
|
||||||
|
{
|
||||||
|
{0x0403, 0x6001} /* QEMU virtual USBserial. */
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
grub_ftdi_attach (grub_usb_device_t usbdev, int configno, int interfno)
|
||||||
|
{
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
|
for (j = 0; j < ARRAY_SIZE (products); j++)
|
||||||
|
if (usbdev->descdev.vendorid == products[j].vendor
|
||||||
|
&& usbdev->descdev.prodid == products[j].product)
|
||||||
|
break;
|
||||||
|
if (j == ARRAY_SIZE (products))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return grub_usbserial_attach (usbdev, configno, interfno,
|
||||||
|
&grub_ftdi_driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct grub_usb_attach_desc attach_hook =
|
||||||
|
{
|
||||||
|
.class = 0xff,
|
||||||
|
.hook = grub_ftdi_attach
|
||||||
|
};
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(usbserial_ftdi)
|
||||||
|
{
|
||||||
|
grub_usb_register_attach_hook_class (&attach_hook);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(usbserial_ftdi)
|
||||||
|
{
|
||||||
|
grub_serial_unregister_driver (&grub_ftdi_driver);
|
||||||
|
grub_usb_unregister_attach_hook_class (&attach_hook);
|
||||||
|
}
|
218
grub-core/bus/usb/serial/pl2303.c
Normal file
218
grub-core/bus/usb/serial/pl2303.c
Normal file
|
@ -0,0 +1,218 @@
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2000,2001,2002,2003,2004,2005,2007,2008,2009,2010 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/serial.h>
|
||||||
|
#include <grub/types.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/usb.h>
|
||||||
|
#include <grub/usbserial.h>
|
||||||
|
|
||||||
|
/* Convert speed to divisor. */
|
||||||
|
static grub_uint32_t
|
||||||
|
is_speed_supported (unsigned int speed)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
unsigned int supported[] = { 2400, 4800, 9600, 19200, 38400, 57600, 115200};
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE (supported); i++)
|
||||||
|
if (supported[i] == speed)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define GRUB_PL2303_REQUEST_SET_CONFIG 0x20
|
||||||
|
#define GRUB_PL2303_STOP_BITS_1 0x0
|
||||||
|
#define GRUB_PL2303_STOP_BITS_2 0x2
|
||||||
|
|
||||||
|
#define GRUB_PL2303_PARITY_NONE 0
|
||||||
|
#define GRUB_PL2303_PARITY_ODD 1
|
||||||
|
#define GRUB_PL2303_PARITY_EVEN 2
|
||||||
|
|
||||||
|
struct grub_pl2303_config
|
||||||
|
{
|
||||||
|
grub_uint32_t speed;
|
||||||
|
grub_uint8_t stop_bits;
|
||||||
|
grub_uint8_t parity;
|
||||||
|
grub_uint8_t word_len;
|
||||||
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
static void
|
||||||
|
real_config (struct grub_serial_port *port)
|
||||||
|
{
|
||||||
|
struct grub_pl2303_config config_pl2303;
|
||||||
|
char xx;
|
||||||
|
|
||||||
|
if (port->configured)
|
||||||
|
return;
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_IN,
|
||||||
|
1, 0x8484, 0, 1, &xx);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 0x0404, 0, 0, 0);
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_IN,
|
||||||
|
1, 0x8484, 0, 1, &xx);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_IN,
|
||||||
|
1, 0x8383, 0, 1, &xx);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_IN,
|
||||||
|
1, 0x8484, 0, 1, &xx);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 0x0404, 1, 0, 0);
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_IN,
|
||||||
|
1, 0x8484, 0, 1, &xx);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_IN,
|
||||||
|
1, 0x8383, 0, 1, &xx);
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 0, 1, 0, 0);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 1, 0, 0, 0);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 2, 0x44, 0, 0);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 8, 0, 0, 0);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 9, 0, 0, 0);
|
||||||
|
|
||||||
|
if (port->config.stop_bits == GRUB_SERIAL_STOP_BITS_2)
|
||||||
|
config_pl2303.stop_bits = GRUB_PL2303_STOP_BITS_2;
|
||||||
|
else
|
||||||
|
config_pl2303.stop_bits = GRUB_PL2303_STOP_BITS_1;
|
||||||
|
|
||||||
|
switch (port->config.parity)
|
||||||
|
{
|
||||||
|
case GRUB_SERIAL_PARITY_NONE:
|
||||||
|
config_pl2303.parity = GRUB_PL2303_PARITY_NONE;
|
||||||
|
break;
|
||||||
|
case GRUB_SERIAL_PARITY_ODD:
|
||||||
|
config_pl2303.parity = GRUB_PL2303_PARITY_ODD;
|
||||||
|
break;
|
||||||
|
case GRUB_SERIAL_PARITY_EVEN:
|
||||||
|
config_pl2303.parity = GRUB_PL2303_PARITY_EVEN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
config_pl2303.word_len = port->config.word_len;
|
||||||
|
config_pl2303.speed = port->config.speed;
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_CLASS_INTERFACE_OUT,
|
||||||
|
GRUB_PL2303_REQUEST_SET_CONFIG, 0, 0,
|
||||||
|
sizeof (config_pl2303), (char *) &config_pl2303);
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_CLASS_INTERFACE_OUT,
|
||||||
|
0x22, 3, 0, 0, 0);
|
||||||
|
|
||||||
|
grub_usb_control_msg (port->usbdev, GRUB_USB_REQTYPE_VENDOR_OUT,
|
||||||
|
1, 0, 0x61, 0, 0);
|
||||||
|
port->configured = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fetch a key. */
|
||||||
|
static int
|
||||||
|
pl2303_hw_fetch (struct grub_serial_port *port)
|
||||||
|
{
|
||||||
|
real_config (port);
|
||||||
|
|
||||||
|
return grub_usbserial_fetch (port, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Put a character. */
|
||||||
|
static void
|
||||||
|
pl2303_hw_put (struct grub_serial_port *port, const int c)
|
||||||
|
{
|
||||||
|
char cc = c;
|
||||||
|
|
||||||
|
real_config (port);
|
||||||
|
|
||||||
|
grub_usb_bulk_write (port->usbdev, port->out_endp->endp_addr, 1, &cc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
pl2303_hw_configure (struct grub_serial_port *port,
|
||||||
|
struct grub_serial_config *config)
|
||||||
|
{
|
||||||
|
if (!is_speed_supported (config->speed))
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "bad speed");
|
||||||
|
|
||||||
|
if (config->parity != GRUB_SERIAL_PARITY_NONE
|
||||||
|
&& config->parity != GRUB_SERIAL_PARITY_ODD
|
||||||
|
&& config->parity != GRUB_SERIAL_PARITY_EVEN)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unsupported parity");
|
||||||
|
|
||||||
|
if (config->stop_bits != GRUB_SERIAL_STOP_BITS_1
|
||||||
|
&& config->stop_bits != GRUB_SERIAL_STOP_BITS_2)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unsupported stop bits");
|
||||||
|
|
||||||
|
if (config->word_len < 5 || config->word_len > 8)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unsupported word length");
|
||||||
|
|
||||||
|
port->config = *config;
|
||||||
|
port->configured = 0;
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct grub_serial_driver grub_pl2303_driver =
|
||||||
|
{
|
||||||
|
.configure = pl2303_hw_configure,
|
||||||
|
.fetch = pl2303_hw_fetch,
|
||||||
|
.put = pl2303_hw_put,
|
||||||
|
.fini = grub_usbserial_fini
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct
|
||||||
|
{
|
||||||
|
grub_uint16_t vendor, product;
|
||||||
|
} products[] =
|
||||||
|
{
|
||||||
|
{0x067b, 0x2303}
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
grub_pl2303_attach (grub_usb_device_t usbdev, int configno, int interfno)
|
||||||
|
{
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
|
for (j = 0; j < ARRAY_SIZE (products); j++)
|
||||||
|
if (usbdev->descdev.vendorid == products[j].vendor
|
||||||
|
&& usbdev->descdev.prodid == products[j].product)
|
||||||
|
break;
|
||||||
|
if (j == ARRAY_SIZE (products))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return grub_usbserial_attach (usbdev, configno, interfno,
|
||||||
|
&grub_pl2303_driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct grub_usb_attach_desc attach_hook =
|
||||||
|
{
|
||||||
|
.class = 0xff,
|
||||||
|
.hook = grub_pl2303_attach
|
||||||
|
};
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(usbserial_pl2303)
|
||||||
|
{
|
||||||
|
grub_usb_register_attach_hook_class (&attach_hook);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(usbserial_pl2303)
|
||||||
|
{
|
||||||
|
grub_serial_unregister_driver (&grub_pl2303_driver);
|
||||||
|
grub_usb_unregister_attach_hook_class (&attach_hook);
|
||||||
|
}
|
|
@ -333,10 +333,12 @@ grub_free_td (struct grub_uhci *u, grub_uhci_td_t td)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
grub_free_queue (struct grub_uhci *u, grub_uhci_td_t td,
|
grub_free_queue (struct grub_uhci *u, grub_uhci_td_t td,
|
||||||
grub_usb_transfer_t transfer)
|
grub_usb_transfer_t transfer, grub_size_t *actual)
|
||||||
{
|
{
|
||||||
int i; /* Index of TD in transfer */
|
int i; /* Index of TD in transfer */
|
||||||
|
|
||||||
|
*actual = 0;
|
||||||
|
|
||||||
/* Free the TDs in this queue and set last_trans. */
|
/* Free the TDs in this queue and set last_trans. */
|
||||||
for (i=0; td; i++)
|
for (i=0; td; i++)
|
||||||
{
|
{
|
||||||
|
@ -346,6 +348,8 @@ grub_free_queue (struct grub_uhci *u, grub_uhci_td_t td,
|
||||||
if (transfer && (td->linkptr & 1))
|
if (transfer && (td->linkptr & 1))
|
||||||
transfer->last_trans = i;
|
transfer->last_trans = i;
|
||||||
|
|
||||||
|
*actual += (td->ctrl_status + 1) & 0x7ff;
|
||||||
|
|
||||||
/* Unlink the queue. */
|
/* Unlink the queue. */
|
||||||
tdprev = td;
|
tdprev = td;
|
||||||
td = (grub_uhci_td_t) td->linkptr2;
|
td = (grub_uhci_td_t) td->linkptr2;
|
||||||
|
@ -436,7 +440,8 @@ grub_uhci_transaction (struct grub_uhci *u, unsigned int endp,
|
||||||
|
|
||||||
static grub_usb_err_t
|
static grub_usb_err_t
|
||||||
grub_uhci_transfer (grub_usb_controller_t dev,
|
grub_uhci_transfer (grub_usb_controller_t dev,
|
||||||
grub_usb_transfer_t transfer)
|
grub_usb_transfer_t transfer,
|
||||||
|
int timeout, grub_size_t *actual)
|
||||||
{
|
{
|
||||||
struct grub_uhci *u = (struct grub_uhci *) dev->data;
|
struct grub_uhci *u = (struct grub_uhci *) dev->data;
|
||||||
grub_uhci_qh_t qh;
|
grub_uhci_qh_t qh;
|
||||||
|
@ -447,10 +452,12 @@ grub_uhci_transfer (grub_usb_controller_t dev,
|
||||||
int i;
|
int i;
|
||||||
grub_uint64_t endtime;
|
grub_uint64_t endtime;
|
||||||
|
|
||||||
|
*actual = 0;
|
||||||
|
|
||||||
/* Allocate a queue head for the transfer queue. */
|
/* Allocate a queue head for the transfer queue. */
|
||||||
qh = grub_alloc_qh (u, GRUB_USB_TRANSACTION_TYPE_CONTROL);
|
qh = grub_alloc_qh (u, GRUB_USB_TRANSACTION_TYPE_CONTROL);
|
||||||
if (! qh)
|
if (! qh)
|
||||||
return grub_errno;
|
return GRUB_USB_ERR_INTERNAL;
|
||||||
|
|
||||||
grub_dprintf ("uhci", "transfer, iobase:%08x\n", u->iobase);
|
grub_dprintf ("uhci", "transfer, iobase:%08x\n", u->iobase);
|
||||||
|
|
||||||
|
@ -468,7 +475,7 @@ grub_uhci_transfer (grub_usb_controller_t dev,
|
||||||
td_prev->linkptr = 1;
|
td_prev->linkptr = 1;
|
||||||
|
|
||||||
if (td_first)
|
if (td_first)
|
||||||
grub_free_queue (u, td_first, NULL);
|
grub_free_queue (u, td_first, NULL, actual);
|
||||||
|
|
||||||
return GRUB_USB_ERR_INTERNAL;
|
return GRUB_USB_ERR_INTERNAL;
|
||||||
}
|
}
|
||||||
|
@ -496,7 +503,7 @@ grub_uhci_transfer (grub_usb_controller_t dev,
|
||||||
|
|
||||||
/* Wait until either the transaction completed or an error
|
/* Wait until either the transaction completed or an error
|
||||||
occurred. */
|
occurred. */
|
||||||
endtime = grub_get_time_ms () + 1000;
|
endtime = grub_get_time_ms () + timeout;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
grub_uhci_td_t errtd;
|
grub_uhci_td_t errtd;
|
||||||
|
@ -512,42 +519,37 @@ grub_uhci_transfer (grub_usb_controller_t dev,
|
||||||
|
|
||||||
grub_dprintf ("uhci", "t status=0x%02x\n", errtd->ctrl_status);
|
grub_dprintf ("uhci", "t status=0x%02x\n", errtd->ctrl_status);
|
||||||
|
|
||||||
/* Check if the TD is not longer active. */
|
/* Check if the endpoint is stalled. */
|
||||||
if (! (errtd->ctrl_status & (1 << 23)))
|
if (errtd->ctrl_status & (1 << 22))
|
||||||
{
|
err = GRUB_USB_ERR_STALL;
|
||||||
grub_dprintf ("uhci", ">>t status=0x%02x\n", errtd->ctrl_status);
|
|
||||||
|
|
||||||
/* Check if the endpoint is stalled. */
|
/* Check if an error related to the data buffer occurred. */
|
||||||
if (errtd->ctrl_status & (1 << 22))
|
if (errtd->ctrl_status & (1 << 21))
|
||||||
err = GRUB_USB_ERR_STALL;
|
err = GRUB_USB_ERR_DATA;
|
||||||
|
|
||||||
/* Check if an error related to the data buffer occurred. */
|
/* Check if a babble error occurred. */
|
||||||
if (errtd->ctrl_status & (1 << 21))
|
if (errtd->ctrl_status & (1 << 20))
|
||||||
err = GRUB_USB_ERR_DATA;
|
err = GRUB_USB_ERR_BABBLE;
|
||||||
|
|
||||||
/* Check if a babble error occurred. */
|
/* Check if a NAK occurred. */
|
||||||
if (errtd->ctrl_status & (1 << 20))
|
if (errtd->ctrl_status & (1 << 19))
|
||||||
err = GRUB_USB_ERR_BABBLE;
|
err = GRUB_USB_ERR_NAK;
|
||||||
|
|
||||||
/* Check if a NAK occurred. */
|
/* Check if a timeout occurred. */
|
||||||
if (errtd->ctrl_status & (1 << 19))
|
if (errtd->ctrl_status & (1 << 18))
|
||||||
err = GRUB_USB_ERR_NAK;
|
err = GRUB_USB_ERR_TIMEOUT;
|
||||||
|
|
||||||
/* Check if a timeout occurred. */
|
/* Check if a bitstuff error occurred. */
|
||||||
if (errtd->ctrl_status & (1 << 18))
|
if (errtd->ctrl_status & (1 << 17))
|
||||||
err = GRUB_USB_ERR_TIMEOUT;
|
err = GRUB_USB_ERR_BITSTUFF;
|
||||||
|
|
||||||
/* Check if a bitstuff error occurred. */
|
if (err)
|
||||||
if (errtd->ctrl_status & (1 << 17))
|
goto fail;
|
||||||
err = GRUB_USB_ERR_BITSTUFF;
|
|
||||||
|
|
||||||
if (err)
|
/* Fall through, no errors occurred, so the QH might be
|
||||||
goto fail;
|
updated. */
|
||||||
|
grub_dprintf ("uhci", "transaction fallthrough\n");
|
||||||
|
|
||||||
/* Fall through, no errors occurred, so the QH might be
|
|
||||||
updated. */
|
|
||||||
grub_dprintf ("uhci", "transaction fallthrough\n");
|
|
||||||
}
|
|
||||||
if (grub_get_time_ms () > endtime)
|
if (grub_get_time_ms () > endtime)
|
||||||
{
|
{
|
||||||
err = GRUB_USB_ERR_STALL;
|
err = GRUB_USB_ERR_STALL;
|
||||||
|
@ -567,7 +569,7 @@ grub_uhci_transfer (grub_usb_controller_t dev,
|
||||||
/* Place the QH back in the free list and deallocate the associated
|
/* Place the QH back in the free list and deallocate the associated
|
||||||
TDs. */
|
TDs. */
|
||||||
qh->elinkptr = 1;
|
qh->elinkptr = 1;
|
||||||
grub_free_queue (u, td_first, transfer);
|
grub_free_queue (u, td_first, transfer, actual);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
|
@ -22,6 +22,7 @@
|
||||||
#include <grub/usb.h>
|
#include <grub/usb.h>
|
||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
#include <grub/list.h>
|
#include <grub/list.h>
|
||||||
|
#include <grub/term.h>
|
||||||
|
|
||||||
static grub_usb_controller_dev_t grub_usb_list;
|
static grub_usb_controller_dev_t grub_usb_list;
|
||||||
struct grub_usb_attach_desc *attach_hooks;
|
struct grub_usb_attach_desc *attach_hooks;
|
||||||
|
@ -208,14 +209,23 @@ grub_usb_device_initialize (grub_usb_device_t dev)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* Skip the configuration descriptor. */
|
/* Skip the configuration descriptor. */
|
||||||
pos = sizeof (struct grub_usb_desc_config);
|
pos = dev->config[i].descconf->length;
|
||||||
|
|
||||||
/* Read all interfaces. */
|
/* Read all interfaces. */
|
||||||
for (currif = 0; currif < dev->config[i].descconf->numif; currif++)
|
for (currif = 0; currif < dev->config[i].descconf->numif; currif++)
|
||||||
{
|
{
|
||||||
|
while (pos < config.totallen
|
||||||
|
&& ((struct grub_usb_desc *)&data[pos])->type
|
||||||
|
!= GRUB_USB_DESCRIPTOR_INTERFACE)
|
||||||
|
pos += ((struct grub_usb_desc *)&data[pos])->length;
|
||||||
dev->config[i].interf[currif].descif
|
dev->config[i].interf[currif].descif
|
||||||
= (struct grub_usb_desc_if *) &data[pos];
|
= (struct grub_usb_desc_if *) &data[pos];
|
||||||
pos += sizeof (struct grub_usb_desc_if);
|
pos += dev->config[i].interf[currif].descif->length;
|
||||||
|
|
||||||
|
while (pos < config.totallen
|
||||||
|
&& ((struct grub_usb_desc *)&data[pos])->type
|
||||||
|
!= GRUB_USB_DESCRIPTOR_ENDPOINT)
|
||||||
|
pos += ((struct grub_usb_desc *)&data[pos])->length;
|
||||||
|
|
||||||
/* Point to the first endpoint. */
|
/* Point to the first endpoint. */
|
||||||
dev->config[i].interf[currif].descendp
|
dev->config[i].interf[currif].descendp
|
||||||
|
@ -256,6 +266,24 @@ void grub_usb_device_attach (grub_usb_device_t dev)
|
||||||
for (desc = attach_hooks; desc; desc = desc->next)
|
for (desc = attach_hooks; desc; desc = desc->next)
|
||||||
if (interf->class == desc->class && desc->hook (dev, 0, i))
|
if (interf->class == desc->class && desc->hook (dev, 0, i))
|
||||||
dev->config[0].interf[i].attached = 1;
|
dev->config[0].interf[i].attached = 1;
|
||||||
|
|
||||||
|
if (dev->config[0].interf[i].attached)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
switch (interf->class)
|
||||||
|
{
|
||||||
|
case GRUB_USB_CLASS_MASS_STORAGE:
|
||||||
|
grub_dl_load ("usbms");
|
||||||
|
break;
|
||||||
|
case GRUB_USB_CLASS_HID:
|
||||||
|
grub_dl_load ("usb_keyboard");
|
||||||
|
break;
|
||||||
|
case 0xff:
|
||||||
|
/* FIXME: don't load useless modules. */
|
||||||
|
grub_dl_load ("usbserial_ftdi");
|
||||||
|
grub_dl_load ("usbserial_pl2303");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,3 +334,14 @@ grub_usb_unregister_attach_hook_class (struct grub_usb_attach_desc *desc)
|
||||||
{
|
{
|
||||||
grub_list_remove (GRUB_AS_LIST_P (&attach_hooks), GRUB_AS_LIST (desc));
|
grub_list_remove (GRUB_AS_LIST_P (&attach_hooks), GRUB_AS_LIST (desc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(usb)
|
||||||
|
{
|
||||||
|
grub_term_poll_usb = grub_usb_poll_devices;
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(usb)
|
||||||
|
{
|
||||||
|
grub_term_poll_usb = NULL;
|
||||||
|
}
|
|
@ -33,7 +33,7 @@ struct grub_usb_hub
|
||||||
struct grub_usb_hub *next;
|
struct grub_usb_hub *next;
|
||||||
grub_usb_controller_t controller;
|
grub_usb_controller_t controller;
|
||||||
int nports;
|
int nports;
|
||||||
grub_usb_speed_t *speed;
|
struct grub_usb_device **devices;
|
||||||
grub_usb_device_t dev;
|
grub_usb_device_t dev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ grub_usb_hub_add_dev (grub_usb_controller_t controller, grub_usb_speed_t speed)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static grub_err_t
|
static grub_usb_err_t
|
||||||
grub_usb_add_hub (grub_usb_device_t dev)
|
grub_usb_add_hub (grub_usb_device_t dev)
|
||||||
{
|
{
|
||||||
struct grub_usb_usb_hubdesc hubdesc;
|
struct grub_usb_usb_hubdesc hubdesc;
|
||||||
|
@ -112,6 +112,7 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||||
int i;
|
int i;
|
||||||
grub_uint64_t timeout;
|
grub_uint64_t timeout;
|
||||||
grub_usb_device_t next_dev;
|
grub_usb_device_t next_dev;
|
||||||
|
grub_usb_device_t *attached_devices;
|
||||||
|
|
||||||
err = grub_usb_control_msg (dev, (GRUB_USB_REQTYPE_IN
|
err = grub_usb_control_msg (dev, (GRUB_USB_REQTYPE_IN
|
||||||
| GRUB_USB_REQTYPE_CLASS
|
| GRUB_USB_REQTYPE_CLASS
|
||||||
|
@ -130,6 +131,13 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||||
grub_dprintf ("usb", "Hub set configuration\n");
|
grub_dprintf ("usb", "Hub set configuration\n");
|
||||||
grub_usb_set_configuration (dev, 1);
|
grub_usb_set_configuration (dev, 1);
|
||||||
|
|
||||||
|
attached_devices = grub_zalloc (hubdesc.portcnt
|
||||||
|
* sizeof (attached_devices[0]));
|
||||||
|
if (!attached_devices)
|
||||||
|
return GRUB_USB_ERR_INTERNAL;
|
||||||
|
dev->children = attached_devices;
|
||||||
|
dev->nports = hubdesc.portcnt;
|
||||||
|
|
||||||
/* Power on all Hub ports. */
|
/* Power on all Hub ports. */
|
||||||
for (i = 1; i <= hubdesc.portcnt; i++)
|
for (i = 1; i <= hubdesc.portcnt; i++)
|
||||||
{
|
{
|
||||||
|
@ -236,6 +244,8 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||||
if (! next_dev)
|
if (! next_dev)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
attached_devices[i - 1] = next_dev;
|
||||||
|
|
||||||
/* If the device is a Hub, scan it for more devices. */
|
/* If the device is a Hub, scan it for more devices. */
|
||||||
if (next_dev->descdev.class == 0x09)
|
if (next_dev->descdev.class == 0x09)
|
||||||
grub_usb_add_hub (next_dev);
|
grub_usb_add_hub (next_dev);
|
||||||
|
@ -246,27 +256,29 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
attach_root_port (grub_usb_controller_t controller, int portno,
|
attach_root_port (struct grub_usb_hub *hub, int portno,
|
||||||
grub_usb_speed_t speed)
|
grub_usb_speed_t speed)
|
||||||
{
|
{
|
||||||
grub_usb_device_t dev;
|
grub_usb_device_t dev;
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
|
|
||||||
/* Disable the port. XXX: Why? */
|
/* Disable the port. XXX: Why? */
|
||||||
err = controller->dev->portstatus (controller, portno, 0);
|
err = hub->controller->dev->portstatus (hub->controller, portno, 0);
|
||||||
if (err)
|
if (err)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Enable the port. */
|
/* Enable the port. */
|
||||||
err = controller->dev->portstatus (controller, portno, 1);
|
err = hub->controller->dev->portstatus (hub->controller, portno, 1);
|
||||||
if (err)
|
if (err)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Enable the port and create a device. */
|
/* Enable the port and create a device. */
|
||||||
dev = grub_usb_hub_add_dev (controller, speed);
|
dev = grub_usb_hub_add_dev (hub->controller, speed);
|
||||||
if (! dev)
|
if (! dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
hub->devices[portno] = dev;
|
||||||
|
|
||||||
/* If the device is a Hub, scan it for more devices. */
|
/* If the device is a Hub, scan it for more devices. */
|
||||||
if (dev->descdev.class == 0x09)
|
if (dev->descdev.class == 0x09)
|
||||||
grub_usb_add_hub (dev);
|
grub_usb_add_hub (dev);
|
||||||
|
@ -297,8 +309,8 @@ grub_usb_root_hub (grub_usb_controller_t controller)
|
||||||
|
|
||||||
/* Query the number of ports the root Hub has. */
|
/* Query the number of ports the root Hub has. */
|
||||||
hub->nports = controller->dev->hubports (controller);
|
hub->nports = controller->dev->hubports (controller);
|
||||||
hub->speed = grub_malloc (sizeof (hub->speed[0]) * hub->nports);
|
hub->devices = grub_zalloc (sizeof (hub->devices[0]) * hub->nports);
|
||||||
if (!hub->speed)
|
if (!hub->devices)
|
||||||
{
|
{
|
||||||
grub_free (hub->controller);
|
grub_free (hub->controller);
|
||||||
grub_free (hub);
|
grub_free (hub);
|
||||||
|
@ -307,36 +319,54 @@ grub_usb_root_hub (grub_usb_controller_t controller)
|
||||||
|
|
||||||
for (i = 0; i < hub->nports; i++)
|
for (i = 0; i < hub->nports; i++)
|
||||||
{
|
{
|
||||||
hub->speed[i] = controller->dev->detect_dev (hub->controller, i,
|
grub_usb_speed_t speed;
|
||||||
&changed);
|
speed = controller->dev->detect_dev (hub->controller, i,
|
||||||
|
&changed);
|
||||||
|
|
||||||
if (hub->speed[i] != GRUB_USB_SPEED_NONE)
|
if (speed != GRUB_USB_SPEED_NONE)
|
||||||
attach_root_port (hub->controller, i, hub->speed[i]);
|
attach_root_port (hub, i, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GRUB_USB_ERR_NONE;
|
return GRUB_USB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void detach_device (grub_usb_device_t dev);
|
||||||
|
|
||||||
|
static void
|
||||||
|
detach_device (grub_usb_device_t dev)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
int k;
|
||||||
|
if (!dev)
|
||||||
|
return;
|
||||||
|
if (dev->descdev.class == GRUB_USB_CLASS_HUB)
|
||||||
|
{
|
||||||
|
for (i = 0; i < dev->nports; i++)
|
||||||
|
detach_device (dev->children[i]);
|
||||||
|
grub_free (dev->children);
|
||||||
|
}
|
||||||
|
for (i = 0; i < ARRAY_SIZE (dev->config); i++)
|
||||||
|
if (dev->config[i].descconf)
|
||||||
|
for (k = 0; k < dev->config[i].descconf->numif; k++)
|
||||||
|
{
|
||||||
|
struct grub_usb_interface *inter = &dev->config[i].interf[k];
|
||||||
|
if (inter && inter->detach_hook)
|
||||||
|
inter->detach_hook (dev, i, k);
|
||||||
|
}
|
||||||
|
grub_usb_devs[dev->addr] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
poll_nonroot_hub (grub_usb_device_t dev)
|
poll_nonroot_hub (grub_usb_device_t dev)
|
||||||
{
|
{
|
||||||
struct grub_usb_usb_hubdesc hubdesc;
|
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
int i;
|
unsigned i;
|
||||||
grub_uint64_t timeout;
|
grub_uint64_t timeout;
|
||||||
grub_usb_device_t next_dev;
|
grub_usb_device_t next_dev;
|
||||||
|
grub_usb_device_t *attached_devices = dev->children;
|
||||||
err = grub_usb_control_msg (dev, (GRUB_USB_REQTYPE_IN
|
|
||||||
| GRUB_USB_REQTYPE_CLASS
|
|
||||||
| GRUB_USB_REQTYPE_TARGET_DEV),
|
|
||||||
GRUB_USB_REQ_GET_DESCRIPTOR,
|
|
||||||
(GRUB_USB_DESCRIPTOR_HUB << 8) | 0,
|
|
||||||
0, sizeof (hubdesc), (char *) &hubdesc);
|
|
||||||
if (err)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Iterate over the Hub ports. */
|
/* Iterate over the Hub ports. */
|
||||||
for (i = 1; i <= hubdesc.portcnt; i++)
|
for (i = 1; i <= dev->nports; i++)
|
||||||
{
|
{
|
||||||
grub_uint32_t status;
|
grub_uint32_t status;
|
||||||
|
|
||||||
|
@ -351,6 +381,12 @@ poll_nonroot_hub (grub_usb_device_t dev)
|
||||||
if (err)
|
if (err)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (status & GRUB_USB_HUB_STATUS_C_CONNECTED)
|
||||||
|
{
|
||||||
|
detach_device (attached_devices[i-1]);
|
||||||
|
attached_devices[i - 1] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Connected and status of connection changed ? */
|
/* Connected and status of connection changed ? */
|
||||||
if ((status & GRUB_USB_HUB_STATUS_CONNECTED)
|
if ((status & GRUB_USB_HUB_STATUS_CONNECTED)
|
||||||
&& (status & GRUB_USB_HUB_STATUS_C_CONNECTED))
|
&& (status & GRUB_USB_HUB_STATUS_C_CONNECTED))
|
||||||
|
@ -417,6 +453,8 @@ poll_nonroot_hub (grub_usb_device_t dev)
|
||||||
if (! next_dev)
|
if (! next_dev)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
attached_devices[i - 1] = next_dev;
|
||||||
|
|
||||||
/* If the device is a Hub, scan it for more devices. */
|
/* If the device is a Hub, scan it for more devices. */
|
||||||
if (next_dev->descdev.class == 0x09)
|
if (next_dev->descdev.class == 0x09)
|
||||||
grub_usb_add_hub (next_dev);
|
grub_usb_add_hub (next_dev);
|
||||||
|
@ -434,26 +472,23 @@ grub_usb_poll_devices (void)
|
||||||
|
|
||||||
for (hub = hubs; hub; hub = hub->next)
|
for (hub = hubs; hub; hub = hub->next)
|
||||||
{
|
{
|
||||||
int changed=0;
|
|
||||||
/* Do we have to recheck number of ports? */
|
/* Do we have to recheck number of ports? */
|
||||||
/* No, it should be never changed, it should be constant. */
|
/* No, it should be never changed, it should be constant. */
|
||||||
for (i = 0; i < hub->nports; i++)
|
for (i = 0; i < hub->nports; i++)
|
||||||
{
|
{
|
||||||
grub_usb_speed_t speed;
|
grub_usb_speed_t speed;
|
||||||
|
int changed = 0;
|
||||||
|
|
||||||
speed = hub->controller->dev->detect_dev (hub->controller, i,
|
speed = hub->controller->dev->detect_dev (hub->controller, i,
|
||||||
&changed);
|
&changed);
|
||||||
|
|
||||||
if (speed != GRUB_USB_SPEED_NONE)
|
if (changed)
|
||||||
{
|
{
|
||||||
if (changed)
|
detach_device (hub->devices[i]);
|
||||||
attach_root_port (hub->controller, i, speed);
|
hub->devices[i] = NULL;
|
||||||
|
if (speed != GRUB_USB_SPEED_NONE)
|
||||||
|
attach_root_port (hub, i, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: There should be also handling
|
|
||||||
* of disconnected devices. */
|
|
||||||
|
|
||||||
hub->speed[i] = speed;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,9 +498,7 @@ grub_usb_poll_devices (void)
|
||||||
grub_usb_device_t dev = grub_usb_devs[i];
|
grub_usb_device_t dev = grub_usb_devs[i];
|
||||||
|
|
||||||
if (dev && dev->descdev.class == 0x09)
|
if (dev && dev->descdev.class == 0x09)
|
||||||
{
|
poll_nonroot_hub (dev);
|
||||||
poll_nonroot_hub (dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -43,6 +43,7 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||||
volatile char *data;
|
volatile char *data;
|
||||||
grub_uint32_t data_addr;
|
grub_uint32_t data_addr;
|
||||||
grub_size_t size = size0;
|
grub_size_t size = size0;
|
||||||
|
grub_size_t actual;
|
||||||
|
|
||||||
/* FIXME: avoid allocation any kind of buffer in a first place. */
|
/* FIXME: avoid allocation any kind of buffer in a first place. */
|
||||||
data_chunk = grub_memalign_dma32 (128, size ? : 16);
|
data_chunk = grub_memalign_dma32 (128, size ? : 16);
|
||||||
|
@ -132,6 +133,7 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||||
else
|
else
|
||||||
tr->pid = GRUB_USB_TRANSFER_TYPE_OUT;
|
tr->pid = GRUB_USB_TRANSFER_TYPE_OUT;
|
||||||
tr->data = data_addr + i * max;
|
tr->data = data_addr + i * max;
|
||||||
|
tr->preceding = i * max;
|
||||||
size -= max;
|
size -= max;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +147,8 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||||
|
|
||||||
transfer->transactions[datablocks + 1].toggle = 1;
|
transfer->transactions[datablocks + 1].toggle = 1;
|
||||||
|
|
||||||
err = dev->controller.dev->transfer (&dev->controller, transfer);
|
err = dev->controller.dev->transfer (&dev->controller, transfer,
|
||||||
|
1000, &actual);
|
||||||
grub_dprintf ("usb", "control: err=%d\n", err);
|
grub_dprintf ("usb", "control: err=%d\n", err);
|
||||||
|
|
||||||
grub_free (transfer->transactions);
|
grub_free (transfer->transactions);
|
||||||
|
@ -162,7 +165,8 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||||
static grub_usb_err_t
|
static grub_usb_err_t
|
||||||
grub_usb_bulk_readwrite (grub_usb_device_t dev,
|
grub_usb_bulk_readwrite (grub_usb_device_t dev,
|
||||||
int endpoint, grub_size_t size0, char *data_in,
|
int endpoint, grub_size_t size0, char *data_in,
|
||||||
grub_transfer_type_t type)
|
grub_transfer_type_t type, int timeout,
|
||||||
|
grub_size_t *actual)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
grub_usb_transfer_t transfer;
|
grub_usb_transfer_t transfer;
|
||||||
|
@ -240,10 +244,12 @@ grub_usb_bulk_readwrite (grub_usb_device_t dev,
|
||||||
toggle = toggle ? 0 : 1;
|
toggle = toggle ? 0 : 1;
|
||||||
tr->pid = type;
|
tr->pid = type;
|
||||||
tr->data = data_addr + i * max;
|
tr->data = data_addr + i * max;
|
||||||
|
tr->preceding = i * max;
|
||||||
size -= tr->size;
|
size -= tr->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = dev->controller.dev->transfer (&dev->controller, transfer);
|
err = dev->controller.dev->transfer (&dev->controller, transfer, timeout,
|
||||||
|
actual);
|
||||||
/* We must remember proper toggle value even if some transactions
|
/* We must remember proper toggle value even if some transactions
|
||||||
* were not processed - correct value should be inversion of last
|
* were not processed - correct value should be inversion of last
|
||||||
* processed transaction (TD). */
|
* processed transaction (TD). */
|
||||||
|
@ -268,14 +274,34 @@ grub_usb_err_t
|
||||||
grub_usb_bulk_write (grub_usb_device_t dev,
|
grub_usb_bulk_write (grub_usb_device_t dev,
|
||||||
int endpoint, grub_size_t size, char *data)
|
int endpoint, grub_size_t size, char *data)
|
||||||
{
|
{
|
||||||
return grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
grub_size_t actual;
|
||||||
GRUB_USB_TRANSFER_TYPE_OUT);
|
grub_usb_err_t err;
|
||||||
|
|
||||||
|
err = grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
||||||
|
GRUB_USB_TRANSFER_TYPE_OUT, 1000, &actual);
|
||||||
|
if (!err && actual != size)
|
||||||
|
err = GRUB_USB_ERR_DATA;
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_usb_err_t
|
grub_usb_err_t
|
||||||
grub_usb_bulk_read (grub_usb_device_t dev,
|
grub_usb_bulk_read (grub_usb_device_t dev,
|
||||||
int endpoint, grub_size_t size, char *data)
|
int endpoint, grub_size_t size, char *data)
|
||||||
{
|
{
|
||||||
return grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
grub_size_t actual;
|
||||||
GRUB_USB_TRANSFER_TYPE_IN);
|
grub_usb_err_t err;
|
||||||
|
err = grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
||||||
|
GRUB_USB_TRANSFER_TYPE_IN, 1000, &actual);
|
||||||
|
if (!err && actual != size)
|
||||||
|
err = GRUB_USB_ERR_DATA;
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_usb_err_t
|
||||||
|
grub_usb_bulk_read_extended (grub_usb_device_t dev,
|
||||||
|
int endpoint, grub_size_t size, char *data,
|
||||||
|
int timeout, grub_size_t *actual)
|
||||||
|
{
|
||||||
|
return grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
||||||
|
GRUB_USB_TRANSFER_TYPE_IN, timeout, actual);
|
||||||
}
|
}
|
384
grub-core/commands/i386/pc/sendkey.c
Normal file
384
grub-core/commands/i386/pc/sendkey.c
Normal file
|
@ -0,0 +1,384 @@
|
||||||
|
/* sendkey.c - fake keystroke. */
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2009 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 2 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, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/types.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/err.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/extcmd.h>
|
||||||
|
#include <grub/cpu/io.h>
|
||||||
|
#include <grub/loader.h>
|
||||||
|
|
||||||
|
static char sendkey[0x20];
|
||||||
|
/* Length of sendkey. */
|
||||||
|
static int keylen = 0;
|
||||||
|
static int noled = 0;
|
||||||
|
static const struct grub_arg_option options[] =
|
||||||
|
{
|
||||||
|
{"num", 'n', 0, "set numlock mode", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"caps", 'c', 0, "set capslock mode", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"scroll", 's', 0, "set scrolllock mode", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"insert", 0, 0, "set insert mode", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"pause", 0, 0, "set pause mode", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"left-shift", 0, 0, "press left shift", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"right-shift", 0, 0, "press right shift", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"sysrq", 0, 0, "press SysRq", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"numkey", 0, 0, "press NumLock key", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"capskey", 0, 0, "press CapsLock key", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"scrollkey", 0, 0, "press ScrollLock key", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"insertkey", 0, 0, "press Insert key", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"left-alt", 0, 0, "press left alt", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"right-alt", 0, 0, "press right alt", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"left-ctrl", 0, 0, "press left ctrl", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"right-ctrl", 0, 0, "press right ctrl", "[on|off]", ARG_TYPE_STRING},
|
||||||
|
{"no-led", 0, 0, "don't update LED state", 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
static int simple_flag_offsets[]
|
||||||
|
= {5, 6, 4, 7, 11, 1, 0, 10, 13, 14, 12, 15, 9, 3, 8, 2};
|
||||||
|
|
||||||
|
static grub_uint32_t andmask = 0xffffffff, ormask = 0;
|
||||||
|
|
||||||
|
struct
|
||||||
|
keysym
|
||||||
|
{
|
||||||
|
char *unshifted_name; /* the name in unshifted state */
|
||||||
|
char *shifted_name; /* the name in shifted state */
|
||||||
|
unsigned char unshifted_ascii; /* the ascii code in unshifted state */
|
||||||
|
unsigned char shifted_ascii; /* the ascii code in shifted state */
|
||||||
|
unsigned char keycode; /* keyboard scancode */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The table for key symbols. If the "shifted" member of an entry is
|
||||||
|
NULL, the entry does not have shifted state. Copied from GRUB Legacy setkey fuction */
|
||||||
|
static struct keysym keysym_table[] =
|
||||||
|
{
|
||||||
|
{"escape", 0, 0x1b, 0, 0x01},
|
||||||
|
{"1", "exclam", '1', '!', 0x02},
|
||||||
|
{"2", "at", '2', '@', 0x03},
|
||||||
|
{"3", "numbersign", '3', '#', 0x04},
|
||||||
|
{"4", "dollar", '4', '$', 0x05},
|
||||||
|
{"5", "percent", '5', '%', 0x06},
|
||||||
|
{"6", "caret", '6', '^', 0x07},
|
||||||
|
{"7", "ampersand", '7', '&', 0x08},
|
||||||
|
{"8", "asterisk", '8', '*', 0x09},
|
||||||
|
{"9", "parenleft", '9', '(', 0x0a},
|
||||||
|
{"0", "parenright", '0', ')', 0x0b},
|
||||||
|
{"minus", "underscore", '-', '_', 0x0c},
|
||||||
|
{"equal", "plus", '=', '+', 0x0d},
|
||||||
|
{"backspace", 0, '\b', 0, 0x0e},
|
||||||
|
{"tab", 0, '\t', 0, 0x0f},
|
||||||
|
{"q", "Q", 'q', 'Q', 0x10},
|
||||||
|
{"w", "W", 'w', 'W', 0x11},
|
||||||
|
{"e", "E", 'e', 'E', 0x12},
|
||||||
|
{"r", "R", 'r', 'R', 0x13},
|
||||||
|
{"t", "T", 't', 'T', 0x14},
|
||||||
|
{"y", "Y", 'y', 'Y', 0x15},
|
||||||
|
{"u", "U", 'u', 'U', 0x16},
|
||||||
|
{"i", "I", 'i', 'I', 0x17},
|
||||||
|
{"o", "O", 'o', 'O', 0x18},
|
||||||
|
{"p", "P", 'p', 'P', 0x19},
|
||||||
|
{"bracketleft", "braceleft", '[', '{', 0x1a},
|
||||||
|
{"bracketright", "braceright", ']', '}', 0x1b},
|
||||||
|
{"enter", 0, '\r', 0, 0x1c},
|
||||||
|
{"control", 0, 0, 0, 0x1d},
|
||||||
|
{"a", "A", 'a', 'A', 0x1e},
|
||||||
|
{"s", "S", 's', 'S', 0x1f},
|
||||||
|
{"d", "D", 'd', 'D', 0x20},
|
||||||
|
{"f", "F", 'f', 'F', 0x21},
|
||||||
|
{"g", "G", 'g', 'G', 0x22},
|
||||||
|
{"h", "H", 'h', 'H', 0x23},
|
||||||
|
{"j", "J", 'j', 'J', 0x24},
|
||||||
|
{"k", "K", 'k', 'K', 0x25},
|
||||||
|
{"l", "L", 'l', 'L', 0x26},
|
||||||
|
{"semicolon", "colon", ';', ':', 0x27},
|
||||||
|
{"quote", "doublequote", '\'', '"', 0x28},
|
||||||
|
{"backquote", "tilde", '`', '~', 0x29},
|
||||||
|
{"shift", 0, 0, 0, 0x2a},
|
||||||
|
{"backslash", "bar", '\\', '|', 0x2b},
|
||||||
|
{"z", "Z", 'z', 'Z', 0x2c},
|
||||||
|
{"x", "X", 'x', 'X', 0x2d},
|
||||||
|
{"c", "C", 'c', 'C', 0x2e},
|
||||||
|
{"v", "V", 'v', 'V', 0x2f},
|
||||||
|
{"b", "B", 'b', 'B', 0x30},
|
||||||
|
{"n", "N", 'n', 'N', 0x31},
|
||||||
|
{"m", "M", 'm', 'M', 0x32},
|
||||||
|
{"comma", "less", ',', '<', 0x33},
|
||||||
|
{"period", "greater", '.', '>', 0x34},
|
||||||
|
{"slash", "question", '/', '?', 0x35},
|
||||||
|
{"rshift", 0, 0, 0, 0x36},
|
||||||
|
{"numasterisk", 0, '*', 0, 0x37},
|
||||||
|
{"alt", 0, 0, 0, 0x38},
|
||||||
|
{"space", 0, ' ', 0, 0x39},
|
||||||
|
{"capslock", 0, 0, 0, 0x3a},
|
||||||
|
{"F1", 0, 0, 0, 0x3b},
|
||||||
|
{"F2", 0, 0, 0, 0x3c},
|
||||||
|
{"F3", 0, 0, 0, 0x3d},
|
||||||
|
{"F4", 0, 0, 0, 0x3e},
|
||||||
|
{"F5", 0, 0, 0, 0x3f},
|
||||||
|
{"F6", 0, 0, 0, 0x40},
|
||||||
|
{"F7", 0, 0, 0, 0x41},
|
||||||
|
{"F8", 0, 0, 0, 0x42},
|
||||||
|
{"F9", 0, 0, 0, 0x43},
|
||||||
|
{"F10", 0, 0, 0, 0x44},
|
||||||
|
{"num7", "numhome", '7', 0, 0x47},
|
||||||
|
{"num8", "numup", '8', 0, 0x48},
|
||||||
|
{"num9", "numpgup", '9', 0, 0x49},
|
||||||
|
{"numminus", 0, '-', 0, 0x4a},
|
||||||
|
{"num4", "numleft", '4', 0, 0x4b},
|
||||||
|
{"num5", "numcenter", '5', 0, 0x4c},
|
||||||
|
{"num6", "numright", '6', 0, 0x4d},
|
||||||
|
{"numplus", 0, '-', 0, 0x4e},
|
||||||
|
{"num1", "numend", '1', 0, 0x4f},
|
||||||
|
{"num2", "numdown", '2', 0, 0x50},
|
||||||
|
{"num3", "numpgdown", '3', 0, 0x51},
|
||||||
|
{"num0", "numinsert", '0', 0, 0x52},
|
||||||
|
{"numperiod", "numdelete", 0, 0x7f, 0x53},
|
||||||
|
{"F11", 0, 0, 0, 0x57},
|
||||||
|
{"F12", 0, 0, 0, 0x58},
|
||||||
|
{"numenter", 0, '\r', 0, 0xe0},
|
||||||
|
{"numslash", 0, '/', 0, 0xe0},
|
||||||
|
{"delete", 0, 0x7f, 0, 0xe0},
|
||||||
|
{"insert", 0, 0xe0, 0, 0x52},
|
||||||
|
{"home", 0, 0xe0, 0, 0x47},
|
||||||
|
{"end", 0, 0xe0, 0, 0x4f},
|
||||||
|
{"pgdown", 0, 0xe0, 0, 0x51},
|
||||||
|
{"pgup", 0, 0xe0, 0, 0x49},
|
||||||
|
{"down", 0, 0xe0, 0, 0x50},
|
||||||
|
{"up", 0, 0xe0, 0, 0x48},
|
||||||
|
{"left", 0, 0xe0, 0, 0x4b},
|
||||||
|
{"right", 0, 0xe0, 0, 0x4d}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Set a simple flag in flags variable
|
||||||
|
OUTOFFSET - offset of flag in FLAGS,
|
||||||
|
OP - action id
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
grub_sendkey_set_simple_flag (int outoffset, int op)
|
||||||
|
{
|
||||||
|
if (op == 2)
|
||||||
|
{
|
||||||
|
andmask |= (1 << outoffset);
|
||||||
|
ormask &= ~(1 << outoffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
andmask &= (~(1 << outoffset));
|
||||||
|
if (op == 1)
|
||||||
|
ormask |= (1 << outoffset);
|
||||||
|
else
|
||||||
|
ormask &= ~(1 << outoffset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
grub_sendkey_parse_op (struct grub_arg_list state)
|
||||||
|
{
|
||||||
|
if (! state.set)
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
if (grub_strcmp (state.arg, "off") == 0 || grub_strcmp (state.arg, "0") == 0
|
||||||
|
|| grub_strcmp (state.arg, "unpress") == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (grub_strcmp (state.arg, "on") == 0 || grub_strcmp (state.arg, "1") == 0
|
||||||
|
|| grub_strcmp (state.arg, "press") == 0)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_uint32_t oldflags;
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_sendkey_postboot (void)
|
||||||
|
{
|
||||||
|
/* For convention: pointer to flags. */
|
||||||
|
grub_uint32_t *flags = (grub_uint32_t *) 0x417;
|
||||||
|
|
||||||
|
*flags = oldflags;
|
||||||
|
|
||||||
|
*((char *) 0x41a) = 0x1e;
|
||||||
|
*((char *) 0x41c) = 0x1e;
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set keyboard buffer to our sendkey */
|
||||||
|
static grub_err_t
|
||||||
|
grub_sendkey_preboot (int noret __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
/* For convention: pointer to flags. */
|
||||||
|
grub_uint32_t *flags = (grub_uint32_t *) 0x417;
|
||||||
|
|
||||||
|
oldflags = *flags;
|
||||||
|
|
||||||
|
/* Set the sendkey. */
|
||||||
|
*((char *) 0x41a) = 0x1e;
|
||||||
|
*((char *) 0x41c) = keylen + 0x1e;
|
||||||
|
grub_memcpy ((char *) 0x41e, sendkey, 0x20);
|
||||||
|
|
||||||
|
/* Transform "any ctrl" to "right ctrl" flag. */
|
||||||
|
if (*flags & (1 << 8))
|
||||||
|
*flags &= ~(1 << 2);
|
||||||
|
|
||||||
|
/* Transform "any alt" to "right alt" flag. */
|
||||||
|
if (*flags & (1 << 9))
|
||||||
|
*flags &= ~(1 << 3);
|
||||||
|
|
||||||
|
*flags = (*flags & andmask) | ormask;
|
||||||
|
|
||||||
|
/* Transform "right ctrl" to "any ctrl" flag. */
|
||||||
|
if (*flags & (1 << 8))
|
||||||
|
*flags |= (1 << 2);
|
||||||
|
|
||||||
|
/* Transform "right alt" to "any alt" flag. */
|
||||||
|
if (*flags & (1 << 9))
|
||||||
|
*flags |= (1 << 3);
|
||||||
|
|
||||||
|
/* Write new LED state */
|
||||||
|
if (!noled)
|
||||||
|
{
|
||||||
|
int value = 0;
|
||||||
|
int failed;
|
||||||
|
/* Try 5 times */
|
||||||
|
for (failed = 0; failed < 5; failed++)
|
||||||
|
{
|
||||||
|
value = 0;
|
||||||
|
/* Send command change LEDs */
|
||||||
|
grub_outb (0xed, 0x60);
|
||||||
|
|
||||||
|
/* Wait */
|
||||||
|
do
|
||||||
|
value = grub_inb (0x60);
|
||||||
|
while ((value != 0xfa) && (value != 0xfe));
|
||||||
|
|
||||||
|
if (value == 0xfa)
|
||||||
|
{
|
||||||
|
/* Set new LEDs*/
|
||||||
|
grub_outb ((*flags >> 4) & 7, 0x60);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_sendkey (grub_extcmd_t cmd, int argc, char **args)
|
||||||
|
{
|
||||||
|
struct grub_arg_list *state = cmd->state;
|
||||||
|
|
||||||
|
auto int find_key_code (char *key);
|
||||||
|
auto int find_ascii_code (char *key);
|
||||||
|
|
||||||
|
int find_key_code (char *key)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++)
|
||||||
|
{
|
||||||
|
if (keysym_table[i].unshifted_name
|
||||||
|
&& grub_strcmp (key, keysym_table[i].unshifted_name) == 0)
|
||||||
|
return keysym_table[i].keycode;
|
||||||
|
else if (keysym_table[i].shifted_name
|
||||||
|
&& grub_strcmp (key, keysym_table[i].shifted_name) == 0)
|
||||||
|
return keysym_table[i].keycode;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int find_ascii_code (char *key)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++)
|
||||||
|
{
|
||||||
|
if (keysym_table[i].unshifted_name
|
||||||
|
&& grub_strcmp (key, keysym_table[i].unshifted_name) == 0)
|
||||||
|
return keysym_table[i].unshifted_ascii;
|
||||||
|
else if (keysym_table[i].shifted_name
|
||||||
|
&& grub_strcmp (key, keysym_table[i].shifted_name) == 0)
|
||||||
|
return keysym_table[i].shifted_ascii;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
andmask = 0xffffffff;
|
||||||
|
ormask = 0;
|
||||||
|
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
keylen = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < argc && keylen < 0x20; i++)
|
||||||
|
{
|
||||||
|
int key_code;
|
||||||
|
|
||||||
|
key_code = find_key_code (args[i]);
|
||||||
|
if (key_code)
|
||||||
|
{
|
||||||
|
sendkey[keylen++] = find_ascii_code (args[i]);
|
||||||
|
sendkey[keylen++] = key_code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
for (i = 0; i < sizeof (simple_flag_offsets)
|
||||||
|
/ sizeof (simple_flag_offsets[0]); i++)
|
||||||
|
grub_sendkey_set_simple_flag (simple_flag_offsets[i],
|
||||||
|
grub_sendkey_parse_op(state[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set noled. */
|
||||||
|
noled = (state[sizeof (simple_flag_offsets)
|
||||||
|
/ sizeof (simple_flag_offsets[0])].set);
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_extcmd_t cmd;
|
||||||
|
static void *preboot_hook;
|
||||||
|
|
||||||
|
GRUB_MOD_INIT (sendkey)
|
||||||
|
{
|
||||||
|
cmd = grub_register_extcmd ("sendkey", grub_cmd_sendkey,
|
||||||
|
GRUB_COMMAND_FLAG_BOTH,
|
||||||
|
"sendkey [KEYSTROKE1] [KEYSTROKE2] ...",
|
||||||
|
"Emulate a keystroke", options);
|
||||||
|
|
||||||
|
preboot_hook
|
||||||
|
= grub_loader_register_preboot_hook (grub_sendkey_preboot,
|
||||||
|
grub_sendkey_postboot,
|
||||||
|
GRUB_LOADER_PREBOOT_HOOK_PRIO_CONSOLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI (sendkey)
|
||||||
|
{
|
||||||
|
grub_unregister_extcmd (cmd);
|
||||||
|
grub_loader_unregister_preboot_hook (preboot_hook);
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue