x86: add grub2 iso support
[openwrt/staging/yousong.git] / package / grub / Makefile
index e401770805854253100a5e0c1bdd2a22656e97a2..80b79f29e93a71b096006377a7419728997ec284 100644 (file)
@@ -34,7 +34,6 @@ endef
 
 MY_CONFIGURE_ARGS += \
        --disable-auto-linux-mem-opt \
-       --disable-graphics \
        --disable-hercules \
        --without-curses \
 
@@ -45,14 +44,44 @@ CONFIGURE_ARGS += $(MY_CONFIGURE_ARGS)
 
 CONFIGURE_VARS += $(MY_CONFIGURE_VARS)
 
+ifeq ($(HOST_OS),Darwin)
+  HOST_CFLAGS += $(call host-cc-option,-m32)
+  HOST_CFLAGS += $(call host-cc-option,-fnested-functions)
+endif
+
+ifeq ($(HOST_OS),FreeBSD)
+  ifeq ($(HOST_ARCH),amd64)
+    HOST_CFLAGS += $(call host-cc-option,-m32)
+    HOST_CFLAGS += $(call host-cc-option,-B/usr/lib32)
+    HOST_CFLAGS += $(call host-cc-option,-L/usr/lib32)
+  endif
+endif
+
 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" \
+       --disable-graphics \
 
 HOST_CONFIGURE_VARS += $(MY_CONFIGURE_VARS)
 
+define Host/Configure
+       (cd $(HOST_BUILD_DIR); aclocal && autoconf && automake)
+       $(call Host/Configure/Default)
+endef
+
+ifeq ($(HOST_OS),Darwin)
+  define Host/Compile
+       $(MAKE) -C $(HOST_BUILD_DIR)/lib
+       $(MAKE) -C $(HOST_BUILD_DIR)/stage2 libgrub.a
+       $(MAKE) -C $(HOST_BUILD_DIR)/grub
+  endef
+  define Host/Install
+       $(MAKE) -C $(HOST_BUILD_DIR)/grub install
+  endef
+endif
+
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/grub $(1)/usr/lib/
@@ -67,5 +96,16 @@ define Package/grub/install
        $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
 endef
 
+ifeq ($(HOST_ARCH),x86_64)
+  define Require/working-gcc-m32
+       echo 'int main(int argc, char **argv) { return 0; }' | \
+               gcc -x c -o $(TMP_DIR)/a.out - -m32 -lc
+  endef
+endif
+
+$(eval $(call Require,working-gcc-m32, \
+       Please install 32 bit development files. (gcc-multilib on Debian/Ubuntu, gcc.i686, libgcc.i686, and glibc-devel.i686 on CentOS/Fedora/RHEL) \
+))
+
 $(eval $(call HostBuild))
 $(eval $(call BuildPackage,grub))