hi andreas

> I made some changes can you test it with the attached SConstruct file 
> just copy it into your OpenSG directory.
> BTW did you solve the xmlpp link problems?

i just did a fresh checkout and added your sconstruct file. unfortunately i 
still have the xmlpp problems, here's the link line:

g++ -o Build/linux-gcc/Tools/fcdEdit/opt/fcdCompile -Wl,-s -s 
Build/linux-gcc/Tools/fcdEdit/opt/FieldContainer.o 
Build/linux-gcc/Tools/fcdEdit/opt/Field.o 
Build/linux-gcc/Tools/fcdEdit/opt/main.o 
Build/linux-gcc/Tools/fcdEdit/opt/ParseComandLine.o 
-LBuild/linux-gcc/installed/lib/opt -lOSGBase
Build/linux-gcc/Tools/fcdEdit/opt/FieldContainer.o: In function 
`FieldContainer::readDesc(char const*)':
FieldContainer.cpp:(.text+0x321b): undefined reference to 
`xmlpp::xmlcontext::xmlcontext()'
FieldContainer.cpp:(.text+0x3af8): undefined reference to 
`xmlpp::xmldocument::load(std::basic_istream<char, std::char_traits<char> >&, 
boost::shared_ptr<xmlpp::xmlcontext>&)'
FieldContainer.cpp:(.text+0x4452): undefined reference to 
`xmlpp::xmlerror::get_strerror() const'
collect2: ld returned 1 exit status
scons: *** [Build/linux-gcc/Tools/fcdEdit/opt/fcdCompile] Error 1
scons: building terminated because of errors.

i called it with
scons qt4='/usr/lib/qt4'

i have two libxml++ versions installed, it worked with earlier checkouts...

icarium ~ # ls -lh /usr/lib/libxml++*
-rw-r--r-- 1 root root 226K Jun 15 15:39 /usr/lib/libxml++-1.0.a
-rw-r--r-- 1 root root  854 Jun 15 15:39 /usr/lib/libxml++-1.0.la
lrwxrwxrwx 1 root root   21 Jun 15 15:39 /usr/lib/libxml++-1.0.so -> 
libxml++-1.0.so.1.0.4
lrwxrwxrwx 1 root root   21 Jun 15 15:39 /usr/lib/libxml++-1.0.so.1 -> 
libxml++-1.0.so.1.0.4
-rwxr-xr-x 1 root root 103K Jun 15 15:39 /usr/lib/libxml++-1.0.so.1.0.4
-rw-r--r-- 1 root root 288K Jun 21 16:53 /usr/lib/libxml++-2.6.a
-rw-r--r-- 1 root root  992 Jun 21 16:53 /usr/lib/libxml++-2.6.la
lrwxrwxrwx 1 root root   21 Jun 21 16:53 /usr/lib/libxml++-2.6.so -> 
libxml++-2.6.so.2.0.6
lrwxrwxrwx 1 root root   21 Jun 21 16:53 /usr/lib/libxml++-2.6.so.2 -> 
libxml++-2.6.so.2.0.6
-rwxr-xr-x 1 root root 133K Jun 21 16:53 /usr/lib/libxml++-2.6.so.2.0.6


simon


