Page 2 of 3

Re: Compilation troubles

PostPosted: Sun Nov 22, 2009 9:05 am
by PrimuS
It's not because you have 64bit OS, it's invalid convertion from void to int which new versions of 64bit-compilers mark as critical error :)

Re: Compilation troubles

PostPosted: Sun Nov 22, 2009 4:48 pm
by erkljer
I am trying to create a Debian package for the Ubuntu gaming page playdeb.net.

Here is the bug report about it:
https://bugs.launchpad.net/getdeb.net/+bug/457796

The error I am currently at it this one:
https://bugs.launchpad.net/getdeb.net/+ ... comments/8

When the compilation succeeds and the package has been tested it will be published on playdeb.net.

Re: Compilation troubles

PostPosted: Sun Nov 22, 2009 6:06 pm
by PrimuS
How did you solve problem about invalid void -> int cast?

Re: Compilation troubles

PostPosted: Sun Nov 22, 2009 8:09 pm
by erkljer
I am not sure.

I applied these three patches on the sources:
http://pastebin.com/f3bc174e8
http://pastebin.com/f394b05a4
http://pastebin.com/f461e372c

Maybe I did not reach the code which causes the void<->int conversion problem in the compilation, yet.

Re: Compilation troubles

PostPosted: Mon Nov 23, 2009 1:38 pm
by makslane
Remember Game Editor uses a modified version of the SDL.
When I get some time I will try to compile in this Linux version.

Re: Compilation troubles

PostPosted: Tue Nov 24, 2009 12:27 am
by makslane
Can someone try to compile with the -m32 gcc option?

Re: Compilation troubles

PostPosted: Wed Nov 25, 2009 10:16 am
by PrimuS
Oh, it's a good idea. I'll try it later.

Re: Compilation troubles

PostPosted: Fri Nov 27, 2009 12:41 am
by makslane
It's working now!!!
I've compiled on Kubuntu 9.10 64 bits.

