Opened 5 years ago

Closed 4 years ago

Last modified 4 years ago

#6437 closed defect (fixed)

SYMBIAN: remove macro conflict in system headers

Reported by: SF/superzanac Owned by: anotherguest
Priority: normal Component: Engine: TsAGE
Keywords: build Cc:
Game: Blue Force

Description

Fix doesn't work. I knew only one solution - to comment "#define remove(x) unlink(x)" and compile.
This macro uses many projects and many libc variants. Just google it.
Also this error has Avalanche engine. Maybe need to start thread on forum?

Ticket imported from: #3615153. Ticket imported from: bugs/6437.

Change History (18)

comment:1 Changed 5 years ago by dreammaster

Better to post a message to the development list - scummvm-devel@lists.sourceforge.net with all the details of the issue. Whilst I could do a global rename of the 'remove' method, I still can't help but feel that it's such a common word that we look for a Symbion fix rather than doing large scale changes to the engines just for Symbion.

comment:2 Changed 5 years ago by SF/superzanac

When I add
#ifdef __SYMBIAN32__
#undef remove
#endif // remove
in core.h and graphics.h I got this errors :
In file included from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_logic.h:28:0,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.h:27,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.cpp:23:
/Symbian/Projects/SDL/scummvm/engines/tsage/core.h: In member function 'void TsAGE::SceneObjectList::remove(TsAGE::SceneObject*)':
/Symbian/Projects/SDL/scummvm/engines/tsage/core.h:774:12: error: 'class TsAGE::SynchronizedList<TsAGE::SceneObject*>' has no member named 'remove'
In file included from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_logic.h:29:0,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_logic.cpp:24:
/Symbian/Projects/SDL/scummvm/engines/tsage/scenes.h: In member function 'void TsAGE::Game::removeHandler(TsAGE::GameHandler*)':
/Symbian/Projects/SDL/scummvm/engines/tsage/scenes.h:124:53: error: 'class TsAGE::SynchronizedList<TsAGE::GameHandler*>' has no member named 'remove'
In file included from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_logic.h:29:0,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.h:27,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.cpp:23:
/Symbian/Projects/SDL/scummvm/engines/tsage/scenes.h: In member function 'void TsAGE::Game::removeHandler(TsAGE::GameHandler*)':
/Symbian/Projects/SDL/scummvm/engines/tsage/scenes.h:124:53: error: 'class TsAGE::SynchronizedList<TsAGE::GameHandler*>' has no member named 'remove'
/Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.cpp: In member function 'virtual bool TsAGE::BlueForce::Scene60::MirandaCard::startAction(TsAGE::CursorType, TsAGE::Event&)':
/Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.cpp:701:27: error: 'class TsAGE::SceneItemList' has no member named 'remove'
/Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.cpp: In member function 'virtual bool TsAGE::BlueForce::Scene60::TicketBook::startAction(TsAGE::CursorType, TsAGE::Event&)':
/Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_scenes0.cpp:723:27: error: 'class TsAGE::SceneItemList' has no member named 'remove'
make[1]: *** [\Symbian\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\Symbian\Projects\SDL\scummvm\backends\platform\symbian\S60v3\SCUMMVM_TSAGE\GCCE\urel\blueforce_scenes0.o] Error 1
make: *** [TARGETSCUMMVM_TSAGE] Error 2
/Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_logic.cpp: In member function 'virtual void TsAGE::BlueForce::FocusObject::remove()':
/Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_logic.cpp:664:25: error: 'class TsAGE::SceneItemList' has no member named 'remove'

comment:3 Changed 5 years ago by wjp

Sounds like it's not in the right (or enough) headers, then.

comment:4 Changed 5 years ago by SF/superzanac

dreammaster, my list was rejected because "Non-members are not allowed to post messages to this list."

comment:5 Changed 5 years ago by digitall

Summary: remove macro conflict in system headersSYMBIAN: remove macro conflict in system headers

comment:6 Changed 5 years ago by digitall

Owner: set to anotherguest

comment:7 Changed 5 years ago by digitall

superzanac: As your messages are now appearing on the scummvm-devel list, I assume that this has been fixed.

