This commit seems to break compiling (or more precisely, linking) on Win32 + scons + mingw.
Linking program ==> 'blender.exe' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -lz_st collect2: ld returned 1 exit status scons: *** [C:\blenderdev\b250\build\bin\blender.exe] Error 1 Specifically, we currently don't have a libz_st.a in libs yet. Trying to rename libz.dll.a to libz_st.a results in a bunch of redefinition errors (e.g. inflateReset in libz.a already defined in libz_st.a) On Mon, Jun 3, 2013 at 3:02 AM, Sergey Sharybin <sergey....@gmail.com> wrote: > > Revision: 57192 > > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57192 > Author: nazgul > Date: 2013-06-02 15:02:17 +0000 (Sun, 02 Jun 2013) > Log Message: > ----------- > Fix #35587: Cycles: image movie to single image crashing > > Crash was happening on windows platforms only and was caused > by some specifics about how CRT works. > > Basically, blender and all of the .dll are compiled with /MT > flag, which means blender.exe and all .dll are using separate > environments. This makes it impossible to pass file descriptors > from blender to other dll, because it becomes invalid in the dll. > > And this is exactly what was happening: OIIO was trying to open > movie file with all known plugins and one of them was zlib. And > the way OIIO was using zlib API is opening the file using Boost > and passing a file descriptor to zlib. And since zlib was a > dynamic library this lead to general issues using this descriptor > in zlib code. > > Solved by linking to zlib statically. This allows to safely pass > file descriptor to zlib API. Alternative would be to compile all > the stuff with /MD flag, but that's much bigger and less robust > way to fix the issue. > > Tested on windows using msvc2008, scons plus cmake both 32 and 64 > bit versions. Seems to be working fine. > > Further tweaks for mingw and msvc2012 could be needed tho. > > Modified Paths: > -------------- > trunk/blender/CMakeLists.txt > trunk/blender/SConstruct > trunk/blender/build_files/scons/config/linuxcross-config.py > trunk/blender/build_files/scons/config/win32-mingw-config.py > trunk/blender/build_files/scons/config/win32-vc-config.py > trunk/blender/build_files/scons/config/win64-vc-config.py > trunk/blender/build_files/scons/tools/Blender.py > trunk/blender/source/creator/CMakeLists.txt > > Modified: trunk/blender/CMakeLists.txt > =================================================================== > --- trunk/blender/CMakeLists.txt 2013-06-02 14:56:04 UTC (rev 57191) > +++ trunk/blender/CMakeLists.txt 2013-06-02 15:02:17 UTC (rev 57192) > @@ -1088,11 +1088,7 @@ > set(PNG_LIBPATH ${PNG}/lib) # not cmake defined > > set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include) > - if(CMAKE_CL_64) > - set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.lib) > - else() > - set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/zlib.lib) > - endif() > + set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib) > > set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include) > set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib) > > Modified: trunk/blender/SConstruct > =================================================================== > --- trunk/blender/SConstruct 2013-06-02 14:56:04 UTC (rev 57191) > +++ trunk/blender/SConstruct 2013-06-02 15:02:17 UTC (rev 57192) > @@ -910,7 +910,6 @@ > if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', > 'linuxcross'): > dllsources = [] > > - dllsources += ['${BF_ZLIB_LIBPATH}/zlib.dll'] > # Used when linking to libtiff was dynamic > # keep it here until compilation on all platform would be ok > # dllsources += ['${BF_TIFF_LIBPATH}/${BF_TIFF_LIB}.dll'] > > Modified: trunk/blender/build_files/scons/config/linuxcross-config.py > =================================================================== > --- trunk/blender/build_files/scons/config/linuxcross-config.py 2013-06-02 > 14:56:04 UTC (rev 57191) > +++ trunk/blender/build_files/scons/config/linuxcross-config.py 2013-06-02 > 15:02:17 UTC (rev 57192) > @@ -78,7 +78,7 @@ > WITH_BF_ZLIB = True > BF_ZLIB = LIBDIR + '/zlib' > BF_ZLIB_INC = '${BF_ZLIB}/include' > -BF_ZLIB_LIB = 'libz' > +BF_ZLIB_LIB = 'libz_st' > BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' > > WITH_BF_INTERNATIONAL = True > > Modified: trunk/blender/build_files/scons/config/win32-mingw-config.py > =================================================================== > --- trunk/blender/build_files/scons/config/win32-mingw-config.py > 2013-06-02 14:56:04 UTC (rev 57191) > +++ trunk/blender/build_files/scons/config/win32-mingw-config.py > 2013-06-02 15:02:17 UTC (rev 57192) > @@ -78,7 +78,7 @@ > WITH_BF_ZLIB = True > BF_ZLIB = LIBDIR + '/zlib' > BF_ZLIB_INC = '${BF_ZLIB}/include' > -BF_ZLIB_LIB = 'libz' > +BF_ZLIB_LIB = 'libz_st' > BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' > > WITH_BF_INTERNATIONAL = True > > Modified: trunk/blender/build_files/scons/config/win32-vc-config.py > =================================================================== > --- trunk/blender/build_files/scons/config/win32-vc-config.py 2013-06-02 > 14:56:04 UTC (rev 57191) > +++ trunk/blender/build_files/scons/config/win32-vc-config.py 2013-06-02 > 15:02:17 UTC (rev 57192) > @@ -82,7 +82,7 @@ > WITH_BF_ZLIB = True > BF_ZLIB = LIBDIR + '/zlib' > BF_ZLIB_INC = '${BF_ZLIB}/include' > -BF_ZLIB_LIB = 'libz' > +BF_ZLIB_LIB = 'libz_st' > BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' > > WITH_BF_INTERNATIONAL = True > > Modified: trunk/blender/build_files/scons/config/win64-vc-config.py > =================================================================== > --- trunk/blender/build_files/scons/config/win64-vc-config.py 2013-06-02 > 14:56:04 UTC (rev 57191) > +++ trunk/blender/build_files/scons/config/win64-vc-config.py 2013-06-02 > 15:02:17 UTC (rev 57192) > @@ -78,7 +78,7 @@ > WITH_BF_ZLIB = True > BF_ZLIB = LIBDIR + '/zlib' > BF_ZLIB_INC = '${BF_ZLIB}/include' > -BF_ZLIB_LIB = 'libz' > +BF_ZLIB_LIB = 'libz_st' > BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' > > WITH_BF_INTERNATIONAL = True > > Modified: trunk/blender/build_files/scons/tools/Blender.py > =================================================================== > --- trunk/blender/build_files/scons/tools/Blender.py 2013-06-02 14:56:04 > UTC (rev 57191) > +++ trunk/blender/build_files/scons/tools/Blender.py 2013-06-02 15:02:17 > UTC (rev 57192) > @@ -155,12 +155,12 @@ > libincs += Split(lenv['BF_OPENEXR_LIBPATH']) > if lenv['WITH_BF_STATICOPENEXR']: > statlibs += Split(lenv['BF_OPENEXR_LIB_STATIC']) > + if lenv['WITH_BF_ZLIB'] and lenv['WITH_BF_STATICZLIB']: > + statlibs += Split(lenv['BF_ZLIB_LIB_STATIC']) > if lenv['WITH_BF_TIFF']: > libincs += Split(lenv['BF_TIFF_LIBPATH']) > if lenv['WITH_BF_STATICTIFF']: > statlibs += Split(lenv['BF_TIFF_LIB_STATIC']) > - if lenv['WITH_BF_ZLIB'] and lenv['WITH_BF_STATICZLIB']: > - statlibs += Split(lenv['BF_ZLIB_LIB_STATIC']) > if lenv['WITH_BF_FFTW3']: > libincs += Split(lenv['BF_FFTW3_LIBPATH']) > if lenv['WITH_BF_STATICFFTW3']: > @@ -282,10 +282,10 @@ > > if lenv['WITH_BF_OPENEXR'] and not lenv['WITH_BF_STATICOPENEXR']: > syslibs += Split(lenv['BF_OPENEXR_LIB']) > + if lenv['WITH_BF_ZLIB'] and not lenv['WITH_BF_STATICZLIB']: > + syslibs += Split(lenv['BF_ZLIB_LIB']) > if lenv['WITH_BF_TIFF'] and not lenv['WITH_BF_STATICTIFF']: > syslibs += Split(lenv['BF_TIFF_LIB']) > - if lenv['WITH_BF_ZLIB'] and not lenv['WITH_BF_STATICZLIB']: > - syslibs += Split(lenv['BF_ZLIB_LIB']) > if lenv['WITH_BF_FFMPEG'] and not lenv['WITH_BF_STATICFFMPEG']: > syslibs += Split(lenv['BF_FFMPEG_LIB']) > if lenv['WITH_BF_OGG']: > > Modified: trunk/blender/source/creator/CMakeLists.txt > =================================================================== > --- trunk/blender/source/creator/CMakeLists.txt 2013-06-02 14:56:04 UTC (rev > 57191) > +++ trunk/blender/source/creator/CMakeLists.txt 2013-06-02 15:02:17 UTC (rev > 57192) > @@ -538,23 +538,6 @@ > unset(_PYTHON_VERSION_NO_DOTS) > endif() > > - if(CMAKE_CL_64) > - # png is statically linked on win64 > - install( > - FILES ${LIBDIR}/zlib/lib/zlib.dll > - DESTINATION ${TARGETDIR} > - ) > - else() > - #not needed since we link statically, maybe also unneeded for > MinGW? > - if(NOT WITH_MINGW64) > - install( > - FILES > - ${LIBDIR}/zlib/lib/zlib.dll > - DESTINATION ${TARGETDIR} > - ) > - endif() > - endif() > - > if(MSVC) > install( > FILES ${LIBDIR}/pthreads/lib/pthreadVC2.dll > > _______________________________________________ > Bf-blender-cvs mailing list > bf-blender-...@blender.org > http://lists.blender.org/mailman/listinfo/bf-blender-cvs _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers