This patch greatly simplifies compiling on freebsd-amd64 and possibly other systems. Would be nice to get in into mainstream fastly. Concern about multiboot2.h however remains
On Sat, May 23, 2009 at 1:33 AM, Pavel Roskin<pro...@gnu.org> wrote: > ChangeLog: > > * configure.ac: Define GRUB_SOURCE to identify GRUB sources > in include/multiboot2.h. Use "-nostdlib" when testing target > compiler. > * include/multiboot2.h: Use GRUB types and definitions. Provide > compatibility layer when GRUB_SOURCE is not defined. > * loader/i386/pc/multiboot2.c: Include multiboot2.h last to make > sure that config.h was included first. > * loader/multiboot2.c: Likewise. > * loader/multiboot_loader.c: Likewise. > --- > > configure.ac | 3 ++- > include/multiboot2.h | 24 +++++++++++++++--------- > loader/i386/pc/multiboot2.c | 2 +- > loader/multiboot2.c | 2 +- > loader/multiboot_loader.c | 2 +- > 5 files changed, 20 insertions(+), 13 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 98cd841..af60603 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -161,6 +161,7 @@ test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required]) > > AC_GNU_SOURCE > AC_SYS_LARGEFILE > +AC_DEFINE([GRUB_SOURCE], [1], [Define when compiling GRUB sources.]) > > # Identify characteristics of the host architecture. > AC_C_BIGENDIAN > @@ -366,7 +367,7 @@ AC_SUBST(TARGET_LDFLAGS) > > # Set them to their new values for the tests below. > CC="$TARGET_CC" > -CFLAGS="$TARGET_CFLAGS" > +CFLAGS="$TARGET_CFLAGS -nostdlib" > CPPFLAGS="$TARGET_CPPFLAGS" > LDFLAGS="$TARGET_LDFLAGS" > > diff --git a/include/multiboot2.h b/include/multiboot2.h > index 0f2b0cf..e8fe425 100644 > --- a/include/multiboot2.h > +++ b/include/multiboot2.h > @@ -34,25 +34,31 @@ > > #ifndef ASM_FILE > > -#include "stdint.h" > +#ifdef GRUB_SOURCE > +#include <grub/types.h> > +#else > +#include <stdint.h> > +typedef uint32_t grub_uint32_t; > +typedef uint64_t grub_uint64_t; > +#define GRUB_TARGET_SIZEOF_VOID_P (__WORDSIZE / 8) > +#endif > > -/* XXX not portable? */ > -#if __WORDSIZE == 64 > -typedef uint64_t multiboot_word; > +#if GRUB_TARGET_SIZEOF_VOID_P == 8 > +typedef grub_uint64_t multiboot_word; > #else > -typedef uint32_t multiboot_word; > +typedef grub_uint32_t multiboot_word; > #endif > > struct multiboot_header > { > - uint32_t magic; > - uint32_t flags; > + grub_uint32_t magic; > + grub_uint32_t flags; > }; > > struct multiboot_tag_header > { > - uint32_t key; > - uint32_t len; > + grub_uint32_t key; > + grub_uint32_t len; > }; > > #define MULTIBOOT2_TAG_RESERVED1 0 > diff --git a/loader/i386/pc/multiboot2.c b/loader/i386/pc/multiboot2.c > index 2c14ee2..25ef150 100644 > --- a/loader/i386/pc/multiboot2.c > +++ b/loader/i386/pc/multiboot2.c > @@ -17,7 +17,6 @@ > * along with GRUB. If not, see <http://www.gnu.org/licenses/>. > */ > > -#include <multiboot2.h> > #include <grub/multiboot2.h> > #include <grub/elf.h> > #include <grub/err.h> > @@ -25,6 +24,7 @@ > #include <grub/mm.h> > #include <grub/multiboot.h> > #include <grub/cpu/multiboot.h> > +#include <multiboot2.h> > > grub_err_t > grub_mb2_arch_elf32_hook (Elf32_Phdr *phdr, UNUSED grub_addr_t *addr) > diff --git a/loader/multiboot2.c b/loader/multiboot2.c > index fd82828..34e42c1 100644 > --- a/loader/multiboot2.c > +++ b/loader/multiboot2.c > @@ -17,7 +17,6 @@ > * along with GRUB. If not, see <http://www.gnu.org/licenses/>. > */ > > -#include <multiboot2.h> > #include <grub/loader.h> > #include <grub/machine/loader.h> > #include <grub/multiboot2.h> > @@ -28,6 +27,7 @@ > #include <grub/mm.h> > #include <grub/misc.h> > #include <grub/gzio.h> > +#include <multiboot2.h> > > static grub_addr_t entry; > extern grub_dl_t my_mod; > diff --git a/loader/multiboot_loader.c b/loader/multiboot_loader.c > index 11ba666..654508e 100644 > --- a/loader/multiboot_loader.c > +++ b/loader/multiboot_loader.c > @@ -17,7 +17,6 @@ > * along with GRUB. If not, see <http://www.gnu.org/licenses/>. > */ > > -#include <multiboot2.h> > #include <grub/machine/machine.h> > #include <grub/multiboot.h> > #include <grub/multiboot2.h> > @@ -29,6 +28,7 @@ > #include <grub/misc.h> > #include <grub/gzio.h> > #include <grub/command.h> > +#include <multiboot2.h> > > grub_dl_t my_mod; > > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > -- Regards Vladimir 'phcoder' Serbinenko _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel