Mac OS X General Release for 0.80

Mac OS X General Release for 0.80

Discuss everything related to compiling and running Spring on Mac OS X.

Moderator: Moderators

User avatar
REVENGE
Posts: 2382
Joined: 24 Aug 2006, 06:13

Mac OS X General Release for 0.80

Post by REVENGE »

Since I now know how to both run OS X on PC and compile Spring using MinGW / Cmake, I'm going to try my hand at pushing out a compilation of Springlobby and Spring 0.80 for mass OS X distribution. Before I get started, is there anything major in the source that would need to be changed that a relative noob like me would not be able to do? Anything with Springlobby?

Or, is somebody already planning on doing this?
imbaczek
Posts: 3629
Joined: 22 Aug 2006, 16:19

Re: Mac OS X General Release for 0.80

Post by imbaczek »

it won't be as easy as git clone, cmake and make, unfortunately...
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Mac OS X General Release for 0.80

Post by hoijui »

i can not help you with your question, but as you know how to compile it ...
Please try to make the red link on the top of this page blue:
http://springrts.com/wiki/Engine_Development
maybe copy over from the linux page, for a better start.
User avatar
koshi
Lobby Developer
Posts: 1059
Joined: 14 Aug 2007, 16:15

Re: Mac OS X General Release for 0.80

Post by koshi »

Provided you get the dependencies right and use cmake, SpringLobby should compile just fine. If it doesn't we've introduced something mac incompatible in the last two months which would be easy to fix.
We have very little up-to-date info documented on our wiki, please add whatever obstacles or solutions you may come across: http://springlobby.info/wiki/springlobby/MacOS
User avatar
BrainDamage
Lobby Developer
Posts: 1164
Joined: 25 Sep 2006, 13:56

Re: Mac OS X General Release for 0.80

Post by BrainDamage »

there are couple branches with mac fixes, i've helped zeuchs to build spring on mac ( altough i have no mac myself ), poke me in the lobby and i'll try to give you an hand
User avatar
REVENGE
Posts: 2382
Joined: 24 Aug 2006, 06:13

Re: Mac OS X General Release for 0.80

Post by REVENGE »

Ok, this will start once I get my Leopard setup. Which could be a bit, depending on how compatible my current machine is.
User avatar
adso
Posts: 23
Joined: 22 Aug 2009, 04:23

Re: Mac OS X General Release for 0.80

Post by adso »

Hi guys,

I have just spent the last 10hrs ironing out getting this + springlobby to compile on osx

springlobby keeps throwing this error at me :
Snapshot 2009-08-22 12-27-19.tiff
(74.55 KiB) Downloaded 25 times
I have a feeling there is an unsupported wxwidget command that isn't allowing springlobby to compile cleanly on OSX...

Any help would be greatly appreciated :)

Edit : I Am running Osx86 10.5.6 on an AMD fwiw
User avatar
koshi
Lobby Developer
Posts: 1059
Joined: 14 Aug 2007, 16:15

Re: Mac OS X General Release for 0.80

Post by koshi »

try adding

Code: Select all

#include <wx/bitmap.h>
on top of flagimages.cpp
if that doesn't get rid of the error entirely please do tell how you installed wxWidgets.
User avatar
adso
Posts: 23
Joined: 22 Aug 2009, 04:23

Re: Mac OS X General Release for 0.80

Post by adso »

that fixed it, thank you.

However, now mainwindow.cpp is throwing out heaps of build errors

I have a feeling it's to do with wxwidgets...
So I'll toy around a bit more...

[edit]
May as well post a SS of what's happening :
Attachments
Snapshot 2009-08-22 13-20-18.tiff
(365.81 KiB) Downloaded 9 times
User avatar
adso
Posts: 23
Joined: 22 Aug 2009, 04:23

Re: Mac OS X General Release for 0.80

Post by adso »

building 0.80 rls of spring and I got this far (with a bit of modification)

Code: Select all

