Closed squinkylabs closed 1 year ago
The tool chain environment is the standard. It is required to successfully make cross-compilation for three platforms possible.
The fact that the MSYS2 environment is different is unfortunate, but we have provided the build tool chain for developers to allow them to build their code in the production environment.
We are planning on updating the tool chain as new versions become available, but at this time (before v2) no tool chain update is planned.
Yeah, that makes sense. It's certainly unfortunate that the builds are so different. Will the makefile (plugin.mk?) be updated in the future so that it at least uses the same static linkage that the toolchain uses?
The Makefile is the same. The tool chain only uses a fixed, defined compiler for each platform. I am not sure I understand why the linkage would be different in the dev environment (e.g. MSYS2). Can you explain that further?
I had thought that the linkage to the c++ support libraries was dynamic in a desktop build, and static with a toolchain build. I always figured static with toolchain was intended to make library plugins not require a specific gcc runtime dll. Which makes sense, but I don't think that's what the desktop build does.
Of course I could be utterly wrong about this.
Which is to say - I don't think the makefile is the same. again - could easily be wrong. Have to confess the only time I've looked into this a lot was when the toolchain first started to be used for builds - four of my modules started crashing constantly. After a hectic couple of days trying everything I ripped out all the crashing code and re-wrote it.
Since then, every now and then I run into so crash, but I now know not to look for the cause - just remove the offending standard library function and replace with my own version.
I checked, you are correct. The tool chain links statically and the current v1
Makefile in the SDK does not. The comment in the tool chain Makefile says that in v2
the static linking will be added to the plugin.mk
file and the tool chain and the dev environment will be the same. I was under the assumption that plugin.mk
had already been updated, but it has not.
ah, thank!
This issue is obsolete with the updates in v2
of Rack's plugin build process.
Micorosoft Visual C++, and a normal desktop dev build with MYSY2 provides the following overload:
std::ifstream::open(wchar_t *);
This lets windows programs use unicode pathnames with input streams.
The works with a normal desktop build, but the toolchain will not accept it. Apparently a different c++ library is used there?