+2009-03-21 Bean <bean123ch@gmail.com>
+
+ * 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 <bean123ch@gmail.com>
* fs/ext2.c (grub_ext2_mount): Change errno to GRUB_ERR_BAD_FS for
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
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]
+])
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)
# 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"
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
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;
# include <malloc.h>
#endif
+#ifdef __MINGW32__
+#include <windows.h>
+#include <winioctl.h>
+#endif
+
char *progname = 0;
int verbosity = 0;
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)
{
nanosleep (&ts, NULL);
}
+#endif
+
void
grub_arch_sync_caches (void *address __attribute__ ((unused)),
grub_size_t len __attribute__ ((unused)))
#ifdef __MINGW32__
-#include <windows.h>
-#include <winioctl.h>
-
void sync (void)
{
}