Just get the last version on the repository (I've updated the compilation instructions too).

Re: Compilation troubles

PostPosted: Fri Nov 27, 2009 7:50 am
by PrimuS
YEAH! Thanks, makslane!

Re: Compilation troubles

PostPosted: Sat Nov 28, 2009 4:45 pm
by erkljer
I still get errors:
Code: Select all
gcc -m32       -c Action.cpp -o ../output/Action.o -I"." -I"../RakNet/Source" -I"../SDL/SDL_mixer" -I"../SDL/SDL/include" -I"../SDL/SDL_image" -I"../kyra"  -I"EiC/src"  -I"../gameEngine" -I"../SDL/SDL_image/png/libpng" -I"../SDL/SDL_image/png/zlib" -D__linux -Dlinux -D__linux__ -DLINUX_I386    -D_LIB -DNO_LONG_LONG -DNO_DIRENT -DNO_FCNTL -DNO_STAT -DNO_UNISTD -DNO_TERMIOS -DNO_PIPE -DNO_POSIX -DNO_LONGLONG -DNO_HISTORY -s -Os 

In file included from /usr/include/raknet/RakAlloca.h:13,

                 from /usr/include/raknet/RakMemoryOverride.h:20,

                 from /usr/include/raknet/RakPeerInterface.h:14,

                 from Actor.h:44,

                 from Action.h:37,

                 from Action.cpp:31:

/usr/include/malloc.h:51: error: declaration of ‘void* dlmalloc(size_t) throw ()’ throws different exceptions

dlmalloc/dlmalloc.h:92: error: from previous declaration ‘void* dlmalloc(size_t)’

/usr/include/malloc.h:55: error: declaration of ‘void* dlcalloc(size_t, size_t) throw ()’ throws different exceptions

dlmalloc/dlmalloc.h:120: error: from previous declaration ‘void* dlcalloc(size_t, size_t)’

/usr/include/malloc.h:63: error: declaration of ‘void* dlrealloc(void*, size_t) throw ()’ throws different exceptions

dlmalloc/dlmalloc.h:153: error: from previous declaration ‘void* dlrealloc(void*, size_t)’

/usr/include/malloc.h:66: error: declaration of ‘void dlfree(void*) throw ()’ throws different exceptions

dlmalloc/dlmalloc.h:109: error: from previous declaration ‘void dlfree(void*)’

/usr/include/malloc.h:94: error: redefinition of ‘struct mallinfo’

dlmalloc/dlmalloc.h:464: error: previous definition of ‘struct mallinfo’

/usr/include/malloc.h:108: error: declaration of ‘mallinfo mallinfo() throw ()’ throws different exceptions

dlmalloc/dlmalloc.h:482: error: from previous declaration ‘mallinfo mallinfo()’

Action.cpp: In function ‘int execCreateTimer(char*, char*, int)’:

Action.cpp:4167: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’

Action.cpp:4204: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’

Action.cpp:4238: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’

Action.cpp: In function ‘int execDestroyTimer(char*)’:

Action.cpp:4298: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’

Action.cpp: In member function ‘void Action::CleanUpTimers(Actor*, _SDL_TimerID*)’:

Action.cpp:6350: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’

make[2]: *** [../output/Action.o] Error 1


I use RakNet-3.712.

//edit
Ok, I "fixed" this issue but stumbled across a similar one:
Code: Select all
gcc -m32       -c Action.cpp -o ../output/Action.o -I"." -I"../RakNet/Source" -I"../SDL/SDL_mixer" -I"../SDL/SDL/include" -I"../SDL/SDL_image" -I"../kyra"  -I"EiC/src"  -I"../gameEngine" -I"../SDL/SDL_image/png/libpng" -I"../SDL/SDL_image/png/zlib" -D__linux -Dlinux -D__linux__ -DLINUX_I386    -D_LIB -DNO_LONG_LONG -DNO_DIRENT -DNO_FCNTL -DNO_STAT -DNO_UNISTD -DNO_TERMIOS -DNO_PIPE -DNO_POSIX -DNO_LONGLONG -DNO_HISTORY -s -Os 
In file included from /usr/include/raknet/RakAlloca.h:13,
                 from /usr/include/raknet/RakMemoryOverride.h:20,
                 from /usr/include/raknet/RakPeerInterface.h:14,
                 from Actor.h:44,
                 from Action.h:37,
                 from Action.cpp:31:
/usr/include/malloc.h:66: error: declaration of ‘void free(void*) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:107: error: from previous declaration ‘void free(void*)’
/usr/include/malloc.h:69: error: declaration of ‘void cfree(void*) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:338: error: from previous declaration ‘void cfree(void*)’
/usr/include/malloc.h:73: error: declaration of ‘void* memalign(size_t, size_t) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:170: error: from previous declaration ‘void* memalign(size_t, size_t)’
/usr/include/malloc.h:82: error: declaration of ‘void* pvalloc(size_t) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:323: error: from previous declaration ‘void* pvalloc(size_t)’
/usr/include/malloc.h:108: error: declaration of ‘mallinfo mallinfo() throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:480: error: from previous declaration ‘mallinfo mallinfo()’
/usr/include/malloc.h:135: error: declaration of ‘int mallopt(int, int) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:508: error: from previous declaration ‘int mallopt(int, int)’
/usr/include/malloc.h:139: error: declaration of ‘int malloc_trim(size_t) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:370: error: from previous declaration ‘int malloc_trim(size_t)’
/usr/include/malloc.h:143: error: declaration of ‘size_t malloc_usable_size(void*) throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:392: error: from previous declaration ‘size_t malloc_usable_size(void*)’
/usr/include/malloc.h:146: error: declaration of ‘void malloc_stats() throw ()’ throws different exceptions
dlmalloc/dlmalloc.h:419: error: from previous declaration ‘void malloc_stats()’
In file included from Action.cpp:32:
GameControl.h: In static member function ‘static void* ActorMessage::operator new(size_t)’:
GameControl.h:876: error: ‘dlmalloc’ was not declared in this scope
Action.cpp: In function ‘int execCreateTimer(char*, char*, int)’:
Action.cpp:4167: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’
Action.cpp:4204: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’
Action.cpp:4238: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’
Action.cpp: In function ‘int execDestroyTimer(char*)’:
Action.cpp:4298: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’
Action.cpp: In member function ‘void Action::CleanUpTimers(Actor*, _SDL_TimerID*)’:
Action.cpp:6350: warning: format ‘%012X’ expects type ‘unsigned int’, but argument 4 has type ‘Actor*’
make[2]: *** [../output/Action.o] Error 1
make[2]: Leaving directory `/home/korn/game_editor/game-editor-0.0svn82/gameEngine'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/korn/game_editor/game-editor-0.0svn82'
dh_auto_build: make returned exit code 2
make: *** [build] Error 1
dpkg-buildpackage: error: debian/rules build gave error exit status 2
debuild: fatal error at line 1334:
dpkg-buildpackage -rfakeroot -D -us -uc -b failed


I applied this patch but I am not completely sure what I am changing there.
What purpose do these dl* functions have anyway ?
Can I just replace them with the non-dl versions defined in malloc.h ?
Code: Select all
Index: game-editor-0.0svn82/gameEngine/dlmalloc.h
===================================================================
--- game-editor-0.0svn82.orig/gameEngine/dlmalloc.h   2009-11-28 20:40:57.606542970 +0100
+++ game-editor-0.0svn82/gameEngine/dlmalloc.h   2009-11-28 20:40:58.166537714 +0100
@@ -14,7 +14,7 @@
 

 //Call the dlfunctions, even if dlmalloc is disable (will call the release memory functions)

 

-#   define USE_DL_PREFIX

+#   define HAVE_USR_INCLUDE_MALLOC_H

 

 #   ifdef USE_NEDMALLOC

 

Index: game-editor-0.0svn82/gameEngine/EiC/src/xalloc.h
===================================================================
--- game-editor-0.0svn82.orig/gameEngine/EiC/src/xalloc.h   2009-11-28 20:40:57.576529046 +0100
+++ game-editor-0.0svn82/gameEngine/EiC/src/xalloc.h   2009-11-28 20:40:58.166537714 +0100
@@ -55,10 +55,10 @@
               (unsigned long)x, __LINE__,__F1LE__);}

 

 #else

-#define xmalloc(N)              dlmalloc(N)

-#define xcalloc(N,M)            dlcalloc(N,M)

-#define xrealloc(N,M)           dlrealloc(N,M)

-#define xfree(N)                dlfree(N)

+#define xmalloc(N)              malloc(N)

+#define xcalloc(N,M)            calloc(N,M)

+#define xrealloc(N,M)           realloc(N,M)

+#define xfree(N)                free(N)

 

 #endif

 #endif

Index: game-editor-0.0svn82/gameEngine/dlmalloc/dlmalloc.h
===================================================================
--- game-editor-0.0svn82.orig/gameEngine/dlmalloc/dlmalloc.h   2009-11-28 20:40:57.596518586 +0100
+++ game-editor-0.0svn82/gameEngine/dlmalloc/dlmalloc.h   2009-11-28 20:40:58.166537714 +0100
@@ -706,12 +706,7 @@
 

 #if !defined(_ALLOCA_H) && !defined(alloca)

 extern void* alloca(size_t);

-#endif

-

-#define malloc   dlmalloc   

-#define realloc dlrealloc   

-#define calloc   dlcalloc   

-#define free   dlfree      

+#endif   

 

 char *strDup(const char *str);

 

Index: game-editor-0.0svn82/kyra/engine/rle.cpp
===================================================================
--- game-editor-0.0svn82.orig/kyra/engine/rle.cpp   2009-11-28 20:40:57.556541252 +0100
+++ game-editor-0.0svn82/kyra/engine/rle.cpp   2009-11-28 20:40:58.166537714 +0100
@@ -468,7 +468,7 @@
          }

          else

          {

-            bigData = (U8*)dlmalloc(lenght);

+            bigData = (U8*)malloc(lenght);

             bigDataUsingGC = false;

          }

 

@@ -486,7 +486,7 @@
          if(!comp.Decompression(data, lenghtComp, bigData, lenght))

          {

             if(bigDataUsingGC) free_gc(bigData);

-            else dlfree(bigData);

+            else free(bigData);

 

             bigDataUsingGC = false;

             bigData = NULL;

Index: game-editor-0.0svn82/gameEngine/Action.h
===================================================================
--- game-editor-0.0svn82.orig/gameEngine/Action.h   2009-11-28 20:43:25.304019808 +0100
+++ game-editor-0.0svn82/gameEngine/Action.h   2009-11-28 20:48:45.876548444 +0100
@@ -1332,7 +1332,7 @@
       }

       

       //No itens available in the free list, so allocate new

-      m = (ActionInfo *)dlmalloc(size);

+      m = (ActionInfo *)malloc(size);

       m->actionName = NULL;

       m->collideActorName = NULL;

       m->eventActorName = NULL;

Re: Compilation troubles

PostPosted: Sat Nov 28, 2009 11:11 pm
by makslane
The dlmalloc is used to speedup the memory allocations.
You have other version of dlmalloc installed on your system?

You have a reference to the dlmalloc in the /usr/include/malloc.h file?

Re: Compilation troubles

PostPosted: Sun Nov 29, 2009 12:34 am
by erkljer
/usr/include/malloc.h:
Code: Select all
/* Prototypes and definition for malloc implementation.
   Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007, 2009
   Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#ifndef _MALLOC_H
#define _MALLOC_H 1

#include <features.h>
#include <stddef.h>
#include <stdio.h>
# define __malloc_ptr_t  void *

/* Used by GNU libc internals. */
#define __malloc_size_t size_t
#define __malloc_ptrdiff_t ptrdiff_t

#ifdef __GNUC__

# define __MALLOC_P(args)   args __THROW
/* This macro will be used for functions which might take C++ callback
   functions.  */
# define __MALLOC_PMT(args)   args

#else   /* Not GCC.  */

# define __MALLOC_P(args)   args
# define __MALLOC_PMT(args)   args

#endif   /* GCC.  */


__BEGIN_DECLS

/* Allocate SIZE bytes of memory.  */
extern void *malloc __MALLOC_P ((size_t __size)) __attribute_malloc__ __wur;

/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
extern void *calloc __MALLOC_P ((size_t __nmemb, size_t __size))
       __attribute_malloc__ __wur;

/* Re-allocate the previously allocated block in __ptr, making the new
   block SIZE bytes long.  */
/* __attribute_malloc__ is not used, because if realloc returns
   the same pointer that was passed to it, aliasing needs to be allowed
   between objects pointed by the old and new pointers.  */
extern void *realloc __MALLOC_P ((void *__ptr, size_t __size))
       __attribute_warn_unused_result__;

/* Free a block allocated by `malloc', `realloc' or `calloc'.  */
extern void free __MALLOC_P ((void *__ptr));

/* Free a block allocated by `calloc'. */
extern void cfree __MALLOC_P ((void *__ptr));

/* Allocate SIZE bytes allocated to ALIGNMENT bytes.  */
extern void *memalign __MALLOC_P ((size_t __alignment, size_t __size))
       __attribute_malloc__ __wur;

/* Allocate SIZE bytes on a page boundary.  */
extern void *valloc __MALLOC_P ((size_t __size))
       __attribute_malloc__ __wur;

/* Equivalent to valloc(minimum-page-that-holds(n)), that is, round up
   __size to nearest pagesize. */
extern void * pvalloc __MALLOC_P ((size_t __size))
       __attribute_malloc__ __wur;

/* Underlying allocation function; successive calls should return
   contiguous pieces of memory.  */
extern void *(*__morecore) __MALLOC_PMT ((ptrdiff_t __size));

/* Default value of `__morecore'.  */
extern void *__default_morecore __MALLOC_P ((ptrdiff_t __size))
       __attribute_malloc__;

/* SVID2/XPG mallinfo structure */

struct mallinfo {
  int arena;    /* non-mmapped space allocated from system */
  int ordblks;  /* number of free chunks */
  int smblks;   /* number of fastbin blocks */
  int hblks;    /* number of mmapped regions */
  int hblkhd;   /* space in mmapped regions */
  int usmblks;  /* maximum total allocated space */
  int fsmblks;  /* space available in freed fastbin blocks */
  int uordblks; /* total allocated space */
  int fordblks; /* total free space */
  int keepcost; /* top-most, releasable (via malloc_trim) space */
};

/* Returns a copy of the updated current mallinfo. */
extern struct mallinfo mallinfo __MALLOC_P ((void));

/* SVID2/XPG mallopt options */
#ifndef M_MXFAST
# define M_MXFAST  1   /* maximum request size for "fastbins" */
#endif
#ifndef M_NLBLKS
# define M_NLBLKS  2   /* UNUSED in this malloc */
#endif
#ifndef M_GRAIN
# define M_GRAIN   3   /* UNUSED in this malloc */
#endif
#ifndef M_KEEP
# define M_KEEP    4   /* UNUSED in this malloc */
#endif

/* mallopt options that actually do something */
#define M_TRIM_THRESHOLD    -1
#define M_TOP_PAD           -2
#define M_MMAP_THRESHOLD    -3
#define M_MMAP_MAX          -4
#define M_CHECK_ACTION      -5
#define M_PERTURB       -6
#define M_ARENA_TEST       -7
#define M_ARENA_MAX       -8

/* General SVID/XPG interface to tunable parameters. */
extern int mallopt __MALLOC_P ((int __param, int __val));

/* Release all but __pad bytes of freed top-most memory back to the
   system. Return 1 if successful, else 0. */
extern int malloc_trim __MALLOC_P ((size_t __pad));

/* Report the number of usable allocated bytes associated with allocated
   chunk __ptr. */
extern size_t malloc_usable_size __MALLOC_P ((void *__ptr));

/* Prints brief summary statistics on stderr. */
extern void malloc_stats __MALLOC_P ((void));

/* Output information about state of allocator to stream FP.  */
extern int malloc_info (int __options, FILE *__fp);

/* Record the state of all malloc variables in an opaque data structure. */
extern void *malloc_get_state __MALLOC_P ((void));

/* Restore the state of all malloc variables from data obtained with
   malloc_get_state(). */
extern int malloc_set_state __MALLOC_P ((void *__ptr));

/* Called once when malloc is initialized; redefining this variable in
   the application provides the preferred way to set up the hook
   pointers. */
extern void (*__malloc_initialize_hook) __MALLOC_PMT ((void));
/* Hooks for debugging and user-defined versions. */
extern void (*__free_hook) __MALLOC_PMT ((void *__ptr,
               __const __malloc_ptr_t));
extern void *(*__malloc_hook) __MALLOC_PMT ((size_t __size,
                    __const __malloc_ptr_t));
extern void *(*__realloc_hook) __MALLOC_PMT ((void *__ptr, size_t __size,
                     __const __malloc_ptr_t));
extern void *(*__memalign_hook) __MALLOC_PMT ((size_t __alignment,
                      size_t __size,
                      __const __malloc_ptr_t));
extern void (*__after_morecore_hook) __MALLOC_PMT ((void));

/* Activate a standard set of debugging hooks. */
extern void __malloc_check_init __MALLOC_P ((void));


__END_DECLS

#endif /* malloc.h */


The first error says that it would conflict with the definition of dlmalloc
/usr/include/malloc.h:51: error: declaration of ‘void* dlmalloc(size_t) throw ()’ throws different exceptions

But not even the characters "dl" appear in the file.

The second error is about the redefinition of free and so on:
/usr/include/malloc.h:66: error: declaration of ‘void free(void*) throw ()’ throws different exceptions


Maybe I should just remove those definitions from the dlmalloc.h file provided by game-editor ?

Re: Compilation troubles

PostPosted: Sun Nov 29, 2009 1:12 am
by makslane
I'm not sure why you are getting this errors.

Re: Compilation troubles

PostPosted: Sun Nov 29, 2009 1:51 am
by erkljer
The only reason I see is that it might be related to a different raknet version.

As I said I use version 3.712. Attached is a Debian package of that version which includes the headers and a static library.

Now can you test to compile it with the current trunk of game-editor ?
I applied these patches to the trunk before compilation:
This patch changes the includes of raknet to use the headers from the package: http://pastebin.com/f7fc7b380
This patch disables the compilation of raknet in game-editor: http://pastebin.com/f66aa3f63

These are the build dependencies:
libx11-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libc6-dev-i386 [amd64], lib32stdc++6 [amd64], g++-multilib [amd64], ia32-libs [amd64], quilt, raknet

The [amd64] means that it should only be installed when compiling for amd64 (which I do).

I tested to compile in a clean chroot environment with only a minimal number of packages installed.

At getdeb we use this script to create a chroot in a file:
http://bazaar.launchpad.net/~debfactory ... t_build.py

Re: Compilation troubles

PostPosted: Sun Nov 29, 2009 12:01 pm
by makslane
Sorry, I can't make this test now.
I will need to make a option to disable the network and RakNet dependencies.

What I have today is by following the compilation instructions you can get the source compiled without modifications in the Game Editor source code.

As I can't distribute the RakNet sources, I think will be better use another network layer in Game Editor.

BTW: I've removed the RakNet package from the post because I can't redistribute the RakNet.