Linking CXX executable ../spring
Undefined symbols:
  "_MacMessageBox", referenced from:
      ErrorMessageBox(char const*, char const*, unsigned int)in errorhandler.cpp.o
  "float3::NORMALIZE_EPS", referenced from:
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Camera.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in CameraHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Game.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GameHelper.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in SelectedUnitsAI.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in FPSController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in FreeController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in OrbitController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in OverheadController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in OverviewController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in RotOverheadController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in SmoothController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TWController.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in AirScript.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GuiHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MouseHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in SelectionKeyHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in LuaSyncedCtrl.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BasicMapDamage.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Ground.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MapInfo.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in ReadMap.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Frustum.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Sm3GroundDrawer.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Lightcalc.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in QuadRenderData.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Terrain.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TerrainTexture.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TerrainUtil.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Textures.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BFGroundDrawer.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in SmfReadMap.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GroundFlash.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in InMapDraw.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in ShadowHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in AdvSky.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in AdvTreeDrawer.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in AdvTreeGenerator.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in AdvWater.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BasicSky.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in DynWater.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GrassDrawer.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in 3DOParser.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in s3oParser.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in UnitDrawer.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Feature.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in CollisionHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GeometricObjects.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Wind.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in AirMoveType.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GroundMoveType.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TAAirMoveType.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MoveMath.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in ExplosionGenerator.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in PieceProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in ProjectileHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BeamLaserProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in EmgProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in ExplosiveProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in FlameProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in LargeBeamLaserProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in LaserProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in LightningProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MissileProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in StarburstProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TorpedoProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in WeaponProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BitmapMuzzleFlame.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in ExploSpikeProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GenericParticleProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GeoSquareProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in GeoThermSmokeProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in RepulseGfx.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in SimpleParticleSystem.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in SmokeTrailProjectile.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Unit.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in UnitDefHandler.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in UnitTracker.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in UnitScript.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BuilderCAI.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MobileCAI.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TransportCAI.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Builder.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in BeamLaser.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in bombdropper.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Cannon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in DGunWeapon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in EmgCannon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in FlameThrower.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in LaserCannon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in LightningCannon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MeleeWeapon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in MissileLauncher.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in PlasmaRepulser.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Rifle.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in StarburstLauncher.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in TorpedoLauncher.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Weapon.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in Matrix44f.cpp.o
      __ZN6float313NORMALIZE_EPSE$non_lazy_ptr in EngineOutHandler.cpp.o
  "float3::CMP_EPS", referenced from:
      __ZN6float37CMP_EPSE$non_lazy_ptr in GameHelper.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in OrbitController.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in s3oParser.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in Feature.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in CollisionVolume.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in AirMoveType.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in GroundMoveType.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in ScriptMoveType.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in TAAirMoveType.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in PathManager.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in LaserProjectile.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in MissileProjectile.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in BuilderCAI.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in MobileCAI.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in PlasmaRepulser.cpp.o
      __ZN6float37CMP_EPSE$non_lazy_ptr in Weapon.cpp.o
  "CSound::CSound()", referenced from:
      CPreGame::CPreGame(ClientSetup const*)in PreGame.cpp.o
      CPreGame::CPreGame(ClientSetup const*)in PreGame.cpp.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [spring] Error 1
make[1]: *** [rts/CMakeFiles/spring.dir/all] Error 2
make: *** [all] Error 2
 
any idea what could be causing this?

I think I might call it a day, this is frying my brain haha
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Re: Mac OS X General Release for 0.80

Post by Tobi »

In float3.h:36, change

Code: Select all

#ifdef _MSC_VER
to

Code: Select all

#if defined(_MSC_VER) || defined(__APPLE__)
In float3.cpp:24, change

Code: Select all

#ifdef _MSC_VER
to

Code: Select all

#if defined(_MSC_VER) || defined(__APPLE__)
I think that will get rid of all the 'float3::' undefined references.

If it does, let me know, then I'll commit this change.


MacMessageBox is currently not implemented; could comment the call out temporarily in errorhandler.cpp:50.


