$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
        $(HOSTSTRIP) $@
 
-$(obj)mkenvimage$(SFX):        $(obj)crc32.o $(obj)mkenvimage.o
+$(obj)mkenvimage$(SFX):        $(obj)crc32.o $(obj)mkenvimage.o \
+       $(obj)os_support.o
        $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
        $(HOSTSTRIP) $@
 
 
 
 #define CRC_SIZE sizeof(uint32_t)
 
+#ifdef __MINGW32__
+#define FILE_PERM              (S_IRUSR | S_IWUSR)
+#else
+#define FILE_PERM              (S_IRUSR | S_IWUSR | S_IRGRP |\
+                                            S_IWGRP)
+#endif
+
 static void usage(const char *exec_name)
 {
        fprintf(stderr, "%s [-h] [-r] [-b] [-p <byte>] -s <environment partition size> -o <output> <input file>\n"
        if (!bin_filename || strcmp(bin_filename, "-") == 0) {
                bin_fd = STDOUT_FILENO;
        } else {
-               bin_fd = creat(bin_filename, S_IRUSR | S_IWUSR | S_IRGRP |
-                                            S_IWGRP);
+               bin_fd = creat(bin_filename, FILE_PERM);
                if (bin_fd == -1) {
                        fprintf(stderr, "Can't open output file \"%s\": %s\n",
                                        bin_filename, strerror(errno));