Hi Genete,
Synfig core is building OK, but it doesn’t seem to be able to render the splash screen, crashing instead. If I run it from the command line, it looks like I’m running into stack issues.
It is possible that you didn’t fully rebuild synfig-core and there are mixed libraries?
Did you rebuild ETL too? It has upgraded.
Other sifz files show the same? Try pirates.sifz our beast crasher file.
Other than that I just can suggest clean all the .dll and other configuration files created and start it over.
Maybe change the build installation path to other place on the build script.
Alternatively, can you rewind to 0.63.04 and try to rebuild. Is it possible to try to rebuild on intermediate commits to see which is the one which is causing the bad synfig-core?
This was a clean build. I’m regressing back to earlier versions to see if I can find out where it broke.
I have another idea I can try when I find out where that is…
Maybe it’s time to bite the bullet and figure out what it will take to move to MS VC.
This is the branch that touches the vector.h file for clang fixes.
In any case the re definition is clear.
38 #ifdef WIN32
39 #include <float.h>
40 #ifndef isnan
41 extern "C" { int _isnan(double x); }
42 #define isnan _isnan
43 #endif
44 #endif
45
46 // For some reason isnan() isn't working on macosx any more.
47 // This is a quick fix.
48 #if defined(__APPLE__) && !defined(SYNFIG_ISNAN_FIX)
49 #ifdef isnan
50 #undef isnan
51 #endif
52 inline bool isnan(double x) { return x != x; }
53 inline bool isnan(float x) { return x != x; }
54 #define SYNFIG_ISNAN_FIX 1
55 #else
56 #define isnan std::isnan
57 #endif
This code is included in color.h too. When one of them is included first then the second redefines isnan for Windows because SYNFIG_ISNAN_FIX is already defined and so it enters the else condition at line 55 which redefine isnan in any platform.
This must be changed by a nested definition like this (or similar):
#ifdef WIN32
#include <float.h>
#ifndef isnan
extern "C" { int _isnan(double x); }
#define isnan _isnan
#endif
#else
// For some reason isnan() isn't working on macosx any more.
// This is a quick fix.
#if defined(__APPLE__) && !defined(SYNFIG_ISNAN_FIX)
#ifdef isnan
#undef isnan
#endif
inline bool isnan(double x) { return x != x; }
inline bool isnan(float x) { return x != x; }
#define SYNFIG_ISNAN_FIX 1
#else
#define isnan std::isnan
#endif
#endif
In my opinion moving to MS VC looks like a really bad idea, as it might be even less compatible ==> more issues.
If I’m not mistaken, mingw gcc is more compatible with linux gcc than MS VC…
I’m sorry, I introduced the bug when applying htodd patches. I didn’t noticed, and compiling in Linux didn’t bring up the issue.
My apologies.
I started trying the CMake building sytem transition yesterday and so far I’m able to compile libsynfig, synfig-tool and some modules but I’ll need some time to support everything our current building system does.
I hope, after this the multi-platform compilation will go somewhat better so we can check every platform beforehand.
Wish me luck!
Well, the good news is that I have a working build of 0.63.05. The bad news is that I had to build it by hand.
The build was failing because when trying to build 0.63.05 splash screen under msys, there’s a stack overflow. I got round it by reverting back to the 0.63.04 splash, manually tweaking the version number, and substituting it. Synfig can render that when running under msys just fine. There’s something about the new feature of outline grow that causes synfig to trigger a stack overflow in msys.
We intentionally included the outline grow feature in the new splash screen apart of change the bottom text.
If you failed to render that splash, it means that the synfig libraries were not build properly before build synfigsytudio.
Maybe it was still using the path of the already installed synfig CLI (previous version) and not the newly build libraries. It is worth to review the paths used during build time of synfigstudio to verify that it is using the current latest version of synfig libraries.
The interesting part is this one: export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH
Notice that the .libs folder is added to the PATH. It is where the tool libraries are stored temporarily after make. You should do the similar in your build scripts.