problems reported by klockwork.com who was very nice and has offered to
provide free source code analisys for us.
This one deals with freeing memory for an object when there is an
error. (The function allocated memory intending to return it but
then ran into problems, and was forgetting to free it before it returned
NULL)
Kent
Adding back some code to booleans that got lost in the Orange merge.
I've also added back the code which checked that meshes were solid
("manifolds") but have the actual check in
intern/boolop/intern/BOP_Interface.cpp, since from my testing it was
not causing crashes or hangs. It *can* give odd results depending on
what you're trying to intersect, but seems useful. Additionally, since
existing bugs in the current code can create non-solid/non-manifold
meshes, seems hypocritical to create a mesh that can't later be used in
another boolean operation.
Previous patch for "problems with STL iterators/vectors that only show up under
Visual Studio 2005" could cause a crash when object used as a boolean modifier
was changed (for example, flipping all the normals). The problem is that result
of boolean operations (apparently) can result in empty meshes. Patched to
use the vector::size operator to check for empty vectors before trying to
check the iterator.
This should bring the projectfiles upto date for msvc7.
Moving these to version 7.1 so that the version 8 people don't have such a hard time importing into 2005.
Build intern.sln, extern.sln and then blender.sln. Enjoy. :p
* This commit is all of the rewrite work done on the SCons system. For
documentation see doc/blender-scons.txt and doc/blender-scons-dev.txt.
Also http://mediawiki.blender.org/index.php/BlenderDev/SconsRefactoring
contains valuable information, along with what still needs to be done.
- linux, os x and windows compile now.
- files are compiled to BF_INSTALLDIR (see config/(platform)-config.py)
- NOTE: Jean-Luc P will commit sometime during the weekend proper
appit() for OS X. For now, copy the resulting binary to an
existing .app bundle.
- features:
- cleaner structure for better maintenance
- cleaner output during compile
- better handling of build options
- general overall speed increase
- see the wiki for more info
Cygwin, FreeBSD and Solaris systems still need work. For these systems:
1) copy a config/(platform)-config.py to ie. config/cygwin-config.py
2) set the proper defaults for your platform
3) mail me at jesterking at letwory dot net with you configuration. if
you need any modifications to the system, do send a patch, too.
I'll be giving first-aid today and tomorrow, after that it'll be all
regular development work :)
/Nathan
here is a quick summary...
Kent
intern/bsp/intern/BSP_CSGMesh_CFIterator.h
removed tri_index (unused variable)
intern/bsp/intern/CSG_BooleanOps.cpp
removed extra ;
intern/string/intern/STR_String.cpp
added <ctype.h>
source/blender/blenkernel/BKE_writeavi.h
moved things around so not doing forward declarations
source/blender/renderconverter/intern/convertBlenderScene.c
changed render.h to render_types.h
source/blender/src/blenderbuttons.c
source/blender/src/editgroup.c
source/blender/src/meshtools.c
added newline
source/gameengine/Ketsji/KX_KetsjiEngine.cpp
commented out include "PIL_time.h" code that requires it is commented out
reading blender/src/writeavicodec.c
(struct keyword to a couple of lines that needed it)
and added:
extern struct Render R;
blender/renderconverter/intern/convertBlenderScene.c
added extern Render R;
added #include "rendercore.h" to get rid of undeclared shade_material_loop
(Not sure if this is right but it fixes it.
Did not fix this problem, is it alright to just pass NULL here or should we chan
ge it to something else:
init_render_materials' : too few
gameengine/Physics/BlOde/OdePhysicsEnvironment.cpp
removed argument to dHashSpaceCreate
commented out dWorldQuickStep since it does not exist
- Added correct .libs to be linked to GP_Ghost
- Fixed incorrect library extensions for the linker (*.lib and not unix *.a)
- Projects have been set to be multi-threaded - projects were being linked to different versions of the CRT
- All projects are now linking to python 2.3 (this fixes an error regarding struct sizes in python)
- Removed invalid source paths from inclusion for the compiler
- Fix dependency issues with the GP_Ghost module
- Proper .dll's are now being copied to their respective locations for debug and release version of blender/blenderplayer
- Warnings have been set to level 2
- Import paths have been updated and organized for the compiler
- Duplicate import paths for the compiler have been removed
- Removed silly silly silly silly unix path-separators from window paths
- Post-Build scripts have been updated where neccessary (XCOPY is retatined)
- Fixed the output of various .lib files (PHY_Sumo and Yafray)
- PHY_Sumo now uses a .pch
- Removed #undef _DEBUG from debug builds :p
- FTF_Font is now contains a debug build and is being set to it's correct output path
- Blender/Blenderplayer/3DPlugin all linkto Debug libs where appropriate (instead of static release libs to avoid conflicts with the CRT)
- Python23_d.dll is now loaded into a true debug output of both blenderplayer and blender debug builds
- msvcrtd.dll is now loaded into a true debug output of both blenderplayer and blender debug builds
- Post-builds now clean up their mess
- ActiveX controller now builds
- BlenderPlayer now builds
- Internal libs now using .pch
- Moved the build directory from /blender/obj to ../build/msvc_7/ to follow precedence with scons builds
- Builds are now organized to follow precedence with scons builds with a /libs and a /intern /extern /source obj folders
- Set the proper build path for opennl
- Forcing BLO_loader source files to follow project defaults
- Added an 'extern' project that mimics the /make build of the 'intern' project
- Extern build includes solid and it's associated builds, ftgl, and freetype
- Added .vcproj files to /extern directory
- Added new extern.sln file to /extern directory
- All project now link to the built solid.lib from the extern project instead of lib/windows
- Removed uneeded XCOPYs commands from post-builds
- Added conditional Directory building to post-builds
- Freetype2 source commit (this is need for the building of a correct MFC linked version of the activeX controller as well as a correct release and debug build of the blender project)
- Ftgl is built and linked by the 'extern' project
- Intern/Extern project are now exporting their proper header files
- PHY_Physics is now linking to the correct set of header files (in build path not source)
- Makesdna builds object files into build directory now
- Projects are now ignoring the CORRECT versions of the CRT's :)
- Renderconverter is now outputting it's obj file to it's own directory instead of /render
- Gen_system is now being built to ../kernel
- BL_src_cre is now being built to /creator
- *.exp and *.ilk are now being cleaned up from linkers
- Libpng.dll and zlib.dll are now being copied to the /bin
- MTDLL build are now available for the correct projects
- ActiveX 3D Plugin now links correctly to solid and freetype2
- Corrected the Preprocessor #define that was labeled incorrectly in FTF_Font and Blender that was causing the FTGL libs to export dll calling conventions.
- Changed the solution configurations to 3D Plugin Release, Debug and Blender Release, Debug for internal and external librarys
- Changed the solution configurations to 3D Plugin Release, Debug and Blender Release, Debug for blender and added 2 new solutions configurations BlenderPlayer Release, Debug
-
- set build_install_all as the default project (if you give me a quarter ill tell you how :)
- set SoundSystem to it's proper dependencies
- updated those silly silly unix path separators
- set project warning levels to something not so noisy
* Blender static now links. By default this option is disabled on all
platforms. Simply set the option in config.opts to 'true'.
* Added the following flags to config.opts:
- HOST_CC. This is the C compiler for the host platform. This value is the
same as TARGET_CC when not cross compiling.
- HOST_CXX. This is the C++ compiler for the host platform. This value is
the same as TARGET_CXX when not cross compiling.
- TARGET_CC. This is the C compiler for the target platform.
- TARGET_CXX. This is the C++ compiler for the target platform.
- TARGET_AR. This is the linker command for linking libraries.
- PATH This is the standard search path
All SConscript files have been updated to reflect these changes. Now it's
possible to change only the root SConstruct file, and all compiler specific
variables are passed automatically to all SConscript files. Of course, this
does not apply to makesdna because there the host and target platform is
different from all other libraries.
To pass a variable that applies to all platforms, all we now have to do is
set the correct value in library_env
Note: as usual, to get the latest options in the config.opts file, first
remove your version.
* libraries are now generated in [BUILD_DIR]/lib
* passed the user_options to all libraries now.
This means I could remove a couple of Export/Import lines.
* Changed the order in source/blender/src/SConscript and
source/gameengine/SConscript.
All libraries are now sorted alphabetically. This has no impact on the build
process.
Materials are exported the best we can do by now. It will look almost as in
blender except for the missing procedural textures and some minor issues.
You have to tweak normal modulation amount to get the desired result cause
is not the same in yafray.
We added a panel in render space to adjust some yafray settings (GI and so)
Also we export transparency and reflection using new raytracing settings,
but that will be changed and improved soon.
Remember that you have to set YFexport path in user defaults and yafray must
be on path (version 0.0.6)
We added the "yafray" button to activate all this stuff in the render window.
Panel and settings are only shown when checked.
So now when activated the code calls yafray export instead of the internal
renderer and finally the resulting image is loaded back into render window's
buffer. So animation is also possible and results can be saved using blender
usual scheme.
You'll need SCons (www.scons.org) to build.
Platforms currently working:
* Linux (me)
- options for quicktime, openal and international disabled
- uses the system libs and include files for building - no option to build
with the precompiled libraries yet.
* Windows (jesterKing)
- builds with quicktime (optional)
- builds with openal (optional)
- builds with international support (optional)
- Use the DOS box to build
- builds with precompiled libraries
* Irix (Hos)
- Uses default Irix compiler
- Not all optimization levels correct yet
- options for quicktime, openal and international disabled
- builds with precompiled libraries
* Cygwin (me)
- has a problem in the linking stage
- uses free build tools (gcc)
- options for quicktime, openal and international disabled
- uses the system libs and include files for building - no option to build
with the precompiled libraries yet.
* MacOS (sgefant)
- builds with quicktime (optional)
- options for openal and international disabled
- builds a nice bundle
- builds with precompiled libraries
Thanks to IanWill for a bugfix in the Linux build.
Note: This is a work in progress. A lot still has to be done - for example the
optional parts are only to be enabled by directly setting 'true' or
'false' in the SConstruct file. This needs to be moved to a user config
file. Also, the .o/.obj files are stored in the source tree. This needs
to be fixed as well.
The game engine is not yet built.
*Fixed boolean buglet in the bsp lib. I have not committed any libraries so you'll
have to do this to see the changes in blender.
*Got the bsp test program working again with the new GHOST createWindow
interface.
*(Visual C++) Modfied some of the dsp in the intern library to NOT prompt when
overwirting old libs and header files. This is the /Y option after XCOPY
Cheers
Laurence.
---------------------------->8----------------------------------------------
g++ -DHAVE_CONFIG_H -I. -I../../../blender/intern/bsp -I../.. -I../../../blender/intern/container -I../../../blender/intern/moto/include -I../../../blender/intern/memutil -I/usr/freeware/include -g -funsigned-char -c ../../../blender/intern/bsp/intern/BSP_CSGMesh.cpp -MT BSP_CSGMesh.lo -MD -MP -MF .deps/BSP_CSGMesh.TPlo -DPIC -o .libs/BSP_CSGMesh.lo
/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.0.4/include/g++/bits/stl_iterator.h: In
constructor `std::__normal_iterator<_Iterator,
_Container>::__normal_iterator(const std::__normal_iterator<_Iter,
_Container>&) [with _Iter = const BSP_MFace*, _Iterator = BSP_MFace*,
_Container = std::vector<BSP_MFace, std::allocator<BSP_MFace> >]':
../../../blender/intern/bsp/intern/BSP_CSGMesh.cpp:270: instantiated from here
/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.0.4/include/g++/bits/stl_iterator.h:474: cannot
convert `const BSP_MFace* const' to `BSP_MFace*' in initialization
*** Error code 1 (bu21)
*** Error code 1 (bu21)
*** Error code 1 (bu21)
*** Error code 1 (bu21)
---------------------------->8----------------------------------------------
The line in question that causes the error is the middle one in this group:
vector<BSP_MFace>::const_iterator f_it_end = FaceSet().end();
vector<BSP_MFace>::const_iterator f_it_begin = FaceSet().begin();
vector<BSP_MFace>::iterator f_it = FaceSet().begin();
Dropping the 'const_' from that middle line enables gcc to compile the
file correctly (this is also consistent with what is going on with other
parts of the file, i.e., stuff that is returned from a begin() method is
declared as vector<BSP_MFace>::iterator instead of
vector<BSP_MFace>::const_iterator.
But I'll be honest: I have no idea what this code does, so if somebody with
better C++ skills wants to check it, then please do.
This change was also tested to compile and run on debian linux/x86
(well, booleans are broken right now, so I wasn't able to do too much
testing).
Chris
I took out the following from the includes in the intern dir that still had
it:
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
Kent
--
mein@cs.umn.edu
(to stop gcc compiler warnings) caused segfaults when
performing intersections (and possibly while doing other
boolean operations). I felt it was best to revert these
changes (I also got rid of the DOS line terminators in
the files). Some more info about the matter can be found
in the first 10 or so posts for Novembor on the old
mailing list:
http://www.soze.com/mailman/private/bf-committers/2002-November/date.html
Chris (Merry Christmas!)
intern/make/msvc_6_0. Changed paths in all these files to build to
lib/windows and use obj/window/intern for object files and other temporary
stuff.
Added project files for guardedalloc and blenkey (in keymaker directory).
blenkey still assumes openssl being installed in lib/windows.
The only thing not automated is is the frozen Python stuff.
Maarten
This saves other OSX developers the trouble of manually running ranlib.
This is not a good solution (because I don't know the correct one) but it works.
Maarten