From: Vincent T. <vin...@gm...> - 2012-10-29 18:29:43
|
below are some comments. On Mon, Oct 29, 2012 at 1:11 PM, LM <lm...@gm...> wrote: > Below are my notes on what I needed to do to get the Enlightenment > libraries (version 1.7.1 and evil 1.7.0) to build on Windows with > MinGW (www.mingw.org version) and msys. Am not sure how much can be > incorporated as patches back into the originals, but at least there's > some information for other MinGW users on what they may have to do to > get the latest versions to build on their systems. Hope some of this > will be useful. as i said, i do not support anymore MinGW. They FAR less features than MinGW-w64 > I reset my environment for each build and use automated scripts > (similar to Slackware Slackbuild scripts). I also have a program to > install tarballs to /usr/local (PREFIX) within msys. Am just going to > post the highlights not entire scripts. First thing I had to do after > setting basic environment variables in the scripts was to set > environment variables so it could find pkg-config ( > https://github.com/pkgconf/pkgconf ). > > export PKG_CONFIG="/usr/local/bin/pkg-config" > export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" > > Evil compiled fine with standard options: > ./configure --prefix=$PREFIX > make > make install DESTDIR=$DESTDIR > > Eina: > patch -p2 < patch.diff > ./configure --prefix=$PREFIX > make > make install DESTDIR=$DESTDIR > > patch.diff for Eina: > diff -Naurp src/eina-1.7.1/src/lib/eina_file_win32.c > tmp/eina-1.7.1/src/lib/eina_file_win32.c > --- src/eina-1.7.1/src/lib/eina_file_win32.c 2012-09-07 22:33:29 -0400 > +++ tmp/eina-1.7.1/src/lib/eina_file_win32.c > @@ -38,7 +38,14 @@ void *alloca (size_t); > #endif > > #include <sys/types.h> > +#ifdef __MINGW32__ > +#define __MSVCRT_VERSION__ 0x0601 it's not that macro that should be defined. See for example : http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx#setting_winver_or__win32_winnt > +#endif > #include <sys/stat.h> > +#ifdef __MINGW32__ > +#define stat64 _stat64 this should not needed. > +#include <stdint.h> > +#endif > > #define WIN32_LEAN_AND_MEAN > #include <windows.h> > diff -Naurp src/eina-1.7.1/src/lib/eina_inarray.c > tmp/eina-1.7.1/src/lib/eina_inarray.c > --- src/eina-1.7.1/src/lib/eina_inarray.c 2012-09-07 22:33:29 -0400 > +++ tmp/eina-1.7.1/src/lib/eina_inarray.c > @@ -22,6 +22,7 @@ > > #include <stdlib.h> > #include <string.h> > +#include <malloc.h> since a lot of time, malloc.h is included by stdlib.h > #include "eina_config.h" > #include "eina_private.h" > diff -Naurp src/eina-1.7.1/src/lib/eina_log.c tmp/eina-1.7.1/src/lib/eina_log.c > --- src/eina-1.7.1/src/lib/eina_log.c 2012-09-07 22:33:29 -0400 > +++ tmp/eina-1.7.1/src/lib/eina_log.c > @@ -28,6 +28,11 @@ > #include <assert.h> > #include <errno.h> > > +#ifndef COMMON_LVB_REVERSE_VIDEO > +#define COMMON_LVB_REVERSE_VIDEO 0x4000 > +#define COMMON_LVB_UNDERSCORE 0x8000 > +#endif I'm wondering why those macros need to be defined. > #if defined HAVE_EXECINFO_H && defined HAVE_BACKTRACE && defined > HAVE_BACKTRACE_SYMBOLS > # include <execinfo.h> > # define EINA_LOG_BACKTRACE > > Evas: > There was an option in the configure to use liblinebreak, but when I > went to download, it's statically linked and the code is provided inside the Evas tree (see in evas/src/static_deps). > it looked like the library was being replaced by > libunibreak ( http://vimgadgets.sourceforge.net/libunibreak/ ). So, I > built and installed libunibreak and passed the library through the > LIBS environment variable. Also, pthread doesn't seem to work and I > didn't see a working option to turn threading off, so I did it through > sed. It couldn't find the evas_engine_common_op_blend_master_sse3 > library at one point as well. > > export CFLAGS="$CFLAGS -I/usr/local/include/evil-1" > export LIBS="-lpthread -lunibreak $LIBS" > sed -i.bk0 -e "s|-pthread||" configure > ./configure --prefix=$PREFIX --disable-pthreads > sed -i.bk1 -e "s|^LDFLAGS = \(.*\)$|LDFLAGS = \1 > -Lengines/common/evas_op_blend|" src/lib/Makefile > sed -i.bk2 -e "s|^LIBS =|LIBS = > -levas_engine_common_op_blend_master_sse3|" src/lib/Makefile > make > make install DESTDIR=$DESTDIR > > Eet: > Built fine with standard options. > ./configure --prefix=$PREFIX > make > make install DESTDIR=$DESTDIR > > Embryo: > export CFLAGS="$CFLAGS -I/usr/local/include/evil-1" > ./configure --prefix=$PREFIX > make > make install DESTDIR=$DESTDIR > > Ecore: > Kept getting errors about it trying to use winsock.h and that it > should be using winsock2.h instead. Also, _argc and _argv are already > declared in the MinGW headers problem with MinGW headers. But that's fixable in our tree of course. > and the definitions weren't compatible > with those in ecore_getopt. There's a define for HAVE_WINSOCK2_H in > the code in one location, but no place to turn it on. (It wasn't an > option in config.h or elsewhere.) > > export LIBS="-lgdi32 $LIBS" > patch -p2 < patch.diff > ./configure --prefix=$PREFIX > sed -i.bk0 -e "s|_argv|_ecoreargv|" src/lib/ecore/ecore_getopt.c > sed -i.bk1 -e "s|_argc|_ecoreargc|" src/lib/ecore/ecore_getopt.c > sed -i.bk2 -e "s|\/\* #undef const \*\/|\/\* #undef const > \*\/\n#define HAVE_WINSOCK2_H 1|" config.h > > patch.diff for ecore: > diff -Naurp src/ecore-1.7.1/src/lib/ecore_con/ecore_con_ssl.c > tmp/ecore-1.7.1/src/lib/ecore_con/ecore_con_ssl.c > --- src/ecore-1.7.1/src/lib/ecore_con/ecore_con_ssl.c 2012-09-07 22:34:01 -0400 > +++ tmp/ecore-1.7.1/src/lib/ecore_con/ecore_con_ssl.c > @@ -2,6 +2,11 @@ > # include <config.h> > #endif > > +#ifdef HAVE_WS2TCPIP_H > +#include <winsock2.h> > +# include <ws2tcpip.h> > +#endif > > #if USE_GNUTLS > # include <gnutls/gnutls.h> > # include <gnutls/x509.h> > @@ -12,10 +17,6 @@ > # include <openssl/dh.h> > #endif > > -#ifdef HAVE_WS2TCPIP_H > -# include <ws2tcpip.h> > -#endif I'll check that. > - > #include <sys/stat.h> > #include "Ecore.h" > #include "ecore_con_private.h" > > Edje: > Still do not have edje building and haven't really had time to debug > it further. I did get as far as the following patch for using lua > 5.2.1. Haven't been able to test the patch. I used some examples of > replacement code for upgrading lua libraries, so not sure how well it > works. about lua stuff, i don't know, it's not my part. And i just saw that David answered thanks Vincent > diff -Naurp src/edje-1.7.1/src/lib/edje_lua2.c > tmp/edje-1.7.1/src/lib/edje_lua2.c > --- src/edje-1.7.1/src/lib/edje_lua2.c 2012-09-07 22:33:23 -0400 > +++ tmp/edje-1.7.1/src/lib/edje_lua2.c > @@ -985,7 +985,11 @@ _elua_messagesend(lua_State *L) // Stac > int i, n; > const char *str; > luaL_checktype(L, 3, LUA_TTABLE); // Stack > usage [-0, +0, v] > +#if LUA_VERSION_NUM > 501 > + n = lua_rawlen(L, 3); > +#else > n = lua_objlen(L, 3); // Stack > usage [-0, +0, -] > +#endif > emsg = alloca(sizeof(Edje_Message_String_Set) + ((n - 1) * > sizeof(char *))); > emsg->count = n; > for (i = 1; i <= n; i ++) > @@ -1003,7 +1007,11 @@ _elua_messagesend(lua_State *L) // Stac > Edje_Message_Int_Set *emsg; > int i, n; > luaL_checktype(L, 3, LUA_TTABLE); // Stack > usage [-0, +0, v] > +#if LUA_VERSION_NUM > 501 > + n = lua_rawlen(L, 3); > +#else > n = lua_objlen(L, 3); // Stack > usage [-0, +0, -] > +#endif > emsg = alloca(sizeof(Edje_Message_Int_Set) + ((n - 1) * sizeof(int))); > emsg->count = n; > for (i = 1; i <= n; i ++) > @@ -1020,7 +1028,11 @@ _elua_messagesend(lua_State *L) // Stac > Edje_Message_Float_Set *emsg; > int i, n; > luaL_checktype(L, 3, LUA_TTABLE); // Stack > usage [-0, +0, v] > +#if LUA_VERSION_NUM > 501 > + n = lua_rawlen(L, 3); > +#else > n = lua_objlen(L, 3); // Stack > usage [-0, +0, -] > +#endif > emsg = alloca(sizeof(Edje_Message_Float_Set) + ((n - 1) * > sizeof(double))); > emsg->count = n; > for (i = 1; i <= n; i ++) > @@ -1057,7 +1069,11 @@ _elua_messagesend(lua_State *L) // Stac > const char *str = luaL_checkstring(L, 3); // Stack > usage [-0, +0, v] > if (!str) return 0; > luaL_checktype(L, 4, LUA_TTABLE); // Stack > usage [-0, +0, v] > +#if LUA_VERSION_NUM > 501 > + n = lua_rawlen(L, 4); > +#else > n = lua_objlen(L, 4); // Stack > usage [-0, +0, -] > +#endif > emsg = alloca(sizeof(Edje_Message_String_Int_Set) + ((n - 1) > * sizeof(int))); > emsg->str = (char *)str; > emsg->count = n; > @@ -1077,7 +1093,11 @@ _elua_messagesend(lua_State *L) // Stac > const char *str = luaL_checkstring(L, 3); // Stack > usage [-0, +0, v] > if (!str) return 0; > luaL_checktype(L, 4, LUA_TTABLE); // Stack > usage [-0, +0, v] > +#if LUA_VERSION_NUM > 501 > + n = lua_rawlen(L, 4); > +#else > n = lua_objlen(L, 4); > +#endif > emsg = alloca(sizeof(Edje_Message_String_Float_Set) + ((n - > 1) * sizeof(double))); > emsg->str = (char *)str; > emsg->count = n; > @@ -3734,7 +3754,11 @@ _elua_bogan_protect(lua_State *L) > { > lua_pushnil(L); // Stack usage [-0, +1, -] > luaL_newmetatable(L, "bogan"); // Stack usage [-0, +1, m] > +#if LUA_VERSION_NUM > 501 > + luaL_setfuncs(L, _elua_bogan_funcs, 0); // Stack usage [-1, +1, m] > +#else > luaL_register(L, 0, _elua_bogan_funcs); // Stack usage [-1, +1, m] > +#endif > lua_setmetatable(L, -2); // Stack usage [-1, +0, -] > lua_pop(L, 1); // Stack usage [-1, +0, -] > } > @@ -3746,14 +3770,25 @@ static void > _elua_add_functions(lua_State *L, const char *api, const luaL_Reg > *funcs, const char *meta, const char *parent, const char *base) // > Stack usage [-3, +5, m] if inheriting [-6, +11, em] > { > // Create an api table, fill it full of the methods. > +#if LUA_VERSION_NUM > 501 > + lua_newtable(L); > + luaL_setfuncs (L,funcs,0); > + lua_pushvalue(L,-1); > + lua_setglobal(L,api); > +#else > luaL_register(L, api, funcs); // Stack usage [-0, +1, m] > +#endif > // Set the api metatable to the bogan metatable. > luaL_getmetatable(L, "bogan"); // Stack usage [-0, +1, -] > lua_setmetatable(L, -2); // Stack usage [-1, +0, -] > // Creat a meta metatable. > luaL_newmetatable(L, meta); // Stack usage [-0, +1, m] > // Put the gc functions in the metatable. > +#if LUA_VERSION_NUM > 501 > + luaL_setfuncs(L, _elua_edje_gc_funcs, 0); // Stack usage > [-1, +1, m] > +#else > luaL_register(L, 0, _elua_edje_gc_funcs); // Stack usage [-1, +1, m] > +#endif > // Create an __index entry in the metatable, make it point to the api table. > lua_pushliteral(L, "__index"); // Stack usage [-0, +1, m] > lua_pushvalue(L, -3); // Stack usage [-0, +1, -] > @@ -3826,10 +3861,20 @@ _elua_init(void) > lua_call(L, 1, 0); > // Stack usage [-2, +0, e] > } > > +#if LUA_VERSION_NUM > 501 > + lua_newtable(L); > + luaL_setfuncs (L,_elua_edje_funcs,0); > + lua_pushvalue(L,-1); > + lua_setglobal(L,_elua_edje_api); > +#else > luaL_register(L, _elua_edje_api, _elua_edje_funcs); > // Stack usage [-0, +1, m] > +#endif > luaL_newmetatable(L, _elua_edje_meta); > // Stack usage [-0, +1, m] > +#if LUA_VERSION_NUM > 501 > + luaL_setfuncs(L, _elua_edje_gc_funcs, 0); > +#else > luaL_register(L, 0, _elua_edje_gc_funcs); > // Stack usage [-1, +1, m] > - > +#endif > _elua_add_functions(L, _elua_evas_api, _elua_evas_funcs, > _elua_evas_meta, NULL, NULL); // Stack usage [-3, +5, m] > > // weak table for our objects > @@ -3880,11 +3925,22 @@ _edje_lua2_script_init(Edje *ed) > > _elua_bogan_protect(L); // > Stack usage [+3, -3, m] > > +#if LUA_VERSION_NUM > 501 > + lua_newtable(L); > + luaL_setfuncs (L,_elua_edje_funcs,0); > + lua_pushvalue(L,-1); > + lua_setglobal(L,_elua_edje_api); > +#else > luaL_register(L, _elua_edje_api, _elua_edje_funcs); // > Stack usage [-0, +1, m] > +#endif > luaL_getmetatable(L, "bogan"); // > Stack usage [-0, +1, -] > lua_setmetatable(L, -2); // > Stack usage [-1, +0, -] > luaL_newmetatable(L, _elua_edje_meta); // > Stack usage [-0, +1, m] > +#if LUA_VERSION_NUM > 501 > + luaL_setfuncs(L, _elua_edje_gc_funcs, 0); > +#else > luaL_register(L, 0, _elua_edje_gc_funcs); // > Stack usage [-1, +1, m] > +#endif > > lua_pop(L, 2); // > Stack usage [-n, +0, -] > > ------------------------------------------------------------------------------ > The Windows 8 Center - In partnership with Sourceforge > Your idea - your app - 30 days. > Get started! > http://windows8center.sourceforge.net/ > what-html-developers-need-to-know-about-coding-windows-8-metro-style-apps/ > _______________________________________________ > enlightenment-devel mailing list > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel |