diff options
| author | nico <nico@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-05-02 17:32:25 +0000 | 
|---|---|---|
| committer | nico <nico@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-05-02 17:32:25 +0000 | 
| commit | bb43ad8e7d1f03015393d3d8d025d6c5b10c3ede (patch) | |
| tree | 004685feb58bf2288f0b366607bed59d98588ecb | |
| parent | cb2f53e0b7314fbf6aeee8176c9fc3fe94893e42 (diff) | |
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
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21305 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | package/grub/Makefile | 91 | ||||
| -rw-r--r-- | target/linux/x86/image/Makefile | 15 | 
2 files changed, 50 insertions, 56 deletions
diff --git a/package/grub/Makefile b/package/grub/Makefile index 20232f495..e40177080 100644 --- a/package/grub/Makefile +++ b/package/grub/Makefile @@ -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 -# -# ./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_ARGS += \ +	--disable-auto-linux-mem-opt \ +	--disable-graphics \ +	--disable-hercules \ +	--without-curses \ + +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 + +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 -endif +$(eval $(call HostBuild))  $(eval $(call BuildPackage,grub)) diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index 912dae235..257723c8a 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -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' \  | 
