Sign in to follow this  
Followers 0

64 bit linux?

I tried to compile revision 421 on 64-bit linux, but got the following:

gcc -DPACKAGE_NAME="eternity" -DPACKAGE_TARNAME="eternity" -DPACKAGE_VERSION="3.33.50" -DPACKAGE_STRING="eternity\ 3.33.50" -DPACKAGE_BUGREPORT="haleyjd@hotmail.com" -DPACKAGE="eternity" -DVERSION="3.33.50" -I.    -I/usr/include/SDL -I/usr/local/include/SDL -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -Wall -D_SDL_VER -DNDEBUG -DAMX_NODYNALOAD -DR_LINKEDPORTALS -DR_PORTALS -DOVER_UNDER -DPOLYOBJECTS -D_CONSOLE -DLINUX -lSDL_net -g -O2 -MT m_misc.o -MD -MP -MF .deps/m_misc.Tpo -c -o m_misc.o m_misc.c
m_misc.c:142: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:143: error: initializer element is not constant
m_misc.c:143: error: (near initialization for ‘defaults[2].defaultvalue’)
m_misc.c:313: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:313: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:327: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:551: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:552: error: initializer element is not constant
m_misc.c:552: error: (near initialization for ‘defaults[56].defaultvalue’)
m_misc.c:559: error: initializer element is not constant
m_misc.c:559: error: (near initialization for ‘defaults[57].defaultvalue’)
m_misc.c:565: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:566: error: initializer element is not constant
m_misc.c:566: error: (near initialization for ‘defaults[58].defaultvalue’)
m_misc.c:573: error: initializer element is not constant
m_misc.c:573: error: (near initialization for ‘defaults[59].defaultvalue’)
m_misc.c:580: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:581: error: initializer element is not constant
m_misc.c:581: error: (near initialization for ‘defaults[60].defaultvalue’)
m_misc.c:588: error: initializer element is not constant
m_misc.c:588: error: (near initialization for ‘defaults[61].defaultvalue’)
m_misc.c:922: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:923: error: initializer element is not constant
m_misc.c:923: error: (near initialization for ‘defaults[106].defaultvalue’)
m_misc.c:930: error: initializer element is not constant
m_misc.c:930: error: (near initialization for ‘defaults[107].defaultvalue’)
m_misc.c:937: error: initializer element is not constant
m_misc.c:937: error: (near initialization for ‘defaults[108].defaultvalue’)
m_misc.c:944: error: initializer element is not constant
m_misc.c:944: error: (near initialization for ‘defaults[109].defaultvalue’)
m_misc.c:951: error: initializer element is not constant
m_misc.c:951: error: (near initialization for ‘defaults[110].defaultvalue’)
m_misc.c:958: error: initializer element is not constant
m_misc.c:958: error: (near initialization for ‘defaults[111].defaultvalue’)
m_misc.c:965: error: initializer element is not constant
m_misc.c:965: error: (near initialization for ‘defaults[112].defaultvalue’)
m_misc.c:972: error: initializer element is not constant
m_misc.c:972: error: (near initialization for ‘defaults[113].defaultvalue’)
m_misc.c:979: error: initializer element is not constant
m_misc.c:979: error: (near initialization for ‘defaults[114].defaultvalue’)
m_misc.c:986: error: initializer element is not constant
m_misc.c:986: error: (near initialization for ‘defaults[115].defaultvalue’)
m_misc.c:1247: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:1254: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:1571: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:1585: warning: dereferencing type-punned pointer will break strict-aliasing rules
m_misc.c:1586: error: initializer element is not constant
m_misc.c:1586: error: (near initialization for ‘defaults[199].defaultvalue’)
m_misc.c: In function ‘default_hash’:
m_misc.c:1651: warning: division by zero
m_misc.c: In function ‘M_SaveDefaults’:
m_misc.c:1751: warning: cast to pointer from integer of different size
m_misc.c:1776: warning: cast to pointer from integer of different size
m_misc.c: In function ‘M_LoadDefaults’:
m_misc.c:1950: warning: cast to pointer from integer of different size
m_misc.c:1950: warning: cast from pointer to integer of different size
make[2]: *** [m_misc.o] Error 1
make[2]: Leaving directory `/opt/eternity/source'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/eternity/source'
make: *** [all-recursive] Error 1

Share this post


Link to post

EE has not been ported to 64-bit so even if you get it to compile I would not expect it to work. The Doom codebase has serious problems with making data-type size assumptions. If short is not 16-bit, int is not 32-bit, and unsigned long is not 32-bit, most of the engine will stop working. Unfortunately most C compilers have chosen to promote long to a 64-bit type.

The only way to remedy this is to change ALL variables in the program to use C99 portably-sized data types. As you can imagine, that will be quite an undertaking.

Also, EE must be compiled with -fno-strict-aliasing for all GNU compiler targets. Doom has always relied on the ability to alias structure pointers and will continue to do so in order to achieve pseudo-polymorphism. GNU guys need to learn how to support strict aliasing and allow structure pointer casting at the same time IMO.

Share this post


Link to post

:(

Oh well, I was able to compile 32-bit, and it works fine.

Share this post


Link to post
Quasar said:

EE has not been ported to 64-bit so even if you get it to compile I would not expect it to work.


Crap....
/me tries Wine....

Share this post


Link to post
sgtcrispy said:

Crap....
/me tries Wine....

Heh, it's not hard to set up your distro to compile and run 32-bit binaries. Using wine is silly.

Share this post


Link to post
exp(x) said:

Heh, it's not hard to set up your distro to compile and run 32-bit binaries. Using wine is silly.


True, but it worked! Better than I thought actually.

Meh anyways...
/me goes back to Cave Story.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0