I've no clue about CSound::CSound(), maybe doublecheck that Sound.cpp is being linked in?
Auswaschbar
Spring Developer
Posts: 1254
Joined: 24 Jun 2007, 08:34

Re: Mac OS X General Release for 0.80

Post by Auswaschbar »

Have you actually build that files?
User avatar
koshi
Lobby Developer
Posts: 1059
Joined: 14 Aug 2007, 16:15

Re: Mac OS X General Release for 0.80

Post by koshi »

adso wrote:However, now mainwindow.cpp is throwing out heaps of build errors
It's only one error I see. The problem seems to be you have a wxWidgets build of the 2.6 series, but you need 2.8.x (where 2.8.10 ist latest).
User avatar
BrainDamage
Lobby Developer
Posts: 1164
Joined: 25 Sep 2006, 13:56

Re: Mac OS X General Release for 0.80

Post by BrainDamage »

there are mac specific branches to allow building spring on mac don't start from the release or you'll have to basically recreate all the fixes yourself, one of the branches is in my github repo
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Mac OS X General Release for 0.80

Post by hoijui »

... all this info would be good on the wiki
User avatar
adso
Posts: 23
Joined: 22 Aug 2009, 04:23

Re: Mac OS X General Release for 0.80

Post by adso »

koshi wrote:
adso wrote:However, now mainwindow.cpp is throwing out heaps of build errors
It's only one error I see. The problem seems to be you have a wxWidgets build of the 2.6 series, but you need 2.8.x (where 2.8.10 ist latest).
I have downloaded and compiled and linked all the 2.8.10 libraries, unless there is a version of wxwidgets this thing is picking up that is pre-installed in leopard?

I've got some free time coming up, so I'll pump some hours in. There won't be much left to change to get it to compile I imagine. :)

I'll let you know how I go!
yokosou
Posts: 21
Joined: 10 May 2009, 08:16

Re: Mac OS X General Release for 0.80

Post by yokosou »

Now with the Spring 0.80 released, I'm thinking about building it for Mac, too.
I had been trying to build a mac binary months before (cf. the last few pages of http://springrts.com/phpbb/viewtopic.php?f=12&t=8819).

Here's my git branch I made then:
http://github.com/yokosou/spring/tree/master

Though the branch is not updated for months, you should be able to compile this branch if you have proper libraries installed.
Libraries required: boost, DevIL, freetype, glew, and SDL
Because I submited many unnecesary commits to the branch, I was about to leave it and to make a new branch from 0.80.2 for Mac - until I found this forum.
Regrettably, my skills may be not great enough to have general release done, so I hope you will do it beautifully. Call me if there's anything I can help.

Thank you.
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Mac OS X General Release for 0.80

Post by AF »

We need more OS X fixes rolled into main. The idea of maintaining OS X support as a separate branch is imo not healthy because all work is discarded everytime a new spring release is made, and theres no incentive to do proper fixes because its not going in the main branch and its safe to do a shoddy fix and update ti later
User avatar
BrainDamage
Lobby Developer
Posts: 1164
Joined: 25 Sep 2006, 13:56

Re: Mac OS X General Release for 0.80

Post by BrainDamage »

AF wrote:The idea of maintaining OS X support as a separate branch is imo not healthy because all work is discarded everytime a new spring release is made
no, git branches are not like svn branches, takes much more than a couple commits to break them

EDIT: if it's not clear, i am all for merging it in master once it's ready, just that there is no rush needed, especially when it has high potential to screw stuff in other platforms
User avatar
hoijui
Former Engine Dev
Posts: 4344
Joined: 22 Sep 2007, 09:51

Re: Mac OS X General Release for 0.80

Post by hoijui »

also... yokosou, what you hsoudl do is rebasing your branch on current master in interactive mode. this lets you delete commits on hte go, and you will end up with the usefull commts on top of current master.
you dont have to start something clean/new from scratch.. you can also edit commits wiht this method (the messages and the changes in the files).
Post Reply

Return to “Mac OS X”