[ODE] Compiling ode with Opcode

Ed Jones ed.jones at oracle.com
Wed Feb 11 11:05:23 MST 2004


Howdy,

I managed to get ODE+Opcode to work with Dev-C++ (i.e. mingw), here are 
some of the things I did that you might like to try.
I may well miss some steps out, in which case let me know and I'll dig 
about a bit more in the source to see if I can find anything else that I 
changed;

In the ODE user-settings file you need to set this, which I'm guessing 
you've already done;
PLATFORM=mingw

In the Opcode/Makefile, on the "gcc -c -o ..." line change the -O3 to 
-O0 (that's "minus oh zero") I dunno why you need to do disable the 
compiler optimisations like this, there's been some discussions about it 
on this list I think, my trimesh collisions didn't work correctly 
without it.

In IceFPU.h, at the top, just after the line "#define __ICEFPU_H__" put;
  #ifdef WIN32
  #undef WIN32
  #endif
Which just switches off the inline assembler stuff. Okay it's probably 
gonna be slower, and there should probably be a way of converting the 
inline assembler to work with mingw but I don't know what that would be, 
and my hacky method seems to work anyway.

Do "make all" from the Opcode directory
Do "make all" in the ODE directory

Hope that make sense.
Cheers,
Ed.



Ursula Schmitz wrote:

>Hello,
>i want to compile ode and opcode with mingw.
>
>I've downloaded the newest version of ode.
>I've edited the config file with following parameters:
>PRECISION=SINGLE
>BUILD=release
>WINDOWS16=0
>OPCODE_DIRECTORY=OPCODE
>
>Then i've started make with with following options:
>"make configurations"
>"make ode-lib"
>
>i get following error messages:
>gcc -c -Wall -fno-exceptions -fno-rtti -DWIN32 -fomit-frame-pointer -ffast-math
>-Iinclude -IOPCODE  -DdTRIMESH_ENABLED -DdNODEBUG -O2 -o ode/src/collision_trime
>sh.o ode/src/collision_trimesh.cpp
>In file included from ode/src/collision_trimesh_internal.h:41,
>                 from ode/src/collision_trimesh.cpp:31:
>OPCODE/Opcode.h:47: warning: ignoring #pragma message
>In file included from OPCODE/OPC_IceHook.h:32,
>                 from OPCODE/Opcode.h:72,
>                 from ode/src/collision_trimesh_internal.h:41,
>                 from ode/src/collision_trimesh.cpp:31:
>OPCODE/Ice/IcePreprocessor.h:17: warning: ignoring #pragma message
>OPCODE/Ice/IcePreprocessor.h:108: warning: ignoring #pragma inline_depth
>In file included from OPCODE/OPC_IceHook.h:38,
>                 from OPCODE/Opcode.h:72,
>                 from ode/src/collision_trimesh_internal.h:41,
>                 from ode/src/collision_trimesh.cpp:31:
>OPCODE/Ice/IceFPU.h: In function `float FastSqrt(float)':
>OPCODE/Ice/IceFPU.h:47: parse error before `{' token
>OPCODE/Ice/IceFPU.h:45: warning: unused variable `float retval'
>OPCODE/Ice/IceFPU.h:53: warning: no return statement in function returning
>   non-void
>OPCODE/Ice/IceFPU.h: In function `float FCMax2(float, float)':
>OPCODE/Ice/IceFPU.h:230: `_asm' undeclared (first use this function)
>OPCODE/Ice/IceFPU.h:230: (Each undeclared identifier is reported only once for
>   each function it appears in.)
>OPCODE/Ice/IceFPU.h:230: parse error before `[' token
>OPCODE/Ice/IceFPU.h:229: warning: unused variable `float Res'
>OPCODE/Ice/IceFPU.h:240: warning: no return statement in function returning
>   non-void
>OPCODE/Ice/IceFPU.h: In function `float FCMin2(float, float)':
>OPCODE/Ice/IceFPU.h:247: `_asm' undeclared (first use this function)
>OPCODE/Ice/IceFPU.h:247: parse error before `[' token
>OPCODE/Ice/IceFPU.h:246: warning: unused variable `float Res'
>OPCODE/Ice/IceFPU.h:257: warning: no return statement in function returning
>   non-void
>OPCODE/Ice/IceFPU.h: In function `float FCMax3(float, float, float)':
>OPCODE/Ice/IceFPU.h:264: `_asm' undeclared (first use this function)
>OPCODE/Ice/IceFPU.h:264: parse error before `[' token
>OPCODE/Ice/IceFPU.h:263: warning: unused variable `float Res'
>OPCODE/Ice/IceFPU.h:277: warning: no return statement in function returning
>   non-void
>OPCODE/Ice/IceFPU.h: In function `float FCMin3(float, float, float)':
>OPCODE/Ice/IceFPU.h:284: `_asm' undeclared (first use this function)
>OPCODE/Ice/IceFPU.h:284: parse error before `[' token
>OPCODE/Ice/IceFPU.h:283: warning: unused variable `float Res'
>OPCODE/Ice/IceFPU.h:297: warning: no return statement in function returning
>   non-void
>In file included from OPCODE/OPC_IceHook.h:39,
>                 from OPCODE/Opcode.h:72,
>                 from ode/src/collision_trimesh_internal.h:41,
>                 from ode/src/collision_trimesh.cpp:31:
>OPCODE/Ice/IceMemoryMacros.h: In function `void StoreDwords(udword*, unsigned
>   int, unsigned int)':
>OPCODE/Ice/IceMemoryMacros.h:58: `_asm' undeclared (first use this function)
>OPCODE/Ice/IceMemoryMacros.h:58: parse error before `eax'
>In file included from OPCODE/OPC_IceHook.h:56,
>                 from OPCODE/Opcode.h:72,
>                 from ode/src/collision_trimesh_internal.h:41,
>                 from ode/src/collision_trimesh.cpp:31:
>OPCODE/Ice/IceHPoint.h: At global scope:
>OPCODE/Ice/IceHPoint.h:151: warning: conversion to a base class will never use
>   a type conversion operator
>In file included from OPCODE/OPC_IceHook.h:61,
>                 from OPCODE/Opcode.h:72,
>                 from ode/src/collision_trimesh_internal.h:41,
>                 from ode/src/collision_trimesh.cpp:31:
>OPCODE/Ice/IceIndexedTriangle.h:17: use of enum `CubeIndex' without previous
>   declaration
>make: *** [ode/src/collision_trimesh.o] Error 1
>
>
>Without the Opcode Option all works fine.
>Can anybody help me ?
>______________________________________________________________________________
>Nachrichten, Musik und Spiele schnell und einfach per Quickstart im 
>WEB.DE Screensaver - Gratis downloaden: http://screensaver.web.de/?mc=021110
>
>_______________________________________________
>ODE mailing list
>ODE at q12.org
>http://q12.org/mailman/listinfo/ode
>  
>



More information about the ODE mailing list