Help building with MinGW64/MSYS2

News and discussion of the PC port of Oolite.

Moderators: winston, another_commander

Post Reply
zevans
---- E L I T E ----
---- E L I T E ----
Posts: 332
Joined: Mon Jul 06, 2009 11:12 pm
Location: Uncharted backwaters of the unfashionable end of the western spiral arm

Help building with MinGW64/MSYS2

Post by zevans »

I have MinGW64/MSYS2 installed and I've used it to do some quite complex builds of other software so I think the environment itself is OK. For instance I cloned libobjc2 itself and ran configure, which seems happy with all the dependencies.

I installed all the clang/objc/GNUstep bits and bobs using pacman against the MinGW64 repo- it's pretty much all there these days.

BUT when I type "make" or "make -f Makefile" it seems like something is missing from the git clone:

Code: Select all

GNUmakefile:450: /objc.make: No such file or directory
Any ideas? Missing a piece of environment logic somewhere I suspect...
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6680
Joined: Wed Feb 28, 2007 7:54 am

Re: Help building with MinGW64/MSYS2

Post by another_commander »

Does etc/profile call GNUstep.sh? In my environment (which is not MSYS2 based, so I could be off with my intuition), there is this line towards the end of etc/profile:

Code: Select all

. /mingw/../devlibs/gnustep1201/System/Library/Makefiles/GNUstep.sh
The question here is, why try to build with a system that is not tested with the Oolite codebase, when there is a single-download development envrionment prepared already with everything that is needed for an immediate build within minutes?

There are a few things you need to be aware of before putting in more effort with a different development system. Some of the game's dlls have to be built specifically for Oolite, so you will probably want to build all support dlls with it as well. There is also the issue of exception handling to consider. MSYS2 will probably generate a 64-bit executable based on the SEH exception model, while all other dlls of the game's distribution - as well as the vanilla exes - are built against the SJLJ model. Attempting to mix exception models will probably result in crashes every time an exception is thrown, assuming that everything gets to the point of linking successfully.

It will be great if you get it all to build and work on MSYS2, but is it worth the hassle when there is already something that works out of the box?
zevans
---- E L I T E ----
---- E L I T E ----
Posts: 332
Joined: Mon Jul 06, 2009 11:12 pm
Location: Uncharted backwaters of the unfashionable end of the western spiral arm

Re: Help building with MinGW64/MSYS2

Post by zevans »

another_commander wrote: Mon Apr 06, 2020 5:43 pm

Code: Select all

. /mingw/../devlibs/gnustep1201/System/Library/Makefiles/GNUstep.sh
That was what I needed, thank you.
The question here is, why try to build with a system that is not tested with the Oolite codebase, when there is a single-download development envrionment prepared already with everything that is needed for an immediate build within minutes?
Curiosity. :-)

I guessed I'd need to force SJLJ builds based on experience with building jackaudio.
It will be great if you get it all to build and work on MSYS2, but is it worth the hassle when there is already something that works out of the box?
Guess not, and I certainly wouldn't report any bugs against it, but we have to make our own entertainment at the moment...
Post Reply