Page 1 of 1

Help building with MinGW64/MSYS2

Posted: Mon Apr 06, 2020 5:11 pm
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...

Re: Help building with MinGW64/MSYS2

Posted: Mon Apr 06, 2020 5:43 pm
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?

Re: Help building with MinGW64/MSYS2

Posted: Tue Apr 07, 2020 9:34 am
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...