mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 06:49:35 +00:00
merge with mainline
This commit is contained in:
commit
a9b85993ee
554 files changed
+6761
-5030
No files matched your search
+17
-1
@@ -19,7 +19,6 @@ config.status
|
||||
config.sub
|
||||
configure
|
||||
conf/*.mk
|
||||
conf/gcry.rmk
|
||||
*.d
|
||||
DISTLIST
|
||||
docs/*.info
|
||||
@@ -79,3 +78,20 @@ symlist.c
|
||||
trigtables.c
|
||||
update-grub_lib
|
||||
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
|
||||
@@ -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.
|
||||
|
||||
@@ -1,3 +1,366 @@
|
||||
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
|
||||
|
||||
@@ -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
|
||||
need the following.
|
||||
|
||||
* Ruby 1.6 or later
|
||||
* Python 2.5.2 or later
|
||||
* Autoconf 2.60 or later
|
||||
* Automake 1.10.1 or later
|
||||
* Autogen 5.10 or later
|
||||
|
||||
Prerequisites for make-check:
|
||||
|
||||
|
||||
+85
@@ -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
@@ -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:
|
||||
@@ -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_setparams;
|
||||
common = tests/grub_script_setparams.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)';
|
||||
};
|
||||
+3
-2
@@ -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.
|
||||
AC_DEFUN([grub_ASM_USCORE],
|
||||
[AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_PROG_EGREP])
|
||||
AC_MSG_CHECKING([if C symbols get an underscore after compilation])
|
||||
AC_CACHE_VAL(grub_cv_asm_uscore,
|
||||
[cat > conftest.c <<\EOF
|
||||
@@ -56,7 +57,7 @@ else
|
||||
AC_MSG_ERROR([${CC-cc} failed to produce assembly code])
|
||||
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
|
||||
else
|
||||
grub_cv_asm_uscore=no
|
||||
@@ -93,7 +94,7 @@ else
|
||||
fi
|
||||
grub_cv_prog_objcopy_absolute=yes
|
||||
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
|
||||
AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
|
||||
fi
|
||||
|
||||
+18
-17
@@ -1,25 +1,26 @@
|
||||
#! /bin/sh
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
aclocal
|
||||
autoconf
|
||||
autoheader
|
||||
autogen --version >/dev/null || exit 1
|
||||
|
||||
# FIXME: automake doesn't like that there's no Makefile.am
|
||||
automake -a -c -f || true
|
||||
echo "Importing unicode..."
|
||||
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
|
||||
|
||||
python util/import_gcry.py lib/libgcrypt/ .
|
||||
|
||||
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
|
||||
|
||||
echo "Running autoreconf..."
|
||||
autoreconf -vi
|
||||
exit 0
|
||||
@@ -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 $@
|
||||
@@ -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')
|
||||
@@ -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
@@ -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/command.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
|
||||
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
|
||||
@@ -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
|
||||
-114
@@ -1,114 +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_break
|
||||
grub_script_break_SOURCES = tests/grub_script_break.in
|
||||
|
||||
check_SCRIPTS += grub_script_continue
|
||||
grub_script_continue_SOURCES = tests/grub_script_continue.in
|
||||
|
||||
check_SCRIPTS += grub_script_shift
|
||||
grub_script_shift_SOURCES = tests/grub_script_shift.in
|
||||
|
||||
check_SCRIPTS += grub_script_setparams
|
||||
grub_script_setparams_SOURCES = tests/grub_script_setparams.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_break
|
||||
SCRIPTED_TESTS += grub_script_continue
|
||||
SCRIPTED_TESTS += grub_script_shift
|
||||
SCRIPTED_TESTS += grub_script_setparams
|
||||
|
||||
# dependencies between tests and testing-tools
|
||||
$(SCRIPTED_TESTS): grub-shell grub-shell-tester
|
||||
$(FUNCTIONAL_TESTS): functional_test.mod
|
||||
|
||||
@@ -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
|
||||
+161
-81
@@ -1,3 +1,5 @@
|
||||
# -*- autoconf -*-
|
||||
|
||||
# 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.
|
||||
@@ -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 type.
|
||||
|
||||
|
||||
AC_INIT([GRUB],[1.98],[bug-grub@gnu.org])
|
||||
AM_INIT_AUTOMAKE()
|
||||
AC_PREREQ(2.60)
|
||||
AC_CONFIG_SRCDIR([include/grub/dl.h])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
|
||||
# We don't want -g -O2 by default in CFLAGS
|
||||
: ${CFLAGS=""}
|
||||
|
||||
# Checks for host and target systems.
|
||||
AC_CANONICAL_HOST
|
||||
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
|
||||
AC_ARG_PROGRAM
|
||||
|
||||
@@ -49,19 +54,28 @@ if test "x$TARGET_CFLAGS" = x; then
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Os"
|
||||
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
|
||||
i[[3456]]86) target_cpu=i386 ;;
|
||||
amd64) target_cpu=x86_64 ;;
|
||||
sparc) target_cpu=sparc64 ;;
|
||||
mipsel|mips64el)
|
||||
target_cpu=mips;
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -DGRUB_CPU_MIPSEL=1";
|
||||
CFLAGS="$CFLAGS -DGRUB_CPU_MIPSEL=1";
|
||||
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
|
||||
;;
|
||||
mips|mips64)
|
||||
target_cpu=mips;
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -DGRUB_CPU_MIPS=1";
|
||||
CFLAGS="$CFLAGS -DGRUB_CPU_MIPS=1";
|
||||
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -136,25 +150,24 @@ case "$host_os" in
|
||||
esac
|
||||
|
||||
case "$platform" in
|
||||
coreboot) machine_CFLAGS="-DGRUB_MACHINE_COREBOOT=1" ;;
|
||||
multiboot) machine_CFLAGS="-DGRUB_MACHINE_MULTIBOOT=1" ;;
|
||||
efi) machine_CFLAGS="-DGRUB_MACHINE_EFI=1" ;;
|
||||
ieee1275) machine_CFLAGS="-DGRUB_MACHINE_IEEE1275=1" ;;
|
||||
qemu) machine_CFLAGS="-DGRUB_MACHINE_QEMU=1" ;;
|
||||
pc) machine_CFLAGS="-DGRUB_MACHINE_PCBIOS=1" ;;
|
||||
emu) machine_CFLAGS="-DGRUB_MACHINE_EMU=1" ;;
|
||||
yeeloong) machine_CFLAGS="-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" ;;
|
||||
coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
|
||||
multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
|
||||
efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
|
||||
ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
|
||||
qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
|
||||
pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
|
||||
emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
|
||||
yeeloong) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_YEELOONG=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
|
||||
qemu-mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
|
||||
esac
|
||||
case "$target_cpu" in
|
||||
mips) machine_CFLAGS="$machine_CFLAGS -DGRUB_MACHINE_MIPS=1" ;;
|
||||
sparc64) machine_CFLAGS="$machine_CFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
|
||||
mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
|
||||
sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
|
||||
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"
|
||||
TARGET_ASFLAGS="$TARGET_ASFLAGS $machine_CFLAGS"
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS $machine_CFLAGS"
|
||||
HOST_CPPFLAGS="$HOST_CPPFLAGS $machine_CPPFLAGS"
|
||||
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
|
||||
|
||||
AC_SUBST(host_cpu)
|
||||
AC_SUBST(host_os)
|
||||
@@ -196,9 +209,11 @@ fi
|
||||
|
||||
AC_SUBST([FONT_SOURCE])
|
||||
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_AWK
|
||||
AC_PROG_LEX
|
||||
AC_PROG_YACC
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_MKDIR_P
|
||||
|
||||
@@ -214,7 +229,6 @@ else
|
||||
fi
|
||||
|
||||
# These are not a "must".
|
||||
AC_PATH_PROG(RUBY, ruby)
|
||||
AC_PATH_PROG(MAKEINFO, makeinfo)
|
||||
|
||||
#
|
||||
@@ -222,6 +236,9 @@ AC_PATH_PROG(MAKEINFO, makeinfo)
|
||||
#
|
||||
|
||||
AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AM_PROG_AS
|
||||
|
||||
# Must be GCC.
|
||||
test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
|
||||
|
||||
@@ -236,8 +253,8 @@ AC_CHECK_SIZEOF(long)
|
||||
|
||||
grub_apple_cc
|
||||
if test x$grub_cv_apple_cc = xyes ; then
|
||||
CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
|
||||
ASFLAGS="$ASFLAGS -DAPPLE_CC=1"
|
||||
HOST_CPPFLAGS="$HOST_CPPFLAGS -DAPPLE_CC=1"
|
||||
HOST_CFLAGS="$HOST_CFLAGS -fnested-functions"
|
||||
fi
|
||||
|
||||
if test "x$cross_compiling" = xyes; then
|
||||
@@ -264,6 +281,13 @@ AC_CHECK_HEADER([util.h], [
|
||||
])
|
||||
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.
|
||||
#
|
||||
@@ -288,9 +312,10 @@ else
|
||||
AC_CHECK_TOOL(STRIP, strip)
|
||||
AC_CHECK_TOOL(NM, nm)
|
||||
fi
|
||||
AC_SUBST(HOST_CC)
|
||||
AC_SUBST(BUILD_CC)
|
||||
AC_SUBST(TARGET_CC)
|
||||
|
||||
|
||||
# Test the C compiler for the target environment.
|
||||
tmp_CC="$CC"
|
||||
tmp_CFLAGS="$CFLAGS"
|
||||
@@ -304,8 +329,8 @@ LDFLAGS="$TARGET_LDFLAGS"
|
||||
LIBS=""
|
||||
|
||||
# debug flags.
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes \
|
||||
-Wundef -Wstrict-prototypes -g"
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g"
|
||||
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
|
||||
|
||||
# Force no alignment to save space on i386.
|
||||
if test "x$target_cpu" = xi386; then
|
||||
@@ -346,9 +371,10 @@ fi
|
||||
|
||||
grub_apple_target_cc
|
||||
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"
|
||||
TARGET_ASFLAGS="$TARGET_ASFLAGS -DAPPLE_CC=1"
|
||||
TARGET_APPLE_CC=1
|
||||
AC_CHECK_PROG([OBJCONV], [objconv], [objconv], [])
|
||||
if test "x$OBJCONV" = x ; then
|
||||
@@ -359,45 +385,42 @@ if test x$grub_cv_apple_target_cc = xyes ; then
|
||||
fi
|
||||
TARGET_IMG_LDSCRIPT=
|
||||
TARGET_IMG_CFLAGS="-static"
|
||||
TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20 -Wl,-image_base,'
|
||||
TARGET_IMG_LDFLAGS_AC='-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'
|
||||
TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
|
||||
else
|
||||
TARGET_APPLE_CC=0
|
||||
# Use linker script if present, otherwise use builtin -N script.
|
||||
if test -f "${srcdir}/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_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT} -Wl,-Ttext,"
|
||||
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc -Wl,-Ttext,"
|
||||
if test -f "${srcdir}/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"; then
|
||||
TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
|
||||
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
|
||||
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
|
||||
TARGET_IMG_LDSCRIPT=
|
||||
TARGET_IMG_LDFLAGS='-Wl,-N -Wl,-Ttext,'
|
||||
TARGET_IMG_LDFLAGS_AC='-Wl,-N -Wl,-Ttext,'
|
||||
TARGET_IMG_LDFLAGS='-Wl,-N'
|
||||
TARGET_IMG_LDFLAGS_AC='-Wl,-N'
|
||||
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
|
||||
fi
|
||||
TARGET_IMG_CFLAGS=
|
||||
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.
|
||||
AC_MSG_CHECKING([for command to convert module to ELF format])
|
||||
case "${host_os}" in
|
||||
cygwin) TARGET_OBJ2ELF='grub-pe2elf';
|
||||
cygwin) TARGET_OBJ2ELF='$(grub_utildir)/grub-pe2elf';
|
||||
# FIXME: put proper test here
|
||||
AC_DEFINE([NEED_REGISTER_FRAME_INFO], 1,
|
||||
[Define to 1 if GCC generates calls to __register_frame_info()])
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
AC_SUBST(TARGET_OBJ2ELF)
|
||||
AC_MSG_RESULT([$TARGET_OBJ2ELF])
|
||||
|
||||
|
||||
if test "x$target_m32" = x1; then
|
||||
# Force 32-bit mode.
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -m32"
|
||||
TARGET_ASFLAGS="$TARGET_CFLAGS -m32"
|
||||
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
|
||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
|
||||
TARGET_MODULE_FORMAT="elf32"
|
||||
fi
|
||||
@@ -405,7 +428,7 @@ fi
|
||||
if test "x$target_m64" = x1; then
|
||||
# Force 64-bit mode.
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -m64"
|
||||
TARGET_ASFLAGS="$TARGET_ASFLAGS -m64"
|
||||
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
|
||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
|
||||
TARGET_MODULE_FORMAT="elf64"
|
||||
fi
|
||||
@@ -475,13 +498,30 @@ if test x"$enable_werror" != xno ; then
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
|
||||
fi
|
||||
|
||||
AC_SUBST(TARGET_CFLAGS)
|
||||
AC_SUBST(TARGET_MODULE_FORMAT)
|
||||
TARGET_CPP="$TARGET_CC -E"
|
||||
TARGET_CCAS=$TARGET_CC
|
||||
|
||||
AC_SUBST(OBJCONV)
|
||||
AC_SUBST(TARGET_CPP)
|
||||
AC_SUBST(TARGET_CCAS)
|
||||
AC_SUBST(TARGET_OBJ2ELF)
|
||||
AC_SUBST(TARGET_APPLE_CC)
|
||||
AC_SUBST(TARGET_ASFLAGS)
|
||||
AC_SUBST(TARGET_CPPFLAGS)
|
||||
AC_SUBST(TARGET_MODULE_FORMAT)
|
||||
|
||||
AC_SUBST(TARGET_CFLAGS)
|
||||
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.
|
||||
CC="$TARGET_CC"
|
||||
@@ -521,7 +561,7 @@ if test "x$target_cpu" = xi386; then
|
||||
if test "$platform" != emu && test "x$TARGET_APPLE_CC" != x1 ; then
|
||||
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
|
||||
# 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
|
||||
grub_CHECK_BSS_START_SYMBOL
|
||||
grub_CHECK_END_SYMBOL
|
||||
@@ -613,10 +653,6 @@ AC_ARG_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)])])
|
||||
|
||||
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
|
||||
missing_ncurses=
|
||||
[# Check for curses libraries.]
|
||||
@@ -635,19 +671,6 @@ if test x"$missing_ncurses" = xtrue ; then
|
||||
AC_MSG_ERROR([grub-emu can't be compiled without ncurses])
|
||||
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
|
||||
grub_emu_usb_excuse="explicitly disabled"
|
||||
fi
|
||||
@@ -794,22 +817,79 @@ fi
|
||||
if test x"$device_mapper_excuse" = x ; then
|
||||
# Check for device-mapper library.
|
||||
AC_CHECK_LIB([devmapper], [dm_task_create],
|
||||
[LDFLAGS="$LDFLAGS -ldevmapper"
|
||||
[LIBDEVMAPPER="-ldevmapper"
|
||||
AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
|
||||
[Define to 1 if you have the devmapper library.])],
|
||||
[device_mapper_excuse="need devmapper library"])
|
||||
fi
|
||||
AC_SUBST([LIBDEVMAPPER])
|
||||
|
||||
AC_CHECK_LIB([zfs], [libzfs_init],
|
||||
[LDFLAGS="$LDFLAGS -lzfs"
|
||||
[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],
|
||||
[LDFLAGS="$LDFLAGS -lnvpair"
|
||||
[LIBNVPAIR="-lnvpair"
|
||||
AC_DEFINE([HAVE_LIBNVPAIR], [1],
|
||||
[Define to 1 if you have the NVPAIR library.])],)
|
||||
AC_SUBST([LIBNVPAIR])
|
||||
|
||||
AC_SUBST(ASFLAGS)
|
||||
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.
|
||||
grub_CHECK_LINK_DIR
|
||||
@@ -827,8 +907,13 @@ else
|
||||
cp -rp $srcdir/include/grub/$target_cpu/$platform include/grub/machine 2>/dev/null
|
||||
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_OUTPUT
|
||||
[
|
||||
echo "*******************************************************"
|
||||
@@ -850,11 +935,6 @@ echo PCI support for grub-emu: Yes
|
||||
else
|
||||
echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
|
||||
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
|
||||
if [ x"$enable_mm_debug" = xyes ]; then
|
||||
echo With memory debugging: Yes
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
AUTOMAKE_OPTIONS = subdir-objects
|
||||
|
||||
# AM_MAKEINFOFLAGS = --no-split --no-validate
|
||||
info_TEXINFOS = grub.texi
|
||||
grub_TEXINFOS = fdl.texi
|
||||
|
||||
|
||||
+171
-3
@@ -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
|
||||
root partition to the kernel.
|
||||
|
||||
FIXME: this section is incomplete.
|
||||
|
||||
@enumerate
|
||||
@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
|
||||
|
||||
|
||||
@@ -2094,6 +2113,7 @@ you forget a command, you can run the command @command{help}
|
||||
* pxe_unload:: Unload the PXE environment
|
||||
* reboot:: Reboot your computer
|
||||
* search:: Search devices by file, label, or UUID
|
||||
* sendkey:: Emulate keystrokes
|
||||
* set:: Set an environment variable
|
||||
* unset:: Unset an environment variable
|
||||
* uppermem:: Set the upper memory size
|
||||
@@ -2604,6 +2624,154 @@ commands are aliases for @samp{search --file}, @samp{search --label}, and
|
||||
@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
|
||||
@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
|
||||
+12
-18
@@ -11,11 +11,6 @@
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
lst="$1"
|
||||
shift
|
||||
|
||||
header=`echo "${lst}" | sed -e "s/\.lst$/.h/g"`
|
||||
|
||||
cat <<EOF
|
||||
/* 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/>.
|
||||
*/
|
||||
|
||||
#include <$header>
|
||||
#include <grub/emu/misc.h>
|
||||
|
||||
EOF
|
||||
|
||||
for mod in "$@"; do
|
||||
echo "extern void grub_${mod}_init (void);"
|
||||
echo "extern void grub_${mod}_fini (void);"
|
||||
done
|
||||
|
||||
cat <<EOF
|
||||
void
|
||||
grub_init_all (void)
|
||||
{
|
||||
EOF
|
||||
|
||||
while read line; do
|
||||
file=`echo $line | cut -f1 -d:`
|
||||
if echo $@ | grep $file >/dev/null; then
|
||||
echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_init ();/'
|
||||
fi
|
||||
done < ${lst}
|
||||
for mod in "$@"; do
|
||||
echo "grub_${mod}_init ();"
|
||||
done
|
||||
|
||||
cat <<EOF
|
||||
}
|
||||
@@ -63,12 +60,9 @@ grub_fini_all (void)
|
||||
{
|
||||
EOF
|
||||
|
||||
while read line; do
|
||||
file=`echo $line | cut -f1 -d:`
|
||||
if echo $@ | grep $file >/dev/null; then
|
||||
echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_fini ();/'
|
||||
fi
|
||||
done < ${lst}
|
||||
for mod in "$@"; do
|
||||
echo "grub_${mod}_fini ();"
|
||||
done
|
||||
|
||||
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
|
||||
@@ -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()}
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -20,7 +20,8 @@
|
||||
#include <grub/mips/yeeloong/pci.h>
|
||||
#include <grub/mips/loongson.h>
|
||||
#include <grub/pci.h>
|
||||
#include <grub/serial.h>
|
||||
#include <grub/machine/serial.h>
|
||||
#include <grub/ns8250.h>
|
||||
#include <grub/cs5536.h>
|
||||
#include <grub/smbus.h>
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <grub/pci.h>
|
||||
#include <grub/dl.h>
|
||||
#include <grub/emu/misc.h>
|
||||
#include <grub/util/misc.h>
|
||||
|
||||
grub_pci_address_t
|
||||
File renamed without changes.
File renamed without changes.
@@ -654,7 +654,8 @@ grub_ohci_transaction (grub_ohci_td_t td,
|
||||
|
||||
static grub_usb_err_t
|
||||
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;
|
||||
grub_ohci_ed_t ed_virt;
|
||||
@@ -680,6 +681,8 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||
int err_unrec = 0;
|
||||
grub_uint32_t intstatus;
|
||||
|
||||
*actual = 0;
|
||||
|
||||
/* Pre-set target for ED - we need it to find proper ED */
|
||||
/* Set the device address. */
|
||||
target = transfer->devaddr;
|
||||
@@ -832,7 +835,7 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||
}
|
||||
|
||||
/* 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. */
|
||||
do
|
||||
@@ -986,6 +989,7 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||
transfer->last_trans = tderr_virt->tr_index;
|
||||
else
|
||||
transfer->last_trans = -1;
|
||||
*actual = transfer->size + 1;
|
||||
}
|
||||
|
||||
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:
|
||||
/* 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;
|
||||
break;
|
||||
|
||||
@@ -1078,12 +1082,14 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||
|
||||
case 9:
|
||||
/* XXX: Data underrun error. */
|
||||
err = GRUB_USB_ERR_DATA;
|
||||
grub_dprintf ("ohci", "Underrun, failed TD address: %p, index: %d\n",
|
||||
tderr_virt, tderr_virt->tr_index);
|
||||
grub_dprintf ("ohci", "Underrun, number of not transferred bytes: %d\n",
|
||||
1 + grub_le_to_cpu32 (tderr_virt->buffer_end)
|
||||
- grub_le_to_cpu32 (tderr_virt->buffer));
|
||||
if (transfer->last_trans == -1)
|
||||
break;
|
||||
*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;
|
||||
|
||||
case 10:
|
||||
@@ -1172,12 +1178,10 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||
transfer->last_trans = tderr_virt->tr_index;
|
||||
else
|
||||
transfer->last_trans = -1;
|
||||
|
||||
}
|
||||
|
||||
/* 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_tail) & ~0xf);
|
||||
/* 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_tail) & ~0xf);
|
||||
|
||||
/* At this point always should be:
|
||||
* ED has skip bit set and halted or empty or after next SOF,
|
||||
@@ -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++];
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
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 */
|
||||
|
||||
*actual = 0;
|
||||
|
||||
/* Free the TDs in this queue and set last_trans. */
|
||||
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))
|
||||
transfer->last_trans = i;
|
||||
|
||||
*actual += (td->ctrl_status + 1) & 0x7ff;
|
||||
|
||||
/* Unlink the queue. */
|
||||
tdprev = td;
|
||||
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
|
||||
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;
|
||||
grub_uhci_qh_t qh;
|
||||
@@ -447,10 +452,12 @@ grub_uhci_transfer (grub_usb_controller_t dev,
|
||||
int i;
|
||||
grub_uint64_t endtime;
|
||||
|
||||
*actual = 0;
|
||||
|
||||
/* Allocate a queue head for the transfer queue. */
|
||||
qh = grub_alloc_qh (u, GRUB_USB_TRANSACTION_TYPE_CONTROL);
|
||||
if (! qh)
|
||||
return grub_errno;
|
||||
return GRUB_USB_ERR_INTERNAL;
|
||||
|
||||
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;
|
||||
|
||||
if (td_first)
|
||||
grub_free_queue (u, td_first, NULL);
|
||||
grub_free_queue (u, td_first, NULL, actual);
|
||||
|
||||
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
|
||||
occurred. */
|
||||
endtime = grub_get_time_ms () + 1000;
|
||||
endtime = grub_get_time_ms () + timeout;
|
||||
for (;;)
|
||||
{
|
||||
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);
|
||||
|
||||
/* Check if the TD is not longer active. */
|
||||
if (! (errtd->ctrl_status & (1 << 23)))
|
||||
{
|
||||
grub_dprintf ("uhci", ">>t status=0x%02x\n", errtd->ctrl_status);
|
||||
/* Check if the endpoint is stalled. */
|
||||
if (errtd->ctrl_status & (1 << 22))
|
||||
err = GRUB_USB_ERR_STALL;
|
||||
|
||||
/* Check if the endpoint is stalled. */
|
||||
if (errtd->ctrl_status & (1 << 22))
|
||||
err = GRUB_USB_ERR_STALL;
|
||||
/* Check if an error related to the data buffer occurred. */
|
||||
if (errtd->ctrl_status & (1 << 21))
|
||||
err = GRUB_USB_ERR_DATA;
|
||||
|
||||
/* Check if an error related to the data buffer occurred. */
|
||||
if (errtd->ctrl_status & (1 << 21))
|
||||
err = GRUB_USB_ERR_DATA;
|
||||
/* Check if a babble error occurred. */
|
||||
if (errtd->ctrl_status & (1 << 20))
|
||||
err = GRUB_USB_ERR_BABBLE;
|
||||
|
||||
/* Check if a babble error occurred. */
|
||||
if (errtd->ctrl_status & (1 << 20))
|
||||
err = GRUB_USB_ERR_BABBLE;
|
||||
/* Check if a NAK occurred. */
|
||||
if (errtd->ctrl_status & (1 << 19))
|
||||
err = GRUB_USB_ERR_NAK;
|
||||
|
||||
/* Check if a NAK occurred. */
|
||||
if (errtd->ctrl_status & (1 << 19))
|
||||
err = GRUB_USB_ERR_NAK;
|
||||
/* Check if a timeout occurred. */
|
||||
if (errtd->ctrl_status & (1 << 18))
|
||||
err = GRUB_USB_ERR_TIMEOUT;
|
||||
|
||||
/* Check if a timeout occurred. */
|
||||
if (errtd->ctrl_status & (1 << 18))
|
||||
err = GRUB_USB_ERR_TIMEOUT;
|
||||
/* Check if a bitstuff error occurred. */
|
||||
if (errtd->ctrl_status & (1 << 17))
|
||||
err = GRUB_USB_ERR_BITSTUFF;
|
||||
|
||||
/* Check if a bitstuff error occurred. */
|
||||
if (errtd->ctrl_status & (1 << 17))
|
||||
err = GRUB_USB_ERR_BITSTUFF;
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
if (err)
|
||||
goto fail;
|
||||
/* Fall through, no errors occurred, so the QH might be
|
||||
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)
|
||||
{
|
||||
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
|
||||
TDs. */
|
||||
qh->elinkptr = 1;
|
||||
grub_free_queue (u, td_first, transfer);
|
||||
grub_free_queue (u, td_first, transfer, actual);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <grub/usb.h>
|
||||
#include <grub/misc.h>
|
||||
#include <grub/list.h>
|
||||
#include <grub/term.h>
|
||||
|
||||
static grub_usb_controller_dev_t grub_usb_list;
|
||||
struct grub_usb_attach_desc *attach_hooks;
|
||||
@@ -208,14 +209,23 @@ grub_usb_device_initialize (grub_usb_device_t dev)
|
||||
goto fail;
|
||||
|
||||
/* Skip the configuration descriptor. */
|
||||
pos = sizeof (struct grub_usb_desc_config);
|
||||
pos = dev->config[i].descconf->length;
|
||||
|
||||
/* Read all interfaces. */
|
||||
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
|
||||
= (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. */
|
||||
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)
|
||||
if (interf->class == desc->class && desc->hook (dev, 0, i))
|
||||
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_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;
|
||||
grub_usb_controller_t controller;
|
||||
int nports;
|
||||
grub_usb_speed_t *speed;
|
||||
struct grub_usb_device **devices;
|
||||
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)
|
||||
{
|
||||
struct grub_usb_usb_hubdesc hubdesc;
|
||||
@@ -112,6 +112,7 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||
int i;
|
||||
grub_uint64_t timeout;
|
||||
grub_usb_device_t next_dev;
|
||||
grub_usb_device_t *attached_devices;
|
||||
|
||||
err = grub_usb_control_msg (dev, (GRUB_USB_REQTYPE_IN
|
||||
| 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_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. */
|
||||
for (i = 1; i <= hubdesc.portcnt; i++)
|
||||
{
|
||||
@@ -236,6 +244,8 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||
if (! next_dev)
|
||||
continue;
|
||||
|
||||
attached_devices[i - 1] = next_dev;
|
||||
|
||||
/* If the device is a Hub, scan it for more devices. */
|
||||
if (next_dev->descdev.class == 0x09)
|
||||
grub_usb_add_hub (next_dev);
|
||||
@@ -246,27 +256,29 @@ grub_usb_add_hub (grub_usb_device_t dev)
|
||||
}
|
||||
|
||||
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_device_t dev;
|
||||
grub_err_t err;
|
||||
|
||||
/* Disable the port. XXX: Why? */
|
||||
err = controller->dev->portstatus (controller, portno, 0);
|
||||
err = hub->controller->dev->portstatus (hub->controller, portno, 0);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
/* Enable the port. */
|
||||
err = controller->dev->portstatus (controller, portno, 1);
|
||||
err = hub->controller->dev->portstatus (hub->controller, portno, 1);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
/* 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)
|
||||
return;
|
||||
|
||||
hub->devices[portno] = dev;
|
||||
|
||||
/* If the device is a Hub, scan it for more devices. */
|
||||
if (dev->descdev.class == 0x09)
|
||||
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. */
|
||||
hub->nports = controller->dev->hubports (controller);
|
||||
hub->speed = grub_malloc (sizeof (hub->speed[0]) * hub->nports);
|
||||
if (!hub->speed)
|
||||
hub->devices = grub_zalloc (sizeof (hub->devices[0]) * hub->nports);
|
||||
if (!hub->devices)
|
||||
{
|
||||
grub_free (hub->controller);
|
||||
grub_free (hub);
|
||||
@@ -307,36 +319,54 @@ grub_usb_root_hub (grub_usb_controller_t controller)
|
||||
|
||||
for (i = 0; i < hub->nports; i++)
|
||||
{
|
||||
hub->speed[i] = controller->dev->detect_dev (hub->controller, i,
|
||||
&changed);
|
||||
grub_usb_speed_t speed;
|
||||
speed = controller->dev->detect_dev (hub->controller, i,
|
||||
&changed);
|
||||
|
||||
if (hub->speed[i] != GRUB_USB_SPEED_NONE)
|
||||
attach_root_port (hub->controller, i, hub->speed[i]);
|
||||
if (speed != GRUB_USB_SPEED_NONE)
|
||||
attach_root_port (hub, i, speed);
|
||||
}
|
||||
|
||||
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
|
||||
poll_nonroot_hub (grub_usb_device_t dev)
|
||||
{
|
||||
struct grub_usb_usb_hubdesc hubdesc;
|
||||
grub_err_t err;
|
||||
int i;
|
||||
unsigned i;
|
||||
grub_uint64_t timeout;
|
||||
grub_usb_device_t next_dev;
|
||||
|
||||
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;
|
||||
grub_usb_device_t *attached_devices = dev->children;
|
||||
|
||||
/* Iterate over the Hub ports. */
|
||||
for (i = 1; i <= hubdesc.portcnt; i++)
|
||||
for (i = 1; i <= dev->nports; i++)
|
||||
{
|
||||
grub_uint32_t status;
|
||||
|
||||
@@ -351,6 +381,12 @@ poll_nonroot_hub (grub_usb_device_t dev)
|
||||
if (err)
|
||||
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 ? */
|
||||
if ((status & GRUB_USB_HUB_STATUS_CONNECTED)
|
||||
&& (status & GRUB_USB_HUB_STATUS_C_CONNECTED))
|
||||
@@ -417,6 +453,8 @@ poll_nonroot_hub (grub_usb_device_t dev)
|
||||
if (! next_dev)
|
||||
continue;
|
||||
|
||||
attached_devices[i - 1] = next_dev;
|
||||
|
||||
/* If the device is a Hub, scan it for more devices. */
|
||||
if (next_dev->descdev.class == 0x09)
|
||||
grub_usb_add_hub (next_dev);
|
||||
@@ -434,26 +472,23 @@ grub_usb_poll_devices (void)
|
||||
|
||||
for (hub = hubs; hub; hub = hub->next)
|
||||
{
|
||||
int changed=0;
|
||||
/* Do we have to recheck number of ports? */
|
||||
/* No, it should be never changed, it should be constant. */
|
||||
for (i = 0; i < hub->nports; i++)
|
||||
{
|
||||
grub_usb_speed_t speed;
|
||||
int changed = 0;
|
||||
|
||||
speed = hub->controller->dev->detect_dev (hub->controller, i,
|
||||
&changed);
|
||||
|
||||
if (speed != GRUB_USB_SPEED_NONE)
|
||||
if (changed)
|
||||
{
|
||||
if (changed)
|
||||
attach_root_port (hub->controller, i, speed);
|
||||
detach_device (hub->devices[i]);
|
||||
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];
|
||||
|
||||
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;
|
||||
grub_uint32_t data_addr;
|
||||
grub_size_t size = size0;
|
||||
grub_size_t actual;
|
||||
|
||||
/* FIXME: avoid allocation any kind of buffer in a first place. */
|
||||
data_chunk = grub_memalign_dma32 (128, size ? : 16);
|
||||
@@ -132,6 +133,7 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||
else
|
||||
tr->pid = GRUB_USB_TRANSFER_TYPE_OUT;
|
||||
tr->data = data_addr + i * max;
|
||||
tr->preceding = i * max;
|
||||
size -= max;
|
||||
}
|
||||
|
||||
@@ -145,7 +147,8 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||
|
||||
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_free (transfer->transactions);
|
||||
@@ -162,7 +165,8 @@ grub_usb_control_msg (grub_usb_device_t dev,
|
||||
static grub_usb_err_t
|
||||
grub_usb_bulk_readwrite (grub_usb_device_t dev,
|
||||
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;
|
||||
grub_usb_transfer_t transfer;
|
||||
@@ -240,10 +244,12 @@ grub_usb_bulk_readwrite (grub_usb_device_t dev,
|
||||
toggle = toggle ? 0 : 1;
|
||||
tr->pid = type;
|
||||
tr->data = data_addr + i * max;
|
||||
tr->preceding = i * max;
|
||||
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
|
||||
* were not processed - correct value should be inversion of last
|
||||
* processed transaction (TD). */
|
||||
@@ -268,14 +274,34 @@ grub_usb_err_t
|
||||
grub_usb_bulk_write (grub_usb_device_t dev,
|
||||
int endpoint, grub_size_t size, char *data)
|
||||
{
|
||||
return grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
||||
GRUB_USB_TRANSFER_TYPE_OUT);
|
||||
grub_size_t actual;
|
||||
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_bulk_read (grub_usb_device_t dev,
|
||||
int endpoint, grub_size_t size, char *data)
|
||||
{
|
||||
return grub_usb_bulk_readwrite (dev, endpoint, size, data,
|
||||
GRUB_USB_TRANSFER_TYPE_IN);
|
||||
grub_size_t actual;
|
||||
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);
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -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);
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 554 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user