comment:8 Changed 5 years ago by digitall

As an FYI, this bug is a continuation of a previous bug #3615142 - "SYMBIAN: remove macro conflict in system headers":
https://sourceforge.net/tracker/index.php?func=detail&aid=3615142&group_id=37116&atid=418820

Which was closed without the fix being confirmed by the user, and with comments closed. This has resulted in a duplicate bug being opened.

Developers, can we try to avoid this in future please.. and Users, can you try to avoid doing this as well. As the owner of a bug, IIRC you can reopen it... or ask a developer/bug admin to do this.

comment:9 Changed 5 years ago by digitall

anotherguest: As our Symbian porter, have you encountered this issue?

Or is this due to superzanac using "Sourcery CodeBench Lite for ARM SymbianOS 4.6.3", rather than the Nokia S60 Symbian SDK listed on:
http://wiki.scummvm.org/index.php/Compiling_ScummVM/Symbian

superzanac: Exactly where did you download your toolchain? It should be from here:
http://developer.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html

comment:10 Changed 5 years ago by anotherguest

I only had this problem on the tsage engine which I solved by changing the symbian define when building tsage. I guess that remove is not used as unlink in many other projects anyway so the define patch in symbian H files could be a valid fix.

comment:11 Changed 5 years ago by SF/superzanac

tdhs, yes I downloaded S60 5th Edition SDK for Symbian OS . GCCE was downloaded from Mentor Graphics site. Forget about 4.6.3 because it can build only Symbian C++ app but not standart C/open C++ Helloworlds from SDK. Now I'm using GCCE 4.4.1

comment:12 Changed 5 years ago by SF/superzanac

anotherguest, Scumvm itself use remove() to gamesaves

comment:13 Changed 5 years ago by anotherguest

For ScummVM I have always been using c++ (GCC) 3.4.3 (release) (CodeSourcery ARM Q1C 2005) which works fine in most cases. (Which is included in all official Nokia SDKs). I have noticed that ScummVM has been using remove more and more as engine development has been progressing. I usually also revert to some patching for some engines to get them building. When it comes to SDL version, the version I originally ported SDL to Symbian for usage with ScummVM so various key mappings included there. I think I need to DL 1.7.0 pre and test also :-)

comment:14 Changed 5 years ago by SF/superzanac

anotherguest,Ok. I describe my errors wit some engines in symbian forum =)

comment:15 Changed 5 years ago by SF/superzanac

It's impossible to fix these errors. I add this fix to every header(include blue_force, ringword 1&2) and still have 2 errors :
In file included from /Symbian/Projects/SDL/scummvm/engines/tsage/tsage.h:35,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_dialogs.cpp:28:
/Symbian/Projects/SDL/scummvm/engines/tsage/core.h: In member function 'void TsAGE::SceneObjectList::remove(TsAGE::SceneObject*)':
/Symbian/Projects/SDL/scummvm/engines/tsage/core.h:774: error: 'class TsAGE::SynchronizedList<TsAGE::SceneObject*>' has no member named 'remove'
In file included from /Symbian/Projects/SDL/scummvm/engines/tsage/globals.h:33,
from /Symbian/Projects/SDL/scummvm/engines/tsage/blue_force/blueforce_dialogs.cpp:32:
/Symbian/Projects/SDL/scummvm/engines/tsage/scenes.h: In member function 'void TsAGE::Game::removeHandler(TsAGE::GameHandler*)':
/Symbian/Projects/SDL/scummvm/engines/tsage/scenes.h:128: error: 'class TsAGE::SynchronizedList<TsAGE::GameHandler*>' has no member named 'remove'

Please, rename this function. I wish add symbian support to buildbod.

comment:16 Changed 4 years ago by SF/superzanac

Fixed in commit 99d6dec0597b190c76fc49169a4e5c2e93f7d366

comment:17 Changed 4 years ago by anotherguest

Resolution: fixed
Status: newclosed

comment:18 Changed 4 years ago by anotherguest

Fixed and commited by Zanac!

Note: See TracTickets for help on using tickets.