package/grub: build a host grub and a target grub (#7269) - use the host grub binary for grub install, but with target stage files - disable SSP (-fno-stack-protector) & Compile Time Buffer Checks (-U_FORTIFY_SOURCE) if appropriate - create a target grub package
SVN-Revision: 21305
This commit is contained in:
parent
08be2bcfd9
commit
3bca4b2094
2 changed files with 49 additions and 55 deletions
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (C) 2006-2009 OpenWrt.org
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
|
@ -10,71 +10,62 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||
|
||||
PKG_NAME:=grub
|
||||
PKG_VERSION:=0.97
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=ftp://alpha.gnu.org/gnu/grub
|
||||
PKG_MD5SUM:=cd3f3eb54446be6003156158d51f4884
|
||||
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/grub-$(PKG_VERSION)
|
||||
PKG_TARGETS:=bin
|
||||
PKG_BUILD_DEPENDS:= grub/host
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
export grub_cv_prog_objcopy_absolute=yes
|
||||
|
||||
define Package/grub
|
||||
SECTION:=boot
|
||||
DEPENDS:=@TARGET_x86
|
||||
CATEGORY:=Boot Loaders
|
||||
SUBMENU:=Boot Loaders
|
||||
CATEGORY:=Utilities
|
||||
SECTION:=utils
|
||||
TITLE:=GRand Unified Bootloader
|
||||
URL:=http://www.gnu.org/software/grub/
|
||||
DEPENDS:=@TARGET_x86
|
||||
endef
|
||||
|
||||
CONFIGURE_FLAGS:=
|
||||
|
||||
ifneq ($(HOST_OS),Darwin)
|
||||
define Build/Configure
|
||||
(cd $(PKG_BUILD_DIR); \
|
||||
CFLAGS="-march=i486 -m32" \
|
||||
LDFLAGS="-static" \
|
||||
./configure \
|
||||
$(CONFIGURE_FLAGS) \
|
||||
--build=i386-linux-gnu \
|
||||
--host=i386-linux-gnu \
|
||||
--program-prefix="" \
|
||||
--program-suffix="" \
|
||||
--prefix=/usr \
|
||||
--exec-prefix=/usr \
|
||||
--bindir=/usr/bin \
|
||||
--sbindir=/usr/sbin \
|
||||
--libexecdir=/usr/lib \
|
||||
--sysconfdir=/etc \
|
||||
--datadir=/usr/share \
|
||||
--localstatedir=/var \
|
||||
--mandir=/usr/man \
|
||||
--infodir=/usr/info \
|
||||
$(DISABLE_NLS) \
|
||||
--disable-auto-linux-mem-opt \
|
||||
)
|
||||
endef
|
||||
MY_CONFIGURE_ARGS += \
|
||||
--disable-auto-linux-mem-opt \
|
||||
--disable-graphics \
|
||||
--disable-hercules \
|
||||
--without-curses \
|
||||
|
||||
#
|
||||
# ./configure detects whether the host compiler supports
|
||||
# -fno-stack-protector but only sets STAGE2_CFLAGS accordingly
|
||||
#
|
||||
define Build/Compile
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
GRUB_CFLAGS="\$$$$(STAGE2_CFLAGS)" \
|
||||
STAGE1_CFLAGS="\$$$$(STAGE2_CFLAGS)"
|
||||
endef
|
||||
MY_CONFIGURE_VARS += \
|
||||
grub_cv_prog_objcopy_absolute=yes \
|
||||
|
||||
CONFIGURE_ARGS += $(MY_CONFIGURE_ARGS)
|
||||
|
||||
CONFIGURE_VARS += $(MY_CONFIGURE_VARS)
|
||||
|
||||
HOST_CFLAGS += $(call host-cc-option,-fno-stack-protector)
|
||||
HOST_CFLAGS += $(call host-cc-option,-U_FORTIFY_SOURCE)
|
||||
|
||||
HOST_CONFIGURE_ARGS += $(MY_CONFIGURE_ARGS) \
|
||||
--sbindir="$(STAGING_DIR_HOST)/bin" \
|
||||
|
||||
HOST_CONFIGURE_VARS += $(MY_CONFIGURE_VARS)
|
||||
|
||||
define Build/InstallDev
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
DESTDIR="$(STAGING_DIR_HOST)" \
|
||||
install
|
||||
mv $(STAGING_DIR_HOST)/usr/sbin/grub $(STAGING_DIR_HOST)/bin
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/grub $(1)/usr/lib/
|
||||
endef
|
||||
endif
|
||||
|
||||
define Package/grub/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
$(eval $(call BuildPackage,grub))
|
||||
|
|
|
@ -56,7 +56,9 @@ ifneq ($(CONFIG_X86_GRUB_IMAGES),)
|
|||
# left here because the image builder doesnt need these
|
||||
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub
|
||||
$(CP) \
|
||||
$(KDIR)/*stage* \
|
||||
$(KDIR)/stage1 \
|
||||
$(KDIR)/stage2 \
|
||||
$(KDIR)/e2fs_stage1_5 \
|
||||
$(KDIR)/root.grub/boot/grub/
|
||||
$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
|
||||
sed \
|
||||
|
@ -74,9 +76,10 @@ ifneq ($(CONFIG_X86_GRUB_IMAGES),)
|
|||
define Image/Prepare/grub
|
||||
# for the image builder
|
||||
$(CP) \
|
||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-*/stage1 \
|
||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-*/stage2 \
|
||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-*/e2fs_stage1_5 \
|
||||
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/stage1 \
|
||||
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/stage2 \
|
||||
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/stage2_eltorito \
|
||||
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/e2fs_stage1_5 \
|
||||
$(KDIR)/
|
||||
endef
|
||||
|
||||
|
@ -135,8 +138,8 @@ endef
|
|||
define Image/Build/iso
|
||||
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub
|
||||
$(CP) \
|
||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-openwrt/stage2_eltorito \
|
||||
$(KDIR)/root.grub/boot/grub/stage2_eltorito
|
||||
$(KDIR)/stage2_eltorito \
|
||||
$(KDIR)/root.grub/boot/grub/
|
||||
sed \
|
||||
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
|
||||
-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
|
||||
|
|
Loading…
Reference in a new issue