> The DoxygenBuilder is probably nicer. Just be aware that the Makefile does 
> more 
> than just running doxygen, it sets up a bunch of envvars to configure the 
> docs, 
> and it runs some scripts to create the pseudo-classes to help doxygen 
> understand 
> our class-structure, so just using the Builder won't be enough.

i converted all these makefiles/scripts into python (see attached
SConscript, it is far from finished)

unfortunately, i'm stuck with this error:

scons: *** Multiple ways to build the same target were specified for:
Code/user/html

where do i start debugging this?

a related problem: the bundled ./scons --debug=xxx does not print any
debug information, however the default scons on my machine does?

cheers,
simon

# Source

import os
import SCons.Node.FS
from os.path import basename, join
from SCons.Util import splitext

Import('*')

if _po.getOption('userdocs'):

   # set params for user docs
  DOC_LEVEL        = '1'
  DOC_LEVEL_NAME    = 'user'
  env['DOC_LEVEL_PREDEF']  = ''
  env['DOC_LEVEL_ENABLED'] = ''
  env['OSG_USE_DOC_LEVEL'] = ''

  # get build env to select correct doxygen configuration file
  BUILD_ENV = 'x86_64-unknown-linux-gnu' # TODO: create the correct filename

  # setup doxygen environment variables
  DOCBASEDIR = '.'
  DOCCODEDIR = 'Code'
  env['DOCDIR']     = os.path.join(DOCBASEDIR, DOCCODEDIR, DOC_LEVEL_NAME)

  env['DOC_PROJECT_NAME'] = 'OpenSG'
  versionfile = open('../VERSION', 'r')
  env['DOC_PROJECT_NUMBER'] = versionfile.readline().strip();
  versionfile.close()

  DOCS_BASE = [ '../Source/Base/Base',
                '../Source/Base/Field',
                '../Source/Base/Functors',
                '../Source/Base/Network/Base',
                '../Source/Base/Network/Socket',
                '../Source/Base/StringConversion' ]

  DOCS_SYS  = [ '../Source/System/Action',
                '../Source/System/Action/DrawAction',
                '../Source/System/Action/IntersectAction',
                '../Source/System/Action/RenderAction',
                '../Source/System/Cluster/Base',
                '../Source/System/Cluster/Server',
                '../Source/System/Cluster/Window',
                '../Source/System/Cluster/Window/Base',
                '../Source/System/Cluster/Window/MultiDisplay',
                '../Source/System/Cluster/Window/SortFirst',
                '../Source/System/FieldContainer',
                '../Source/System/FieldContainer/Impl',
                '../Source/System/FileIO',
                '../Source/System/FileIO/Base',
                '../Source/System/FileIO/BIN',
                '../Source/System/FileIO/OBJ',
                '../Source/System/FileIO/OFF',
                '../Source/System/FileIO/OSG',
                '../Source/System/FileIO/RAW',
                '../Source/System/FileIO/WRL',
                '../Source/System/FileIO/ScanParseSkel',
                '../Source/System/GraphOp',
                '../Source/System/Image',
                '../Source/System/Material',
                '../Source/System/NodeCores/Drawables/Base',
                '../Source/System/NodeCores/Drawables/Geometry',
                '../Source/System/NodeCores/Drawables/Misc',
                '../Source/System/NodeCores/Drawables/Particles',
                '../Source/System/NodeCores/Drawables/VolRen',
                '../Source/System/NodeCores/Drawables/Nurbs',
                '../Source/System/NodeCores/Groups/Base',
                '../Source/System/NodeCores/Groups/Light',
                '../Source/System/NodeCores/Groups/Misc',
                '../Source/System/RenderingBackend',
                '../Source/System/State',
                '../Source/System/Statistics',
                '../Source/System/Text',
                '../Source/System/Window' ]

  DOCS_EXP  = [ '../Source/Experimental/NewAction',
                '../Source/Experimental/SHL' ]

  DOCS_X    = ['../Source/WindowSystem/X']
  DOCS_W32  = ['../Source/WindowSystem/WIN32']
  DOCS_GLUT = ['../Source/WindowSystem/GLUT']
  DOCS_QT   = ['../Source/WindowSystem/QT']

  # defines for starter guide generation
  env['DOC_LATEX'] = "NO"
  env['DOC_DOT']   = "NO"
  # DOC_DOT   ?= "YES"
  DOC_INTRO = [os.path.join('tutorial', 'main.dox')]

  # The separate documentation pages
  DOC_TUTORIAL_PAGES = [
          'tutorial/main.dox',
          'tutorial/introduction.dox',
          'tutorial/firstapp.dox',
          'tutorial/basics.dox',
          'tutorial/nodecores.dox',
          'tutorial/geometry.dox',
          'tutorial/light.dox',
          'tutorial/windows.dox',
          'tutorial/traversal.dox',
          'tutorial/multithreading.dox',
          'tutorial/clustering.dox',
          'tutorial/modelling.dox',
          'tutorial/newaction.dox',
          'tutorial/text.dox',
          'tutorial/solutions.dox',
          'tutorial/qt.dox',
          'tutorial/doxypages.dox',
          'Code/acknowledgements.dox',
          'Code/faq.dox' ]

  DOC_OLD_PAGES = ['Code/mainpage.dox'] + DOC_INTRO + [
          'Code/scenegraph.dox',
          '../Source/Base/Base/Base.dox',
          '../Source/System/System.dox',
          '../Source/Base/Field/Field.dox',
          '../Source/Base/Functors/Functors.dox',
          '../Source/Base/Network/Socket.dox',
          '../Source/Base/Network/Connection.dox',
          '../Source/Base/StringConversion/StringConversion.dox',
          '../Source/System/FieldContainer/FieldContainer.dox',
          '../Source/System/Image/Image.dox',
          '../Source/System/NodeCores/NodeCores.dox',
          '../Source/System/NodeCores/Groups/Groups.dox',
          '../Source/System/NodeCores/Groups/Base/GroupsBase.dox',
          '../Source/System/NodeCores/Groups/Light/GroupsLight.dox',
          '../Source/System/NodeCores/Groups/Misc/GroupsMisc.dox',
          '../Source/System/NodeCores/Drawables/Drawables.dox',
          '../Source/System/NodeCores/Drawables/Base/DrawablesBase.dox',
          '../Source/System/NodeCores/Drawables/Geometry/DrawablesGeometry.dox',
          '../Source/System/NodeCores/Drawables/Misc/DrawablesMisc.dox',
          
'../Source/System/NodeCores/Drawables/Particles/DrawablesParticles.dox',
          '../Source/System/State/State.dox',
          '../Source/System/Material/Material.dox',
          '../Source/System/Action/Action.dox',
          '../Source/System/Window/Window.dox',
          '../Source/System/Window/OGLExt.dox',
          '../Source/WindowSystem/WindowSystem.dox',
          '../Source/WindowSystem/GLUT/WindowGlut.dox',
          '../Source/WindowSystem/QT/WindowQt.dox',
          '../Source/WindowSystem/X/WindowX.dox',
          '../Source/WindowSystem/WIN32/WindowWin32.dox',
          '../Source/System/FileIO/FileIO.dox',
          '../Source/System/System.dox',
          '../Source/System/Cluster/Cluster.dox',
          '../Source/System/RenderingBackend/RenderingBackend.dox',
          '../Source/System/Statistics/Statistics.dox' ]

  DOC_PAGES = ['../Common/dummyClasses.dox'] + DOC_TUTORIAL_PAGES + 
