From: Clark Rawlins <clark.rawlins@escient.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] Permit building grub with an external toolchain.
Date: Mon, 04 Jan 2010 08:01:44 -0500 [thread overview]
Message-ID: <1262610104.3853.6.camel@venture> (raw)
In-Reply-To: <1262526218.23927.27.camel@venture>
Here is my attempt to use the autotools macros.
I look forward to any discussion, suggestions for improvement etc.
I attach the whole file since it is effectively a rewrite. If it is
acceptable I will submit as a git diff against head.
On Sun, 2010-01-03 at 08:43 -0500, Clark Rawlins wrote:
> Okay,
>
> I've started looking at this but it isn't clear to me how to handle the
> following:
>
> $(GRUB_DIR)/$(GRUB_BINARY): $(GRUB_DIR)/.configured
> $(MAKE) CC=$(TARGET_CC) -C $(GRUB_DIR)
> rm -f $(GRUB_DIR)/$(GRUB_BINARY)
> $(MAKE) CC=$(TARGET_CC) CFLAGS+=-static -C $(GRUB_DIR)/grub grub
> mkdir -p $(dir $(STAGING_DIR)/$(GRUB_TARGET_BINARY))
> mv $(GRUB_DIR)/$(GRUB_BINARY) $(STAGING_DIR)/$(GRUB_TARGET_BINARY).static
> $(MAKE) CC=$(TARGET_CC) -C $(GRUB_DIR)/grub
>
> This builds everything dynamically linked first then builds the grub binary statically.
> Is the right way to do this to override the target after/before calling the autotools macro?
>
>
> On Sun, 2010-01-03 at 05:08 +0100, Lionel Landwerlin wrote:
> > Here is one example :
> >
> > http://git.buildroot.org/buildroot/commit/?id=21bab8862f3c2906af347e5a993ce4cd36c1b063
> >
> > You can find a lot like this in the recent git history.
> > I'm think to the new infrastructure because it provides all the glue to
> > configure the package, especially the 2 lines you added.
> >
> > Regards,
> >
> >
> > Le samedi 02 janvier 2010 ? 21:15 -0500, Clark Rawlins a ?crit :
> > > I could give that a shot. I thought as a start I would go with the
> > > smallest change possible. Any suggestions for an example to look at for
> > > switching grub to the autotools macros?
> > >
> > >
> > > On Sun, 2010-01-03 at 01:13 +0100, Lionel Landwerlin wrote:
> > > > Le samedi 02 janvier 2010 ? 17:46 -0500, Clark Rawlins a ?crit :
> > > > > Grub build failed at the link stage because it
> > > > > couldn't find libcurses. Adding these variable
> > > > > invocations to the configure line make it work.
> > > > >
> > > > > Signed-off-by: Clark Rawlins <clark.rawlins@escient.com>
> > > > > ---
> > > > > target/x86/grub/grub.mk | 2 ++
> > > > > 1 files changed, 2 insertions(+), 0 deletions(-)
> > > > >
> > > > > diff --git a/target/x86/grub/grub.mk b/target/x86/grub/grub.mk
> > > > > index af46244..21f089f 100644
> > > > > --- a/target/x86/grub/grub.mk
> > > > > +++ b/target/x86/grub/grub.mk
> > > > > @@ -81,6 +81,8 @@ $(GRUB_DIR)/.unpacked: $(DL_DIR)/$(GRUB_SOURCE) $(DL_DIR)/$(GRUB_PATCH)
> > > > > $(GRUB_DIR)/.configured: $(GRUB_DIR)/.unpacked
> > > > > (cd $(GRUB_DIR); rm -rf config.cache; \
> > > > > $(TARGET_CONFIGURE_OPTS) \
> > > > > + $(TARGET_CONFIGURE_ARGS) \
> > > > > + $(TARGET_CONFIGURE_ENV) \
> > > > > CFLAGS="$(TARGET_CFLAGS)" \
> > > > > CPPFLAGS="$(GRUB_CFLAGS)" \
> > > > > ./configure $(QUIET) \
> > > >
> > > > Maybe you should consider switching grub to the autotool infrastructure.
> > > >
> > > > --
> > > > Lionel Landwerlin
> > > >
> > > > _______________________________________________
> > > > buildroot mailing list
> > > > buildroot at busybox.net
> > > > http://lists.busybox.net/mailman/listinfo/buildroot
> > >
> >
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
-------------- next part --------------
GRUB_SUPPORTED_ARCH=n
ifeq ($(ARCH),i386)
GRUB_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),i486)
GRUB_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),i586)
GRUB_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),i686)
GRUB_SUPPORTED_ARCH=y
endif
ifeq ($(ARCH),x86_64)
GRUB_SUPPORTED_ARCH=y
endif
ifeq ($(GRUB_SUPPORTED_ARCH),y)
#############################################################
#
# grub
#
#############################################################
GRUB_VERSION:=0.97
GRUB_SOURCE:=grub_$(GRUB_VERSION).orig.tar.gz
GRUB_PATCH:=grub_$(GRUB_VERSION)-35.diff.gz
GRUB_SITE:=http://snapshot.debian.net/archive/2008/03/29/debian/pool/main/g/grub/
GRUB_BINARY:=grub/grub
GRUB_TARGET_BINARY:=sbin/grub
GRUB_SPLASHIMAGE=$(TOPDIR)/target/x86/grub/splash.xpm.gz
GRUB_AUTORECONF=NO
GRUB_INSTALL_TARGET=YES
GRUB_INSTALL_STAGING=YES
GRUB_CFLAGS=-DSUPPORT_LOOPDEV
ifeq ($(BR2_LARGEFILE),)
GRUB_CFLAGS+=-U_FILE_OFFSET_BITS
endif
GRUB_CONF_ENV=\
CFLAGS="$(TARGET_CFLAGS) $(GRUB_CFLAGS)" \
CPPFLAGS="$(TARGET_CFLAGS) $(GRUB_CFLAGS)" \
CXXFLAGS="$(TARGET_CXXFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
FCFLAGS="$(TARGET_FCFLAGS)" \
GRUB_CONFIG-$(BR2_TARGET_GRUB_SPLASH) += --enable-graphics
GRUB_CONFIG-$(BR2_TARGET_GRUB_DISKLESS) += --enable-diskless
GRUB_CONFIG-$(BR2_TARGET_GRUB_3c595) += --enable-3c595
GRUB_CONFIG-$(BR2_TARGET_GRUB_3c90x) += --enable-3c90x
GRUB_CONFIG-$(BR2_TARGET_GRUB_davicom) += --enable-davicom
GRUB_CONFIG-$(BR2_TARGET_GRUB_e1000) += --enable-e1000
GRUB_CONFIG-$(BR2_TARGET_GRUB_eepro100) += --enable-eepro100
GRUB_CONFIG-$(BR2_TARGET_GRUB_epic100) += --enable-epic100
GRUB_CONFIG-$(BR2_TARGET_GRUB_forcedeth) += --enable-forcedeth
GRUB_CONFIG-$(BR2_TARGET_GRUB_natsemi) += --enable-natsemi
GRUB_CONFIG-$(BR2_TARGET_GRUB_ns83820) += --enable-ns83820
GRUB_CONFIG-$(BR2_TARGET_GRUB_ns8390) += --enable-ns8390
GRUB_CONFIG-$(BR2_TARGET_GRUB_pcnet32) += --enable-pcnet32
GRUB_CONFIG-$(BR2_TARGET_GRUB_pnic) += --enable-pnic
GRUB_CONFIG-$(BR2_TARGET_GRUB_rtl8139) += --enable-rtl8139
GRUB_CONFIG-$(BR2_TARGET_GRUB_r8169) += --enable-r8169
GRUB_CONFIG-$(BR2_TARGET_GRUB_sis900) += --enable-sis900
GRUB_CONFIG-$(BR2_TARGET_GRUB_tg3) += --enable-tg3
GRUB_CONFIG-$(BR2_TARGET_GRUB_tulip) += --enable-tulip
GRUB_CONFIG-$(BR2_TARGET_GRUB_tlan) += --enable-tlan
GRUB_CONFIG-$(BR2_TARGET_GRUB_undi) += --enable-undi
GRUB_CONFIG-$(BR2_TARGET_GRUB_via_rhine) += --enable-via-rhine
GRUB_CONFIG-$(BR2_TARGET_GRUB_w89c840) += --enable-w89c840
GRUB_CONFIG_OPT=$(GRUB_CONFIG-y) --disable-auto-linux-mem-opt
define GRUB_APPLY_DEBIAN_PATCHES
for i in `grep -v "^#" $(GRUB_DIR)/debian/patches/00list`; do \
cat $(GRUB_DIR)/debian/patches/$$i | patch -p1 -d $(GRUB_DIR); \
done
endef
GRUB_POST_PATCH_HOOKS = GRUB_APPLY_DEBIAN_PATCHES
define GRUB_CONFIGURE_CMDS
(cd $(GRUB_SRCDIR) && rm -rf config.cache && \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
$(GRUB_CONF_ENV) \
./configure \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/ \
--mandir=/usr/man \
--infodir=/usr/info \
$(DISABLE_DOCUMENTATION) \
$(DISABLE_NLS) \
$(DISABLE_LARGEFILE) \
$(DISABLE_IPV6) \
$(QUIET) $(GRUB_CONF_OPT) \
)
endef
define GRUB_BUILD_STATIC_TARGETS
rm -f $(GRUB_SRCDIR)/$(GRUB_BINARY)
$(MAKE) CC=$(TARGET_CC) CFLAGS+=-static -C $(GRUB_SRCDIR)/grub grub
mkdir -p $(dir $(STAGING_DIR)/$(GRUB_TARGET_BINARY))
mv $(GRUB_SRCDIR)/$(GRUB_BINARY) $(STAGING_DIR)/$(GRUB_TARGET_BINARY).static
$(MAKE) CC=$(TARGET_CC) -C $(GRUB_SRCDIR)/grub
endef
GRUB_POST_BUILD_HOOKS = GRUB_BUILD_STATIC_TARGETS
define GRUB_INSTALL_BOOT_FILES
test -d $(TARGET_DIR)/boot/grub || mkdir -p $(TARGET_DIR)/boot/grub
cp $(GRUB_SRCDIR)/stage1/stage1 $(GRUB_SRCDIR)/stage2/*1_5 $(GRUB_SRCDIR)/stage2/stage2 $(TARGET_DIR)/boot/grub/
endef
define GRUB_INSTALL_SPLASHIMAGE
test -f $(TARGET_DIR)/boot/grub/$(GRUB_SPLASHIMAGE) || \
cp $(GRUB_SPLASHIMAGE) $(TARGET_DIR)/boot/grub/
endef
GRUB_POST_INSTALL_TARGET_HOOKS = GRUB_INSTALL_BOOT_FILES
ifeq ($(BR2_TARGET_GRUB_SPLASH),y)
GRUB_POST_INSTALL_TARGET_HOOKS += GRUB_INSTALL_SPLASHIMAGE
endif
define GRUB_UNINSTALL_TARGET_CMDS
$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(GRUB_SRCDIR) uninstall
-$(MAKE) -C $(GRUB_SRCDIR) clean
rm -f $(TARGET_DIR)/boot/grub/$(GRUB_SPLASHIMAGE) \
$(TARGET_DIR)/sbin/$(GRUB_BINARY) \
$(TARGET_DIR)/boot/grub/{stage{1,2},*1_5}
endef
$(eval $(call AUTOTARGETS,target/x86,grub))
endif
next prev parent reply other threads:[~2010-01-04 13:01 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-02 22:46 [Buildroot] [PATCH] Permit building grub with an external toolchain Clark Rawlins
2010-01-03 0:13 ` Lionel Landwerlin
2010-01-03 2:15 ` Clark Rawlins
2010-01-03 4:08 ` Lionel Landwerlin
2010-01-03 13:43 ` Clark Rawlins
2010-01-04 13:01 ` Clark Rawlins [this message]
2010-01-04 13:09 ` Lionel Landwerlin
2010-01-04 13:22 ` Clark Rawlins
2010-01-04 13:29 ` Lionel Landwerlin
2010-01-04 13:20 ` Thomas Petazzoni
2010-01-04 13:29 ` Clark Rawlins
2010-01-04 17:48 ` Clark Rawlins
2010-01-17 0:59 ` Clark Rawlins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1262610104.3853.6.camel@venture \
--to=clark.rawlins@escient.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.