Build environment on macOS and Linux using Mono
droe opened this issue · comments
From #855:
I would be curious what your environment looks like for building DwarfCorp on Mac, and I would be happy to update our documentation with instructions for how to do this. If it's just a matter of building content on windows then a development environment on Mac/Linux might be possible with prepackaged content.
I've put my makefile into my branch mono-build (diff).
The approach uses the libraries and content from the Steam release to build and run against. I did this mainly to avoid having to build libraries and having to fully reverse engineer the VC build. As-is, the approach is only reliable for building code changes based on the same release tag of the Steam release used as a basis.
The approach could be extended to build a full app bundle and take libraries from somewhere else than a release bundle, actually building those libraries that need to be built. If there is interest in doing that, I can look into it. I'd very likely need pre-built content, but I haven't looked into that yet.
I've updated the original makefile with a top-level makefile and a cleaner approach. LibNoise is already built using the new infrastructure, everything else still depends on the app bundle from Steam.
I've extended the makefile to copy or build as much as possible from the repository. Also, this should now also work on Linux (untested). What is still missing and currently needs to be taken from the Steam install:
- FNA.dll FNA.dll.config
- Newtonsoft.Json.dll Newtonsoft.Json.xml
- SharpRaven.dll SharpRaven.xml
- ICSharpCode.SharpZipLib.dll
- Antlr4.Runtime.Standard.dll
- Content
For most of these it should be possible to automatically grab them off their respective binary distributions, but for Content it would be necessary to have it available prebuilt as an archive download or in a git repo.
The makefile linked above now builds or copies all external dependencies from the respective nuget package or other downloadable package or archive. Also, it supports running DwarfCorp with the Mono profiler.
The only thing without a solution now is Content.
is there after 4 years a full solution to build this using open source software