> 
> Andreas
> 
>>> ok the headers are in /usr/include/qt4 how does it look exactly are 
>>> there any header files or only the following sub directories?
>>>
>>> ActiveQt
>>> Qt
>>> Qt3Support
>>> QtAssistant
>>> QtCore
>>> QtDesigner
>>> QtGui
>>> QtNetwork
>>> QtOpenGL
>>> QtTest
>>> QtUiTools
>>> QtXml
>>
>>
>> yes, i have this layout:
>>
>> [EMAIL PROTECTED] /usr/include/qt4 $ ls
>> Qt          QtAssistant  QtDesigner  QtNetwork  QtSql  QtTest     QtXml
>> Qt3Support  QtCore       QtGui       QtOpenGL   QtSvg  QtUiTools
>>
>> i just compared the gcc errors to the source files and it seems that 
>> these additional subdirs cause much of the trouble... i tried to 
>> prepend Qt/ etc to some #include <...> statements it it seems to help. 
>> but i suppose, this problem is better solved by adding the right paths 
>> to the makefiles.
>>
>>
>>> I could add a easy workaround if the <path>/include or <path>/lib 
>>> doesn't exist it just adds /usr/include/qt4 and /usr/lib/qt4
>>> Is there also a qt3 installation on your machine how does it look 
>>> like is it similiar to qt4?
>>
>>
>> no, the qt3 installation is completely under /usr/qt/3:
>>
>> icarium ~ # cd /usr/qt/3/
>> icarium 3 # ls
>> bin  etc  include  lib  lib64  mkspecs  plugins  tools  translations
>>
>> cheers,
>> simon
>>
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job 
>> easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache 
>> Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>> _______________________________________________
>> Opensg-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/opensg-users
>>
> 
> 
> ------------------------------------------------------------------------
> 
> import fnmatch
> import os.path
> import string
> import sys
> import shutil
> import zipfile
> import glob
> 
> _root_dir = os.getcwd()
> 
> SConsignFile()
> #CacheDir('cache')
> 
> def Glob(match):
>     """Similar to glob.glob, except globs SCons nodes, and thus sees
>     generated files and files from build directories.  Basically, it sees
>     anything SCons knows about."""
>     def fn_filter(node):
>         fn = str(node)
>         return fnmatch.fnmatch(os.path.basename(fn), match)
> 
>     here = Dir('.')
> 
>     children = here.all_children()
>     nodes = map(File, filter(fn_filter, children))
>     node_srcs = [n.srcnode() for n in nodes]
> 
>     src = here.srcnode()
>     if src is not here:
>         src_children = map(File, filter(fn_filter, src.all_children()))
>         for s in src_children:
>             if s not in node_srcs:
>                 nodes.append(File(os.path.basename(str(s))))
> 
>     return nodes
> 
> Export('Glob')
> 
> PLATFORM = DefaultEnvironment().get('PLATFORM')
> 
> class unzip:
>     def __init__(self, verbose = False, percent = 10):
>         self.verbose = verbose
>         self.percent = percent
>         
>     def extract(self, file, dir):
>         if not dir.endswith(':') and not os.path.exists(dir):
>             os.mkdir(dir)
> 
>         zf = zipfile.ZipFile(file)
> 
>         # create directory structure to house files
>         self._createstructure(file, dir)
> 
>         num_files = len(zf.namelist())
>         percent = self.percent
>         divisions = 100 / percent
>         perc = int(num_files / divisions)
> 
>         # extract files to directory structure
>         for i, name in enumerate(zf.namelist()):
> 
>             if self.verbose == True:
>                 print "Extracting %s" % name
>             elif (i % perc) == 0 and i > 0:
>                 complete = int (i / perc) * percent
>                 print "%s%% complete" % complete
> 
>             if not name.endswith('/'):
>                 outfile = open(os.path.join(dir, name), 'wb')
>                 outfile.write(zf.read(name))
>                 outfile.flush()
>                 outfile.close()
> 
> 
>     def _createstructure(self, file, dir):
>         self._makedirs(self._listdirs(file), dir)
> 
> 
>     def _makedirs(self, directories, basedir):
>         """ Create any directories that don't currently exist """
>         for dir in directories:
>             curdir = os.path.join(basedir, dir)
>             if not os.path.exists(curdir):
>                 os.mkdir(curdir)
> 
>     def _listdirs(self, file):
>         """ Grabs all the directories in the zip structure
>         This is necessary to create the structure before trying
>         to extract the file to it. """
>         zf = zipfile.ZipFile(file)
> 
>         dirs = []
> 
>         for name in zf.namelist():
>             if name.endswith('/'):
>                 dirs.append(name)
> 
>         dirs.sort()
>         return dirs
> 
> 
> 
> def get_timestamp(file):
>     if os.path.exists(file):
>         return int(os.path.getmtime(file))
>     else:
>         return 0
> 
> 
> def MyInstall(dst, src):
>     if get_timestamp(src) == get_timestamp(dst):
>         return 0
> 
>     try:
>         os.unlink(dst)
>     except OSError:
>         pass
> 
>     try:
>         import stat
>         # Create directories if not existent.
>         if not os.path.isdir(os.path.dirname(dst)):
>             os.makedirs(os.path.dirname(dst))
>         shutil.copy2(src, dst)
> 
>         st=os.stat(src)
>         os.chmod(dst, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
>         print 'INSTALLED "%s"' % (dst)
>         return 0
>     except (IOError, os.error), why:
>         print "Couldn't install %s: %s" % (`dst`, str(why))
>         return -1
> 
> Export('MyInstall')
> 
> def AppendFilesUnique(files, adds):
>     for add in adds:
>         found = 0
>         for file in files:
>             filename = str(file)
>             if filename.find(add) > 0:
>                 found = 1
>                 break;
>         if found == 0:
>             files.append(add)
> 
> Export('AppendFilesUnique')
> 
> # qt stuff
> 
> def GetMocSources(sources):
>     # create ui source
>     new_sources = []
>     for source in sources:
>         srcname = os.path.basename(str(source))
>         new_sources.append(srcname[:-2] + "_moc.cpp")
>     return new_sources
> 
> Export('GetMocSources')
> 
> def CreateMocSources(env, sources):
>     # create moc source
>     for source in sources:
>         srcname = os.path.basename(str(source))
>         if srcname[-2:] == '.h':
>             # we should scan for Q_OBJECT ...
>             target = srcname[:-2] + "_moc.cpp"
>             env.Command(target, source, ["moc $SOURCES -o $TARGET"])
> 
> Export('CreateMocSources')
> 
> def CreateMoc4Sources(env, sources):
>     # create moc source
>     for source in sources:
>         srcname = os.path.basename(str(source))
>         if srcname[-2:] == '.h':
>             # we should scan for Q_OBJECT ...
>             target = srcname[:-2] + "_moc.cpp"
> 
>             qt4include = os.path.join(_po.getOption('qt4'), 'include', 
> 'QtDesigner')
>             if not os.path.exists(qt4include):
>                 qt4include = '/usr/include/qt4/QtDesigner'
> 
>             include = "-I"+ qt4include
>             env.Command(target, source, ["moc " + include + " -DOSG_WITH_QT 
> $SOURCES -o $TARGET"])
> 
> Export('CreateMoc4Sources')
> 
> def GetUiSources(sources):
>     # create ui source
>     new_sources = []
>     new_headers = []
>     for source in sources:
>         srcname = os.path.basename(str(source))
>         name = srcname[:-3]
>         new_sources.append("uic_" + name + ".cpp")
>         new_headers.append("uic_" + name + ".h")
>     return new_sources, new_headers
> 
> Export('GetUiSources')
> 
> def CreateUiSources(env, sources):
>         # create ui source
>         cpp_sources = []
>         ui_moc_h_sources = []
>         for source in sources:
>             srcname = os.path.basename(str(source))
>             name = srcname[:-3]
>             target1 = "uic_" + name + ".h"
>             env.Command(target1, source, ["uic -o $TARGET $SOURCES"])
>             target2 = "uic_" + name + ".cpp"
>             env.Command(target2, source, ["uic -o $TARGET -impl " + target1 + 
> " $SOURCES"])
>             cpp_sources.append(target2)
>             ui_moc_h_sources.append(target1)
>         return cpp_sources, ui_moc_h_sources
> 
> Export('CreateUiSources')
> 
> def CreateWinHeaders(env):
> 
>     if sys.platform != 'win32':
>         return
> 
>     build_dir = str(env['BUILD_DIR'])
>     path = os.path.join(build_dir, 'Source', 'Base')
> 
>     # create directories
>     if not os.path.isdir(path):
>         os.makedirs(path)
> 
>     filename = os.path.join(path, 'unistd.h')
>     if not os.path.exists(filename):
>         unistd_h = open(filename, 'w')
>         unistd_h.close()
>         MyInstall(os.path.join(build_dir, 'installed', 'include', 'OpenSG', 
> 'unistd.h'), filename)
>     
>     if tc.get_name() == 'win32-icl':
>         filename = os.path.join(path, 'xtree')
>         if not os.path.exists(filename):
>             shutil.copy2(os.path.join(build_dir, '..', '..', 'VSBuild', 
> 'VS6', 'xtree'), filename)
>             MyInstall(os.path.join(build_dir, 'installed', 'include', 
> 'OpenSG', 'xtree'), filename)
> 
> def CreateConfiguredHeader(env):
> 
>     build_dir = str(env['BUILD_DIR'])
>     path = os.path.join(build_dir, 'Source', 'Base')
> 
>     is_win32 = 0
>     is_linux = 0
> 
>     if sys.platform == 'win32':
>         is_win32 = 1
>     elif sys.platform == 'linux2':
>         is_linux = 1
> 
>     filename = os.path.join(path, 'OSGConfigured.h')
>     
>     if not os.path.exists(filename):
> 
>         # Create directories if not existent.
>         if not os.path.isdir(path):
>             os.makedirs(path)
>     
>         configured_h = open(filename, 'w')
>         
>         configured_h.write("""
> /*---------------------------------------------------------------------------*\
>  *                                OpenSG                                     *
>  *                                                                           *
>  *                                                                           *
>  *                     Copyright 2000,2001 by OpenSG Forum                   *
>  *                                                                           *
>  *   contact: [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]       *
>  *                                                                           *
> \*---------------------------------------------------------------------------*/
> /*---------------------------------------------------------------------------*\
>  *                                License                                    *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
> \*---------------------------------------------------------------------------*/
> /*---------------------------------------------------------------------------*\
>  *                                Changes                                    *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
>  *                                                                           *
> \*---------------------------------------------------------------------------*/
> 
> //
> // This file was automatically generated by configuration script.
> //
> 
> #ifndef _OSGCONFIGURED_H_
> #define _OSGCONFIGURED_H_
> 
> #if defined (OSG_USE_WINTHREADS)
> #define OSG_ASPECT_USE_LOCALSTORAGE 1
> #endif
> 
> #if defined(OSG_WIN_TYPES)
> /* #undef OSG_BOOL_IS_UNSIGNED */
> #endif
> 
> #define OSG_DEFAULT_LOG_LEVEL LOG_WARNING
> #define OSG_DEFAULT_LOG_TYPE LOG_STDERR
> 
> #ifndef OSG_DEFAULT_LOG_LEVEL
> #    define OSG_DEFAULT_LOG_LEVEL LOG_WARNING
> #endif
> 
> #ifndef OSG_DEFAULT_LOG_TYPE
> #    define OSG_DEFAULT_LOG_TYPE LOG_STDERR 
> #endif
> 
> /* #undef OSG_DISABLE_DEPRECATED */
> 
> #if defined(OSG_DEBUG)
> /* #undef OSG_DEBUG_FCPTR */
> /* #undef OSG_DEBUG_NO_FCPTR_ARITHM */
> #endif
> 
> #define OSG_OPT_DRAWTREE 1
> 
> /* #undef OSG_PTHREAD_ELF_TLS */
> 
> /* #undef OSG_NO_GLUT_GLSUBDIR */
> 
> #if defined(WIN32) && ! defined(__ICL)
> #pragma warning( disable : 4786 4661 4305 )
> #endif
> 
> /* #undef OSG_SGI_USE_PTHREAD */
> #define OSG_SGI_USE_SPROC 1
> 
> #if defined(__sgi)
> #   if defined(OSG_SGI_USE_PTHREAD)
> #       define OSG_USE_PTHREADS
> #       define OSG_ASPECT_USE_PTHREADKEY
> /* #       undef  OSG_USE_SPROC */
> #   else
> #       define OSG_USE_SPROC
> #   endif
> #endif
> 
> /* #undef OSG_USE_MPATROL */
> 
> #if defined(OSG_USE_MPATROL)
> #define MP_NONEWDELETE 1
> #include <mpatrol.h>
> #endif
> 
> /* #undef OSG_ICC_GNU_COMPAT */
> 
> #endif
>         """)
> 
>         #if is_win32:
>         #    configured_h.write('\n')
> 
>         configured_h.write('\n') # add new line
>         configured_h.close()
> 
>     MyInstall(os.path.join(build_dir, 'installed', 'include', 'OpenSG', 
> 'OSGConfigured.h'), filename)
> 
> def InstallProgram(env, prog):
>     # HACK install manifest file on msvc80 compiler.
>     if _po.getOption('compiler') == 'msvc80' and len(prog) > 0:
>         prog.append(File(prog[0].abspath + '.manifest'))
>     if env.get('OSG_PROGDIR'):
>         env.Install('$PREFIX/lib/$OSG_PROGDIR', prog)
>     else:
>         env.Install('$PREFIX/lib', prog)
> 
> def BuildProgram(tc, name, sources, tools=[], updates=[], **kw):
>     from os.path import basename, join
>     from SCons.Util import splitext
> 
>     for env in tc.get_env_list():
>         env = env.Copy()
>         for t in tools:   env.Tool(t)
>         for u in updates: u(env)
>         apply(env.Append, [], kw)
> 
>         def base(n): return splitext(basename(str(n)))[0]
>         objects = [env.Object("${OSG_OBJDIR}/" + base(k), k) for k in sources]
> 
>         target = name + '${OSG_PROGSUF}'
>         if env.get('OSG_PROGDIR'):
>             target = join('$OSG_PROGDIR', target)
> 
>         prog = env.Program(target, objects)
>         InstallProgram(env, prog)
> 
> 
> class OpenSGLibrary:
>     def __init__(self, libraries):
>         if type(libraries) != type([]):
>             libraries = [libraries]
>         self.libraries = libraries
> 
>     def __call__(self, env):
>         if env.get('OSG_LIBDIR'):
>             libdir = env['PREFIX'].Dir('lib').Dir(env['OSG_LIBDIR'])
>         else:
>             libdir = env['PREFIX'].Dir('lib')
> 
>         env.AppendUnique(LIBPATH = [Dir(libdir)])
>         
>         for lib in self.libraries:
>             # filter out OSGWindowX lib on win32 platform.
>             if lib != 'OSGWindowX' or env['PLATFORM'] != 'win32':
>                 env.AppendUnique(LIBS = [lib + '$OSG_LIBSUF'])
> 
> 
> Export('BuildProgram OpenSGLibrary')
> 
> 
> 
> def CreateEnvironment(*args, **kw):
>     "Creates an environment with some things that always have to be set."
>     env = apply(Environment, args, kw)
>     env['ENV']['HOME'] = os.environ.get('HOME')
>     return env
> 
> 
> win32_defines = ['WIN32', '_WINDOWS', 'WINVER=0x0400', 
> '_WIN32_WINDOWS=0x0410',
>                  '_WIN32_WINNT=0x0400',
>                  'STRICT', 'NOMINMAX']
> 
> # with this define I get identifier "htonl" is undefined.
> #win32_defines += ['WIN32_LEAN_AND_MEAN']
> 
> # OSGConfigured.h stuff
> 
> win32_defines += ['_OSG_HAVE_CONFIGURED_H_']
> 
> #win32_defines += ['OSG_ASPECT_USE_LOCALSTORAGE=1', 'OSG_DEFAULT_LOG_TYPE=2',
> #                  'OSG_DEFAULT_LOG_LEVEL=2']
> 
> # ok we need to add some kind of configure for creating the OSGConfigured.h 
> header file.
> # '_OSG_HAVE_CONFIGURED_H_'
> 
> class PlatformOptions:
>     def __init__(self, opts):
>         self.de = DefaultEnvironment()
> 
>         # check the QTDIR variable and set 'yes'
>         opts.Add(PackageOption('qt', 'Enable qt3 support', 'no'))
>         opts.Add(PackageOption('qt4', 'Enable qt4 support', 'no'))
> 
>         opts.Add(PackageOption('cg', 'Enable cg support', 'no'))
> 
>         opts.Add(BoolOption('gif', 'Enable gif support', 1))
> 
>         self.package_options = ['tif', 'jpg', 'png', 'jasper', 'exr', 'glut', 
> 'zlib']
>         
>         if self.de.get('PLATFORM') == 'cygwin':
>             print "Not supported yet!"
>         elif self.de.get('PLATFORM') == 'win32':
>             opts.Add(EnumOption('compiler', 'Use compiler', 'icl',
>                                     allowed_values=('gcc', 'icl', 'msvc70', 
> 'msvc71', 'msvc80', 'msvc80x64', 'mspsdkx64')))
>             
>             # try to find the supportlibs directory.
>             current_dir = Dir('.').abspath
>             supportlibs = 'no'
>             if os.path.exists(os.path.join(current_dir , '..', 'supportlibs', 
> 'include', 'png.h')):
>                 supportlibs = 'yes'
>             else:
>                 # unzip supportlibs
>                 print 'unzipping win32 supportlibs ...'
>                 un = unzip()
>                 un.extract(os.path.join(current_dir , 'dist', 'win', 
> 'supportlibs.zip'),
>                            os.path.join(current_dir , '..', 'supportlibs'))
>                 if os.path.exists(os.path.join(current_dir , '..', 
> 'supportlibs', 'include', 'png.h')):
>                     supportlibs = 'yes'
> 
>             for option in self.package_options:
>                 opts.Add(PackageOption(option, 'Enable ' + option + ' 
> support', supportlibs))
>         else:
>             if sys.platform == 'linux2':
>                 opts.Add(EnumOption('compiler', 'Use compiler', 'gcc',
>                                     allowed_values=('gcc')))
>                 
>                 for option in self.package_options:
>                     enable = 'yes'
>                     # on linux as default we disable jasper and exr support.
>                     if option == 'jasper' or option == 'exr':
>                         enable = 'no'
>                     opts.Add(PackageOption(option, 'Enable ' + option + ' 
> support', enable))
> 
>         # add common options
>         opts.Add(EnumOption('type', 'Compile dbg, opt or both', 'opt',
>                             allowed_values=('dbg', 'opt', 'both', 'dbgopt')))
> 
>         opts.Add(BoolOption('gv_beta', 'enable gv beta', 0))
> 
>         opts.Add(BoolOption('invalid_pointer_check', 'enable invalid pointer 
> check', 0))
> 
>         # contrib
>         opts.Add(BoolOption('contrib_cgchunk', 'enable contrib CGChunk', 0))
>         opts.Add(BoolOption('contrib_cgfxmaterial', 'enable contrib 
> CGFXMaterial', 0))
>         opts.Add(BoolOption('contrib_cgfxmaterial2', 'enable contrib 
> CGFXMaterial2', 0))
>         opts.Add(BoolOption('contrib_drawfunctorcore', 'enable contrib 
> DrawFunctorCore', 0))
>         opts.Add(BoolOption('contrib_ply', 'enable ply loader', 0))
>         opts.Add(BoolOption('contrib_terrain', 'enable terrain rendering 
> node', 0))
> 
>         opts.Add(PackageOption('contrib_performer_loader', 'Enable contrib 
> performer loader', 'no'))
> 
>         #tests
>         opts.Add(BoolOption('tests', 'compile test programs', 0))
> 
>         opts.Update(self.de)
> 
>     def getOption(self, opt):
>         return self.de.get(opt)
> 
>     def getPackageOptions(self):
>         return self.package_options
> 
>     def buildDbgOpt(self):
>         return (self.getOption('type') == 'dbgopt')
> 
>     def buildDbg(self):
>         return (self.getOption('type') == 'dbg' or self.getOption('type') == 
> 'both')
>     
>     def buildOpt(self):
>         return (self.getOption('type') == 'opt' or self.getOption('type') == 
> 'both')
> 
>     def getPlatform(self):
>         return self.de.get('PLATFORM')
> 
> def moveGVBetaFile(base, file):
>     src = os.path.join(base, file)
>     dst = os.path.join(base, 'tmp_gv')
>     if not os.path.exists(dst):
>         os.makedirs(dst)
>     dst = os.path.join(base, 'tmp_gv', file)
>     if os.path.exists(src) and not os.path.exists(dst):
>         shutil.move(src, dst)
>     if os.path.exists(src):
>         os.unlink(src)
> 
> def unmoveGVBetaFile(base, file):
>     src = os.path.join(base, 'tmp_gv', file)
>     dst = os.path.join(base, file)
>     if os.path.exists(src):
>         if os.path.exists(dst):
>             os.unlink(dst)
>         shutil.move(src, base)
> 
>     dst = os.path.join(base, 'tmp_gv')
>     if os.path.exists(dst):
>         # if the directory is not empty ignore the exception.
>         try:
>             os.rmdir(dst)
>         except:
>             dummy = 1
> 
> def moveGVBetaFiles():
>     current_dir = Dir('.').abspath
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                    'OSGTypeBase.h')
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                    'OSGTypeBase.cpp')
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                    'OSGTypeFactory.h')
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                    'OSGTypeFactory.cpp')
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'System', 'FileIO', 
> 'OBJ'),
>                    'OSGOBJSceneFileType.cpp')
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'System', 'FileIO', 
> 'WRL'),
>                    'OSGVRMLSceneFileType.h')
> 
>     moveGVBetaFile(os.path.join(current_dir, 'Source', 'System', 'FileIO', 
> 'WRL'),
>                    'OSGVRMLSceneFileType.cpp')
> 
> 
> def unmoveGVBetaFiles():
>     current_dir = Dir('.').abspath
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                      'OSGTypeBase.h')
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                      'OSGTypeBase.cpp')
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                      'OSGTypeFactory.h')
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'Base', 'Base'),
>                      'OSGTypeFactory.cpp')
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'System', 'FileIO', 
> 'OBJ'),
>                      'OSGOBJSceneFileType.cpp')
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'System', 'FileIO', 
> 'WRL'),
>                      'OSGVRMLSceneFileType.h')
> 
>     unmoveGVBetaFile(os.path.join(current_dir, 'Source', 'System', 'FileIO', 
> 'WRL'),
>                      'OSGVRMLSceneFileType.cpp')
> 
> 
> class ToolChain:
>     def __init__(self, name, **kw):
>         self.name = name
>         self.env = apply(CreateEnvironment, [], kw)
>         
>         # add all package include and lib paths
>         # ok need to move this in the SConscript files ...
>         # only OSGSystem need the image libs.
>         # only OSGWindowGLUT need the glut lib.
>         for option in _po.getPackageOptions():
>             if isinstance(_po.getOption(option), str):
>                 self.env.Append(CPPPATH = 
> [os.path.join(_po.getOption(option), 'include')])
>                 # HACK but the OpenEXR headers are broken.
>                 if option == 'exr':
>                     self.env.Append(CPPPATH = 
> [os.path.join(_po.getOption(option), 'include', 'OpenEXR')])
>                 self.env.Append(LIBPATH = 
> [os.path.join(_po.getOption(option), 'lib')])
> 
>         # add OSG_WITH defines
>         if _po.getOption('glut'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_GLUT'])
>         if _po.getOption('jpg'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_JPG'])
>         if _po.getOption('tif'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_TIF'])
>         if _po.getOption('png'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_PNG'])
>         if _po.getOption('gif'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_GIF'])
>         if _po.getOption('jasper'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_JASPER'])
>         if _po.getOption('exr'):
>             self.env.Append(CPPDEFINES = ['OSG_WITH_IMF'])
> 
>         if _po.getOption('qt'):
>             #if isinstance(_po.getOption('qt'), str):
>             self.env.PrependENVPath('PATH', os.path.join(_po.getOption('qt'), 
> 'bin'))
>             self.env['QTCPPPATH'] = [os.path.join(_po.getOption('qt'), 
> 'include')]
>             self.env['QTLIBPATH'] = [os.path.join(_po.getOption('qt'), 'lib')]
> 
>             if self.env.get('PLATFORM') == 'win32':
>                 # auto detect qt lib name with version number
>                 libnames = glob.glob(os.path.join(_po.getOption('qt'), 'lib', 
> 'qt-mt*.lib'))
>                 if len(libnames) > 0:
>                     libname = os.path.basename(libnames[0])
>                     libname = libname[:-4]
>                     self.env['OSG_WINDOW_QT_LIBS'] = [libname]
>                 else:
>                     print "Couldn't find qt-mt*.lib file!"
>             else:
>                 self.env['OSG_WINDOW_QT_LIBS'] = ['qt-mt']
> 
>         if _po.getOption('qt4'):
>             #if isinstance(_po.getOption('qt4'), str):
>             qt4bin = os.path.join(_po.getOption('qt4'), 'bin')
>             if not os.path.exists(qt4bin):
>                 print "Couldn't find", qt4bin, "using /usr/bin/qt4"
>                 qt4bin = '/usr/bin/qt4'
> 
>             qt4include = os.path.join(_po.getOption('qt4'), 'include')
>             if not os.path.exists(qt4include):
>                 print "Couldn't find", qt4include, "using /usr/include/qt4"
>                 qt4include = '/usr/include/qt4'
> 
>             qt4lib = os.path.join(_po.getOption('qt4'), 'lib')
>             if not os.path.exists(qt4lib):
>                 print "Couldn't find", qt4lib, "using /usr/lib/qt4"
>                 qt4lib = '/usr/lib/qt4'
> 
>             self.env.PrependENVPath('PATH', qt4bin)
>             self.env['QT4CPPPATH'] = [qt4include,
>                                       os.path.join(qt4include, 'ActiveQt'),
>                                       os.path.join(qt4include, 'Qt'),
>                                       os.path.join(qt4include, 'Qt3Support'),
>                                       os.path.join(qt4include, 'QtAssistant'),
>                                       os.path.join(qt4include, 'QtCore'),
>                                       os.path.join(qt4include, 'QtDesigner'),
>                                       os.path.join(qt4include, 'QtGui'),
>                                       os.path.join(qt4include, 'QtNetwork'),
>                                       os.path.join(qt4include, 'QtOpenGL'),
>                                       os.path.join(qt4include, 'QtTest'),
>                                       os.path.join(qt4include, 'QtUiTools'),
>                                       os.path.join(qt4include, 'QtXml')]
> 
>             self.env['QT4LIBPATH'] = [qt4lib]
> 
>             if self.env.get('PLATFORM') == 'win32':
>                 self.env['OSG_WINDOW_QT4_LIBS'] = ['Qt3Support4', 'QtCore4', 
> 'QtGui4', 'QtNetwork4', 'QtOpenGL4', 'QtXml4', 'QtSql4']
>             else:
>                 self.env['OSG_WINDOW_QT4_LIBS'] = ['Qt3Support', 'QtCore', 
> 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtXml', 'QtSql']
> 
>         if _po.getOption('cg'):
>             if isinstance(_po.getOption('cg'), str):
>                 self.env['CGCPPPATH'] = [os.path.join(_po.getOption('cg'), 
> 'include')]
>                 self.env['CGLIBPATH'] = [os.path.join(_po.getOption('cg'), 
> 'lib')]
>                 if self.env.get('PLATFORM') == 'win32':
>                     if _po.getOption('contrib_cgfxmaterial'):
>                         self.env['OSG_CG_LIBS'] = ['Cg', 'CgGL', 'CgFXParser']
>                     else:
>                         self.env['OSG_CG_LIBS'] = ['Cg', 'CgGL']
>                 else:
>                     if _po.getOption('contrib_cgfxmaterial'):
>                         self.env['OSG_CG_LIBS'] = ['Cg', 'CgGL', 'CgFXGL']
>                     else:
>                         self.env['OSG_CG_LIBS'] = ['Cg', 'CgGL']
> 
>         if _po.getOption('gv_beta'):
>             print 'Compiling with gv beta enabled!'
>             self.env.Append(CPPDEFINES = ['OSG_GV_BETA'])
>             moveGVBetaFiles()
>         else:
>             unmoveGVBetaFiles()
> 
>         if _po.getOption('invalid_pointer_check'):
>             self.env.Append(CPPDEFINES = ['OSG_INVALID_PTR_CHECK'])
> 
>         # add include path for OSGConfigured.h file
>         self.env.Append(CPPPATH=[Dir(os.path.join('Build', self.name, 
> 'Source', 'Base'))])
> 
>     def get_name(self):
>         return self.name
> 
>     def get_env(self):
>         """Returns base environment for this tool chain."""
>         return self.env
> 
>     def get_env_list(self):
>         """Returns list of customized environment configurations
>         (debug, opt, etc.) for this tool chain."""
>         env = self.env.Copy()
>         env['OSG_OBJDIR']  = 'normal'
>         env['OSG_LIBSUF']  = ''
>         env['OSG_PROGSUF'] = ''
>         return [env]
> 
>     def is_win32(self):
>         return 0
> 
> class win32(ToolChain):
>     def __init__(self, name):
>         ToolChain.__init__(self, name)
> 
>         env = self.get_env()
> 
>         current_dir = Dir('.').abspath
>         supportlibs = ''
>         if os.path.exists(os.path.join(current_dir, '..', 'supportlibs')):
>             supportlibs = os.path.join(current_dir, '..', 'supportlibs')
> 
>         if len(supportlibs) > 0:
>             env.AppendENVPath('INCLUDE', supportlibs + os.sep + 'include')
>             # HACK but the OpenEXR headers are broken.
>             env.AppendENVPath('INCLUDE', supportlibs + os.sep + 
> 'include/OpenEXR')
>             env.AppendENVPath('LIB', supportlibs + os.sep + 'lib')
>             #print 'Added supportlibs path (' + supportlibs + ')'
> 
>         slibs = []
>         if _po.getOption('jpg'):
>             slibs.append('libjpeg')
>         if _po.getOption('tif'):
>             slibs.append('tif32')
>         if _po.getOption('png'):
>             slibs.append('libpng')
>             slibs.append('zlib')
>         if _po.getOption('jasper'):
>             slibs.append('libjasper')
>         if _po.getOption('exr'):
>             slibs.append('IlmImf')
> 
>         env['OSG_BASE_LIBS'] = []
>         env['OSG_SYSTEM_LIBS'] = ['opengl32', 'glu32', 'glu32.lib', 'gdi32'] 
> + slibs
>         env['OSG_WINDOW_GLUT_LIBS'] = ['glut32', 'opengl32', 'glu32.lib', 
> 'gdi32']
> 
>     def is_win32(self):
>         return 1
> 
> class win32_icl_base(win32):
>     def __init__(self, name):
>         win32.__init__(self, name)
>         env = self.get_env()
> 
>         #env.Replace(no_import_lib = 1)
> 
>         # icl.py is buggy only looks for version 7.0
>         # also need to get the version number.
>         # I commented this line out "SCons.Tool.msvc.generate(env)"
>         # I don't want the .net include and lib paths.
>         # I have 4 compilers on my machine (ok worst case) icl 6.0, msvc 6.0,
>         # msvc 7.0, msvc 7.1 actually 5 gcc ;-)
>         env.Tool('icl')
>         #env.Tool('mslink')
>         #env.Tool('mslib')
> 
>         # add msvc6 include and lib paths
>         import SCons.Tool.msvc
>         include_path, lib_path, exe_path = 
> SCons.Tool.msvc._get_msvc6_default_paths("6.0", 0)
>         env.PrependENVPath('INCLUDE', include_path)
>         env.PrependENVPath('LIB', lib_path)
> 
>         # add intel compiler bin, include, lib, path for libmmd.lib
>         import SCons.Tool.icl
>         iclversions = ['8.1', '8.0', '7.1', '7.0', '6.0', '5.0']
>         icltop = None
>         iclversion = "600"
>         for iclv in iclversions:
>             icltop = SCons.Tool.icl.get_intel_compiler_top(iclv)
>             if icltop:
>                 # create a three digit version string
>                 iclversion = str(int(float(iclv) * 100))
>                 break
>         if icltop:
>             #print 'Added compiler path (' + icltop + ')'
>             env.PrependENVPath('INCLUDE', os.path.join(icltop, 'Include'))
>             env.PrependENVPath('LIB', os.path.join(icltop, 'Lib'))
>             env.PrependENVPath('PATH', os.path.join(icltop, 'Bin'))
>         else:
>             print "Couldn't find icl compiler!"
> 
>         #print env['ENV']['INCLUDE']
>         #print env['ENV']['LIB']
> 
>         # add the tools path for sed.exe, bison.exe, flex.exe ...
>         tools_exe = os.path.join(_root_dir, 'dist', 'win', 'bin')
>         env.AppendENVPath('PATH', tools_exe)
> 
>         env.Append(CXXFLAGS=['-W4',
>                              '-Qwd985', '-Qwd530', '-Qwd981', '-Qwd193',
>                              '-Qwd444', '-Qwd279',
>                              '-Qwe698', '-Qwe47', '-Qwe373', '-Qwe171', 
> '-Qwe373', '-Qwe261'])
> 
> 
>         env.Append(CPPDEFINES=win32_defines,
>                    CXXFLAGS=['-Qvc6', '-GX', '-Gi-', '-Qansi',
>                              '-Qoption,cpp,--new_for_init', '-GR'])
> 
>         # XXX HACK need to autodetect the compiler version!
>         # '__STDC__'
>         env.Append(CPPDEFINES=['__INTEL_COMPILER_VERSION=' + iclversion])
> 
>         env.Append(LINKFLAGS=['/NODEFAULTLIB'],
>                    LIBS = ['user32', 'kernel32', 'winmm', 'wsock32', 
> 'oldnames'])
> 
>     def get_env_list(self):
>         env = self.get_env()
> 
>         envs = []
> 
>         if _po.buildDbg():
>             dbg = env.Copy()
>             dbg.Append(CXXFLAGS=['/MDd', '/Od', '/RTC1', '/Z7'],
>                        LINKFLAGS=['/DEBUG'],
>                        CPPDEFINES=['_DEBUG', 'OSG_DEBUG'])
>             dbg['OSG_OBJDIR']  = 'dbg'
>             dbg['OSG_LIBSUF']  = 'D'
>             dbg['OSG_PROGSUF'] = 'D'
>             dbg.Append(LIBS = ['msvcprtd', 'msvcrtd'])
>             envs.append(dbg)
> 
>         if _po.buildDbgOpt():
>             dbgopt = env.Copy()
>             dbgopt.Append(CXXFLAGS=['/MD', '/Od', '/RTC1', '/Z7'],
>                           LINKFLAGS=['/DEBUG'],
>                           CPPDEFINES=['_DEBUG', 'OSG_DEBUG'])
>             dbgopt['OSG_OBJDIR']  = 'dbg'
>             dbgopt['OSG_LIBSUF']  = ''
>             dbgopt['OSG_PROGSUF'] = ''
>             dbgopt.Append(LIBS = ['msvcprt', 'msvcrt'])
>             envs.append(dbgopt)
> 
>         if _po.buildOpt():
>             opt = env.Copy()
>             opt.Append(CXXFLAGS=['/MD', '/O2'],
>                        LINKFLAGS=['/OPT:REF', '/OPT:ICF'],
>                        CPPDEFINES=['NDEBUG'])
>             opt['OSG_OBJDIR']  = 'opt'
>             opt['OSG_LIBSUF']  = ''
>             opt['OSG_PROGSUF'] = ''
>             opt.Append(LIBS = ['msvcprt', 'msvcrt'])
>             envs.append(opt)
> 
>         return envs
> 
> class win32_icl(win32_icl_base):
>     def __init__(self):
>         win32_icl_base.__init__(self, 'win32-icl')
>         env = self.get_env()
> 
> class win32_msvc_base(win32):
>     def __init__(self, name):
>         win32.__init__(self, name)
>         env = self.get_env()
> 
>         env.Tool('msvc')
>         env.Tool('mslib')
>         env.Tool('mslink')
> 
>         # add the tools path for sed.exe, bison.exe, flex.exe ...
>         tools_exe = os.path.join(_root_dir, 'dist', 'win', 'bin')
>         env.AppendENVPath('PATH', tools_exe)
> 
>         env.Append(CPPDEFINES=win32_defines)
> 
>         env.Append(LINKFLAGS=['/FORCE:MULTIPLE'])
> 
>         env.Append(LINKFLAGS=['/NODEFAULTLIB'],
>                    LIBS = ['user32', 'kernel32', 'winmm', 'wsock32', 
> 'oldnames'])
> 
>     def get_env_list(self):
>         env = self.get_env()
> 
>         envs = []
> 
>         if _po.buildDbg():
>             dbg = env.Copy()
>             dbg.Append(CXXFLAGS=['/MDd', '/Od', '/ZI', '/RTC1'],
>                        LINKFLAGS=['/DEBUG'],
>                        CPPDEFINES=['_DEBUG', 'OSG_DEBUG'])
>             dbg['OSG_OBJDIR']  = 'dbg'
>             dbg['OSG_LIBSUF']  = 'D'
>             dbg['OSG_PROGSUF'] = 'D'
>             dbg.Append(LIBS = ['msvcprtd', 'msvcrtd'])
>             envs.append(dbg)
> 
>         if _po.buildDbgOpt():
>             dbgopt = env.Copy()
>             dbgopt.Append(CXXFLAGS=['/Z7', '/MD', '/O2', '/Ob1'],
>                           LINKFLAGS=['/DEBUG'],
>                           CPPDEFINES=['NDEBUG'])
>             dbgopt['OSG_OBJDIR']  = 'opt'
>             dbgopt['OSG_LIBSUF']  = ''
>             dbgopt['OSG_PROGSUF'] = ''
>             dbgopt.Append(LIBS = ['msvcprt', 'msvcrt'])
>             envs.append(dbgopt)
> 
>         if _po.buildOpt():
>             opt = env.Copy()
>             opt.Append(CXXFLAGS=['/MD', '/O2', '/Ob1'],
>                        LINKFLAGS=['/OPT:REF', '/OPT:ICF'],
>                        CPPDEFINES=['NDEBUG'])
>             opt['OSG_OBJDIR']  = 'opt'
>             opt['OSG_LIBSUF']  = ''
>             opt['OSG_PROGSUF'] = ''
>             opt.Append(LIBS = ['msvcprt', 'msvcrt'])
>             envs.append(opt)
> 
>         return envs
> 
> class win32_msvc70(win32_msvc_base):
>     def __init__(self):
>         win32_msvc_base.__init__(self, 'win32-msvc70')
>         env = self.get_env()
> 
>         env.Append(CXXFLAGS=['/GX', '/GR', '/FD', '/Zm1200'])
>         # add msvc71 include and lib paths
>         import SCons.Tool.msvc
>         include_path, lib_path, exe_path = 
> SCons.Tool.msvc._get_msvc7_default_paths("7.0", 0)
> 
>         env.PrependENVPath('INCLUDE', include_path)
>         env.PrependENVPath('LIB', lib_path)
>         env.PrependENVPath('PATH', exe_path)
> 
> class win32_msvc71(win32_msvc_base):
>     def __init__(self):
>         win32_msvc_base.__init__(self, 'win32-msvc71')
>         env = self.get_env()
> 
>         env.Append(CXXFLAGS=['/GX', '/GR', '/FD', '/Zm1200'])
> 
>         # add msvc71 include and lib paths
>         import SCons.Tool.msvc
>         include_path, lib_path, exe_path = 
> SCons.Tool.msvc._get_msvc7_default_paths("7.1", 0)
> 
>         env.PrependENVPath('INCLUDE', include_path)
>         env.PrependENVPath('LIB', lib_path)
>         env.PrependENVPath('PATH', exe_path)
> 
> class win32_msvc80(win32_msvc_base):
>     def __init__(self):
>         win32_msvc_base.__init__(self, 'win32-msvc80')
>         env = self.get_env()
> 
>         env.Append(CXXFLAGS=['/Wp64', '/w44258', '/w44996', '/EHsc', '/GR', 
> '/FD',
>                              '/Zm1200', '/Zc:forScope'])
> 
>         #env.Append(LINKFLAGS=['/MANIFEST:NO'])
> 
>         # add msvc80 include and lib paths
>         import SCons.Tool.msvc
>         include_path, lib_path, exe_path = 
> SCons.Tool.msvc._get_msvc8_default_paths("8.0")
> 
>         # HACK
>         #msvc80_path = 'C:/Programme/Microsoft Visual Studio 8/'
>         #mspsdk_path = 'C:/Programme/Microsoft Platform SDK/'
>         #include_path = [msvc80_path + 'VC/include',
>         #                msvc80_path + 'VC/PlatformSDK/include',
>         #                mspsdk_path + 'Include']
>         #lib_path = [msvc80_path + 'VC/lib',
>         #            msvc80_path + 'SDK/v2.0/lib',
>         #            mspsdk_path + 'Lib']
>         #exe_path = [msvc80_path + 'Common7/IDE',
>         #            msvc80_path + 'VC/bin',
>         #            msvc80_path + 'Common7/Tools',
>         #            msvc80_path + 'SDK/v2.0/bin',
>         #            'C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727',
>         #            msvc80_path + 'VC/VCPackages']
> 
>         env.PrependENVPath('INCLUDE', include_path)
>         env.PrependENVPath('LIB', lib_path)
>         env.PrependENVPath('PATH', exe_path)
> 
> class win32_msvc80x64(win32_msvc_base):
>     def __init__(self):
>         win32_msvc_base.__init__(self, 'win32-msvc80x64')
>         env = self.get_env()
> 
>         env.Append(CPPDEFINES =['WIN64'])
>         env.Append(CXXFLAGS=['/Wp64', '/w44258', '/w44996', '/EHsc', '/GR', 
> '/FD',
>                              '/bigobj', '/Zm1200', '/Zc:forScope'])
> 
>         # add msvc80 include and lib paths
>         import SCons.Tool.msvc
>         include_path, lib_path, exe_path = 
> SCons.Tool.msvc._get_msvc8_x64_default_paths("8.0")
> 
>         # HACK
>         #vsinstalldir = 'C:/Program Files (x86)/Microsoft Visual Studio 8/'
>         #vcinstalldir = 'C:/Program Files (x86)/Microsoft Visual Studio 8/VC/'
>         #include_path = [vcinstalldir + 'ATLMFC/INCLUDE',
>         #                vcinstalldir + 'INCLUDE',
>         #                vcinstalldir + 'PlatformSDK/include',
>         #                vsinstalldir + 'SDK/v2.0/include']
>         #lib_path = [vcinstalldir + 'ATLMFC/LIB/amd64',
>         #            vcinstalldir + 'LIB/amd64',
>         #            vcinstalldir + 'PlatformSDK/lib/amd64',
>         #            vsinstalldir + 'SDK/v2.0/LIB/AMD64']
>         #exe_path = [vcinstalldir + 'BIN/amd64',
>         #            vcinstalldir + 'PlatformSDK/bin/win64/amd64',
>         #            vcinstalldir + 'PlatformSDK/bin',
>         #            vcinstalldir + 'VCPackages',
>         #            vsinstalldir + 'Common7/IDE',
>         #            vsinstalldir + 'Common7/Tools',
>         #            vsinstalldir + 'Common7/Tools/bin',
>         #            vsinstalldir + 'SDK/v2.0/bin']
> 
>         env.PrependENVPath('INCLUDE', include_path)
>         env.PrependENVPath('LIB', lib_path)
>         env.PrependENVPath('PATH', exe_path)
> 
>         env.Append(LIBS = ['bufferoverflowu'])
> 
> class win32_mspsdkx64(win32_msvc_base):
>     def __init__(self):
>         win32_msvc_base.__init__(self, 'win32-mspsdkx64')
>         env = self.get_env()
> 
>         # this compiler uses the old vc 6.0 header files we need the define
>         # to detect this in OSGConfig.h
>         env.Append(CPPDEFINES =['OSG_PSDK_COMPILER', 'WIN64'])
>         env.Append(CXXFLAGS=['/Wp64', '/w44258', '/w44996', '/EHsc', '/GR', 
> '/FD',
>                              '/Zm1200', '/Zc:forScope'])
> 
>         # add msvc80 platform sdk include and lib paths
>         import SCons.Tool.msvc
>         include_path, lib_path, exe_path = 
> SCons.Tool.msvc._get_mspsdk_x64_default_paths("8.0")
> 
>         # HACK
>         #include_path = ['C:/Program Files/Microsoft Platform SDK/Include',
>         #                'C:/Program Files/Microsoft Platform 
> SDK/Include/crt',
>         #                'C:/Program Files/Microsoft Platform 
> SDK/Include/crt/sys',
>         #                'C:/Program Files/Microsoft Platform 
> SDK/Include/mfc', 
>         #                'C:/Program Files/Microsoft Platform 
> SDK/Include/atl']
>         #lib_path = ['C:/Program Files/Microsoft Platform SDK/Lib/AMD64',
>         #            'C:/Program Files/Microsoft Platform 
> SDK/Lib/AMD64/atlmfc']
>         #exe_path = ['C:/Program Files/Microsoft Platform 
> SDK/Bin/Win64/x86/AMD64',
>         #            'C:/Program Files/Microsoft Platform SDK/Bin',
>         #            'C:/Program Files/Microsoft Platform SDK/Bin/WinNT',
>         #            'C:/WINDOWS/system32', 'C:/WINDOWS', 
> 'C:/WINDOWS/System32/Wbem']
> 
>         env.PrependENVPath('INCLUDE', include_path)
>         env.PrependENVPath('LIB', lib_path)
>         env.PrependENVPath('PATH', exe_path)
> 
>         env.Append(LIBS = ['bufferoverflowu'])
> 
> class cygwin_gcc(win32):
>     def __init__(self):
>         win32.__init__(self, 'cygwin-gcc')
>         env = self.get_env()
>         env.Tool('mingw')
>         env.Tool('mslink')
>         env.Append(CPPDEFINES=win32_defines,
>                    CXXFLAGS=['-mno-cygwin', '-ftemplate-depth-100'],
>                    LINKFLAGS=['-mno-cygwin'],
>                    OSG_BASE_LIBS = ['winmm', 'ws2_32'])
> 
> class linux_gcc(ToolChain):
>     def __init__(self):
>         ToolChain.__init__(self, 'linux-gcc')
> 
>     def get_env_list(self):
>         env = self.get_env()
> 
>         slibs = []
>         if _po.getOption('jpg'):
>             slibs.append('libjpeg')
>         if _po.getOption('tif'):
>             slibs.append('libtiff')
>         if _po.getOption('png'):
>             slibs.append('libpng')
>             slibs.append('libz')
>         if _po.getOption('jasper'):
>             slibs.append('jasper')
>         if _po.getOption('exr'):
>             slibs.append('IlmImf')
> 
>         env = env.Copy()
>         
>         env.Append(CXXFLAGS=['-ansi', '-use_readonly_const',
>                              '-ftemplate-depth-100', '-fPIC'],
>                    CPPDEFINES=['_GNU_SOURCE', '_OSG_HAVE_CONFIGURED_H_'],
>                    LINKFLAGS = ['-Wl,-s'])
> 
>         # get gcc version
>         #import commands
>         #dummy, gccversionstr = commands.getstatusoutput('gcc -dumpversion')
>         #gccversion = float(gccversionstr[0:3])
>         # doesn't work on 64bit machines :-( compiler bug ...
>         #if gccversion >= 4.0:
>         #    env.Append(CXXFLAGS=['-fvisibility-inlines-hidden'])
> 
>         env['OSG_BASE_LIBS'] = ['pthread', 'dl']
>         env['OSG_SYSTEM_LIBS'] = ['GLU', 'GL'] + slibs
>         env['OSG_WINDOW_GLUT_LIBS'] = ['glut', 'GL']
>         env['OSG_WINDOW_X_LIBS'] = []
> 
>         env['OSG_OBJDIR'] = 'obj'
> 
>         envs = []
> 
>         if _po.buildDbg():
>             dbg = env.Copy()
>             dbg.Append(CXXFLAGS=['-g'],
>                        LINKFLAGS=[''],
>                        CPPDEFINES=['_DEBUG', 'OSG_DEBUG'])
>             dbg['OSG_OBJDIR']  = 'dbg'
>             dbg['OSG_LIBDIR']  = 'dbg'
>             dbg['OSG_PROGDIR'] = 'dbg'
>             envs.append(dbg)
> 
>         if _po.buildOpt():
>             opt = env.Copy()
>             opt.Append(CXXFLAGS=['-O2'],
>                        LINKFLAGS=['-s'],
>                        CPPDEFINES=[])
>             opt['OSG_OBJDIR']  = 'opt'
>             opt['OSG_LIBDIR']  = 'opt'
>             opt['OSG_PROGDIR'] = 'opt'
>             envs.append(opt)
> 
>         return envs
> 
> class unknown(ToolChain):
>     "Specific build type is not known.  Try defaults."
>     def __init__(self):
>         ToolChain.__init__(self, 'unknown')
> 
> def hasICL():
>     f = os.popen('icl -help', 'r')
>     for line in f.xreadlines():
>         if string.find(line, 'Intel') >= 0:
>             return 1
>     return 0
> 
> def SelectToolChain():
>     de = DefaultEnvironment()
>     if de.get('PLATFORM') == 'cygwin':
>         return cygwin_gcc()
>     elif de.get('PLATFORM') == 'win32':
>         msvs_version = de.get('MSVS_VERSION')
>         if _po.getOption('compiler') == 'gcc':
>             return cygwin_gcc()
>         elif _po.getOption('compiler') == 'icl':
>             return win32_icl()
>         elif _po.getOption('compiler') == 'msvc70':
>             return win32_msvc70()
>         elif _po.getOption('compiler') == 'msvc71':
>             return win32_msvc71()
>         elif _po.getOption('compiler') == 'msvc80':
>             return win32_msvc80()
>         elif _po.getOption('compiler') == 'msvc80x64':
>             return win32_msvc80x64()
>         elif _po.getOption('compiler') == 'mspsdkx64':
>             return win32_mspsdkx64()
>         else:
>             print "WARNING: Unsupported MSVS version found: %s.  Trying 
> defaults." % msvs_version
>             return unknown()
>     else:
>         if sys.platform == 'linux2':
>             return linux_gcc()
>         else:
>             print "WARNING: Build toolchain not autodetected.  Trying 
> defaults."
>             return unknown()
> 
> def createOSGConfig(env, target, source):
>     print "createOSGConfig"
>     print 'defines: ', env['CPPDEFINES']
>     print 'cflags: ', env['CXXFLAGS']
>     print 'lflags: ', env['LINKFLAGS']
>     #print 'libs: ', env['LIBPATH']
>     #print 'llibs: ', env['LIBS']
>     #print 'base libs: ', env['OSG_BASE_LIBS']
>     #print 'system libs: ', env['OSG_SYSTEM_LIBS']
>     
>     #print 'glut libs: ', env['OSG_WINDOW_GLUT_LIBS']
>     #print 'windowx libs: ', env['OSG_WINDOW_X_LIBS']
>     #print 'win32 libs: ', env['OSG_WINDOW_WIN32_LIBS']
>     #print 'qt libs: ', env['OSG_WINDOW_QT_LIBS']
>     #print 'qt4 libs: ', env['OSG_WINDOW_QT4_LIBS']
>     #print 'contrib libs: ', env['OSG_CONTRIB_LIBS']
> 
> # Process options.
> 
> opts = Options('options.cache', ARGUMENTS)
> opts.AddOptions(
>     BoolOption('distcc', 'Compile using distcc', 0))
> 
> _po = PlatformOptions(opts)
> Export('_po')
> 
> tc = SelectToolChain()
> print "Detected environment: %s" % tc.get_name()
> Export('tc')
> 
> env = tc.get_env()
> env['OSG_ROOT_DIR'] = _root_dir
> env['BUILD_DIR'] = Dir(os.path.join('Build', tc.get_name()))
> env['PREFIX'] = env['BUILD_DIR'].Dir('installed')
> Default(env['PREFIX'])
> 
> opts.Update(env) # Update the environment with the options.
> opts.Save('options.cache', env)
> Help(opts.GenerateHelpText(env))
> 
> CreateWinHeaders(env)
> CreateConfiguredHeader(env)
> 
> if env['distcc']:
>     distcc = WhereIs('distcc')
>     if distcc:
>         print "Found distcc: " + distcc
>         env['CC']  = ['$(', distcc, '$)', env['CC']]
>         env['CXX'] = ['$(', distcc, '$)', env['CXX']]
>         env['ENV']['DISTCC_HOSTS'] = os.environ.get('DISTCC_HOSTS')
>     else:
>         print "Error: distcc not found in PATH"
> 
> #env.Command('osg-config', 'osg-config.in', createOSGConfig)
> 
> BuildDir(env['BUILD_DIR'], '.', duplicate=0)
> 
> Export('env')
> SConscript(dirs=map(
>     lambda n: env['BUILD_DIR'].Dir(n),
>     ['Source', 'Examples', 'Tools', 'Tutorials']))
> 
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Opensg-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensg-users


-- 

simon haegler       | room ETF C108
computer vision lab | sternwartstrasse 7
D-ITET              | CH-8092 zurich
ETH zurich          | tel +41 44 632 09 84

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to