From 1f4147aaf0b8fe2590a97461f92a6c6d3a57fa6b Mon Sep 17 00:00:00 2001 From: bean Date: Sat, 21 Mar 2009 07:48:28 +0000 Subject: [PATCH] 2009-03-21 Bean * util/hostdisk.c (read_device_map): Use grub_util_get_disk_size instead of stat in mingw environment. * util/misc.c (grub_millisleep): Use Sleep in mingw environment. * aclocal.m4 (grub_CHECK_LINK_DIR): New function. * configure.ac: Use grub_CHECK_LINK_DIR to determine whether to use AC_CONFIG_LINKS. --- ChangeLog | 12 ++++++++++++ DISTLIST | 1 + aclocal.m4 | 18 ++++++++++++++++++ conf/powerpc-ieee1275.mk | 2 +- configure | 29 ++++++++++++++++++++++++++++- configure.ac | 11 ++++++++++- util/hostdisk.c | 5 +++++ util/misc.c | 20 +++++++++++++++++--- 8 files changed, 92 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 244239898..8e2da3e14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-03-21 Bean + + * util/hostdisk.c (read_device_map): Use grub_util_get_disk_size + instead of stat in mingw environment. + + * util/misc.c (grub_millisleep): Use Sleep in mingw environment. + + * aclocal.m4 (grub_CHECK_LINK_DIR): New function. + + * configure.ac: Use grub_CHECK_LINK_DIR to determine whether to use + AC_CONFIG_LINKS. + 2009-03-21 Bean * fs/ext2.c (grub_ext2_mount): Change errno to GRUB_ERR_BAD_FS for diff --git a/DISTLIST b/DISTLIST index fbe6aef5b..a6d9d204e 100644 --- a/DISTLIST +++ b/DISTLIST @@ -392,6 +392,7 @@ loader/i386/linux.c loader/i386/multiboot.c loader/i386/multiboot_elfxx.c loader/i386/efi/linux.c +loader/i386/efi/loadbios.c loader/i386/ieee1275/linux.c loader/i386/pc/chainloader.c loader/i386/pc/chainloader_normal.c diff --git a/aclocal.m4 b/aclocal.m4 index 1dd5ffb3f..3c72ca9ec 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -448,3 +448,21 @@ else AC_MSG_RESULT([no]) [fi] ]) + +dnl Check if ln can handle directories properly (mingw). +AC_DEFUN(grub_CHECK_LINK_DIR,[ +AC_MSG_CHECKING([whether ln can handle directories properly]) +[mkdir testdir 2>/dev/null +case $srcdir in +[\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;; + *) reldir=../$srcdir/include/grub/util ;; +esac +if ln -s $reldir testdir/util 2>/dev/null ; then] + AC_MSG_RESULT([yes]) + [link_dir=yes +else + link_dir=no] + AC_MSG_RESULT([no]) +[fi +rm -rf testdir] +]) diff --git a/conf/powerpc-ieee1275.mk b/conf/powerpc-ieee1275.mk index 11e932a7d..436c2bf39 100644 --- a/conf/powerpc-ieee1275.mk +++ b/conf/powerpc-ieee1275.mk @@ -17,7 +17,7 @@ DEFSYMFILES += kernel_syms.lst kernel_elf_HEADERS = arg.h boot.h cache.h device.h disk.h dl.h elf.h elfload.h \ env.h err.h file.h fs.h kernel.h misc.h mm.h net.h parser.h rescue.h \ symbol.h term.h time.h types.h powerpc/libgcc.h loader.h partition.h \ - pc_partition.h ieee1275/ieee1275.h machine/kernel.h + pc_partition.h ieee1275/ieee1275.h machine/kernel.h handler.h symlist.c: $(addprefix include/grub/,$(kernel_elf_HEADERS)) config.h gensymlist.sh /bin/sh gensymlist.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1) diff --git a/configure b/configure index 89b564ae3..f77ebf839 100644 --- a/configure +++ b/configure @@ -8859,8 +8859,35 @@ fi # Output files. -ac_config_links="$ac_config_links include/grub/cpu:include/grub/$target_cpu include/grub/machine:include/grub/$target_cpu/$platform" +{ echo "$as_me:$LINENO: checking whether ln can handle directories properly" >&5 +echo $ECHO_N "checking whether ln can handle directories properly... $ECHO_C" >&6; } +mkdir testdir 2>/dev/null +case $srcdir in +[\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;; + *) reldir=../$srcdir/include/grub/util ;; +esac +if ln -s $reldir testdir/util 2>/dev/null ; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + link_dir=yes +else + link_dir=no + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +rm -rf testdir + +if test x"$link_dir" = xyes ; then + ac_config_links="$ac_config_links include/grub/cpu:include/grub/$target_cpu include/grub/machine:include/grub/$target_cpu/$platform" + +else + mkdir -p include/grub 2>/dev/null + rm -rf include/grub/cpu + cp -rp $srcdir/include/grub/$target_cpu include/grub/cpu 2>/dev/null + rm -rf include/grub/machine + cp -rp $srcdir/include/grub/$target_cpu/$platform include/grub/machine 2>/dev/null +fi ac_config_files="$ac_config_files Makefile gensymlist.sh genkernsyms.sh" ac_config_files="$ac_config_files stamp-h" diff --git a/configure.ac b/configure.ac index 134e0a339..d9f182d4a 100644 --- a/configure.ac +++ b/configure.ac @@ -474,8 +474,17 @@ AC_SUBST([freetype_cflags]) AC_SUBST([freetype_libs]) # Output files. -AC_CONFIG_LINKS([include/grub/cpu:include/grub/$target_cpu +grub_CHECK_LINK_DIR +if test x"$link_dir" = xyes ; then + AC_CONFIG_LINKS([include/grub/cpu:include/grub/$target_cpu include/grub/machine:include/grub/$target_cpu/$platform]) +else + mkdir -p include/grub 2>/dev/null + rm -rf include/grub/cpu + cp -rp $srcdir/include/grub/$target_cpu include/grub/cpu 2>/dev/null + rm -rf include/grub/machine + cp -rp $srcdir/include/grub/$target_cpu/$platform include/grub/machine 2>/dev/null +fi AC_CONFIG_FILES([Makefile gensymlist.sh genkernsyms.sh]) AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h]) AC_OUTPUT diff --git a/util/hostdisk.c b/util/hostdisk.c index 67a1233af..bea3fb98f 100644 --- a/util/hostdisk.c +++ b/util/hostdisk.c @@ -555,7 +555,12 @@ read_device_map (const char *dev_map) e++; *e = '\0'; +#ifdef __MINGW32__ + (void) st; + if (grub_util_get_disk_size (p) == -1LL) +#else if (stat (p, &st) == -1) +#endif { free (map[drive].drive); map[drive].drive = NULL; diff --git a/util/misc.c b/util/misc.c index 8d7d0808b..64c35fd9f 100644 --- a/util/misc.c +++ b/util/misc.c @@ -43,6 +43,11 @@ # include #endif +#ifdef __MINGW32__ +#include +#include +#endif + char *progname = 0; int verbosity = 0; @@ -311,6 +316,16 @@ grub_get_time_ms (void) return (tv.tv_sec * 1000 + tv.tv_usec / 1000); } +#ifdef __MINGW32__ + +void +grub_millisleep (grub_uint32_t ms) +{ + Sleep (ms); +} + +#else + void grub_millisleep (grub_uint32_t ms) { @@ -321,6 +336,8 @@ grub_millisleep (grub_uint32_t ms) nanosleep (&ts, NULL); } +#endif + void grub_arch_sync_caches (void *address __attribute__ ((unused)), grub_size_t len __attribute__ ((unused))) @@ -349,9 +366,6 @@ asprintf (char **buf, const char *fmt, ...) #ifdef __MINGW32__ -#include -#include - void sync (void) { }