DOC_OLD_PAGES

  DOC_LIBS  = DOCS_BASE + DOCS_SYS + DOCS_EXP + DOCS_X + DOCS_W32 + DOCS_GLUT \
                        + DOCS_QT + DOC_PAGES

  env['DOC_IMAGE_PATHES'] = './Images'

  # All the files that are merged to generate the whole documentation
  DOC_FILES = DOC_LIBS + DOC_PAGES
  env['DOC_FILES'] = " ".join(DOC_FILES)

  #DOC_ENV = 'DOC_PROJECT_NAME="' + DOC_PROJECT_NAME \
             #+ '" DOCDIR="' + DOCDIR \
             #+ '" DOC_PROJECT_NUMBER=' + DOC_PROJECT_NUMBER \
             #+ ' DOC_FILES="' + " ".join(DOC_FILES) \
             #+ '" DOC_LATEX="' + DOC_LATEX \
             #+ '" DOC_DOT="' + DOC_DOT \
             #+ '" OSG_USE_DOC_LEVEL="' + DOC_LEVEL \
             #+ '" DOC_LEVEL_PREDEF="' + DOC_LEVEL_PREDEF \
             #+ '" DOC_LEVEL_ENABLED="' + DOC_LEVEL_ENABLED \
             #+ '" DOC_IMAGE_PATHES="' + env['DOC_IMAGE_PATHES'] + '"'

  # find all headers and create dummy classes
  os.system('rm -f ../Common/dummyClasses.list')
  os.system('touch ../Common/dummyClasses.list')

  os.system('for i in ' + " ".join(DOC_LIBS) + ' ; do \
               find $i -name ''*.h'' -print  >> ../Common/dummyClasses.list; \
             done')

  os.system('cat ../Common/dummyClasses.list | xargs perl \
               ../Common/makeDummyClasses > ../Common/dummyClasses.dox')

  os.system('rm -f ../Common/dummyClasses.list')


  #   find all used images and convert them (if necessary)
  #DOC_IMAGE_TYPE = 'html'
  #os.system('rm -f imagelist')
  #os.system('for i in ' + " ".join(DOC_PAGES) + ' ; do \
               #fgrep "\image ' + DOC_IMAGE_TYPE + '" $i  | cut -d'' '' -f3-3 | 
