Hey

here are 2 patches for the compilation of eet and its tests with MinGW. It seems to work on my box. I can't commit right now.

Vincent
? dali.edj
? eet_test.diff
? menufondg.jpg
? out.eet
Index: Makefile
===================================================================
RCS file: /var/cvs/e/e17/test/orig/eet/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- Makefile    28 Oct 2006 08:23:28 -0000      1.2
+++ Makefile    1 Jan 2007 12:27:04 -0000
@@ -8,18 +8,17 @@
 eet_OBJS = $(eet_SRCS:.c=.o)
 eet: $(eet_OBJS)
        $(RM) $@
-       $(CC) $(LIBS) $(CFLAGS) $(LDFLAGS) $(eet_OBJS) -o $@
+       $(CC) $(eet_OBJS) $(LIBS) $(LDFLAGS) -o $@
 
 eet_bench_SRCS = eet_bench_main.c
 eet_bench_OBJS = $(eet_bench_SRCS:.c=.o)
 eet_bench: $(eet_bench_OBJS)
        $(RM) $@
-       $(CC) $(LIBS) $(CFLAGS) $(LDFLAGS) $(eet_bench_OBJS) -o $@
+       $(CC) $(eet_bench_OBJS) $(LIBS) $(LDFLAGS) -o $@
 
 ############################################################################
 #### boilerplate
 .c.o:
-       $(CC) $(FALGS) $(CFLAGS) -c $< -o $@
+       $(CC) $(FLAGS) $(CFLAGS) -c $< -o $@
 clean::
        rm -rf $(BINS) *.o *~
-       
? eet.diff
Index: INSTALL
===================================================================
RCS file: /var/cvs/e/e17/libs/eet/INSTALL,v
retrieving revision 1.2
diff -u -r1.2 INSTALL
--- INSTALL     2 Dec 2002 23:39:25 -0000       1.2
+++ INSTALL     1 Jan 2007 13:51:48 -0000
@@ -12,3 +12,8 @@
     make install
 
 NOTE: You MUST make install Eet for it to run properly.
+
+NOTE: for compilation with MinGW, fnmatch.h is probably missing.
+      That file can be found here:
+http://www.koders.com/c/fid2B518462CB1EED3D4E31E271DB83CD1582F6EEBE.aspx
+      It should be installed in the mingw include directory.
Index: configure.in
===================================================================
RCS file: /var/cvs/e/e17/libs/eet/configure.in,v
retrieving revision 1.68
diff -u -r1.68 configure.in
--- configure.in        4 Dec 2006 12:14:17 -0000       1.68
+++ configure.in        1 Jan 2007 13:51:48 -0000
@@ -21,6 +21,7 @@
 
 AC_CHECK_HEADERS(netinet/in.h)
 
+winsock_libs=""
 case "$host_os" in
        mingw|mingw32)
                winsock_libs="-lwsock32"
@@ -29,15 +30,19 @@
 
 AC_SUBST(winsock_libs)
 
-AC_CHECK_HEADER(fnmatch.h,, AC_MSG_ERROR([Cannot find fnmatch.h. Make sure 
your CFLAGS environment variable contains include lines for the location of 
this file]))
+AC_CHECK_HEADER(fnmatch.h,, AC_MSG_ERROR([Cannot find fnmatch.h. Make sure 
your CFLAGS environment variable contains include lines for the location of 
this file. MinGW users: see the INSTALL file]))
 
+fnmatch_libs=""
 AC_CHECK_FUNCS(fnmatch, res=yes, res=no)
 if test "x$res" = "xno"; then
-       AC_CHECK_LIB(fnmatch, fnmatch, res=yes, res=no)
+       AC_CHECK_LIB(fnmatch, fnmatch, res=yes fnmatch_libs="-lfnmatch", res=no)
+dnl Test for compilation with MinGW.
+dnl fnmatch function is in the libiberty library
        if test "x$res" = "xno"; then
-               AC_MSG_ERROR([Cannot find fnmatch() in neither libc nor 
libfnmatch])
-       else
-               fnmatch_libs="-lfnmatch"
+               AC_CHECK_LIB(iberty, fnmatch, res=yes fnmatch_libs="-liberty", 
res=no)
+       fi
+       if test "x$res" = "xno"; then
+               AC_MSG_ERROR([Cannot find fnmatch() in neither libc nor 
libfnmatch, nor libiberty])
        fi
 fi
 
