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.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
|
@ -10,71 +10,62 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=grub
|
PKG_NAME:=grub
|
||||||
PKG_VERSION:=0.97
|
PKG_VERSION:=0.97
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=ftp://alpha.gnu.org/gnu/grub
|
PKG_SOURCE_URL:=ftp://alpha.gnu.org/gnu/grub
|
||||||
PKG_MD5SUM:=cd3f3eb54446be6003156158d51f4884
|
PKG_MD5SUM:=cd3f3eb54446be6003156158d51f4884
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/grub-$(PKG_VERSION)
|
PKG_BUILD_DEPENDS:= grub/host
|
||||||
PKG_TARGETS:=bin
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/host-build.mk
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
export grub_cv_prog_objcopy_absolute=yes
|
|
||||||
|
|
||||||
define Package/grub
|
define Package/grub
|
||||||
SECTION:=boot
|
SUBMENU:=Boot Loaders
|
||||||
DEPENDS:=@TARGET_x86
|
CATEGORY:=Utilities
|
||||||
CATEGORY:=Boot Loaders
|
SECTION:=utils
|
||||||
TITLE:=GRand Unified Bootloader
|
TITLE:=GRand Unified Bootloader
|
||||||
URL:=http://www.gnu.org/software/grub/
|
URL:=http://www.gnu.org/software/grub/
|
||||||
|
DEPENDS:=@TARGET_x86
|
||||||
endef
|
endef
|
||||||
|
|
||||||
CONFIGURE_FLAGS:=
|
|
||||||
|
|
||||||
ifneq ($(HOST_OS),Darwin)
|
MY_CONFIGURE_ARGS += \
|
||||||
define Build/Configure
|
--disable-auto-linux-mem-opt \
|
||||||
(cd $(PKG_BUILD_DIR); \
|
--disable-graphics \
|
||||||
CFLAGS="-march=i486 -m32" \
|
--disable-hercules \
|
||||||
LDFLAGS="-static" \
|
--without-curses \
|
||||||
./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_VARS += \
|
||||||
# ./configure detects whether the host compiler supports
|
grub_cv_prog_objcopy_absolute=yes \
|
||||||
# -fno-stack-protector but only sets STAGE2_CFLAGS accordingly
|
|
||||||
#
|
CONFIGURE_ARGS += $(MY_CONFIGURE_ARGS)
|
||||||
define Build/Compile
|
|
||||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
CONFIGURE_VARS += $(MY_CONFIGURE_VARS)
|
||||||
GRUB_CFLAGS="\$$$$(STAGE2_CFLAGS)" \
|
|
||||||
STAGE1_CFLAGS="\$$$$(STAGE2_CFLAGS)"
|
HOST_CFLAGS += $(call host-cc-option,-fno-stack-protector)
|
||||||
endef
|
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
|
define Build/InstallDev
|
||||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
DESTDIR="$(STAGING_DIR_HOST)" \
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/grub $(1)/usr/lib/
|
||||||
install
|
|
||||||
mv $(STAGING_DIR_HOST)/usr/sbin/grub $(STAGING_DIR_HOST)/bin
|
|
||||||
endef
|
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))
|
$(eval $(call BuildPackage,grub))
|
||||||
|
|
|
@ -56,7 +56,9 @@ ifneq ($(CONFIG_X86_GRUB_IMAGES),)
|
||||||
# left here because the image builder doesnt need these
|
# left here because the image builder doesnt need these
|
||||||
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub
|
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub
|
||||||
$(CP) \
|
$(CP) \
|
||||||
$(KDIR)/*stage* \
|
$(KDIR)/stage1 \
|
||||||
|
$(KDIR)/stage2 \
|
||||||
|
$(KDIR)/e2fs_stage1_5 \
|
||||||
$(KDIR)/root.grub/boot/grub/
|
$(KDIR)/root.grub/boot/grub/
|
||||||
$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
|
$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
|
||||||
sed \
|
sed \
|
||||||
|
@ -74,9 +76,10 @@ ifneq ($(CONFIG_X86_GRUB_IMAGES),)
|
||||||
define Image/Prepare/grub
|
define Image/Prepare/grub
|
||||||
# for the image builder
|
# for the image builder
|
||||||
$(CP) \
|
$(CP) \
|
||||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-*/stage1 \
|
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/stage1 \
|
||||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-*/stage2 \
|
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/stage2 \
|
||||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-*/e2fs_stage1_5 \
|
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/stage2_eltorito \
|
||||||
|
$(STAGING_DIR)/usr/lib/grub/i386-openwrt/e2fs_stage1_5 \
|
||||||
$(KDIR)/
|
$(KDIR)/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -135,8 +138,8 @@ endef
|
||||||
define Image/Build/iso
|
define Image/Build/iso
|
||||||
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub
|
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub
|
||||||
$(CP) \
|
$(CP) \
|
||||||
$(STAGING_DIR_HOST)/usr/lib/grub/i386-openwrt/stage2_eltorito \
|
$(KDIR)/stage2_eltorito \
|
||||||
$(KDIR)/root.grub/boot/grub/stage2_eltorito
|
$(KDIR)/root.grub/boot/grub/
|
||||||
sed \
|
sed \
|
||||||
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
|
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
|
||||||
-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
|
-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
|
||||||
|
|
Loading…
Reference in a new issue