[Opentnl-general] CodeWarrior port
Brought to you by:
mark_frohnmayer,
s_alanet
From: Norbert H. <nh...@gm...> - 2004-07-25 17:39:43
|
First of all, thanks to Mark Frohnmayer for fixing the "isDataToTransmit() bug" about two month or so ago. I never got around to thank you for the quick response. Sorry. Since I am using CodeWarrior 8.3 for Windows, I have ported the tnl and Zap source to it. Is there a chance that I could contribute my modifications to the official source on SourceForge? The biggest addition has been made to tnl/tnlMethodDispatch.cpp. CodeWarrior is using a 3*DWORD class method pointer, which needed another special assembler code in MarshalledCall::dispatch() for de-referencing the pointer. The other changes are mostly two-liners to solve some compiler depending issues. To give you an overview, here is the list of changes that I had to make in order to get CW to compile tnl, Zap and the other little sub-projects: 1. Introduced the macros TNL_COMPILER_STRING and TNL_SUPPORTS_MWERKS_INLINE_X86_ASM in: tnl/tnlTypes.h 2. CodwWarrior's class method pointer is 3 DWORDs long (no kidding) and the dereferencing is done completely different then in MSVC and GCC/x86. MethodPointer has been extended to 3*U32. Also wrote a separate dereferencing assembler code for CodeWarrior in tnl/tnlMethodDispatch.cpp. Altogether, changes have been made in: tnl/tnlJournal.h tnl/tnlMethodDispatch.cpp tnl/tnlMethodDispatch.h tnl/tnlNetObject.h tnl/tnlRPC.h 3. CodeWarrior doesn't allow the initialization of an array with a class like it is done with gWeapons[] in zap/gameWeapons.cpp. Same issue with gProjInfo[] in zap/projectile.cpp. I added a constructor to the structs ProjectileInfo and ShipWeaponInfo and did the initialization through those constructors. Changes made to: zap/gameWeapons.cpp zap/gameWeapons.h zap/projectile.cpp zap/projectile.h 4. Typedef'ed the types U64 and S64 for CodeWarrior builds in: tnl/tnlTypes.h 5. _HEAPOK is not supported in CodeWarrior. So I had to disable the macro TNL_CHECK_HEAP for CW builds. Changes made in: tnl/tnlPlatform.h tnl/platform.h 6. CW does not know <memory.h>. <string.h> needs to be included instead. Modifications made to: zap/lpc10dec.c zap/lpc10enc.c zap/private.h 7. The function lrintf is already definition in one of CW's include files. The duplicate definition needed to be #undef'ed in: zap/ftol.h 8. CodeWarrior for win32 does a "using std::exit;" in stdlib.h. So declaration of ::exit(int) in glut.h causes an ambiguity error if someone include stdlib.h before glut.h. Modified glut.h to use std::exit() instead of ::exit() for CW builds: glut/glut.h 9. A similar issue exists with std::malloc, std::realloc and so forth in: libtomcrypt/mycrypt_custom.h Regards, Norbert. |