\
               #sed -e ''s|^|Images/|'' >> imagelist;   \
             #done')

  #for line in open('imagelist','r').readlines():
    #ext = line[-3:] # DOES NOT WORK FOR PS FILES...
    #basename = line[:-4]
    #if (ext == 'gif'):
      #os.system('convert -compress none ' + line + ' PS:' + basename + '.eps')
    #if (ext == 'tif'):
      #os.system('convert -compress none ' + line + ' PS:' + basename + '.eps')
    #if (ext == 'jpg'):
      #os.system('convert -compress none ' + line + ' PS:' + basename + '.eps')
    #if (ext == 'fig'):
      #os.system('fig2dev -L eps ' + line + ' > ' + basename + '.eps')
    #if (ext == 'gpl'):
      #os.system('gnuplot ' + line)
    #if (ext == 'ps'):
      #os.system('convert -compress none ' + line + ' PS:' + basename + '.eps')


  #$(MAKE) `cat imagelist`


  #Images/%.eps: Images/%.gif
    #convert -compress none $< PS:$@

  #Images/%.eps: Images/%.tif
    #convert -compress none $< PS:$@

  #Images/%.eps: Images/%.jpg
    #convert -compress none $< PS:$@
  ##  jpeg2ps gives better results, but is not usually available
  ##  jpeg2ps -q $< > $@

  #Images/%.eps: Images/%.fig
    #(cd Images && fig2dev -L eps $(notdir $<) $(notdir $@) )

  #Images/%.eps: Images/%.gpl
    #gnuplot $<

  #Images/%.eps: Images/%.ps
    #cp $< $@
    #touch $@

  #Images/%.eps: Images/%.eps.gz
    #gzip -dc $< > $@
    #touch $@

  #Images/%.eps: Images/%.png
    #convert -compress none $< PS:$@

  #Images/%.png: Images/%.fig
    #(cd Images && fig2dev -L png $(notdir $<) $(notdir $@) )


  #Images/%.png: Images/%.jpg
    #convert  $< $@

  #Images/%.png: Images/%.tif
    #convert  $< $@

  #Images/%.png: Images/%.eps.gz
    #gzip -dc $< | convert - $@

  env.Tool('doxygen', toolpath = '.')
  env.Doxygen('../Common/Doxygen_x86_64-unknown-linux-gnu.cfg')

  #   do doxygen
  #cmd = DOC_ENV + ' doxygen ../Common/Doxygen_'+ BUILD_ENV + '.cfg -d'
  #print cmd
  #os.system(cmd)

  os.system('rm -f ../Common/dummyClasses.dox')

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to