Index: eet-config.in
===================================================================
RCS file: /var/cvs/e/e17/libs/eet/eet-config.in,v
retrieving revision 1.7
diff -u -r1.7 eet-config.in
--- eet-config.in       11 Jun 2006 22:37:23 -0000      1.7
+++ eet-config.in       1 Jan 2007 13:51:48 -0000
@@ -46,7 +46,7 @@
       ;;
     --libs)
       [EMAIL PROTECTED]@
-      echo $libdirs -leet -lz -ljpeg
+      echo $libdirs -leet -lz -ljpeg @fnmatch_libs@ @winsock_libs@
       ;;
     *)
       echo "${usage}" 1>&2
Index: src/lib/Eet.h
===================================================================
RCS file: /var/cvs/e/e17/libs/eet/src/lib/Eet.h,v
retrieving revision 1.37
diff -u -r1.37 Eet.h
--- src/lib/Eet.h       17 Dec 2006 11:00:45 -0000      1.37
+++ src/lib/Eet.h       1 Jan 2007 13:51:50 -0000
@@ -7,7 +7,7 @@
 #undef EAPI
 #endif
 #ifdef WIN32
-# ifdef BUILDING_DLL
+# ifdef DLL_EXPORT
 #  define EAPI __declspec(dllexport)
 # else
 #  define EAPI __declspec(dllimport)
Index: src/lib/eet_lib.c
===================================================================
RCS file: /var/cvs/e/e17/libs/eet/src/lib/eet_lib.c,v
retrieving revision 1.72
diff -u -r1.72 eet_lib.c
--- src/lib/eet_lib.c   16 Oct 2006 15:02:11 -0000      1.72
+++ src/lib/eet_lib.c   1 Jan 2007 13:51:51 -0000
@@ -3,7 +3,9 @@
  */
 
 #include <sys/types.h>
+#ifndef _WIN32
 #include <sys/mman.h>
+#endif
 
 #include "Eet.h"
 #include "Eet_private.h"
@@ -12,6 +14,22 @@
 #undef HAVE_REALPATH
 #endif
 
+#ifdef _WIN32
+
+#ifndef F_SETFD
+#define F_SETFD 2
+#endif
+
+#ifndef PROT_READ
+#define PROT_READ 1
+#endif
+
+#ifndef FD_CLOEXEC
+#define FD_CLOEXEC 1
+#endif
+
+#endif
+
 #define EET_MAGIC_FILE                  0x1ee7ff00
 #define EET_MAGIC_FILE_HEADER           0x1ee7ff01
 
@@ -471,6 +489,9 @@
 {
    Eet_File    *ef;
    struct stat file_stat;
+#ifdef _WIN32
+   HANDLE       h;
+#endif
    
    if (!file)
      return NULL;
@@ -558,7 +579,15 @@
    if (eet_test_close(!ef->fp, ef))
      return NULL;
 
+#ifndef _WIN32
    fcntl(fileno(ef->fp), F_SETFD, FD_CLOEXEC);
+#else
+   /* FIXME: check if that code is needed / correct */
+   h = (HANDLE) _get_osfhandle (fileno(ef->fp));
+   if (h == (HANDLE) -1)
+     return NULL;
+   SetHandleInformation (h, HANDLE_FLAG_INHERIT, 0);
+#endif
    /* if we opened for read or read-write */
    if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE))
      {
@@ -568,10 +597,29 @@
        int                     num_entries;
        int                     byte_entries;
        int                     i;
+#ifdef _WIN32
+       HANDLE                  fm;
+#endif
+
 
        ef->data_size = file_stat.st_size;
+#ifndef _WIN32
        ef->data = mmap(NULL, ef->data_size, PROT_READ,
                        MAP_SHARED, fileno(ef->fp), 0);
+#else
+       fm = CreateFileMapping((HANDLE) _get_osfhandle (fileno(ef->fp)),
+                              NULL,
+                              PAGE_READONLY,
+                              0,
+                              0,
+                              NULL);
+       ef->data = MapViewOfFile(fm,
+                                FILE_MAP_READ,
+                                0,
+                                0,
+                                ef->data_size);
+       CloseHandle(fm);
+#endif
 
        if (eet_test_close((ef->data == (void *)-1) || (ef->data == NULL), ef))
          return NULL;
@@ -825,7 +873,11 @@
          }
        free(ef->header);
      }
+#ifndef _WIN32
    if (ef->data) munmap(ef->data, ef->data_size);
+#else
+   if (ef->data) UnmapViewOfFile (ef->data);
+#endif
    if (ef->fp) fclose(ef->fp);
 
    /* zero out ram for struct - caution tactic against stale memory use */
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to