From 298f0f1f3babde4391646eecad9c63ec2f3f46c2 Mon Sep 17 00:00:00 2001 From: crouzet Date: Fri, 25 Sep 2020 11:58:03 +0200 Subject: [PATCH 1/1] initial commit : transfert of salome configuration files from internal git base --- README | 2 + applications/GCC-6.3.0.pyconf | 24 + applications/MEDCOUPLING-7.8.2.pyconf | 63 + applications/MEDCOUPLING-8.5.0.pyconf | 73 + applications/MEDCOUPLING-9.3.0.pyconf | 69 + applications/MEDCOUPLING-9.4.0-windows.pyconf | 90 + applications/MEDCOUPLING-9.4.0.pyconf | 78 + applications/MEDCOUPLING-9.5.0-MPI.pyconf | 82 + applications/MEDCOUPLING-9.5.0-int64.pyconf | 81 + applications/MEDCOUPLING-9.5.0-windows.pyconf | 91 + applications/MEDCOUPLING-9.5.0.pyconf | 77 + applications/MEDCOUPLING-MPI.pyconf | 83 + applications/MEDCOUPLING-master-int64.pyconf | 84 + .../MEDCOUPLING-master-windows.pyconf | 90 + applications/MEDCOUPLING-master.pyconf | 84 + applications/MEDCOUPLING-native.pyconf | 81 + .../Paraview-offscreen-rendering.pyconf | 50 + applications/SALOME-6.6.0.pyconf | 98 + applications/SALOME-7.8.0.pyconf | 119 + applications/SALOME-7.8.0p2.pyconf | 120 + applications/SALOME-7.8.2.pyconf | 124 + applications/SALOME-7.8.3.pyconf | 120 + applications/SALOME-7.8.4.pyconf | 129 + applications/SALOME-8.5.0-MPI.pyconf | 129 + applications/SALOME-8.5.0-native.pyconf | 158 + applications/SALOME-8.5.0.pyconf | 156 + applications/SALOME-9.3.0.pyconf | 152 + applications/SALOME-9.4.0-windows.pyconf | 181 + applications/SALOME-9.4.0.pyconf | 203 + applications/SALOME-9.5.0-MPI.pyconf | 194 + applications/SALOME-9.5.0-int64.pyconf | 193 + applications/SALOME-9.5.0-windows.pyconf | 182 + applications/SALOME-9.5.0.pyconf | 192 + applications/SALOME-master-MPI.pyconf | 196 + applications/SALOME-master-int64.pyconf | 193 + applications/SALOME-master-native.pyconf | 207 + applications/SALOME-master-windows.pyconf | 182 + applications/SALOME-master.pyconf | 227 + applications/appli-test.pyconf | 43 + jobs/TEST-820.pyconf | 350 + jobs/clean_all.pyconf | 706 + jobs/salome.pyconf | 882 + products/ADAO.pyconf | 41 + products/ADAO_INTERFACE.pyconf | 30 + products/ALAMOS.pyconf | 31 + products/ALAMOS_PROFILE.pyconf | 31 + products/BLSURFPLUGIN.pyconf | 114 + products/Babel.pyconf | 33 + products/CALCULATOR.pyconf | 70 + products/CAS.pyconf | 489 + products/CDMATH.pyconf | 26 + products/CEATESTBASE.pyconf | 22 + products/COMPONENT.pyconf | 34 + products/CONFIGURATION.pyconf | 23 + products/COREFLOWS.pyconf | 34 + products/COREFLOWS_PROFILE.pyconf | 19 + products/Cython.pyconf | 57 + products/DOCUMENTATION.pyconf | 31 + products/EFICAS.pyconf | 57 + products/EFICAS_TOOLS.pyconf | 31 + products/FIELDS.pyconf | 62 + products/GEOM.pyconf | 88 + products/GHS3DPLUGIN.pyconf | 78 + products/GHS3DPRLPLUGIN.pyconf | 40 + products/GMSHPLUGIN.pyconf | 95 + products/GUI.pyconf | 289 + products/HELLO.pyconf | 32 + products/HEXABLOCK.pyconf | 92 + products/HEXABLOCKPLUGIN.pyconf | 39 + products/HOMARD.pyconf | 29 + products/HXX2SALOME.pyconf | 24 + products/HYBRIDPLUGIN.pyconf | 41 + products/Hexotic.pyconf | 22 + products/HexoticPLUGIN.pyconf | 39 + products/JOBMANAGER.pyconf | 82 + products/Jinja2.pyconf | 38 + products/KERNEL.pyconf | 270 + products/LIBBATCH.pyconf | 31 + products/MED.pyconf | 90 + products/MEDCOUPLING.pyconf | 134 + products/MeshGems.pyconf | 45 + products/NETGENPLUGIN.pyconf | 90 + products/PARAVIS.pyconf | 216 + products/PY2CPP.pyconf | 35 + products/PYCALCULATOR.pyconf | 42 + products/PYHELLO.pyconf | 31 + products/ParMetis.pyconf | 24 + products/ParaView.pyconf | 339 + products/ParaViewData.pyconf | 18 + products/Pillow.pyconf | 28 + products/PyHamcrest.pyconf | 20 + products/PyQt.pyconf | 64 + products/Pygments.pyconf | 33 + products/Python.pyconf | 53 + products/RESTRICTED.pyconf | 18 + products/SALOME.pyconf | 24 + products/SALOME_FORMATION_PROFILE.pyconf | 25 + products/SALOME_PROFILE.pyconf | 94 + products/SAMPLES.pyconf | 24 + products/SHAPER.pyconf | 58 + products/SHAPERSTUDY.pyconf | 36 + products/SMESH.pyconf | 188 + products/SOLVERLAB.pyconf | 31 + products/Sphinx.pyconf | 55 + products/TECHOBJ_ROOT.pyconf | 32 + products/TRIOCFD_IHM.pyconf | 27 + products/TRIOCFD_PROFILE.pyconf | 24 + products/TRUST.pyconf | 18 + products/Togl.pyconf | 16 + products/TrioCFD.pyconf | 18 + products/VISU.pyconf | 36 + products/XDATA.pyconf | 35 + products/YACS.pyconf | 78 + products/YACSGEN.pyconf | 39 + products/alabaster.pyconf | 36 + products/boost.pyconf | 52 + products/bsd_xdr.pyconf | 21 + products/certifi.pyconf | 33 + products/cgns.pyconf | 29 + products/chardet.pyconf | 34 + products/click.pyconf | 33 + products/cmake.pyconf | 27 + products/colorama.pyconf | 26 + products/compil_scripts/ADAO.bat | 121 + products/compil_scripts/ADAO.sh | 89 + products/compil_scripts/Babel.bat | 44 + products/compil_scripts/Babel.sh | 28 + products/compil_scripts/CAS_6.7.sh | 54 + products/compil_scripts/CAS_7.0.sh | 1 + products/compil_scripts/CAS_7.3.bat | 95 + products/compil_scripts/CAS_7.4.bat | 95 + products/compil_scripts/COREFLOWS.sh | 74 + products/compil_scripts/Hexotic.sh | 27 + products/compil_scripts/Homard-SALOME9.sh | 27 + products/compil_scripts/Homard.sh | 27 + products/compil_scripts/Jinja2.bat | 41 + products/compil_scripts/Jinja2.sh | 29 + products/compil_scripts/MeshGems.bat | 51 + products/compil_scripts/MeshGems.sh | 34 + products/compil_scripts/ParMetis-3.sh | 41 + products/compil_scripts/ParaView-3.14.0.sh | 143 + products/compil_scripts/ParaView-4.2.0.sh | 144 + products/compil_scripts/ParaView-5.0.sh | 187 + .../ParaView-5.1-820-offscreen_rendering.sh | 194 + products/compil_scripts/ParaView-5.1-820.sh | 189 + products/compil_scripts/ParaView-5.1.sh | 190 + .../compil_scripts/ParaView-5.4-b5c4c89.sh | 215 + .../compil_scripts/ParaView-5.4.1_b5c4c89.sh | 250 + .../ParaView-5.5.2p2_7591431.sh | 252 + .../compil_scripts/ParaView-5.6.0_bfaf7b8.bat | 209 + .../compil_scripts/ParaView-5.6.0_bfaf7b8.sh | 271 + .../ParaView-5.6.0p1_7bafc2b.bat | 201 + .../ParaView-5.6.0p1_7bafc2b.sh | 254 + products/compil_scripts/ParaView.bat | 194 + products/compil_scripts/ParaView.sh | 206 + products/compil_scripts/ParaViewData.sh | 14 + products/compil_scripts/PyQt-5.6.bat | 64 + products/compil_scripts/PyQt-5.6.sh | 45 + products/compil_scripts/PyQt-5.9.bat | 64 + products/compil_scripts/PyQt-5.9.sh | 83 + products/compil_scripts/PyQt.sh | 46 + products/compil_scripts/PyQt_5_5_1.bat | 64 + products/compil_scripts/PyQt_5_5_1.sh | 45 + products/compil_scripts/Pygments.bat | 41 + products/compil_scripts/Pygments.sh | 28 + products/compil_scripts/Python-3.6.5.bat | 166 + products/compil_scripts/Python.bat | 106 + products/compil_scripts/Python.sh | 94 + products/compil_scripts/SOLVERLAB.sh | 49 + products/compil_scripts/Sphinx.bat | 59 + products/compil_scripts/Sphinx.sh | 28 + products/compil_scripts/TRUST.sh | 58 + products/compil_scripts/Togl.sh | 43 + products/compil_scripts/TrioCFD.sh | 61 + products/compil_scripts/XDATA.py | 24 + products/compil_scripts/YACS.sh | 40 + products/compil_scripts/YACS.sh1 | 40 + products/compil_scripts/YACSGEN.bat | 39 + products/compil_scripts/YACSGEN.py | 20 + products/compil_scripts/YACSGEN.sh | 28 + products/compil_scripts/alabaster.bat | 41 + products/compil_scripts/alabaster.sh | 28 + products/compil_scripts/boost.bat | 80 + products/compil_scripts/boost.sh | 31 + products/compil_scripts/boost_V1.67.0.bat | 44 + products/compil_scripts/bsd_xdr.bat | 54 + products/compil_scripts/bsd_xdr.sh | 1 + products/compil_scripts/certifi.sh | 28 + products/compil_scripts/cgns.bat | 80 + products/compil_scripts/cgns.sh | 55 + products/compil_scripts/chardet.sh | 28 + products/compil_scripts/click.sh | 28 + products/compil_scripts/cmake.bat | 59 + products/compil_scripts/cmake.sh | 38 + products/compil_scripts/colorama.bat | 42 + products/compil_scripts/colorama.sh | 46 + products/compil_scripts/cppunit.bat | 94 + products/compil_scripts/cppunit.sh | 41 + products/compil_scripts/cycler.sh | 33 + products/compil_scripts/cython.bat | 53 + products/compil_scripts/cython.sh | 28 + products/compil_scripts/dateutil.bat | 41 + products/compil_scripts/dateutil.sh | 38 + products/compil_scripts/distribute.bat | 43 + products/compil_scripts/distribute.sh | 32 + products/compil_scripts/docutils.bat | 42 + products/compil_scripts/docutils.sh | 25 + products/compil_scripts/doxygen.bat | 23 + products/compil_scripts/doxygen.sh | 42 + products/compil_scripts/eficas.sh | 49 + products/compil_scripts/eigen-3.2.7.sh | 30 + products/compil_scripts/eigen.bat | 68 + products/compil_scripts/eigen.sh | 43 + products/compil_scripts/expat.bat | 30 + products/compil_scripts/expat.sh | 40 + products/compil_scripts/f2c.bat | 94 + products/compil_scripts/freeimage-3.16.0.sh | 83 + products/compil_scripts/freeimage.bat | 67 + products/compil_scripts/freeimage.sh | 56 + products/compil_scripts/freetype-2.3.sh | 45 + products/compil_scripts/freetype.bat | 91 + products/compil_scripts/freetype.sh | 38 + products/compil_scripts/ftgl_2.1.3.sh | 49 + products/compil_scripts/functools32.sh | 33 + products/compil_scripts/gcc-6.3.0.sh | 44 + products/compil_scripts/gl2ps-1.4.0.sh | 60 + products/compil_scripts/gl2ps.bat | 90 + products/compil_scripts/gl2ps.sh | 1 + products/compil_scripts/glu.sh | 40 + products/compil_scripts/gmsh-2.12.0.sh | 59 + products/compil_scripts/gmsh.bat | 101 + products/compil_scripts/gmsh.sh | 85 + products/compil_scripts/graphviz-2.38.0.bat | 30 + products/compil_scripts/graphviz-2.38.0.sh | 44 + products/compil_scripts/graphviz-2.44.1.bat | 74 + products/compil_scripts/graphviz.bat | 26 + products/compil_scripts/graphviz.sh | 52 + products/compil_scripts/hdf5-1.10.3.sh | 70 + products/compil_scripts/hdf5Autotools.sh | 55 + products/compil_scripts/hdf5CMake.bat | 109 + products/compil_scripts/hdf5CMake.sh | 65 + products/compil_scripts/hdf5_cxx.sh | 53 + products/compil_scripts/idna.sh | 28 + products/compil_scripts/imagesize.sh | 28 + products/compil_scripts/ispc-1.9.2.sh | 44 + products/compil_scripts/ispc.bat | 75 + products/compil_scripts/kiwisolver.sh | 28 + products/compil_scripts/lapack.bat | 79 + products/compil_scripts/lapack.sh | 102 + products/compil_scripts/lata.bat | 93 + products/compil_scripts/lata.sh | 77 + products/compil_scripts/libjpeg.bat | 67 + products/compil_scripts/libpng.bat | 84 + products/compil_scripts/libpng.sh | 1 + products/compil_scripts/libxml2.bat | 61 + products/compil_scripts/libxml2.sh | 62 + products/compil_scripts/libxml2_2_9_2.sh | 56 + products/compil_scripts/llvm.sh | 40 + products/compil_scripts/markupsafe.bat | 43 + products/compil_scripts/markupsafe.sh | 28 + products/compil_scripts/matplotlib-2.0.2.sh | 39 + products/compil_scripts/matplotlib.bat | 44 + products/compil_scripts/matplotlib.sh | 28 + products/compil_scripts/med.sh | 71 + products/compil_scripts/medCMake.bat | 79 + products/compil_scripts/medCMake.sh | 70 + products/compil_scripts/mesa.bat | 21 + products/compil_scripts/mesa.sh | 93 + products/compil_scripts/metis-5.1.0.bat | 92 + products/compil_scripts/metis-5.1.0.sh | 41 + products/compil_scripts/metis.sh | 41 + products/compil_scripts/metis_5_0_2.sh | 41 + products/compil_scripts/msvc.bat | 21 + products/compil_scripts/netgen.bat | 73 + products/compil_scripts/netgen.sh | 65 + products/compil_scripts/netgen_5_3_1.bat | 157 + products/compil_scripts/netgen_5_3_1.sh | 119 + products/compil_scripts/netgen_CAS7.sh | 97 + products/compil_scripts/nlopt.bat | 64 + products/compil_scripts/nlopt.sh | 43 + products/compil_scripts/numpy-1.12.1.sh | 54 + products/compil_scripts/numpy-1.15.1.sh | 47 + products/compil_scripts/numpy.bat | 59 + products/compil_scripts/numpy.sh | 58 + products/compil_scripts/omniNotify.sh | 43 + products/compil_scripts/omniORB.bat | 74 + products/compil_scripts/omniORB.sh | 54 + products/compil_scripts/omniORBpy.bat | 40 + products/compil_scripts/omniORBpy.sh | 39 + products/compil_scripts/openblas.bat | 79 + .../opencv-3.2.0-with-ffmpeg.sh | 60 + products/compil_scripts/opencv.bat | 71 + products/compil_scripts/opencv.sh | 77 + products/compil_scripts/openmpi.sh | 41 + products/compil_scripts/packaging.sh | 28 + products/compil_scripts/perl.bat | 21 + products/compil_scripts/petsc.sh | 45 + products/compil_scripts/pip.bat | 20 + products/compil_scripts/pip_install.bat | 55 + products/compil_scripts/pip_install.sh | 39 + products/compil_scripts/pip_install_whl.bat | 42 + products/compil_scripts/planegcs.bat | 82 + products/compil_scripts/planegcs.sh | 43 + products/compil_scripts/pockets.sh | 28 + products/compil_scripts/pthreads.bat | 89 + products/compil_scripts/pthreads.sh | 1 + products/compil_scripts/pyhamcrest.sh | 27 + products/compil_scripts/pyparsing.bat | 41 + products/compil_scripts/pyparsing.sh | 28 + products/compil_scripts/pyreadline.bat | 45 + products/compil_scripts/pyreadline.sh | 12 + products/compil_scripts/pytz.bat | 41 + products/compil_scripts/pytz.sh | 28 + products/compil_scripts/qt-4.6.3.sh | 46 + products/compil_scripts/qt-4.8.4.sh | 50 + products/compil_scripts/qt-5.5.1.sh | 98 + products/compil_scripts/qt-5.6.1.bat | 65 + products/compil_scripts/qt-5.6.1.sh | 96 + products/compil_scripts/qt-5.6.1_test.sh | 47 + products/compil_scripts/qt-5.8.4.sh | 50 + products/compil_scripts/qt.bat | 75 + products/compil_scripts/qt.sh | 64 + products/compil_scripts/qwt-6.1.0.bat | 95 + products/compil_scripts/qwt-6.1.0.sh | 54 + products/compil_scripts/qwt.sh | 55 + products/compil_scripts/requests.sh | 28 + products/compil_scripts/root.bat | 21 + products/compil_scripts/ruby.bat | 22 + products/compil_scripts/scipy.bat | 33 + products/compil_scripts/scipy.sh | 35 + products/compil_scripts/scons.sh | 19 + products/compil_scripts/scotch-5.1.12.sh | 53 + products/compil_scripts/scotch.sh | 52 + products/compil_scripts/setuptools.bat | 42 + products/compil_scripts/setuptools.sh | 31 + products/compil_scripts/sip.bat | 50 + products/compil_scripts/sip.sh | 46 + products/compil_scripts/six.bat | 41 + products/compil_scripts/six.sh | 28 + products/compil_scripts/snowballstemmer.sh | 28 + products/compil_scripts/solvespace-2.1.sh | 44 + products/compil_scripts/sphinx_rtd_theme.sh | 38 + products/compil_scripts/sphinxcontrib.sh | 33 + .../compil_scripts/sphinxcontrib_napoleon.sh | 28 + .../sphinxcontrib_websupport.sh | 28 + products/compil_scripts/sphinxintl.sh | 28 + products/compil_scripts/subprocess32.sh | 33 + products/compil_scripts/swig.bat | 31 + products/compil_scripts/swig.sh | 57 + products/compil_scripts/tbb.bat | 63 + products/compil_scripts/tbb.sh | 29 + products/compil_scripts/tcl.bat | 54 + products/compil_scripts/tcl.sh | 38 + products/compil_scripts/tcltk.bat | 94 + products/compil_scripts/tcltk.sh | 70 + products/compil_scripts/tk.bat | 78 + products/compil_scripts/tk.sh | 45 + products/compil_scripts/typing.sh | 34 + products/compil_scripts/uranie_win.bat | 21 + products/compil_scripts/uranie_win.sh | 1 + products/compil_scripts/urllib3.sh | 28 + products/compil_scripts/vtk.sh | 82 + products/compil_scripts/zlib.bat | 72 + products/compil_scripts/zlib.sh | 1 + products/cppunit.pyconf | 46 + products/cycler.pyconf | 40 + products/dateutil.pyconf | 33 + products/distribute.pyconf | 24 + products/docutils.pyconf | 33 + products/doxygen.pyconf | 64 + products/eigen.pyconf | 34 + products/embree.pyconf | 27 + products/env_scripts/ADAO.py | 14 + products/env_scripts/ADAO_INTERFACE.py | 11 + products/env_scripts/Babel.py | 16 + products/env_scripts/CAS.py | 23 + products/env_scripts/CDMATH.py | 22 + products/env_scripts/COREFLOWS.py | 32 + products/env_scripts/Cython.py | 19 + products/env_scripts/EFICAS_TOOLS.py | 27 + products/env_scripts/Hexotic.py | 34 + products/env_scripts/Homard.py | 12 + products/env_scripts/Jinja2.py | 20 + products/env_scripts/LIBBATCH.py | 20 + products/env_scripts/MeshGems.py | 50 + products/env_scripts/ParMetis.py | 16 + products/env_scripts/ParaView.py | 85 + products/env_scripts/ParaViewData.py | 8 + products/env_scripts/Pillow.py | 16 + products/env_scripts/PyHamcrest.py | 13 + products/env_scripts/PyQt.py | 27 + products/env_scripts/Pygments.py | 17 + products/env_scripts/Python.py | 47 + products/env_scripts/SAMPLES.py | 12 + products/env_scripts/SOLVERLAB.py | 32 + products/env_scripts/Sphinx.py | 20 + products/env_scripts/TRUST.py | 14 + products/env_scripts/Togl.py | 26 + products/env_scripts/TrioCFD.py | 11 + products/env_scripts/XDATA.py | 16 + products/env_scripts/YACSGEN.py | 16 + products/env_scripts/alabaster.py | 16 + products/env_scripts/boost.py | 28 + products/env_scripts/bsd_xdr.py | 21 + products/env_scripts/ceatest.py | 14 + products/env_scripts/certifi.py | 15 + products/env_scripts/cgns.py | 17 + products/env_scripts/chardet.py | 17 + products/env_scripts/click.py | 14 + products/env_scripts/cmake.py | 13 + products/env_scripts/colorama.py | 14 + products/env_scripts/cppunit.py | 23 + products/env_scripts/cycler.py | 14 + products/env_scripts/dateutil.py | 15 + products/env_scripts/distribute.py | 20 + products/env_scripts/docutils.py | 18 + products/env_scripts/doxygen.py | 14 + products/env_scripts/eigen.py | 16 + products/env_scripts/embree.py | 15 + products/env_scripts/expat.py | 21 + products/env_scripts/f2c.py | 20 + products/env_scripts/freeimage.py | 20 + products/env_scripts/freetype.py | 25 + products/env_scripts/ftgl.py | 17 + products/env_scripts/functools32.py | 12 + products/env_scripts/gcc.py | 21 + products/env_scripts/gl2ps.py | 17 + products/env_scripts/glu.py | 33 + products/env_scripts/gmsh.py | 16 + products/env_scripts/graphviz.py | 37 + products/env_scripts/hdf5.py | 25 + products/env_scripts/idna.py | 15 + products/env_scripts/imagesize.py | 14 + products/env_scripts/ispc.py | 8 + products/env_scripts/kiwisolver.py | 16 + products/env_scripts/lapack.py | 25 + products/env_scripts/lata.py | 11 + products/env_scripts/libjpeg.py | 20 + products/env_scripts/libpng.py | 25 + products/env_scripts/libxml2.py | 20 + products/env_scripts/llvm.py | 24 + products/env_scripts/markupsafe.py | 17 + products/env_scripts/matplotlib.py | 16 + products/env_scripts/med.py | 21 + products/env_scripts/mesa.py | 24 + products/env_scripts/metis.py | 21 + products/env_scripts/msvc.py | 11 + products/env_scripts/netgen.py | 27 + products/env_scripts/nlopt.py | 16 + products/env_scripts/numpy.py | 16 + products/env_scripts/omniNotify.py | 8 + products/env_scripts/omniORB.py | 26 + products/env_scripts/omniORBpy.py | 11 + products/env_scripts/openblas.py | 24 + products/env_scripts/opencv.py | 24 + products/env_scripts/openmpi.py | 23 + products/env_scripts/ospray.py | 16 + products/env_scripts/packaging.py | 14 + products/env_scripts/perl.py | 18 + products/env_scripts/petsc.py | 22 + products/env_scripts/planegcs.py | 16 + products/env_scripts/pockets.py | 13 + products/env_scripts/pthreads.py | 24 + products/env_scripts/pyparsing.py | 16 + products/env_scripts/pyreadline.py | 14 + products/env_scripts/pytz.py | 14 + products/env_scripts/qt.py | 36 + products/env_scripts/qwt.py | 19 + products/env_scripts/requests.py | 15 + products/env_scripts/root.py | 19 + products/env_scripts/ruby.py | 15 + products/env_scripts/scipy.py | 14 + products/env_scripts/scons.py | 16 + products/env_scripts/scotch.py | 11 + products/env_scripts/setuptools.py | 20 + products/env_scripts/sip.py | 34 + products/env_scripts/six.py | 16 + products/env_scripts/snowballstemmer.py | 13 + products/env_scripts/solvespace.py | 12 + products/env_scripts/sphinx_rtd_theme.py | 18 + products/env_scripts/sphinxcontrib.py | 15 + .../env_scripts/sphinxcontrib_applehelp.py | 9 + products/env_scripts/sphinxcontrib_devhelp.py | 9 + .../env_scripts/sphinxcontrib_htmlhelp.py | 9 + products/env_scripts/sphinxcontrib_jsmath.py | 9 + .../env_scripts/sphinxcontrib_napoleon.py | 13 + products/env_scripts/sphinxcontrib_qthelp.py | 9 + .../sphinxcontrib_serializinghtml.py | 9 + .../env_scripts/sphinxcontrib_websupport.py | 13 + products/env_scripts/sphinxintl.py | 17 + products/env_scripts/subprocess32.py | 12 + products/env_scripts/swig.py | 18 + products/env_scripts/tbb.py | 26 + products/env_scripts/tcl.py | 27 + products/env_scripts/tcltk.py | 35 + products/env_scripts/tk.py | 30 + products/env_scripts/typing.py | 14 + products/env_scripts/uranie_win.py | 70 + products/env_scripts/urllib3.py | 14 + products/env_scripts/vtk.py | 18 + products/env_scripts/zlib.py | 25 + products/expat.pyconf | 31 + products/f2c.pyconf | 21 + products/ffmpeg.pyconf | 14 + products/freeimage.pyconf | 51 + products/freetype.pyconf | 67 + products/ftgl.pyconf | 17 + products/functools32.pyconf | 19 + products/gcc.pyconf | 20 + products/gl2ps.pyconf | 87 + products/glu.pyconf | 15 + products/gmsh.pyconf | 21 + products/graphviz.pyconf | 68 + products/hdf5.pyconf | 54 + products/homard_bin.pyconf | 31 + products/homard_pre_windows.pyconf | 15 + products/idna.pyconf | 34 + products/imagesize.pyconf | 33 + products/ispc.pyconf | 51 + products/kiwisolver.pyconf | 33 + products/lapack.pyconf | 55 + products/lata.pyconf | 21 + products/libjpeg.pyconf | 30 + products/libpng.pyconf | 30 + products/libxml2.pyconf | 48 + products/llvm.pyconf | 50 + products/markupsafe.pyconf | 33 + products/matplotlib.pyconf | 65 + products/med_pre_windows.pyconf | 22 + products/medfile.pyconf | 65 + products/mesa.pyconf | 40 + products/metis.pyconf | 47 + products/msvc.pyconf | 21 + products/netgen.pyconf | 79 + products/nlopt.pyconf | 32 + products/numpy.pyconf | 69 + products/omniNotify.pyconf | 19 + products/omniORB.pyconf | 19 + products/omniORBpy.pyconf | 19 + products/openblas.pyconf | 33 + products/opencv.pyconf | 61 + products/openmpi.pyconf | 17 + products/openssl.pyconf | 17 + products/ospray.pyconf | 36 + products/packaging.pyconf | 33 + ...ate-PlaneGCS-solver-for-SHAPER-needs.patch | 647 + products/patches/BLSURFPLUGIN_8_4_0.patch | 12 + products/patches/CAS-6.5.4.patch | 24 + products/patches/CAS_autotools_macros.patch | 12 + products/patches/CONFIGURATION-FC29.patch | 23 + .../patches/COREFLOWS_PROFILE_NO_ENV_78.patch | 11 + products/patches/GUI_GLdispatch.patch | 32 + products/patches/GUI_Python_async.patch | 12 + products/patches/KERNEL-FC29.patch | 24 + .../KERNEL_libLauncher_Temporary.patch | 17 + products/patches/MEDCOUPLING-FC29.patch | 16 + .../patches/OCCT-7.1.0_transfrom_pers.patch | 14 + .../PARAVIS-MEDReader-CMakeLists.patch | 15 + products/patches/ParaView-3.14.0.patch | 57 + products/patches/ParaView-4.2.0.patch | 1373 + products/patches/ParaView-5.1.2-win.patch | 34 + ...ob~stallation-of-VTKTargets.cmake-fi.patch | 11 + ...-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch | 28 + ...aView-5.4.0-b5c4c893_temporaty_patch.patch | 11 + .../ParaView-5.4.1_b5c4c89-3DGlyphs.patch | 140 + ...View-5.6.0-bfaf7b82_StateStorage_bug.patch | 34 + ...iew-5.6.0_bfaf7b8-vtkm_visual_studio.patch | 12 + ...7b8_patch_against_multiple_py_sv_thr.patch | 17 + products/patches/PyQt-4.9.1.patch | 51 + products/patches/PyQt-GLdispatch.patch | 21 + products/patches/Python-3.6.5_windows.patch | 979 + products/patches/Python_SSL.patch | 125 + products/patches/Python_zlib_detection.patch | 12 + products/patches/SALOME_PROFILE_NO_ENV.patch | 11 + .../SALOME_PROFILE_NO_ENV_master.patch | 10 + .../SALOME_PROFILE_NO_ENV_master_V2.patch | 10 + products/patches/boost-1.49.0.patch | 260 + ...boost-1.52.0-cstdint_missing_include.patch | 13 + .../boost-1.52.0_recent_glibc_versions.patch | 12 + products/patches/cppunit-1.13.2_windows.patch | 3248 ++ products/patches/doxygen-1.8.3.1.patch | 65 + .../doxygen_compatibility_flex260.patch | 77 + products/patches/embree-3.5.2-centos6.patch | 16 + .../enable-windows-plugin-compilation.patch | 12 + products/patches/freeimage-3.16.0_gcc6.patch | 71 + .../patches/freeimage-3.17.0_windows.patch | 39 + .../patches/freeimage-3.18.0_windows.patch | 132 + .../freetype-2.4.11_ft_export_FD20.patch | 12 + products/patches/freetype-2.9.1_windows.patch | 32 + products/patches/ftgl-2.1.3_no_doc.patch | 24 + products/patches/geom-doc-gui.patch | 14 + .../patches/geom_8.5.0_xao_data_dir.patch | 12 + products/patches/gl2ps-1.3.5-GLUT.patch | 31 + products/patches/gl2ps-1.3.8-GLUT.patch | 34 + .../gl2ps-1.3.8_link_libm_FD20.patch_orig | 15 + products/patches/gl2ps-1.3.9p1-GLUT.patch | 22 + .../patches/gl2ps-1.3.9p1-no_static_lib.patch | 32 + products/patches/gl2ps-1.4.0-GLUT.patch | 22 + products/patches/hdf5-1.10.3.patch | 15 + .../patches/hdf5-1.10.3.win_unicode.patch | 36 + .../patches/hdf5-1.10.3.win_unicode_new.patch | 45 + .../patches/hdf5_188_remove_c++_comment.patch | 11 + products/patches/ispc-1.9.2-centos6.patch | 20 + products/patches/ispc-ispc-0621fcb.patch | 11 + products/patches/ispc-makefile_WERROR.patch | 11 + .../patches/kernel_orbmodule_safewakeup.patch | 15 + products/patches/kernel_setenv_161024.patch | 26 + products/patches/lapack-3.8.0_windows.patch | 13 + products/patches/lata-plugin_visit.patch | 37 + products/patches/libxml2-2.9.1.patch | 26 + products/patches/llvm-8.0.1-clang-FD32.patch | 18 + ..._Cannot_connect_NavigationToolbar2QT.patch | 33 + .../matplotlib-1.4.3_no_auto_download.patch | 12 + ...4_2_patch_freetype_detection_for_SAT.patch | 43 + ...4_3_patch_freetype_detection_for_SAT.patch | 48 + products/patches/matplotlibrc-qt4.patch | 514 + products/patches/med-4.0.0_unicode.patch | 260 + products/patches/med-4.0.0alpha3.patch | 21 + .../med-4.1.0_win_3x_files_support.patch | 17 + products/patches/med_mode_non_debug.patch | 15 + .../patches/medcoupling-7.8.0-m4-files.patch | 555 + products/patches/medcoupling_abn780.patch | 1413 + products/patches/medcoupling_abn780_co6.patch | 1413 + products/patches/medcoupling_abn780b.patch | 1454 + products/patches/medcoupling_m4_files.patch | 555 + .../patches/medcoupling_salome_9_0_0.patch | 38874 ++++++++++++++++ products/patches/medfile-4.0.0.patch | 10 + .../patches/mesa-19.0.8-debug_symbol.patch | 12 + products/patches/metis-5.1.0_windows.patch | 11 + products/patches/metis-use_cat_not_more.patch | 12 + ...netgen-4.9.13-for-OCCT7.0.0-includes.patch | 12 + ...-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch | 434 + .../patches/netgen-4.9.13-for-SALOME.patch | 749 + .../patches/netgen-4.9.13-for-SALOME_v2.patch | 1121 + .../patches/netgen-4.9.13_without_togl.patch | 97 + .../netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch | 1530 + ....3.1_OCCT-7.3_Windows-10_Visual-2017.patch | 16318 +++++++ products/patches/netgen49ForSalome.patch | 1109 + products/patches/netgen53ForSalome.patch | 1455 + .../patches/netgen53ForSalomeOCCT730.patch | 1530 + .../netgen53ForSalomeVisualStudio2017.patch | 1648 + .../patches/netgen53ForSalome_Windows.patch | 1455 + products/patches/netgen53ForWindows.patch | 1228 + products/patches/omniNotify-2.1-lib64.patch | 94 + products/patches/omniNotify-2.1.patch | 4584 ++ products/patches/opencv-2.4.6.1-gcc6.patch | 131 + products/patches/opencv-3.2.0-ccache.patch | 32 + products/patches/opencv-3.2.0_windows.patch | 22 + products/patches/opencv-with-ffmpeg.patch | 13 + .../paraview.0003-ParaViewClient.patch | 10 + .../patches/paraview.0004-ParaView_hdf5.patch | 14 + .../paraview.0005-ParaView_find_cgns.patch | 15 + .../paraview.0006-ParaView_find_libxml2.patch | 14 + ...paraview.0007-ParaView_find_freetype.patch | 15 + .../paraview.0008-ParaView_find_zlib.patch | 15 + ...paraview.0009-ParaView_volume_mapper.patch | 11 + .../paraview.0010-ParaViewClient.patch | 17 + products/patches/paraview.0010-VTKM_MPI.patch | 11 + .../patches/paravis_8_3_mpi_medinclude.patch | 13 + products/patches/patchPyQt496noPhonon.patch | 14 + .../patches/patch_shaper_cursor_cross.diff | 14 + products/patches/pthreads-2.9.1_windows.patch | 23 + products/patches/pv_coincident.patch | 161 + ...enable-webkit-compilation-whith-gcc5.patch | 12 + products/patches/qt-463-gcc46.patch | 11 + products/patches/qt-5.5.1-qlockfile.patch | 116 + .../qt-5.9.1-UB20-FD32-socketcanbackend.patch | 10 + products/patches/qt-5.9.1-mapbox-FD32.patch | 33 + products/patches/qt_5.5.1-qwebengine.patch | 25 + .../remove-windows-python-subprojects.patch | 69 + products/patches/scipy-0.13.3.patch | 38 + products/patches/scipy-0.14.1.patch | 37 + ...rtd_theme-0.1.9_no_dependence_sphinx.patch | 5 + products/patches/tbb-2019_U8_windows10.patch | 38 + products/patches/tcl-8.6.9_windows.patch | 99 + products/patches/tcltk-8.6.9_windows.patch | 110 + products/patches/tk-8.6.9_windows.patch | 11 + products/patches/xdata-0.9.11.patch | 42 + products/patches/xdata-0.9.9.python2.7.patch | 16 + products/patches/xdata_qt.patch | 23 + products/patches/yacs_cea_v2.patch | 12 + products/patches/yacs_without_expat.patch | 23 + .../patches/yacsgen_7_8_med_medcoupling.patch | 49 + products/patches/yacsgen_7_8_portage.patch | 63 + products/patches/yacsgen_hxx.patch | 151 + products/perl.pyconf | 25 + products/petsc.pyconf | 16 + products/planegcs.pyconf | 21 + products/pockets.pyconf | 26 + products/pthreads.pyconf | 37 + products/pybind11.pyconf | 20 + products/pyparsing.pyconf | 34 + products/pyreadline.pyconf | 39 + products/pytz.pyconf | 33 + products/qt.pyconf | 76 + products/qwt.pyconf | 59 + products/requests.pyconf | 33 + products/root.pyconf | 28 + products/ruby.pyconf | 25 + products/scipy.pyconf | 69 + products/scons.pyconf | 19 + products/scotch.pyconf | 41 + products/setuptools.pyconf | 26 + products/sip.pyconf | 26 + products/six.pyconf | 34 + products/snowballstemmer.pyconf | 33 + products/solvespace.pyconf | 17 + products/sphinx_rtd_theme.pyconf | 38 + products/sphinxcontrib.pyconf | 19 + products/sphinxcontrib_applehelp.pyconf | 26 + products/sphinxcontrib_devhelp.pyconf | 26 + products/sphinxcontrib_htmlhelp.pyconf | 26 + products/sphinxcontrib_jsmath.pyconf | 26 + products/sphinxcontrib_napoleon.pyconf | 26 + products/sphinxcontrib_qthelp.pyconf | 26 + products/sphinxcontrib_serializinghtml.pyconf | 26 + products/sphinxcontrib_websupport.pyconf | 34 + products/sphinxintl.pyconf | 26 + products/subprocess32.pyconf | 19 + products/swig.pyconf | 32 + products/tbb.pyconf | 42 + products/tcl.pyconf | 43 + products/tcltk.pyconf | 40 + products/tk.pyconf | 42 + products/typing.pyconf | 16 + products/uranie_win.pyconf | 15 + products/urllib3.pyconf | 34 + products/vtk.pyconf | 17 + products/zlib.pyconf | 30 + salome-W10.pyconf | 34 + salome.pyconf | 34 + 731 files changed, 120568 insertions(+) create mode 100644 README create mode 100644 applications/GCC-6.3.0.pyconf create mode 100644 applications/MEDCOUPLING-7.8.2.pyconf create mode 100644 applications/MEDCOUPLING-8.5.0.pyconf create mode 100644 applications/MEDCOUPLING-9.3.0.pyconf create mode 100644 applications/MEDCOUPLING-9.4.0-windows.pyconf create mode 100644 applications/MEDCOUPLING-9.4.0.pyconf create mode 100644 applications/MEDCOUPLING-9.5.0-MPI.pyconf create mode 100644 applications/MEDCOUPLING-9.5.0-int64.pyconf create mode 100644 applications/MEDCOUPLING-9.5.0-windows.pyconf create mode 100644 applications/MEDCOUPLING-9.5.0.pyconf create mode 100644 applications/MEDCOUPLING-MPI.pyconf create mode 100644 applications/MEDCOUPLING-master-int64.pyconf create mode 100644 applications/MEDCOUPLING-master-windows.pyconf create mode 100644 applications/MEDCOUPLING-master.pyconf create mode 100644 applications/MEDCOUPLING-native.pyconf create mode 100644 applications/Paraview-offscreen-rendering.pyconf create mode 100644 applications/SALOME-6.6.0.pyconf create mode 100644 applications/SALOME-7.8.0.pyconf create mode 100644 applications/SALOME-7.8.0p2.pyconf create mode 100644 applications/SALOME-7.8.2.pyconf create mode 100644 applications/SALOME-7.8.3.pyconf create mode 100644 applications/SALOME-7.8.4.pyconf create mode 100644 applications/SALOME-8.5.0-MPI.pyconf create mode 100644 applications/SALOME-8.5.0-native.pyconf create mode 100644 applications/SALOME-8.5.0.pyconf create mode 100644 applications/SALOME-9.3.0.pyconf create mode 100644 applications/SALOME-9.4.0-windows.pyconf create mode 100644 applications/SALOME-9.4.0.pyconf create mode 100644 applications/SALOME-9.5.0-MPI.pyconf create mode 100644 applications/SALOME-9.5.0-int64.pyconf create mode 100644 applications/SALOME-9.5.0-windows.pyconf create mode 100644 applications/SALOME-9.5.0.pyconf create mode 100644 applications/SALOME-master-MPI.pyconf create mode 100644 applications/SALOME-master-int64.pyconf create mode 100644 applications/SALOME-master-native.pyconf create mode 100644 applications/SALOME-master-windows.pyconf create mode 100644 applications/SALOME-master.pyconf create mode 100644 applications/appli-test.pyconf create mode 100644 jobs/TEST-820.pyconf create mode 100644 jobs/clean_all.pyconf create mode 100644 jobs/salome.pyconf create mode 100644 products/ADAO.pyconf create mode 100644 products/ADAO_INTERFACE.pyconf create mode 100644 products/ALAMOS.pyconf create mode 100644 products/ALAMOS_PROFILE.pyconf create mode 100644 products/BLSURFPLUGIN.pyconf create mode 100644 products/Babel.pyconf create mode 100644 products/CALCULATOR.pyconf create mode 100755 products/CAS.pyconf create mode 100644 products/CDMATH.pyconf create mode 100644 products/CEATESTBASE.pyconf create mode 100644 products/COMPONENT.pyconf create mode 100755 products/CONFIGURATION.pyconf create mode 100644 products/COREFLOWS.pyconf create mode 100644 products/COREFLOWS_PROFILE.pyconf create mode 100755 products/Cython.pyconf create mode 100644 products/DOCUMENTATION.pyconf create mode 100644 products/EFICAS.pyconf create mode 100644 products/EFICAS_TOOLS.pyconf create mode 100755 products/FIELDS.pyconf create mode 100644 products/GEOM.pyconf create mode 100644 products/GHS3DPLUGIN.pyconf create mode 100644 products/GHS3DPRLPLUGIN.pyconf create mode 100644 products/GMSHPLUGIN.pyconf create mode 100644 products/GUI.pyconf create mode 100644 products/HELLO.pyconf create mode 100644 products/HEXABLOCK.pyconf create mode 100644 products/HEXABLOCKPLUGIN.pyconf create mode 100644 products/HOMARD.pyconf create mode 100644 products/HXX2SALOME.pyconf create mode 100644 products/HYBRIDPLUGIN.pyconf create mode 100644 products/Hexotic.pyconf create mode 100644 products/HexoticPLUGIN.pyconf create mode 100644 products/JOBMANAGER.pyconf create mode 100644 products/Jinja2.pyconf create mode 100644 products/KERNEL.pyconf create mode 100755 products/LIBBATCH.pyconf create mode 100755 products/MED.pyconf create mode 100644 products/MEDCOUPLING.pyconf create mode 100644 products/MeshGems.pyconf create mode 100755 products/NETGENPLUGIN.pyconf create mode 100644 products/PARAVIS.pyconf create mode 100644 products/PY2CPP.pyconf create mode 100644 products/PYCALCULATOR.pyconf create mode 100644 products/PYHELLO.pyconf create mode 100644 products/ParMetis.pyconf create mode 100755 products/ParaView.pyconf create mode 100644 products/ParaViewData.pyconf create mode 100644 products/Pillow.pyconf create mode 100644 products/PyHamcrest.pyconf create mode 100644 products/PyQt.pyconf create mode 100644 products/Pygments.pyconf create mode 100755 products/Python.pyconf create mode 100644 products/RESTRICTED.pyconf create mode 100644 products/SALOME.pyconf create mode 100644 products/SALOME_FORMATION_PROFILE.pyconf create mode 100644 products/SALOME_PROFILE.pyconf create mode 100644 products/SAMPLES.pyconf create mode 100644 products/SHAPER.pyconf create mode 100644 products/SHAPERSTUDY.pyconf create mode 100644 products/SMESH.pyconf create mode 100644 products/SOLVERLAB.pyconf create mode 100644 products/Sphinx.pyconf create mode 100644 products/TECHOBJ_ROOT.pyconf create mode 100644 products/TRIOCFD_IHM.pyconf create mode 100644 products/TRIOCFD_PROFILE.pyconf create mode 100644 products/TRUST.pyconf create mode 100644 products/Togl.pyconf create mode 100644 products/TrioCFD.pyconf create mode 100644 products/VISU.pyconf create mode 100644 products/XDATA.pyconf create mode 100644 products/YACS.pyconf create mode 100644 products/YACSGEN.pyconf create mode 100644 products/alabaster.pyconf create mode 100644 products/boost.pyconf create mode 100755 products/bsd_xdr.pyconf create mode 100755 products/certifi.pyconf create mode 100644 products/cgns.pyconf create mode 100755 products/chardet.pyconf create mode 100644 products/click.pyconf create mode 100644 products/cmake.pyconf create mode 100755 products/colorama.pyconf create mode 100644 products/compil_scripts/ADAO.bat create mode 100755 products/compil_scripts/ADAO.sh create mode 100644 products/compil_scripts/Babel.bat create mode 100755 products/compil_scripts/Babel.sh create mode 100755 products/compil_scripts/CAS_6.7.sh create mode 100755 products/compil_scripts/CAS_7.0.sh create mode 100644 products/compil_scripts/CAS_7.3.bat create mode 100644 products/compil_scripts/CAS_7.4.bat create mode 100755 products/compil_scripts/COREFLOWS.sh create mode 100755 products/compil_scripts/Hexotic.sh create mode 100755 products/compil_scripts/Homard-SALOME9.sh create mode 100755 products/compil_scripts/Homard.sh create mode 100755 products/compil_scripts/Jinja2.bat create mode 100755 products/compil_scripts/Jinja2.sh create mode 100755 products/compil_scripts/MeshGems.bat create mode 100755 products/compil_scripts/MeshGems.sh create mode 100755 products/compil_scripts/ParMetis-3.sh create mode 100755 products/compil_scripts/ParaView-3.14.0.sh create mode 100755 products/compil_scripts/ParaView-4.2.0.sh create mode 100755 products/compil_scripts/ParaView-5.0.sh create mode 100755 products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh create mode 100755 products/compil_scripts/ParaView-5.1-820.sh create mode 100755 products/compil_scripts/ParaView-5.1.sh create mode 100755 products/compil_scripts/ParaView-5.4-b5c4c89.sh create mode 100755 products/compil_scripts/ParaView-5.4.1_b5c4c89.sh create mode 100755 products/compil_scripts/ParaView-5.5.2p2_7591431.sh create mode 100644 products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat create mode 100755 products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh create mode 100644 products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat create mode 100755 products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh create mode 100644 products/compil_scripts/ParaView.bat create mode 100755 products/compil_scripts/ParaView.sh create mode 100755 products/compil_scripts/ParaViewData.sh create mode 100644 products/compil_scripts/PyQt-5.6.bat create mode 100755 products/compil_scripts/PyQt-5.6.sh create mode 100644 products/compil_scripts/PyQt-5.9.bat create mode 100755 products/compil_scripts/PyQt-5.9.sh create mode 100755 products/compil_scripts/PyQt.sh create mode 100755 products/compil_scripts/PyQt_5_5_1.bat create mode 100755 products/compil_scripts/PyQt_5_5_1.sh create mode 100755 products/compil_scripts/Pygments.bat create mode 100755 products/compil_scripts/Pygments.sh create mode 100644 products/compil_scripts/Python-3.6.5.bat create mode 100755 products/compil_scripts/Python.bat create mode 100755 products/compil_scripts/Python.sh create mode 100755 products/compil_scripts/SOLVERLAB.sh create mode 100755 products/compil_scripts/Sphinx.bat create mode 100755 products/compil_scripts/Sphinx.sh create mode 100755 products/compil_scripts/TRUST.sh create mode 100755 products/compil_scripts/Togl.sh create mode 100755 products/compil_scripts/TrioCFD.sh create mode 100755 products/compil_scripts/XDATA.py create mode 100755 products/compil_scripts/YACS.sh create mode 100644 products/compil_scripts/YACS.sh1 create mode 100644 products/compil_scripts/YACSGEN.bat create mode 100755 products/compil_scripts/YACSGEN.py create mode 100755 products/compil_scripts/YACSGEN.sh create mode 100755 products/compil_scripts/alabaster.bat create mode 100755 products/compil_scripts/alabaster.sh create mode 100755 products/compil_scripts/boost.bat create mode 100755 products/compil_scripts/boost.sh create mode 100644 products/compil_scripts/boost_V1.67.0.bat create mode 100755 products/compil_scripts/bsd_xdr.bat create mode 100755 products/compil_scripts/bsd_xdr.sh create mode 100755 products/compil_scripts/certifi.sh create mode 100755 products/compil_scripts/cgns.bat create mode 100755 products/compil_scripts/cgns.sh create mode 100755 products/compil_scripts/chardet.sh create mode 100755 products/compil_scripts/click.sh create mode 100644 products/compil_scripts/cmake.bat create mode 100755 products/compil_scripts/cmake.sh create mode 100755 products/compil_scripts/colorama.bat create mode 100755 products/compil_scripts/colorama.sh create mode 100755 products/compil_scripts/cppunit.bat create mode 100755 products/compil_scripts/cppunit.sh create mode 100755 products/compil_scripts/cycler.sh create mode 100755 products/compil_scripts/cython.bat create mode 100755 products/compil_scripts/cython.sh create mode 100755 products/compil_scripts/dateutil.bat create mode 100755 products/compil_scripts/dateutil.sh create mode 100755 products/compil_scripts/distribute.bat create mode 100755 products/compil_scripts/distribute.sh create mode 100755 products/compil_scripts/docutils.bat create mode 100755 products/compil_scripts/docutils.sh create mode 100755 products/compil_scripts/doxygen.bat create mode 100755 products/compil_scripts/doxygen.sh create mode 100755 products/compil_scripts/eficas.sh create mode 100755 products/compil_scripts/eigen-3.2.7.sh create mode 100644 products/compil_scripts/eigen.bat create mode 100755 products/compil_scripts/eigen.sh create mode 100644 products/compil_scripts/expat.bat create mode 100755 products/compil_scripts/expat.sh create mode 100644 products/compil_scripts/f2c.bat create mode 100755 products/compil_scripts/freeimage-3.16.0.sh create mode 100644 products/compil_scripts/freeimage.bat create mode 100755 products/compil_scripts/freeimage.sh create mode 100755 products/compil_scripts/freetype-2.3.sh create mode 100755 products/compil_scripts/freetype.bat create mode 100755 products/compil_scripts/freetype.sh create mode 100755 products/compil_scripts/ftgl_2.1.3.sh create mode 100755 products/compil_scripts/functools32.sh create mode 100755 products/compil_scripts/gcc-6.3.0.sh create mode 100755 products/compil_scripts/gl2ps-1.4.0.sh create mode 100755 products/compil_scripts/gl2ps.bat create mode 100755 products/compil_scripts/gl2ps.sh create mode 100755 products/compil_scripts/glu.sh create mode 100755 products/compil_scripts/gmsh-2.12.0.sh create mode 100644 products/compil_scripts/gmsh.bat create mode 100755 products/compil_scripts/gmsh.sh create mode 100755 products/compil_scripts/graphviz-2.38.0.bat create mode 100755 products/compil_scripts/graphviz-2.38.0.sh create mode 100644 products/compil_scripts/graphviz-2.44.1.bat create mode 100644 products/compil_scripts/graphviz.bat create mode 100755 products/compil_scripts/graphviz.sh create mode 100755 products/compil_scripts/hdf5-1.10.3.sh create mode 100755 products/compil_scripts/hdf5Autotools.sh create mode 100755 products/compil_scripts/hdf5CMake.bat create mode 100755 products/compil_scripts/hdf5CMake.sh create mode 100755 products/compil_scripts/hdf5_cxx.sh create mode 100755 products/compil_scripts/idna.sh create mode 100755 products/compil_scripts/imagesize.sh create mode 100755 products/compil_scripts/ispc-1.9.2.sh create mode 100644 products/compil_scripts/ispc.bat create mode 100755 products/compil_scripts/kiwisolver.sh create mode 100644 products/compil_scripts/lapack.bat create mode 100755 products/compil_scripts/lapack.sh create mode 100644 products/compil_scripts/lata.bat create mode 100755 products/compil_scripts/lata.sh create mode 100644 products/compil_scripts/libjpeg.bat create mode 100755 products/compil_scripts/libpng.bat create mode 100755 products/compil_scripts/libpng.sh create mode 100755 products/compil_scripts/libxml2.bat create mode 100755 products/compil_scripts/libxml2.sh create mode 100755 products/compil_scripts/libxml2_2_9_2.sh create mode 100755 products/compil_scripts/llvm.sh create mode 100755 products/compil_scripts/markupsafe.bat create mode 100755 products/compil_scripts/markupsafe.sh create mode 100755 products/compil_scripts/matplotlib-2.0.2.sh create mode 100755 products/compil_scripts/matplotlib.bat create mode 100755 products/compil_scripts/matplotlib.sh create mode 100755 products/compil_scripts/med.sh create mode 100755 products/compil_scripts/medCMake.bat create mode 100755 products/compil_scripts/medCMake.sh create mode 100644 products/compil_scripts/mesa.bat create mode 100755 products/compil_scripts/mesa.sh create mode 100755 products/compil_scripts/metis-5.1.0.bat create mode 100755 products/compil_scripts/metis-5.1.0.sh create mode 100755 products/compil_scripts/metis.sh create mode 100755 products/compil_scripts/metis_5_0_2.sh create mode 100644 products/compil_scripts/msvc.bat create mode 100644 products/compil_scripts/netgen.bat create mode 100755 products/compil_scripts/netgen.sh create mode 100755 products/compil_scripts/netgen_5_3_1.bat create mode 100755 products/compil_scripts/netgen_5_3_1.sh create mode 100755 products/compil_scripts/netgen_CAS7.sh create mode 100644 products/compil_scripts/nlopt.bat create mode 100755 products/compil_scripts/nlopt.sh create mode 100755 products/compil_scripts/numpy-1.12.1.sh create mode 100755 products/compil_scripts/numpy-1.15.1.sh create mode 100755 products/compil_scripts/numpy.bat create mode 100755 products/compil_scripts/numpy.sh create mode 100755 products/compil_scripts/omniNotify.sh create mode 100755 products/compil_scripts/omniORB.bat create mode 100755 products/compil_scripts/omniORB.sh create mode 100755 products/compil_scripts/omniORBpy.bat create mode 100755 products/compil_scripts/omniORBpy.sh create mode 100644 products/compil_scripts/openblas.bat create mode 100755 products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh create mode 100755 products/compil_scripts/opencv.bat create mode 100755 products/compil_scripts/opencv.sh create mode 100755 products/compil_scripts/openmpi.sh create mode 100755 products/compil_scripts/packaging.sh create mode 100644 products/compil_scripts/perl.bat create mode 100755 products/compil_scripts/petsc.sh create mode 100644 products/compil_scripts/pip.bat create mode 100644 products/compil_scripts/pip_install.bat create mode 100755 products/compil_scripts/pip_install.sh create mode 100644 products/compil_scripts/pip_install_whl.bat create mode 100644 products/compil_scripts/planegcs.bat create mode 100755 products/compil_scripts/planegcs.sh create mode 100755 products/compil_scripts/pockets.sh create mode 100755 products/compil_scripts/pthreads.bat create mode 100755 products/compil_scripts/pthreads.sh create mode 100755 products/compil_scripts/pyhamcrest.sh create mode 100755 products/compil_scripts/pyparsing.bat create mode 100755 products/compil_scripts/pyparsing.sh create mode 100755 products/compil_scripts/pyreadline.bat create mode 100755 products/compil_scripts/pyreadline.sh create mode 100755 products/compil_scripts/pytz.bat create mode 100755 products/compil_scripts/pytz.sh create mode 100755 products/compil_scripts/qt-4.6.3.sh create mode 100755 products/compil_scripts/qt-4.8.4.sh create mode 100755 products/compil_scripts/qt-5.5.1.sh create mode 100755 products/compil_scripts/qt-5.6.1.bat create mode 100755 products/compil_scripts/qt-5.6.1.sh create mode 100755 products/compil_scripts/qt-5.6.1_test.sh create mode 100755 products/compil_scripts/qt-5.8.4.sh create mode 100644 products/compil_scripts/qt.bat create mode 100755 products/compil_scripts/qt.sh create mode 100755 products/compil_scripts/qwt-6.1.0.bat create mode 100755 products/compil_scripts/qwt-6.1.0.sh create mode 100755 products/compil_scripts/qwt.sh create mode 100755 products/compil_scripts/requests.sh create mode 100644 products/compil_scripts/root.bat create mode 100644 products/compil_scripts/ruby.bat create mode 100755 products/compil_scripts/scipy.bat create mode 100755 products/compil_scripts/scipy.sh create mode 100755 products/compil_scripts/scons.sh create mode 100755 products/compil_scripts/scotch-5.1.12.sh create mode 100755 products/compil_scripts/scotch.sh create mode 100755 products/compil_scripts/setuptools.bat create mode 100755 products/compil_scripts/setuptools.sh create mode 100755 products/compil_scripts/sip.bat create mode 100755 products/compil_scripts/sip.sh create mode 100755 products/compil_scripts/six.bat create mode 100755 products/compil_scripts/six.sh create mode 100755 products/compil_scripts/snowballstemmer.sh create mode 100755 products/compil_scripts/solvespace-2.1.sh create mode 100755 products/compil_scripts/sphinx_rtd_theme.sh create mode 100755 products/compil_scripts/sphinxcontrib.sh create mode 100755 products/compil_scripts/sphinxcontrib_napoleon.sh create mode 100755 products/compil_scripts/sphinxcontrib_websupport.sh create mode 100755 products/compil_scripts/sphinxintl.sh create mode 100755 products/compil_scripts/subprocess32.sh create mode 100755 products/compil_scripts/swig.bat create mode 100755 products/compil_scripts/swig.sh create mode 100644 products/compil_scripts/tbb.bat create mode 100755 products/compil_scripts/tbb.sh create mode 100755 products/compil_scripts/tcl.bat create mode 100755 products/compil_scripts/tcl.sh create mode 100644 products/compil_scripts/tcltk.bat create mode 100755 products/compil_scripts/tcltk.sh create mode 100755 products/compil_scripts/tk.bat create mode 100755 products/compil_scripts/tk.sh create mode 100755 products/compil_scripts/typing.sh create mode 100755 products/compil_scripts/uranie_win.bat create mode 100755 products/compil_scripts/uranie_win.sh create mode 100755 products/compil_scripts/urllib3.sh create mode 100755 products/compil_scripts/vtk.sh create mode 100755 products/compil_scripts/zlib.bat create mode 100755 products/compil_scripts/zlib.sh create mode 100644 products/cppunit.pyconf create mode 100644 products/cycler.pyconf create mode 100644 products/dateutil.pyconf create mode 100755 products/distribute.pyconf create mode 100644 products/docutils.pyconf create mode 100755 products/doxygen.pyconf create mode 100644 products/eigen.pyconf create mode 100644 products/embree.pyconf create mode 100644 products/env_scripts/ADAO.py create mode 100644 products/env_scripts/ADAO_INTERFACE.py create mode 100644 products/env_scripts/Babel.py create mode 100755 products/env_scripts/CAS.py create mode 100644 products/env_scripts/CDMATH.py create mode 100644 products/env_scripts/COREFLOWS.py create mode 100644 products/env_scripts/Cython.py create mode 100644 products/env_scripts/EFICAS_TOOLS.py create mode 100755 products/env_scripts/Hexotic.py create mode 100755 products/env_scripts/Homard.py create mode 100755 products/env_scripts/Jinja2.py create mode 100644 products/env_scripts/LIBBATCH.py create mode 100644 products/env_scripts/MeshGems.py create mode 100644 products/env_scripts/ParMetis.py create mode 100644 products/env_scripts/ParaView.py create mode 100755 products/env_scripts/ParaViewData.py create mode 100644 products/env_scripts/Pillow.py create mode 100644 products/env_scripts/PyHamcrest.py create mode 100644 products/env_scripts/PyQt.py create mode 100755 products/env_scripts/Pygments.py create mode 100644 products/env_scripts/Python.py create mode 100644 products/env_scripts/SAMPLES.py create mode 100644 products/env_scripts/SOLVERLAB.py create mode 100755 products/env_scripts/Sphinx.py create mode 100644 products/env_scripts/TRUST.py create mode 100644 products/env_scripts/Togl.py create mode 100644 products/env_scripts/TrioCFD.py create mode 100644 products/env_scripts/XDATA.py create mode 100644 products/env_scripts/YACSGEN.py create mode 100644 products/env_scripts/alabaster.py create mode 100755 products/env_scripts/boost.py create mode 100755 products/env_scripts/bsd_xdr.py create mode 100644 products/env_scripts/ceatest.py create mode 100644 products/env_scripts/certifi.py create mode 100644 products/env_scripts/cgns.py create mode 100644 products/env_scripts/chardet.py create mode 100644 products/env_scripts/click.py create mode 100755 products/env_scripts/cmake.py create mode 100755 products/env_scripts/colorama.py create mode 100644 products/env_scripts/cppunit.py create mode 100644 products/env_scripts/cycler.py create mode 100644 products/env_scripts/dateutil.py create mode 100644 products/env_scripts/distribute.py create mode 100755 products/env_scripts/docutils.py create mode 100755 products/env_scripts/doxygen.py create mode 100644 products/env_scripts/eigen.py create mode 100644 products/env_scripts/embree.py create mode 100755 products/env_scripts/expat.py create mode 100644 products/env_scripts/f2c.py create mode 100644 products/env_scripts/freeimage.py create mode 100755 products/env_scripts/freetype.py create mode 100755 products/env_scripts/ftgl.py create mode 100644 products/env_scripts/functools32.py create mode 100644 products/env_scripts/gcc.py create mode 100755 products/env_scripts/gl2ps.py create mode 100644 products/env_scripts/glu.py create mode 100644 products/env_scripts/gmsh.py create mode 100644 products/env_scripts/graphviz.py create mode 100644 products/env_scripts/hdf5.py create mode 100644 products/env_scripts/idna.py create mode 100644 products/env_scripts/imagesize.py create mode 100644 products/env_scripts/ispc.py create mode 100644 products/env_scripts/kiwisolver.py create mode 100644 products/env_scripts/lapack.py create mode 100644 products/env_scripts/lata.py create mode 100644 products/env_scripts/libjpeg.py create mode 100755 products/env_scripts/libpng.py create mode 100644 products/env_scripts/libxml2.py create mode 100644 products/env_scripts/llvm.py create mode 100644 products/env_scripts/markupsafe.py create mode 100644 products/env_scripts/matplotlib.py create mode 100644 products/env_scripts/med.py create mode 100644 products/env_scripts/mesa.py create mode 100755 products/env_scripts/metis.py create mode 100644 products/env_scripts/msvc.py create mode 100755 products/env_scripts/netgen.py create mode 100644 products/env_scripts/nlopt.py create mode 100644 products/env_scripts/numpy.py create mode 100755 products/env_scripts/omniNotify.py create mode 100644 products/env_scripts/omniORB.py create mode 100644 products/env_scripts/omniORBpy.py create mode 100644 products/env_scripts/openblas.py create mode 100755 products/env_scripts/opencv.py create mode 100644 products/env_scripts/openmpi.py create mode 100644 products/env_scripts/ospray.py create mode 100644 products/env_scripts/packaging.py create mode 100644 products/env_scripts/perl.py create mode 100644 products/env_scripts/petsc.py create mode 100644 products/env_scripts/planegcs.py create mode 100644 products/env_scripts/pockets.py create mode 100755 products/env_scripts/pthreads.py create mode 100644 products/env_scripts/pyparsing.py create mode 100755 products/env_scripts/pyreadline.py create mode 100755 products/env_scripts/pytz.py create mode 100644 products/env_scripts/qt.py create mode 100755 products/env_scripts/qwt.py create mode 100644 products/env_scripts/requests.py create mode 100644 products/env_scripts/root.py create mode 100644 products/env_scripts/ruby.py create mode 100644 products/env_scripts/scipy.py create mode 100644 products/env_scripts/scons.py create mode 100755 products/env_scripts/scotch.py create mode 100644 products/env_scripts/setuptools.py create mode 100644 products/env_scripts/sip.py create mode 100644 products/env_scripts/six.py create mode 100644 products/env_scripts/snowballstemmer.py create mode 100644 products/env_scripts/solvespace.py create mode 100644 products/env_scripts/sphinx_rtd_theme.py create mode 100644 products/env_scripts/sphinxcontrib.py create mode 100644 products/env_scripts/sphinxcontrib_applehelp.py create mode 100644 products/env_scripts/sphinxcontrib_devhelp.py create mode 100644 products/env_scripts/sphinxcontrib_htmlhelp.py create mode 100644 products/env_scripts/sphinxcontrib_jsmath.py create mode 100644 products/env_scripts/sphinxcontrib_napoleon.py create mode 100644 products/env_scripts/sphinxcontrib_qthelp.py create mode 100644 products/env_scripts/sphinxcontrib_serializinghtml.py create mode 100644 products/env_scripts/sphinxcontrib_websupport.py create mode 100644 products/env_scripts/sphinxintl.py create mode 100644 products/env_scripts/subprocess32.py create mode 100644 products/env_scripts/swig.py create mode 100644 products/env_scripts/tbb.py create mode 100644 products/env_scripts/tcl.py create mode 100644 products/env_scripts/tcltk.py create mode 100755 products/env_scripts/tk.py create mode 100644 products/env_scripts/typing.py create mode 100755 products/env_scripts/uranie_win.py create mode 100644 products/env_scripts/urllib3.py create mode 100644 products/env_scripts/vtk.py create mode 100755 products/env_scripts/zlib.py create mode 100644 products/expat.pyconf create mode 100644 products/f2c.pyconf create mode 100644 products/ffmpeg.pyconf create mode 100644 products/freeimage.pyconf create mode 100755 products/freetype.pyconf create mode 100644 products/ftgl.pyconf create mode 100644 products/functools32.pyconf create mode 100644 products/gcc.pyconf create mode 100755 products/gl2ps.pyconf create mode 100644 products/glu.pyconf create mode 100644 products/gmsh.pyconf create mode 100755 products/graphviz.pyconf create mode 100755 products/hdf5.pyconf create mode 100644 products/homard_bin.pyconf create mode 100644 products/homard_pre_windows.pyconf create mode 100755 products/idna.pyconf create mode 100755 products/imagesize.pyconf create mode 100644 products/ispc.pyconf create mode 100755 products/kiwisolver.pyconf create mode 100644 products/lapack.pyconf create mode 100644 products/lata.pyconf create mode 100644 products/libjpeg.pyconf create mode 100755 products/libpng.pyconf create mode 100644 products/libxml2.pyconf create mode 100644 products/llvm.pyconf create mode 100644 products/markupsafe.pyconf create mode 100755 products/matplotlib.pyconf create mode 100755 products/med_pre_windows.pyconf create mode 100644 products/medfile.pyconf create mode 100644 products/mesa.pyconf create mode 100644 products/metis.pyconf create mode 100644 products/msvc.pyconf create mode 100755 products/netgen.pyconf create mode 100644 products/nlopt.pyconf create mode 100755 products/numpy.pyconf create mode 100644 products/omniNotify.pyconf create mode 100644 products/omniORB.pyconf create mode 100644 products/omniORBpy.pyconf create mode 100644 products/openblas.pyconf create mode 100644 products/opencv.pyconf create mode 100644 products/openmpi.pyconf create mode 100644 products/openssl.pyconf create mode 100644 products/ospray.pyconf create mode 100755 products/packaging.pyconf create mode 100644 products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch create mode 100644 products/patches/BLSURFPLUGIN_8_4_0.patch create mode 100755 products/patches/CAS-6.5.4.patch create mode 100755 products/patches/CAS_autotools_macros.patch create mode 100644 products/patches/CONFIGURATION-FC29.patch create mode 100755 products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch create mode 100644 products/patches/GUI_GLdispatch.patch create mode 100644 products/patches/GUI_Python_async.patch create mode 100644 products/patches/KERNEL-FC29.patch create mode 100644 products/patches/KERNEL_libLauncher_Temporary.patch create mode 100644 products/patches/MEDCOUPLING-FC29.patch create mode 100644 products/patches/OCCT-7.1.0_transfrom_pers.patch create mode 100644 products/patches/PARAVIS-MEDReader-CMakeLists.patch create mode 100755 products/patches/ParaView-3.14.0.patch create mode 100644 products/patches/ParaView-4.2.0.patch create mode 100755 products/patches/ParaView-5.1.2-win.patch create mode 100644 products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch create mode 100644 products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch create mode 100644 products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch create mode 100644 products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch create mode 100644 products/patches/ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch create mode 100644 products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch create mode 100644 products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch create mode 100755 products/patches/PyQt-4.9.1.patch create mode 100644 products/patches/PyQt-GLdispatch.patch create mode 100644 products/patches/Python-3.6.5_windows.patch create mode 100755 products/patches/Python_SSL.patch create mode 100644 products/patches/Python_zlib_detection.patch create mode 100644 products/patches/SALOME_PROFILE_NO_ENV.patch create mode 100644 products/patches/SALOME_PROFILE_NO_ENV_master.patch create mode 100644 products/patches/SALOME_PROFILE_NO_ENV_master_V2.patch create mode 100755 products/patches/boost-1.49.0.patch create mode 100644 products/patches/boost-1.52.0-cstdint_missing_include.patch create mode 100644 products/patches/boost-1.52.0_recent_glibc_versions.patch create mode 100644 products/patches/cppunit-1.13.2_windows.patch create mode 100755 products/patches/doxygen-1.8.3.1.patch create mode 100644 products/patches/doxygen_compatibility_flex260.patch create mode 100644 products/patches/embree-3.5.2-centos6.patch create mode 100755 products/patches/enable-windows-plugin-compilation.patch create mode 100644 products/patches/freeimage-3.16.0_gcc6.patch create mode 100644 products/patches/freeimage-3.17.0_windows.patch create mode 100644 products/patches/freeimage-3.18.0_windows.patch create mode 100644 products/patches/freetype-2.4.11_ft_export_FD20.patch create mode 100644 products/patches/freetype-2.9.1_windows.patch create mode 100644 products/patches/ftgl-2.1.3_no_doc.patch create mode 100644 products/patches/geom-doc-gui.patch create mode 100644 products/patches/geom_8.5.0_xao_data_dir.patch create mode 100755 products/patches/gl2ps-1.3.5-GLUT.patch create mode 100644 products/patches/gl2ps-1.3.8-GLUT.patch create mode 100755 products/patches/gl2ps-1.3.8_link_libm_FD20.patch_orig create mode 100644 products/patches/gl2ps-1.3.9p1-GLUT.patch create mode 100644 products/patches/gl2ps-1.3.9p1-no_static_lib.patch create mode 100644 products/patches/gl2ps-1.4.0-GLUT.patch create mode 100644 products/patches/hdf5-1.10.3.patch create mode 100644 products/patches/hdf5-1.10.3.win_unicode.patch create mode 100644 products/patches/hdf5-1.10.3.win_unicode_new.patch create mode 100644 products/patches/hdf5_188_remove_c++_comment.patch create mode 100644 products/patches/ispc-1.9.2-centos6.patch create mode 100644 products/patches/ispc-ispc-0621fcb.patch create mode 100644 products/patches/ispc-makefile_WERROR.patch create mode 100644 products/patches/kernel_orbmodule_safewakeup.patch create mode 100644 products/patches/kernel_setenv_161024.patch create mode 100644 products/patches/lapack-3.8.0_windows.patch create mode 100644 products/patches/lata-plugin_visit.patch create mode 100644 products/patches/libxml2-2.9.1.patch create mode 100644 products/patches/llvm-8.0.1-clang-FD32.patch create mode 100644 products/patches/matplotlib-1.4.3_fix_Cannot_connect_NavigationToolbar2QT.patch create mode 100644 products/patches/matplotlib-1.4.3_no_auto_download.patch create mode 100644 products/patches/matplotlib_1_4_2_patch_freetype_detection_for_SAT.patch create mode 100644 products/patches/matplotlib_1_4_3_patch_freetype_detection_for_SAT.patch create mode 100644 products/patches/matplotlibrc-qt4.patch create mode 100644 products/patches/med-4.0.0_unicode.patch create mode 100644 products/patches/med-4.0.0alpha3.patch create mode 100644 products/patches/med-4.1.0_win_3x_files_support.patch create mode 100644 products/patches/med_mode_non_debug.patch create mode 100644 products/patches/medcoupling-7.8.0-m4-files.patch create mode 100644 products/patches/medcoupling_abn780.patch create mode 100644 products/patches/medcoupling_abn780_co6.patch create mode 100644 products/patches/medcoupling_abn780b.patch create mode 100644 products/patches/medcoupling_m4_files.patch create mode 100644 products/patches/medcoupling_salome_9_0_0.patch create mode 100644 products/patches/medfile-4.0.0.patch create mode 100644 products/patches/mesa-19.0.8-debug_symbol.patch create mode 100644 products/patches/metis-5.1.0_windows.patch create mode 100644 products/patches/metis-use_cat_not_more.patch create mode 100755 products/patches/netgen-4.9.13-for-OCCT7.0.0-includes.patch create mode 100755 products/patches/netgen-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch create mode 100755 products/patches/netgen-4.9.13-for-SALOME.patch create mode 100755 products/patches/netgen-4.9.13-for-SALOME_v2.patch create mode 100644 products/patches/netgen-4.9.13_without_togl.patch create mode 100644 products/patches/netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch create mode 100644 products/patches/netgen-5.3.1_OCCT-7.3_Windows-10_Visual-2017.patch create mode 100644 products/patches/netgen49ForSalome.patch create mode 100644 products/patches/netgen53ForSalome.patch create mode 100644 products/patches/netgen53ForSalomeOCCT730.patch create mode 100644 products/patches/netgen53ForSalomeVisualStudio2017.patch create mode 100644 products/patches/netgen53ForSalome_Windows.patch create mode 100644 products/patches/netgen53ForWindows.patch create mode 100755 products/patches/omniNotify-2.1-lib64.patch create mode 100755 products/patches/omniNotify-2.1.patch create mode 100644 products/patches/opencv-2.4.6.1-gcc6.patch create mode 100644 products/patches/opencv-3.2.0-ccache.patch create mode 100644 products/patches/opencv-3.2.0_windows.patch create mode 100644 products/patches/opencv-with-ffmpeg.patch create mode 100644 products/patches/paraview.0003-ParaViewClient.patch create mode 100644 products/patches/paraview.0004-ParaView_hdf5.patch create mode 100644 products/patches/paraview.0005-ParaView_find_cgns.patch create mode 100644 products/patches/paraview.0006-ParaView_find_libxml2.patch create mode 100644 products/patches/paraview.0007-ParaView_find_freetype.patch create mode 100644 products/patches/paraview.0008-ParaView_find_zlib.patch create mode 100644 products/patches/paraview.0009-ParaView_volume_mapper.patch create mode 100644 products/patches/paraview.0010-ParaViewClient.patch create mode 100644 products/patches/paraview.0010-VTKM_MPI.patch create mode 100644 products/patches/paravis_8_3_mpi_medinclude.patch create mode 100755 products/patches/patchPyQt496noPhonon.patch create mode 100644 products/patches/patch_shaper_cursor_cross.diff create mode 100644 products/patches/pthreads-2.9.1_windows.patch create mode 100644 products/patches/pv_coincident.patch create mode 100644 products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch create mode 100755 products/patches/qt-463-gcc46.patch create mode 100644 products/patches/qt-5.5.1-qlockfile.patch create mode 100644 products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch create mode 100644 products/patches/qt-5.9.1-mapbox-FD32.patch create mode 100644 products/patches/qt_5.5.1-qwebengine.patch create mode 100755 products/patches/remove-windows-python-subprojects.patch create mode 100755 products/patches/scipy-0.13.3.patch create mode 100644 products/patches/scipy-0.14.1.patch create mode 100644 products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch create mode 100644 products/patches/tbb-2019_U8_windows10.patch create mode 100644 products/patches/tcl-8.6.9_windows.patch create mode 100644 products/patches/tcltk-8.6.9_windows.patch create mode 100644 products/patches/tk-8.6.9_windows.patch create mode 100644 products/patches/xdata-0.9.11.patch create mode 100755 products/patches/xdata-0.9.9.python2.7.patch create mode 100644 products/patches/xdata_qt.patch create mode 100644 products/patches/yacs_cea_v2.patch create mode 100644 products/patches/yacs_without_expat.patch create mode 100644 products/patches/yacsgen_7_8_med_medcoupling.patch create mode 100644 products/patches/yacsgen_7_8_portage.patch create mode 100644 products/patches/yacsgen_hxx.patch create mode 100644 products/perl.pyconf create mode 100644 products/petsc.pyconf create mode 100644 products/planegcs.pyconf create mode 100644 products/pockets.pyconf create mode 100755 products/pthreads.pyconf create mode 100644 products/pybind11.pyconf create mode 100644 products/pyparsing.pyconf create mode 100755 products/pyreadline.pyconf create mode 100644 products/pytz.pyconf create mode 100644 products/qt.pyconf create mode 100644 products/qwt.pyconf create mode 100755 products/requests.pyconf create mode 100644 products/root.pyconf create mode 100644 products/ruby.pyconf create mode 100755 products/scipy.pyconf create mode 100644 products/scons.pyconf create mode 100644 products/scotch.pyconf create mode 100644 products/setuptools.pyconf create mode 100644 products/sip.pyconf create mode 100644 products/six.pyconf create mode 100644 products/snowballstemmer.pyconf create mode 100644 products/solvespace.pyconf create mode 100644 products/sphinx_rtd_theme.pyconf create mode 100644 products/sphinxcontrib.pyconf create mode 100644 products/sphinxcontrib_applehelp.pyconf create mode 100644 products/sphinxcontrib_devhelp.pyconf create mode 100644 products/sphinxcontrib_htmlhelp.pyconf create mode 100644 products/sphinxcontrib_jsmath.pyconf create mode 100644 products/sphinxcontrib_napoleon.pyconf create mode 100644 products/sphinxcontrib_qthelp.pyconf create mode 100644 products/sphinxcontrib_serializinghtml.pyconf create mode 100755 products/sphinxcontrib_websupport.pyconf create mode 100644 products/sphinxintl.pyconf create mode 100644 products/subprocess32.pyconf create mode 100644 products/swig.pyconf create mode 100644 products/tbb.pyconf create mode 100644 products/tcl.pyconf create mode 100644 products/tcltk.pyconf create mode 100644 products/tk.pyconf create mode 100644 products/typing.pyconf create mode 100755 products/uranie_win.pyconf create mode 100755 products/urllib3.pyconf create mode 100644 products/vtk.pyconf create mode 100755 products/zlib.pyconf create mode 100644 salome-W10.pyconf create mode 100644 salome.pyconf diff --git a/README b/README new file mode 100644 index 0000000..fe7ffab --- /dev/null +++ b/README @@ -0,0 +1,2 @@ +This git repository contains all SAT configurations files that define the SALOME project! + diff --git a/applications/GCC-6.3.0.pyconf b/applications/GCC-6.3.0.pyconf new file mode 100644 index 0000000..c85d0d6 --- /dev/null +++ b/applications/GCC-6.3.0.pyconf @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'GCC-6.3.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + gcc : '6.3.0' + } + test_base : + { + } +} + diff --git a/applications/MEDCOUPLING-7.8.2.pyconf b/applications/MEDCOUPLING-7.8.2.pyconf new file mode 100644 index 0000000..8c580e6 --- /dev/null +++ b/applications/MEDCOUPLING-7.8.2.pyconf @@ -0,0 +1,63 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-7.8.2-SAT5' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V7_8_0' + #base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + + Python : '2.7.10' +# OP 18/04/2017 Artifact 8489 : passage a boost 1.58.0 + #boost : '1.52.0' + boost : '1.58.0' + hdf5 : '1.8.14' + swig : '2.0.8' + medfile : '3.2.0' + doxygen : '1.8.3.1' + graphviz : '2.38.0' + libxml2 : '2.9.0' + cppunit : '1.12.1' + Sphinx : '1.2.3' + setuptools : '0.6c11' + numpy : '1.9.2' + scipy : '0.15.1' + lapack : '3.5.0' + cmake : '3.5.2' + Pygments : '2.0.2' + Jinja2 : '2.7.3' + docutils : '0.12' + markupsafe : '0.23' + + # SALOME MODULES : +# OP 18/04/2017 Artifact 8489 : passage au tag V7_8_2 + #'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_BR'} + 'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_2'} + + } + test_base : + { + name : "SALOME" + tag : "7.8.0" + } +} + + +__overwrite__ : +[ + { + __condition__ : "VARS.dist in ['FD24']" +# OP 18/04/2017 Artifact 8498 : Passage de la compilation de medfile a cmake +# La section CMake devient la section par defaut +# # medfile does not compile under Fedora 24 using autotools +# 'PRODUCTS.medfile.default.compil_script' : "medCMake.sh" +# 'PRODUCTS.medfile.default.test_build' : "make test" + } +] diff --git a/applications/MEDCOUPLING-8.5.0.pyconf b/applications/MEDCOUPLING-8.5.0.pyconf new file mode 100644 index 0000000..a7b7e2a --- /dev/null +++ b/applications/MEDCOUPLING-8.5.0.pyconf @@ -0,0 +1,73 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-8.5.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V8_5_0' + environ : + { + } + products : + { + # PREREQUISITES : + Babel : '2.0' + boost : '1.58.0' + click : '6.7' + cmake : '3.5.2' + cppunit : '1.13.2' + Cython : '0.23.2' + docutils : '0.12' + doxygen : '1.8.3.1' + graphviz : '2.38.0' + hdf5 : '1.8.14' + Jinja2 : '2.7.3' + lapack : '3.7.0' + libxml2 : '2.9.0' + markupsafe : '0.23' + medfile : '3.3.1' + metis : '5.1.0' + numpy : '1.12.1' + Pygments : '2.0.2' + Python : '2.7.10' + pytz : '2015.4' + scipy : '0.18.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + Sphinx : '1.2.3' + + # TA 06-04-2018 Add sphinx-intl prerequisite + sphinxintl: '0.9.10' + swig : '2.0.12' + + + +# + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + + } + test_base : + { + name : "SALOME" + tag : "SalomeV8" + } +} + +__overwrite__ : +[ + { + # OP 09/04/2018 add sphinx-intl, six prerequisites + 'PRODUCTS.MEDCOUPLING.default.depend' : + [ + "Babel", "boost", "click", "cmake", "cppunit", "Cython", "docutils", + "doxygen", "graphviz", "hdf5", "Jinja2", "lapack", "libxml2", + "markupsafe", "medfile", "metis", "numpy", "Pygments", "Python", "pytz", + "scipy", "scotch", "setuptools", "six", "Sphinx", "sphinxintl", + "swig", "CONFIGURATION" + ] + } +] diff --git a/applications/MEDCOUPLING-9.3.0.pyconf b/applications/MEDCOUPLING-9.3.0.pyconf new file mode 100644 index 0000000..ea84538 --- /dev/null +++ b/applications/MEDCOUPLING-9.3.0.pyconf @@ -0,0 +1,69 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.3.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_3_0' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : '4.0.0' + metis : '5.1.0' + numpy : '1.15.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.4' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } +} diff --git a/applications/MEDCOUPLING-9.4.0-windows.pyconf b/applications/MEDCOUPLING-9.4.0-windows.pyconf new file mode 100644 index 0000000..cbe6b21 --- /dev/null +++ b/applications/MEDCOUPLING-9.4.0-windows.pyconf @@ -0,0 +1,90 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.4.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + cmake_generator : 'Visual Studio 15 2017 Win64' + tag : 'V9_4_0' + debug : 'no' + dev : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + SALOME_HAS_GLOBAL_ENV: "1" + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.67.0' + certifi : '2019.6.16' + click : '7.0' + cmake : '3.12.1' + colorama: '0.4.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.29.12' + docutils : '0.14' + doxygen : '1.8.3.1' + expat : '2.0.1' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.8' + imagesize : '1.1.0' + Jinja2 : '2.10.1' + lapack : '3.8.0' + libjpeg: '9c' + libpng: '1.5.10' + libxml2 : '2.9.1' + markupsafe : '1.1.1' + medfile : '4.0.0' + metis : '5.1.0' + numpy : '1.16.4' + packaging : '19.0' + pockets : '0.7.2' + Pygments : '2.4.2' + pyparsing : '2.4.0' + Python : '3.6.5' + pytz : '2019.1' + requests : '2.22.0' + #scipy : '0.19.1' + setuptools : '41.0.1' + six : '1.12.0' + snowballstemmer : '1.9.0' + Sphinx : '2.1.2' + sphinxcontrib_applehelp : '1.0.1' + sphinxcontrib_devhelp : '1.0.1' + sphinxcontrib_jsmath : '1.0.1' + sphinxcontrib_htmlhelp : '1.0.2' + sphinxcontrib_napoleon : '0.7' + sphinxcontrib_qthelp : '1.0.2' + sphinxcontrib_serializinghtml :'1.1.3' + sphinxcontrib_websupport : '1.1.2' + sphinxintl: '2.0.0' + swig : '3.0.12' + urllib3 : '1.25.3' + zlib : '1.2.5' + + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-9.4.0.pyconf b/applications/MEDCOUPLING-9.4.0.pyconf new file mode 100644 index 0000000..38e4938 --- /dev/null +++ b/applications/MEDCOUPLING-9.4.0.pyconf @@ -0,0 +1,78 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.4.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_4_0' + debug : 'no' + dev : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : '4.0.0' + metis : '5.1.0' + numpy : '1.15.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.4' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-9.5.0-MPI.pyconf b/applications/MEDCOUPLING-9.5.0-MPI.pyconf new file mode 100644 index 0000000..59fc5d2 --- /dev/null +++ b/applications/MEDCOUPLING-9.5.0-MPI.pyconf @@ -0,0 +1,82 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.5.0-MPI' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_5_0' + base : 'no' + debug : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + SALOME_USE_64BIT_IDS : '1' + } + launch : {PYTHONIOENCODING:"UTF_8"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : {tag : '1.10.3', hpc : 'yes'} + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : {tag : '4.1.0', hpc : 'yes', section : 'default_Autotools' } + numpy : '1.15.1' + openmpi : '2.1.6' + ParMetis : '3.1.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.4' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'MEDCOUPLING' : {tag : 'V9_5_0', section: 'default_MPI'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-9.5.0-int64.pyconf b/applications/MEDCOUPLING-9.5.0-int64.pyconf new file mode 100644 index 0000000..85b0eb4 --- /dev/null +++ b/applications/MEDCOUPLING-9.5.0-int64.pyconf @@ -0,0 +1,81 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.5.0-int64' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_5_0' + base : 'no' + debug : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + SALOME_USE_64BIT_IDS : '1' + } + launch : {PYTHONIOENCODING:"UTF_8"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : {section: 'default_Autotools', tag: '4.1.0'} + metis : '5.1.0' + numpy : '1.15.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.4' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'MEDCOUPLING' : {tag : 'V9_5_0', section: 'default_int64'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-9.5.0-windows.pyconf b/applications/MEDCOUPLING-9.5.0-windows.pyconf new file mode 100644 index 0000000..a73c6ff --- /dev/null +++ b/applications/MEDCOUPLING-9.5.0-windows.pyconf @@ -0,0 +1,91 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.5.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + cmake_generator : 'Visual Studio 15 2017 Win64' + tag : 'V9_5_0' + debug : 'no' + dev : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + SALOME_HAS_GLOBAL_ENV: "1" + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.67.0' + certifi : '2019.6.16' + click : '7.0' + cmake : '3.12.1' + colorama: '0.4.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.29.12' + docutils : '0.14' + doxygen : '1.8.3.1' + expat : '2.0.1' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.8' + imagesize : '1.1.0' + Jinja2 : '2.10.1' + lapack : '3.8.0' + libjpeg: '9c' + libpng: '1.5.10' + libxml2 : '2.9.1' + markupsafe : '1.1.1' + medfile : '4.1.0' + metis : '5.1.0' + msvc : '2017' + numpy : '1.16.4' + packaging : '19.0' + pockets : '0.7.2' + Pygments : '2.4.2' + pyparsing : '2.4.0' + Python : '3.6.5' + pytz : '2019.1' + requests : '2.22.0' + scipy : '1.4.1' + setuptools : '41.0.1' + six : '1.12.0' + snowballstemmer : '1.9.0' + Sphinx : '2.1.2' + sphinxcontrib_applehelp : '1.0.1' + sphinxcontrib_devhelp : '1.0.1' + sphinxcontrib_jsmath : '1.0.1' + sphinxcontrib_htmlhelp : '1.0.2' + sphinxcontrib_napoleon : '0.7' + sphinxcontrib_qthelp : '1.0.2' + sphinxcontrib_serializinghtml :'1.1.3' + sphinxcontrib_websupport : '1.1.2' + sphinxintl: '2.0.0' + swig : '3.0.12' + urllib3 : '1.25.3' + zlib : '1.2.5' + + # SALOME MODULES : + 'CONFIGURATION' + 'MEDCOUPLING' + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-9.5.0.pyconf b/applications/MEDCOUPLING-9.5.0.pyconf new file mode 100644 index 0000000..97ec6c8 --- /dev/null +++ b/applications/MEDCOUPLING-9.5.0.pyconf @@ -0,0 +1,77 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-9.5.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_5_0' + base : 'no' + debug : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : '4.1.0' + metis : '5.1.0' + numpy : '1.15.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.4' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'MEDCOUPLING' + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-MPI.pyconf b/applications/MEDCOUPLING-MPI.pyconf new file mode 100644 index 0000000..37124eb --- /dev/null +++ b/applications/MEDCOUPLING-MPI.pyconf @@ -0,0 +1,83 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-MPI' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + # Tag set to master instead of V8_2_0 + #tag : 'V8_2_0' + tag : 'master' + #base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + # OP 09/04/2018 add pytz for Babel prerequisite + pytz : '2015.4' + + # OP 09/04/2018 add Babel, click, six prerequisites for sphinx-intl + Babel : '2.0' + click : '6.7' + six : '1.10.0' + + Python : '2.7.10' + Cython : '0.23.2' + lapack : '3.7.0' + numpy : '1.12.1' + scipy : '0.18.1' + boost : '1.58.0' + libxml2 : '2.9.0' + hdf5 : '1.8.14' + medfile : '3.3.1' + cmake : '3.5.2' + cppunit : '1.13.2' + metis : '5.1.0' + scotch : '6.0.4' + openmpi : '1.8.5' +# +# for documentation + setuptools : '38.4.0' + markupsafe : '0.23' + graphviz : '2.38.0' + doxygen : '1.8.3.1' + Sphinx : '1.2.3' + + # TA 06-04-2018 Add sphinx-intl prerequisite + sphinxintl: '0.9.10' + swig : '2.0.12' + Pygments : '2.0.2' + Jinja2 : '2.7.3' + docutils : '0.12' +# + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + + } + test_base : + { + name : "SALOME" + # Go back to the SalomeV8 tag + #tag : "8.2.0" + tag : "SalomeV8" + } +} +# OP 17/07/2017 Plutot que de passer par un overwrite, voir s'il ne serait pas +# plus pertinent de passer par une section dans le fichier +# MEDCOUPLING.pyconf +__overwrite__ : +[ + { + 'PRODUCTS.MEDCOUPLING.default.cmake_options' : '-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=ON -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON' + 'PRODUCTS.MEDCOUPLING.default.depend' : + [ + "boost", "Python", "swig", "hdf5", "medfile", "scotch", "doxygen", + "graphviz", "metis", "docutils", "libxml2", "cppunit", "Sphinx", + "sphinxintl", "setuptools", "six", "pytz", "numpy", "scipy", "lapack", + "cmake", "markupsafe", "Pygments", "Jinja2", "CONFIGURATION" + ] + } +] diff --git a/applications/MEDCOUPLING-master-int64.pyconf b/applications/MEDCOUPLING-master-int64.pyconf new file mode 100644 index 0000000..aefa8c0 --- /dev/null +++ b/applications/MEDCOUPLING-master-int64.pyconf @@ -0,0 +1,84 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-master-int64' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'master' + base : 'no' + debug : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + SALOME_USE_64BIT_IDS : '1' + } + launch : + { + PYTHONIOENCODING:"UTF_8" + } + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : {section: 'default_Autotools', tag: '4.1.0'} + metis : '5.1.0' + numpy : '1.15.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.7' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'MEDCOUPLING' : {tag : 'master', section: 'default_int64'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-master-windows.pyconf b/applications/MEDCOUPLING-master-windows.pyconf new file mode 100644 index 0000000..731f3c6 --- /dev/null +++ b/applications/MEDCOUPLING-master-windows.pyconf @@ -0,0 +1,90 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-master' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + cmake_generator : 'Visual Studio 15 2017 Win64' + tag : 'master' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + SALOME_HAS_GLOBAL_ENV: "1" + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.67.0' + certifi : '2019.6.16' + click : '7.0' + cmake : '3.12.1' + colorama: '0.4.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.29.12' + docutils : '0.14' + doxygen : '1.8.3.1' + expat : '2.0.1' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.8' + imagesize : '1.1.0' + Jinja2 : '2.10.1' + lapack : '3.8.0' + libjpeg: '9c' + libpng: '1.5.10' + libxml2 : '2.9.1' + markupsafe : '1.1.1' + medfile : '4.1.0' + metis : '5.1.0' + msvc : '2017' + numpy : '1.16.4' + packaging : '19.0' + pockets : '0.7.2' + Pygments : '2.4.2' + pyparsing : '2.4.0' + Python : '3.6.5' + pytz : '2019.1' + requests : '2.22.0' + scipy : '1.4.1' + setuptools : '41.0.1' + six : '1.12.0' + snowballstemmer : '1.9.0' + Sphinx : '2.1.2' + sphinxcontrib_applehelp : '1.0.1' + sphinxcontrib_devhelp : '1.0.1' + sphinxcontrib_jsmath : '1.0.1' + sphinxcontrib_htmlhelp : '1.0.2' + sphinxcontrib_napoleon : '0.7' + sphinxcontrib_qthelp : '1.0.2' + sphinxcontrib_serializinghtml :'1.1.3' + sphinxcontrib_websupport : '1.1.2' + sphinxintl: '2.0.0' + swig : '3.0.12' + urllib3 : '1.25.3' + zlib : '1.2.5' + + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} diff --git a/applications/MEDCOUPLING-master.pyconf b/applications/MEDCOUPLING-master.pyconf new file mode 100644 index 0000000..9b1e944 --- /dev/null +++ b/applications/MEDCOUPLING-master.pyconf @@ -0,0 +1,84 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-master' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'master' + base : 'no' + debug : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.58.0' + certifi : '2018.8.24' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + chardet : '3.0.4' + Cython : '0.25.2' + docutils : '0.12' + doxygen : '1.8.14' + graphviz : '2.38.0' + hdf5 : '1.10.3' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.8.0' + libxml2 : '2.9.1' + markupsafe : '0.23' + medfile : '4.1.0' + metis : '5.1.0' + numpy : '1.15.1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + Python : '3.6.5' + pytz : '2015.7' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + packaging : '17.1' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'MEDCOUPLING' + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} +__overwrite__ : +[ + { + __condition__ : "VARS.dist in ['FD32']" + 'APPLICATION.products.scipy' : '1.5.2' # gcc https://github.com/scipy/scipy/issues/11611 - either patch numpy to include -fallow-argument-mismatch or move to that version + } +] diff --git a/applications/MEDCOUPLING-native.pyconf b/applications/MEDCOUPLING-native.pyconf new file mode 100644 index 0000000..a916487 --- /dev/null +++ b/applications/MEDCOUPLING-native.pyconf @@ -0,0 +1,81 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'MEDCOUPLING-native' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + # Tag set to master instead of V8_2_0 + #tag : 'V8_2_0' + tag : 'master' + #base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + # OP 09/04/2018 add pytz for Babel prerequisite + pytz : '2015.4' + + # OP 09/04/2018 add Babel, click, six prerequisites for sphinx-intl + Babel : '2.0' + click : '6.7' + six : '1.10.0' + + Python : 'native' + lapack : 'native' + numpy : 'native' + scipy : 'native' + boost : 'native' + libxml2 : 'native' + cmake : 'native' + cppunit : 'native' + hdf5 : '1.8.14' + medfile : '3.3.1' + metis : '5.1.0' + scotch : '6.0.4' + swig : '2.0.12' +# +# for documentation + setuptools : 'native' + markupsafe : 'native' + graphviz : 'native' + doxygen : 'native' + Sphinx : 'native' + + # TA 06-04-2018 Add sphinx-intl prerequisite + sphinxintl: '0.9.10' + Pygments : 'native' + Jinja2 : 'native' + docutils : 'native' +# + # SALOME MODULES : + 'CONFIGURATION': {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + + } + test_base : + { + name : "SALOME" + # Go back to the SalomeV8 tag + #tag : "8.2.0" + tag : "SalomeV8" + } +} +# OP 17/07/2017 Plutot que de passer par un overwrite, voir s'il ne serait pas +# plus pertinent de passer par une section dans le fichier +# MEDCOUPLING.pyconf +__overwrite__ : +[ + { + # OP 09/04/2018 add sphinx-intl, six prerequisites + 'PRODUCTS.MEDCOUPLING.default.depend' : + [ + "boost", "Python", "swig", "hdf5", "medfile", "scotch", "doxygen", + "graphviz", "metis", "docutils", "libxml2", "cppunit", "Sphinx", + "sphinxintl", "setuptools", "six", "pytz", "numpy", "scipy", "lapack", + "cmake", "markupsafe", "Pygments", "Jinja2", "CONFIGURATION" + ] + } +] diff --git a/applications/Paraview-offscreen-rendering.pyconf b/applications/Paraview-offscreen-rendering.pyconf new file mode 100644 index 0000000..49facee --- /dev/null +++ b/applications/Paraview-offscreen-rendering.pyconf @@ -0,0 +1,50 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'Paraview-offscreen-rendering' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + #tag : 'V8_2_0' + #base : 'no' + environ : + { + OMNIORB_USER_PATH : '/tmp' + #_PATH : '/usr/sbin:/sbin' + } + products : + { + # PREREQUISITES : + cmake : '3.5.2' + Python : '2.7.10' +# OP 18/04/2017 Artifact 8498 : Passage de la compilation de hdf5 a cmake +# La section CMake devient la section par defaut + #hdf5 : { section : 'default_CMake', tag : '1.8.14'} + hdf5 : '1.8.14' + qt : '5.6.1-1' + boost : '1.58.0' + gl2ps : '1.3.9p1' + libxml2 : '2.9.0' + freetype : '2.4.11' + PyQt : '5.6' + numpy : '1.9.2' + six : '1.9.0' + pytz : '2014.10' + distribute : '0.6.28' + pyparsing : '1.5.6' + dateutil : '2.4.0' + setuptools : '0.6c11' + matplotlib : '1.4.3' + sip : '4.18' + llvm : '3.9.1' + mesa : '13.0.5' + glu : '9.0.0' + ParaView : {section : 'version_5_1_2plus_820_offscreen_rendering', tag : '5.1.2plus'} + openmpi : "1.8.5" + + } + test_base : + { + } +} + diff --git a/applications/SALOME-6.6.0.pyconf b/applications/SALOME-6.6.0.pyconf new file mode 100644 index 0000000..ab51a3e --- /dev/null +++ b/applications/SALOME-6.6.0.pyconf @@ -0,0 +1,98 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-6.6.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V6_6_0' + get_method : 'git' + base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + Python: '2.6.6' + Hexotic: '1.0' + homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '10.5'} + MeshGems: '1.0' + setuptools: '0.6c11' + Jinja2: '2.6' + Pygments: '1.5' + docutils: '0.8.1' + Sphinx: '1.1.3' + qt: '4.6.3' + sip: '4.13.2' + PyQt: '4.9.1' + tcl: '8.5.9' + tk: '8.5.9' + Togl: '1.7' + boost: '1.49.0' + ParaViewData: '3.14.0' + cmake: '2.8.7' + gl2ps: '1.3.5' + hdf5: '1.8.8' + freeimage: '3.14.1' + freetype: '2.3.7' + ftgl: '2.1.3-rc5' + CAS: '6.5.4' + cppunit: '1.12.1' + expat: '2.0.1' + graphviz: '2.28.0' + libxml2: '2.7.8' + doxygen: '1.8.0' + medfile: '3.0.6' + swig: '2.0.4' + qwt: '5.2.1' + netgen: '4.9.13' + scotch: '5.1.11' + omniORB: '4.1.6' + omniORBpy: '3.6' + omniNotify: '2.1' + numpy: '1.5.1' + ParaView: '3.14.0' + # QScintilla: '2.6.1' + # metis: '4.0patched' + + LIBBATCH : 'V1_6_0' + KERNEL + GUI + MED + GEOM + SMESH + NETGENPLUGIN + BLSURFPLUGIN + GHS3DPLUGIN + YACS + YACSGEN + VISU + + # Add SAMPLES module + SAMPLES + } + virtual_app: + { + # The name of the application (overrides $PRODUCT.name) + # This name will be used to generate packages. + name : "salome660" + # The name for the application directory (default is APPLI) + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV6" + } +} +APPLI: +{ + # The name of the application (overrides $PRODUCT.name) + # This name will be used to generate packages. + name : "salome660" + # The name for the application directory (default is APPLI) + application_name : "APPLI" + #module_appli: "SALOME_APPLI" + #module_appli_install_dir: $TOOLS.common.module_info.SALOME_APPLI.install_dir +} diff --git a/applications/SALOME-7.8.0.pyconf b/applications/SALOME-7.8.0.pyconf new file mode 100644 index 0000000..832eb58 --- /dev/null +++ b/applications/SALOME-7.8.0.pyconf @@ -0,0 +1,119 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-7.8.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V7_8_0' + #base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + Python : '2.7.10' + Cython : '0.23.2' + numpy : '1.9.2' + scipy : '0.15.1' + lapack : '3.5.0' + cmake : '3.5.2' + pyreadline : '2.0' + setuptools : '0.6c11' + markupsafe : '0.23' + Jinja2 : '2.7.3' + six : '1.9.0' + distribute : '0.6.28' + pytz : '2014.10' + pyparsing : '1.5.6' + dateutil : '2.4.0' + freetype : '2.4.11' + matplotlib : '1.4.3' + cppunit : '1.12.1' + qt : '4.8.4' + PyQt : '4.9.6' + qwt : '6.1.0' + sip : '4.14.2' + omniORB : '4.1.6' + omniORBpy : '3.6' + boost : '1.58.0' + swig : '2.0.8' + gl2ps : '1.3.8' + freeimage : '3.16.0' + tcl : '8.6.0' + tk : '8.6.0' + libxml2 : '2.9.0' + CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0} + hdf5 : '1.8.14' + ParaView : '5.0.1p1' + metis : '5.1.0' +# ParMetis : '3.1.1' + scotch : '5.1.12b' + medfile : '3.2.0' + graphviz : '2.38.0' + doxygen : '1.8.3.1' + docutils : '0.12' + Sphinx : '1.2.3' + Pygments : '2.0.2' + opencv : '2.4.6.1' + homard_bin : '11.7' + netgen : '4.9.13' + MeshGems : '2.1-11' + cgns : '3.1.3-4' + fftw : '3.3.4' + root : '5.34.32' + nlopt : '2.2.4' + pcl : '1.10' + uranie : '3.6.0' + lata : '1.3p2' + gmsh : '2.12.0' + + # SALOME MODULES : + 'SALOME_PROFILE' : "7.8.0" + + 'LIBBATCH' : "V2_3_0" + 'JOBMANAGER' + 'KERNEL' + 'GUI' + + 'GEOM' + + 'SMESH' + 'NETGENPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'BLSURFPLUGIN' + 'HexoticPLUGIN' + 'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'MED' + 'GMSHPLUGIN' + 'HOMARD' + 'MEDCOUPLING' + 'YACS' + 'YACSGEN' + 'XDATA' : "0.9.11" + 'HXX2SALOME' + 'PARAVIS' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + + 'DOCUMENTATION' + } + profile : + { + product : "SALOME_PROFILE" + } + test_base : + { + name : "SALOME" + tag : "7.8.0" + } +} + diff --git a/applications/SALOME-7.8.0p2.pyconf b/applications/SALOME-7.8.0p2.pyconf new file mode 100644 index 0000000..19f65e8 --- /dev/null +++ b/applications/SALOME-7.8.0p2.pyconf @@ -0,0 +1,120 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-7.8.0p2' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V7_8_0' + #base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + Python : '2.7.10' + Cython : '0.23.2' + numpy : '1.9.2' + scipy : '0.15.1' + lapack : '3.5.0' + cmake : '3.5.2' + pyreadline : '2.0' + setuptools : '0.6c11' + markupsafe : '0.23' + Jinja2 : '2.7.3' + six : '1.9.0' + distribute : '0.6.28' + pytz : '2014.10' + pyparsing : '1.5.6' + dateutil : '2.4.0' + freetype : '2.4.11' + matplotlib : '1.4.3' + cppunit : '1.12.1' + qt : '4.8.4' + PyQt : '4.9.6' + qwt : '6.1.0' + sip : '4.14.2' + omniORB : '4.1.6' + omniORBpy : '3.6' + boost : '1.58.0' + swig : '2.0.8' + gl2ps : '1.3.8' + freeimage : '3.16.0' + tcl : '8.6.0' + tk : '8.6.0' + libxml2 : '2.9.0' + CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0} + hdf5 : '1.8.14' + ParaView : '5.0.1p1' + metis : '5.1.0' +# ParMetis : '3.1.1' + scotch : '5.1.12b' + medfile : '3.2.0' + + graphviz : '2.38.0' + doxygen : '1.8.3.1' + docutils : '0.12' + Sphinx : '1.2.3' + Pygments : '2.0.2' + opencv : '2.4.6.1' + homard_bin : '11.7' + netgen : '4.9.13' + MeshGems : '2.1-11' + cgns : '3.1.3-4' +# fftw : '3.3.4' +# root : '5.34.32' +# nlopt : '2.2.4' +# pcl : '1.10' +# uranie : '3.6.0' +# lata : '1.3p2' + gmsh : '2.12.0' + + # SALOME MODULES : + 'SALOME_PROFILE' : "7.8.0" + + 'LIBBATCH' : "V2_3_0" + 'JOBMANAGER' + 'KERNEL' + 'GUI' + + 'GEOM' + + 'SMESH' + 'NETGENPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'BLSURFPLUGIN' + 'HexoticPLUGIN' + 'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'MED' + 'GMSHPLUGIN' + 'HOMARD' + 'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_BR'} + 'YACS' + 'YACSGEN' : {tag : 'V7_8_BR'} + 'XDATA' : "0.9.11" + 'HXX2SALOME' + 'PARAVIS' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + + 'DOCUMENTATION' + } + profile : + { + product : "SALOME_PROFILE" + } + test_base : + { + name : "SALOME" + tag : "7.8.0" + } +} + diff --git a/applications/SALOME-7.8.2.pyconf b/applications/SALOME-7.8.2.pyconf new file mode 100644 index 0000000..1afc889 --- /dev/null +++ b/applications/SALOME-7.8.2.pyconf @@ -0,0 +1,124 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-7.8.2' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V7_8_0' + base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + Python : '2.7.10' + Cython : '0.23.2' + numpy : '1.9.2' + scipy : '0.15.1' + lapack : '3.5.0' + cmake : '3.5.2' + pyreadline : '2.0' + setuptools : '0.6c11' + markupsafe : '0.23' + Jinja2 : '2.7.3' + six : '1.9.0' + distribute : '0.6.28' + pytz : '2014.10' + pyparsing : '1.5.6' + dateutil : '2.4.0' + freetype : '2.4.11' + matplotlib : '1.4.3' + cppunit : '1.12.1' + qt : '4.8.4' + PyQt : '4.9.6' + qwt : '6.1.0' + sip : '4.14.2' + omniORB : '4.1.6' + omniORBpy : '3.6' + boost : '1.58.0' + swig : '2.0.8' + gl2ps : '1.3.8' + freeimage : '3.16.0' + tcl : '8.6.0' + tk : '8.6.0' + libxml2 : '2.9.0' + CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0} + hdf5 : '1.8.14' + ParaView : '5.0.1p1' + metis : '5.1.0' +# ParMetis : '3.1.1' + scotch : '5.1.12b' + medfile : '3.2.0' + graphviz : '2.38.0' + doxygen : '1.8.3.1' + docutils : '0.12' + Sphinx : '1.2.3' + Pygments : '2.0.2' + opencv : '2.4.6.1' + homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '11.7'} + netgen : '4.9.13' + MeshGems : '2.1-11' + cgns : '3.1.3-4' +# fftw : '3.3.4' +# root : '5.34.32' +# nlopt : '2.2.4' +# pcl : '1.10' +# uranie : '3.6.0' +# lata : '1.3p2' + gmsh : '2.12.0' + + # SALOME MODULES : + 'SALOME_PROFILE' : "7.8.0" + + 'LIBBATCH' : "V2_3_0" + 'JOBMANAGER' + 'KERNEL' + 'GUI' + + 'GEOM' + + 'SMESH' + 'NETGENPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'BLSURFPLUGIN' + 'HexoticPLUGIN' + 'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'MED' + 'GMSHPLUGIN' + 'HOMARD' + 'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_2'} + 'YACS' + 'YACSGEN' : {tag : 'V7_8_2'} + 'XDATA' : "0.9.11" + 'HXX2SALOME' + 'PARAVIS' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + + 'DOCUMENTATION' + } + profile : + { + product : "SALOME_PROFILE" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "7.8.0" + } +} + diff --git a/applications/SALOME-7.8.3.pyconf b/applications/SALOME-7.8.3.pyconf new file mode 100644 index 0000000..ee82228 --- /dev/null +++ b/applications/SALOME-7.8.3.pyconf @@ -0,0 +1,120 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-7.8.3' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V7_8_0' + #base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + Python : '2.7.10' + Cython : '0.23.2' + numpy : '1.9.2' + scipy : '0.15.1' + lapack : '3.5.0' + cmake : '3.5.2' + pyreadline : '2.0' + setuptools : '0.6c11' + markupsafe : '0.23' + Jinja2 : '2.7.3' + six : '1.9.0' + distribute : '0.6.28' + pytz : '2014.10' + pyparsing : '1.5.6' + dateutil : '2.4.0' + freetype : '2.4.11' + matplotlib : '1.4.3' + cppunit : '1.12.1' + qt : '4.8.4' + PyQt : '4.9.6' + qwt : '6.1.0' + sip : '4.14.2' + omniORB : '4.1.6' + omniORBpy : '3.6' + boost : '1.58.0' + swig : '2.0.8' + gl2ps : '1.3.8' + freeimage : '3.16.0' + tcl : '8.6.0' + tk : '8.6.0' + libxml2 : '2.9.0' + CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0} + hdf5 : '1.8.14' + ParaView : '5.0.1p1' + metis : '5.1.0' +# ParMetis : '3.1.1' + scotch : '5.1.12b' + medfile : '3.2.0' + + graphviz : '2.38.0' + doxygen : '1.8.3.1' + docutils : '0.12' + Sphinx : '1.2.3' + Pygments : '2.0.2' + opencv : '2.4.6.1' + homard_bin : '11.7' + netgen : '4.9.13' + MeshGems : '2.1-11' + cgns : '3.1.3-4' +# fftw : '3.3.4' +# root : '5.34.32' +# nlopt : '2.2.4' +# pcl : '1.10' +# uranie : '3.6.0' +# lata : '1.3p2' + gmsh : '2.12.0' + + # SALOME MODULES : + 'SALOME_PROFILE' : "7.8.0" + + 'LIBBATCH' : "V2_3_0" + 'JOBMANAGER' + 'KERNEL' : {tag : 'V7_8_BR'} + 'GUI' + + 'GEOM' + + 'SMESH' + 'NETGENPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'BLSURFPLUGIN' + 'HexoticPLUGIN' + 'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'MED' + 'GMSHPLUGIN' + 'HOMARD' + 'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_BR'} + 'YACS' + 'YACSGEN' : {tag : 'V7_8_BR'} + 'XDATA' : "0.9.11" + 'HXX2SALOME' + 'PARAVIS' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + + 'DOCUMENTATION' + } + profile : + { + product : "SALOME_PROFILE" + } + test_base : + { + name : "SALOME" + tag : "7.8.0" + } +} + diff --git a/applications/SALOME-7.8.4.pyconf b/applications/SALOME-7.8.4.pyconf new file mode 100644 index 0000000..bf7a054 --- /dev/null +++ b/applications/SALOME-7.8.4.pyconf @@ -0,0 +1,129 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-7.8.4' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V7_8_0' + base : 'no' + environ : + { + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0} + certifi : '2018.8.24' + cgns : '3.1.3-4' + chardet : '3.0.4' + click : '6.7' + cmake : '3.5.2' + cppunit : '1.12.1' + Cython : '0.23.2' + dateutil : '2.4.0' + distribute : '0.6.28' + docutils : '0.12' + doxygen : '1.8.3.1' + freeimage : '3.16.0' + freetype : '2.4.11' + gl2ps : '1.3.8' + gmsh : '2.12.0' + graphviz : '2.38.0' + hdf5 : '1.8.14' + homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '11.7'} + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + lapack : '3.5.0' + libxml2 : '2.9.0' + markupsafe : '0.23' + matplotlib : '1.4.3' + medfile : '3.2.0' + MeshGems : '2.1-11' + metis : '5.1.0' + netgen : '4.9.13' + numpy : '1.9.2' + omniORB : '4.1.6' + omniORBpy : '3.6' + opencv : '2.4.6.1' + packaging : '17.1' + ParaView : '5.0.1p1' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '1.5.6' + PyQt : '4.9.6' + pyreadline : '2.0' + Python : '2.7.10' + pytz : '2014.10' + qt : '4.8.4' + qwt : '6.1.0' + requests : '2.19.1' + scipy : '0.15.1' + scotch : '5.1.12b' + setuptools : '0.6c11' + sip : '4.14.2' + six : '1.9.0' + snowballstemmer : '1.2.1' + Sphinx : {section: 'version_1_7_6_py2', tag:'1.7.6'} + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '2.0.8' + tcl : '8.6.0' + tk : '8.6.0' + typing : '3.6.6' + urllib3 : '1.23' + + # SALOME MODULES : + 'BLSURFPLUGIN' + 'CALCULATOR' + 'COMPONENT' + 'DOCUMENTATION' + 'GEOM' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'GMSHPLUGIN' + 'GUI' + 'HELLO' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'HXX2SALOME' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'JOBMANAGER' + 'KERNEL' + 'LIBBATCH' : "V2_3_0" + 'MED' + 'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_2'} + 'NETGENPLUGIN' + 'PARAVIS' + 'PYCALCULATOR' + 'PYHELLO' + 'SALOME_PROFILE' : "7.8.0" + 'SAMPLES' + 'SMESH' + 'XDATA' : "0.9.11" + 'YACS' + 'YACSGEN' : {tag : 'V7_8_2'} + } + profile : + { + product : "SALOME_PROFILE" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "7.8.0" + } +} + diff --git a/applications/SALOME-8.5.0-MPI.pyconf b/applications/SALOME-8.5.0-MPI.pyconf new file mode 100644 index 0000000..906268d --- /dev/null +++ b/applications/SALOME-8.5.0-MPI.pyconf @@ -0,0 +1,129 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-8.5.0-MPI' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V8_5_0' + base : 'no' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + # Mandatory to make pidof reachable (in some case, like crontab, these paths are not in the $PATH) + _PATH : ['/usr/sbin', '/sbin'] + } + products : + { + # PREREQUISITES : + Babel : '2.0' + boost : '1.58.0' + CAS : 'a4b60cc6a2986181e45acd069b69600c48daf13b' #'V7_2_0p3' + cgns : '3.3.1' + click : '6.7' + cmake : '3.5.2' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.23.2' + dateutil : '2.4.2' # Previous : 2.4.0 + distribute : '0.7.3' # Previous : 0.6.28 + docutils : '0.12' + doxygen : '1.8.3.1' + eigen : '3.2.7' + freeimage : '3.16.0' + freetype : '2.9.1' + functools32: '3.2.3-2' + gl2ps : '1.4.0_4037312' + gmsh : '3.0.5' + graphviz : '2.38.0' + hdf5 : '1.8.14' + homard_bin : '11.11' + Jinja2 : '2.7.3' + lapack : '3.7.0' + lata : '1.3-PV5.4.1_b5c4c89' + libxml2 : '2.9.0' + llvm : '3.9.1' + markupsafe : '0.23' + matplotlib : '2.0.2' + medfile : '3.3.1' + mesa : '13.0.6' + MeshGems : '2.6-4' + netgen : '5.3.1_with_CAS_7.2' + numpy : '1.12.1' + omniORB : '4.1.6' + omniORBpy : '3.6' + opencv : '2.4.13.5' + openmpi : '1.8.5' + ParaView : {section : 'version_5_4_1b5c4c89', tag : '5.4.1_b5c4c89'} + ParMetis : '3.1.1' + planegcs : '0.16' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' # Previous : 1.5.6 + PyQt : '5.9' + pyreadline : '2.0' + Python : '2.7.10' + pytz : '2015.4' # Previous : 2014.10 + qt : '5.9.1' + qwt : '6.1.2' + scipy : '0.18.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + Sphinx : '1.2.3' + sphinxcontrib_napoleon : '0.6.1' + sphinxintl: '0.9.10' + subprocess32 : '3.5.0rc1' + swig : '2.0.12' + tcl : '8.6.0' + tk : '8.6.0' + + + # SALOME MODULES : + 'CONFIGURATION' : {dev: 'yes'} + 'SALOME' : {tag :'V8_5_0', dev: 'yes'} + 'MEDCOUPLING' : {dev: 'yes', section : "default_MPI"} + 'LIBBATCH' : {tag :'V2_4_0', dev: 'yes'} + 'KERNEL' : {dev: 'yes', section : "default_MPI"} + 'GUI': {dev: 'yes'} + 'GEOM' : {dev: 'yes'} + 'SMESH' : {dev: 'yes'} + 'NETGENPLUGIN' : {dev: 'yes'} + 'BLSURFPLUGIN': {dev: 'yes'} + 'GHS3DPLUGIN' : {dev: 'yes'} + 'GHS3DPRLPLUGIN': {dev: 'yes'} #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'HYBRIDPLUGIN' : {dev: 'yes'} + 'HexoticPLUGIN' : {dev: 'yes'} + 'GMSHPLUGIN' : {dev: 'yes'} + 'HEXABLOCK' : {dev: 'yes'} + 'HEXABLOCKPLUGIN' : {dev: 'yes'} + 'HOMARD' : {dev: 'yes'} + 'MED' : {dev: 'yes'} + 'PARAVIS' : {dev: 'yes', section : "version_8_5_0_MPI"} + 'JOBMANAGER' : {dev: 'yes'} + 'YACS' : {dev: 'yes'} + 'YACSGEN' : {dev: 'yes'} + 'DOCUMENTATION' : {dev: 'yes'} + 'SAMPLES' : {dev: 'yes'} + 'COMPONENT': {dev: 'yes'} #ne pas livrer le plugin COMPONENT dans les versions opensource et CEA + 'PYCALCULATOR': {dev: 'yes'} #ne pas livrer le plugin PYCALCULATOR dans les versions opensource et CEA + 'CALCULATOR': {dev: 'yes'} #ne pas livrer le plugin CALCULATOR dans les versions opensource et CEA + 'HELLO': {dev: 'yes'} #ne pas livrer le plugin HELLO dans les versions opensource et CEA + 'PYHELLO': {dev: 'yes'} #ne pas livrer le plugin PYHELLO dans les versions opensource et CEA + } + profile : + { + product : "SALOME" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV8" + } +} diff --git a/applications/SALOME-8.5.0-native.pyconf b/applications/SALOME-8.5.0-native.pyconf new file mode 100644 index 0000000..dc09f5e --- /dev/null +++ b/applications/SALOME-8.5.0-native.pyconf @@ -0,0 +1,158 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- +# +# CNC 19/09/2017 SALOME-master-native is only used from now on FD26 +APPLICATION : +{ + name : 'SALOME-8.5.0-native' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V8_5_0' + base : 'no' + environ : + { + build: { CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" } + } + products : + { + # PREREQUISITES : + Babel : '2.0' + boost : 'native' + CAS : 'a4b60cc6a2986181e45acd069b69600c48daf13b' #'V7_2_0p3' + cgns : '3.3.1' + click : '6.7' + cmake : 'native' + + # a bug should be corrected in PARAVIS cmake before using native cppunit + cppunit : '1.13.2' + + # TA 10-04-2018 Remove cycler prerequisite needed for matplotlib 2.0.2 + # but native version is older + # (version 2.0.0 with command "rpm -qa") + #cycler : '0.10.0' + Cython : 'native' + dateutil : 'native' + distribute : 'native' + docutils : 'native' + doxygen : 'native' + eigen : '3.2.7' + freeimage : 'native' + freetype : 'native' + + # TA 10-04-2018 Remove functools32 prerequisite needed for matplotlib + # 2.0.2 but native version is older + # (version 2.0.0 with command "rpm -qa") + #functools32: '3.2.3-2' + + # TA 12-04-2018: gl2ps becomes non-native as ParaView cannot be compiled + # with native version of gl2ps (1.3.9p1) + gl2ps : '1.4.0_4037312' + gmsh : '3.0.5' + graphviz : 'native' + hdf5 : '1.8.14' + homard_bin : '11.11' + Jinja2 : 'native' + lapack : 'native' + lata : '1.3-PV5.4.1_b5c4c89' + libxml2 : 'native' + llvm : '3.9.1' + markupsafe : 'native' + matplotlib : 'native' + medfile : '3.3.1' + mesa : '13.0.6' + MeshGems : '2.6-4' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + numpy : 'native' + omniORB : '4.1.6' + omniORBpy : '3.6' + opencv : '2.4.13.5' + ParaView : {section : 'version_5_4_1b5c4c89', tag : '5.4.1_b5c4c89'} + planegcs : '0.16' + pockets : '0.6.2' + Pygments : 'native' + pyparsing : 'native' + PyQt : '5.7.1' + pyreadline : 'native' + Python : 'native' + pytz : 'native' + qt : '5.7.1' + qwt : '6.1.2' + scipy : 'native' + scotch : '6.0.4' + setuptools : 'native' + sip : 'native' + six : 'native' + Sphinx : 'native' + sphinxcontrib : '0.6.1' + sphinxintl: '0.9.10' + + # TA 10-04-2018 Remove subprocess32 prerequisite needed for matplotlib + # 2.0.2 but native version is older + # (version 2.0.0 with command "rpm -qa") + #subprocess32 : '3.5.0rc1' + swig : 'native' + tcl : '8.6.0' + tk : '8.6.0' + + + # SALOME MODULES : + 'CONFIGURATION' : {dev: 'yes'} + 'SALOME' : {tag :'V8_5_0', dev: 'yes'} + + 'LIBBATCH' : {tag :'V2_4_0', dev: 'yes'} +# TA 10-04-2018: Adding a new default_SALOME section specific to SALOME to avoid +# impacting other applications with SALOME updates. + 'KERNEL' : {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + + 'GUI': {dev: 'yes'} + 'GEOM' : {dev: 'yes'} + 'SMESH' : {dev: 'yes'} + 'NETGENPLUGIN' : {dev: 'yes'} + 'BLSURFPLUGIN': {dev: 'yes'} + 'GHS3DPLUGIN' : {dev: 'yes'} + + #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'GHS3DPRLPLUGIN' : {dev: 'yes'} + + 'HYBRIDPLUGIN' : {dev: 'yes'} + 'HexoticPLUGIN' : {dev: 'yes'} + 'GMSHPLUGIN' : {dev: 'yes'} + 'HEXABLOCK' : {dev: 'yes'} + 'HEXABLOCKPLUGIN' : {dev: 'yes'} + 'HOMARD' : {dev: 'yes'} + 'MED' : {dev: 'yes'} + 'PARAVIS' : {dev: 'yes'} + 'JOBMANAGER' : {dev: 'yes'} + 'YACS' : {dev: 'yes'} + 'YACSGEN' : {dev: 'yes'} + 'DOCUMENTATION' : {dev: 'yes'} + 'SAMPLES' : {dev: 'yes'} + + #ne pas livrer le plugin COMPONENT dans les versions opensource et CEA + 'COMPONENT' : {dev: 'yes'} + #ne pas livrer le plugin PYCALCULATOR dans les versions opensource et CEA + 'PYCALCULATOR' : {dev: 'yes'} + #ne pas livrer le plugin CALCULATOR dans les versions opensource et CEA + 'CALCULATOR' : {dev: 'yes'} + #ne pas livrer le plugin HELLO dans les versions opensource et CEA + 'HELLO' : {dev: 'yes'} + #ne pas livrer le plugin PYHELLO dans les versions opensource et CEA + 'PYHELLO' : {dev: 'yes'} + } + profile : + { + product : "SALOME" + } + virtual_app : + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV8" + } +} + diff --git a/applications/SALOME-8.5.0.pyconf b/applications/SALOME-8.5.0.pyconf new file mode 100644 index 0000000..34a9408 --- /dev/null +++ b/applications/SALOME-8.5.0.pyconf @@ -0,0 +1,156 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-8.5.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V8_5_0' + base : 'no' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + } + products : + { + # PREREQUISITES : # Pas de H5py, mpi4py, nose, openmpi, + # Intel Threading Building Blocks, paco++, + # pkgconfig, tclx + # OP 09/04/2018 add Babel and click prerequisites for sphinx-intl + Babel : '2.0' + boost : '1.58.0' # Nijni : 1.52.0 + CAS : 'a4b60cc6a2986181e45acd069b69600c48daf13b' #'V7_2_0p3' + cgns : '3.3.1' + click : '6.7' + cmake : '3.5.2' # Nijni : 3.3.0 + cppunit : '1.13.2' # Nijni : 1.12.1 + cycler : '0.10.0' + Cython : '0.23.2' + dateutil : '2.4.2' # Previous : 2.4.0 + distribute : '0.7.3' # Previous : 0.6.28 + docutils : '0.12' + doxygen : '1.8.3.1' + eigen : '3.2.7' + freeimage : '3.16.0' + freetype : '2.9.1' + functools32: '3.2.3-2' + gl2ps : '1.4.0_4037312' # Included in ParaView + gmsh : '3.0.5' + graphviz : '2.38.0' + hdf5 : '1.8.14' + homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '11.11'} # Nijni : 11.10 + Jinja2 : '2.7.3' + lapack : '3.7.0' + lata : '1.3-PV5.4.1_b5c4c89' + libxml2 : '2.9.0' + llvm : '3.9.1' + markupsafe : '0.23' + matplotlib : '2.0.2' + medfile : '3.3.1' + mesa : '13.0.6' + MeshGems : '2.6-4' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + numpy : '1.12.1' + omniORB : '4.1.6' + omniORBpy : '3.6' + opencv : '2.4.13.5' + ParaView : {section : 'version_5_4_1b5c4c89', tag : '5.4.1_b5c4c89'} + planegcs : '0.16' + + # OP 19/04/2018 add pockets prerequisites + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' # Previous : 1.5.6 + PyQt : '5.9' + pyreadline : '2.0' + Python : '2.7.10' + pytz : '2015.4' # Previous : 2014.10 + qt : '5.9.1' + qwt : '6.1.2' + scipy : '0.18.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' # Nijni : 1.9.0 + Sphinx : '1.2.3' + + # OP 19/04/2018 add sphinxcontrib-napoleon prerequisite + # OP sphinxcontrib renamed to sphinxcontrib_napoleon + #sphinxcontrib : '0.6.1' + sphinxcontrib_napoleon : '0.6.1' + + # TA 06-04-2018 Add sphinx-intl prerequisite for KERNEL and MEDCOUPLING + sphinxintl: '0.9.10' + subprocess32 : '3.5.0rc1' + swig : '2.0.12' + tcl : '8.6.0' + tk : '8.6.0' + + + # SALOME MODULES : + 'CONFIGURATION' : {dev: 'yes'} + 'SALOME' : {tag :'V8_5_0', dev: 'yes'} + 'LIBBATCH' : {tag :'V2_4_0', dev: 'yes'} + 'KERNEL' : {dev: 'yes'} + 'MEDCOUPLING': {dev: 'yes'} + 'GUI': {dev: 'yes'} + + 'GEOM' : {dev: 'yes'} + 'SMESH' : {dev: 'yes'} + 'NETGENPLUGIN' : {dev: 'yes'} + 'BLSURFPLUGIN': {dev: 'yes'} + 'GHS3DPLUGIN' : {dev: 'yes'} + + # ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource + 'GHS3DPRLPLUGIN' : {dev: 'yes'} + + 'HYBRIDPLUGIN' : {dev: 'yes'} + 'HexoticPLUGIN' : {dev: 'yes'} + 'GMSHPLUGIN' : {dev: 'yes'} + 'HEXABLOCK' : {dev: 'yes'} + 'HEXABLOCKPLUGIN' : {dev: 'yes'} + 'HOMARD' : {dev: 'yes'} + 'MED' : {dev: 'yes'} + 'PARAVIS' : {dev: 'yes'} + 'JOBMANAGER' : {dev: 'yes'} + 'YACS' : {dev: 'yes'} + 'YACSGEN' : {dev: 'yes'} + 'DOCUMENTATION' : {dev: 'yes'} + 'SAMPLES' : {dev: 'yes'} + + #ne pas livrer le plugin COMPONENT dans les versions opensource et CEA + 'COMPONENT' : {dev: 'yes'} + #ne pas livrer le plugin PYCALCULATOR dans les versions opensource et CEA + 'PYCALCULATOR' : {dev: 'yes'} + #ne pas livrer le plugin CALCULATOR dans les versions opensource et CEA + 'CALCULATOR' : {dev: 'yes'} + #ne pas livrer le plugin HELLO dans les versions opensource et CEA + 'HELLO' : {dev: 'yes'} + #ne pas livrer le plugin PYHELLO dans les versions opensource et CEA + 'PYHELLO' : {dev: 'yes'} + } + profile : + { + product : "SALOME" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV8" + } +} + + +__overwrite__ : +[ + { +# waiting for vadim branch test + 'PRODUCTS.YACS.default.nb_proc' : 1 + } +] diff --git a/applications/SALOME-9.3.0.pyconf b/applications/SALOME-9.3.0.pyconf new file mode 100644 index 0000000..3d3658f --- /dev/null +++ b/applications/SALOME-9.3.0.pyconf @@ -0,0 +1,152 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.3.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_3_0' + debug : 'no' + dev : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + #this policy is to be discussed in next cotech. alternative is to encode every accentued string with .encode('utf-8') + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:GEOM:SMESH"} + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + CAS : 'V7_3_0p3' + certifi : '2018.8.24' + cgns : '3.3.1' + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + freeimage : '3.16.0' + freetype : '2.9.1' + gl2ps : {section : 'version_1_4_04037312', tag : '1.4.0_4037312'} + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + homard_bin : '11.12' + idna : '2.7' + imagesize : '1.0.0' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + lata : '1.4-PV5.6.0p1_7bafc2b' + libxml2 : '2.9.1' + llvm : '3.9.1' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : '4.0.0' + mesa : '13.0.6' + MeshGems : '2.8-6' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '2.4.13.5' + packaging : '17.1' + ParaView : {tag : '5.6.0p1_7bafc2b'} + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.4' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'LIBBATCH' : {tag:'V2_4_1'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + } +} +__overwrite__ : +[ + { + } +] + + diff --git a/applications/SALOME-9.4.0-windows.pyconf b/applications/SALOME-9.4.0-windows.pyconf new file mode 100644 index 0000000..1b21006 --- /dev/null +++ b/applications/SALOME-9.4.0-windows.pyconf @@ -0,0 +1,181 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.4.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + cmake_generator : 'Visual Studio 15 2017 Win64' + tag : 'V9_4_0' + debug : 'no' + dev : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + #this policy is to be discussed in next cotech. alternative is to encode every accentued string with .encode('utf-8') + launch : {PYTHONIOENCODING:"UTF_8"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + SALOME_TMP_DIR : "%appdata%" + SALOME_HAS_GLOBAL_ENV : "1" + HOME : "%userprofile%" + SET_usr_docs_VARS : "1" # required for PyEditor build + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.67.0' + CAS : {section: 'version_V7_3_0p4_win', tag: 'V7_3_0p4'} + certifi : '2019.6.16' + cgns : '3.3.1' + chardet : '3.0.4' + click : '7.0' + cmake : '3.12.1' + colorama: '0.4.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.29.12' + dateutil : '2.8.0' + docutils : '0.14' + doxygen : '1.8.3.1' + eigen : '3.3.4' + embree : '3.5.2' + expat : '2.0.1' + f2c : '1.0.0' + freeimage : '3.18.0' + freetype : '2.9.1' + gl2ps : '1.4.0_4037312' + #gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + #homard_bin : '11.12' + idna : '2.8' + imagesize : '1.1.0' + ispc : '1.10.0' + Jinja2 : '2.10.1' + kiwisolver : '1.1.0' + lapack : '3.8.0' + #lata : '1.4-PV5.6.0p1_7bafc2b' + libjpeg: '9c' + libpng: '1.5.10' + libxml2 : '2.9.1' + llvm : '8.0.1-clang-win' + markupsafe : '1.1.1' + matplotlib : '3.1.0' + medfile : '4.0.0' + mesa : '19.2.3' + MeshGems : '2.9-6' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + numpy : '1.16.4' + omniORB : '4.2.3' + omniORBpy : '4.2.3' + opencv : '3.2.0' + ospray : '1.8.4' + packaging : '19.0' + ParaView : '5.6.0_bfaf7b8' + perl : '5.28.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.7.2' + pthreads : '2.9.1' + Pygments : '2.4.2' + pyparsing : '2.4.0' + PyQt : '5.9' + pyreadline : '2.1' + Python : '3.6.5' + pytz : '2019.1' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.22.0' + ruby : '2.5.5-1' + setuptools : '41.0.1' + sip : '4.19.3' + six : '1.12.0' + snowballstemmer : '1.9.0' + Sphinx : '2.1.2' + sphinxcontrib_applehelp : '1.0.1' + sphinxcontrib_devhelp : '1.0.1' + sphinxcontrib_jsmath : '1.0.1' + sphinxcontrib_htmlhelp : '1.0.2' + sphinxcontrib_napoleon : '0.7' + sphinxcontrib_qthelp : '1.0.2' + sphinxcontrib_serializinghtml :'1.1.3' + sphinxcontrib_websupport : '1.1.2' + sphinxintl: '2.0.0' + swig : '3.0.12' + tbb : '2019_U8_win' + tcltk : '8.6.9' + urllib3 : '1.25.3' + zlib : '1.2.5' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'LIBBATCH' : {tag :'V2_4_2'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + #'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + #'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + #'EFICAS' + #'EFICAS_TOOLS' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "no" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} +__overwrite__ : +[ + { + __condition__ : "APPLICATION.debug=='yes'" + 'APPLICATION.products.numpy' : '1.16.4-win-dbg' + 'APPLICATION.products.Cython' : '0.29.12-win-dbg' + 'PRODUCTS.PyQt.version_5_9_win.check_install' : [] + } +] diff --git a/applications/SALOME-9.4.0.pyconf b/applications/SALOME-9.4.0.pyconf new file mode 100644 index 0000000..617559a --- /dev/null +++ b/applications/SALOME-9.4.0.pyconf @@ -0,0 +1,203 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.4.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_4_0' + debug : 'no' + dev : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"} + launch : {PYTHONIOENCODING:"UTF_8"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + CAS : 'V7_3_0p4' + certifi : '2018.8.24' + cgns : '3.3.1' + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gl2ps : '1.4.0_4037312' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + homard_bin : '11.12' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2-src' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + lata : '1.4-PV5.6.0p1_7bafc2b' + libxml2 : '2.9.1' + llvm : '3.9.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : '4.0.0' + mesa : '13.0.6' + MeshGems : '2.9-6' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + ospray : '1.7.3' + packaging : '17.1' + ParaView : '5.6.0_bfaf7b8' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.4' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : '4.4' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'LIBBATCH' : {tag :'V2_4_2'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + 'PRODUCTS.ispc.version_1_9_2_src.patches' : ['ispc-1.9.2-centos6.patch'] + } + + { + # + __condition__ : "VARS.dist in ['UB16.04', 'UB18.04']" + 'APPLICATION.products.tbb' : 'native' + 'PRODUCTS.embree.default.depend' : ['ispc'] + } + + { + # + __condition__ : "VARS.dist in ['DB10']" + 'APPLICATION.products.tbb' : 'native' + 'PRODUCTS.embree.default.depend' : ['ispc'] + 'PRODUCTS.gl2ps.version_1_4_0_4037312.build_source' : 'script' + 'PRODUCTS.gl2ps.version_1_4_0_4037312.compil_script' : 'gl2ps-1.4.0.sh' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.llvm' : '4.0.1-clang' + 'APPLICATION.products.mesa' : '17.1.3' + 'APPLICATION.products.ispc' : '1.10.0' + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + 'APPLICATION.products.ospray' : '1.8.4' + } + + + { + # as agreed, we don't build SALOME with OSpray support. + __condition__ : "VARS.dist in ['FD30']" + 'APPLICATION.rm_products' : ['embree', 'ispc', 'ospray'] + # Use tbb as native product since SMESH uses an option which calls the system one + 'APPLICATION.products.tbb' : 'native' + 'APPLICATION.products.ParaView' : '5.6.0_bfaf7b8' + 'APPLICATION.products.llvm' : '3.9.1' + } +] diff --git a/applications/SALOME-9.5.0-MPI.pyconf b/applications/SALOME-9.5.0-MPI.pyconf new file mode 100644 index 0000000..bf9c0b3 --- /dev/null +++ b/applications/SALOME-9.5.0-MPI.pyconf @@ -0,0 +1,194 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.5.0-MPI' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_5_0' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + SALOME_USE_64BIT_IDS : '1' + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + CAS : 'V7_4_0p1' + certifi : '2018.8.24' + cgns : {tag : '3.3.1', hpc : 'yes'} + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : {tag : '1.10.3', hpc : 'yes'} + homard_bin : '11.12_hdf51103med410' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + libxml2 : '2.9.1' + llvm : '8.0.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : {tag : '4.1.0', hpc : 'yes', section : 'default_Autotools' } + mesa : '19.0.8' + MeshGems : {tag : '2.10-4', hpc : 'yes'} + ParMetis : '3.1.1' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + openmpi : '2.1.6' + openssl : "native" + ospray : '1.8.4' + packaging : '17.1' + ParaView : {tag : '5.8.0', hpc : 'yes', section: 'version_5_8_0_MPI'} + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.4' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : 'native' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' : {tag: 'V9_5_0', section : 'default_MPI', verbose : 'yes'} + 'MEDCOUPLING' : {tag: 'V9_5_0', section : 'default_MPI', verbose : 'yes'} + 'GUI' : {verbose : 'yes'} + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' : {tag: 'V9_5_0', section : "default_MPI", verbose: 'yes'} + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' : {tag: 'V9_5_0', section : "default_MPI", verbose: 'yes'} + 'PARAVIS' : {tag: 'V9_5_0', section : "version_9_5_0_MPI", verbose: 'yes'} + 'JOBMANAGER' : {tag: 'V9_5_0', section : "default_MPI", verbose: 'yes'} + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'APPLICATION.products.tbb' : '4.4' + 'APPLICATION.products.llvm' : '3.9.1-clang' + 'APPLICATION.products.mesa' : '13.0.6' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + } + + { + # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary) + __condition__ : "VARS.dist in ['DB08']" + 'APPLICATION.products.tbb' : '4.4' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + } +] diff --git a/applications/SALOME-9.5.0-int64.pyconf b/applications/SALOME-9.5.0-int64.pyconf new file mode 100644 index 0000000..0496a65 --- /dev/null +++ b/applications/SALOME-9.5.0-int64.pyconf @@ -0,0 +1,193 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.5.0-int64' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_5_0' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + SALOME_USE_64BIT_IDS : '1' + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + CAS : 'V7_4_0p1' + certifi : '2018.8.24' + cgns : '3.3.1' + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + homard_bin : '11.12_hdf51103med410' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + libxml2 : '2.9.1' + llvm : '8.0.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : {section: 'default_Autotools', tag: '4.1.0'} + mesa : '19.0.8' + MeshGems : '2.10-4' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + openssl : "native" + ospray : '1.8.4' + packaging : '17.1' + ParaView : '5.8.0' + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.4' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : 'native' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' + 'MEDCOUPLING' : {tag : 'V9_5_0', section: 'default_int64'} # this will trigger other modules as int64 + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' : {tag: 'master'} + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'APPLICATION.products.tbb' : '4.4' + 'APPLICATION.products.llvm' : '3.9.1-clang' + 'APPLICATION.products.mesa' : '13.0.6' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + } + + { + # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary) + __condition__ : "VARS.dist in ['DB08']" + 'APPLICATION.products.tbb' : '4.4' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + } +] diff --git a/applications/SALOME-9.5.0-windows.pyconf b/applications/SALOME-9.5.0-windows.pyconf new file mode 100644 index 0000000..cfeb8f2 --- /dev/null +++ b/applications/SALOME-9.5.0-windows.pyconf @@ -0,0 +1,182 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.5.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + cmake_generator : 'Visual Studio 15 2017 Win64' + tag : 'V9_5_0' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + SALOME_TMP_DIR : "%appdata%" + SALOME_HAS_GLOBAL_ENV : "1" + HOME : "%userprofile%" + SET_usr_docs_VARS : "1" # required for PyEditor build + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.67.0' + CAS : {section: 'version_V7_4_0p1_win', tag: 'V7_4_0p1'} + certifi : '2019.6.16' + cgns : '3.3.1' + chardet : '3.0.4' + click : '7.0' + cmake : '3.12.1' + colorama: '0.4.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.29.12' + dateutil : '2.8.0' + docutils : '0.14' + doxygen : '1.8.3.1' + eigen : '3.3.4' + embree : '3.5.2' + expat : '2.0.1' + f2c : '1.0.0' + freeimage : '3.18.0' + freetype : '2.9.1' + #gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + #homard_bin : '11.12' + idna : '2.8' + imagesize : '1.1.0' + ispc : '1.10.0' + Jinja2 : '2.10.1' + kiwisolver : '1.1.0' + lapack : '3.8.0' + libjpeg: '9c' + libpng: '1.5.10' + libxml2 : '2.9.1' + llvm : '8.0.1-clang-win' + markupsafe : '1.1.1' + matplotlib : '3.1.0' + medfile : '4.1.0' + mesa : '19.2.3' + MeshGems : '2.10-4' + metis : '5.1.0' + msvc : '2017' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.5.0' + numpy : '1.16.4' + omniORB : '4.2.3' + omniORBpy : '4.2.3' + opencv : '3.2.0' + ospray : '1.8.4' + packaging : '19.0' + ParaView : '5.8.0' + perl : '5.28.1.1' + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.7.2' + pthreads : '2.9.1' + Pygments : '2.4.2' + pyparsing : '2.4.0' + PyQt : '5.9' + pyreadline : '2.1' + Python : '3.6.5' + pytz : '2019.1' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.22.0' + ruby : '2.5.5-1' + scipy : '1.4.1' + setuptools : '41.0.1' + sip : '4.19.3' + six : '1.12.0' + snowballstemmer : '1.9.0' + Sphinx : '2.1.2' + sphinxcontrib_applehelp : '1.0.1' + sphinxcontrib_devhelp : '1.0.1' + sphinxcontrib_jsmath : '1.0.1' + sphinxcontrib_htmlhelp : '1.0.2' + sphinxcontrib_napoleon : '0.7' + sphinxcontrib_qthelp : '1.0.2' + sphinxcontrib_serializinghtml :'1.1.3' + sphinxcontrib_websupport : '1.1.2' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '2.0.0' + swig : '3.0.12' + tbb : '2019_U8_win' + tcltk : '8.6.9' + urllib3 : '1.25.3' + zlib : '1.2.5' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + #'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + #'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'ADAO' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "no" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "yes" + } +} diff --git a/applications/SALOME-9.5.0.pyconf b/applications/SALOME-9.5.0.pyconf new file mode 100644 index 0000000..973dfe9 --- /dev/null +++ b/applications/SALOME-9.5.0.pyconf @@ -0,0 +1,192 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-9.5.0' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'V9_5_0' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.6.0' + boost : '1.58.0' + CAS : 'V7_4_0p1' + certifi : '2018.8.24' + cgns : '3.3.1' + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + homard_bin : '11.12_hdf51103med410' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + libxml2 : '2.9.1' + llvm : '8.0.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : '4.1.0' + mesa : '19.0.8' + MeshGems : '2.10-4' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + openssl : "native" + ospray : '1.8.4' + packaging : '17.1' + ParaView : '5.8.0' + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.4' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : 'native' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' : {tag: 'master'} + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "no" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'APPLICATION.products.tbb' : '4.4' + 'APPLICATION.products.llvm' : '3.9.1-clang' + 'APPLICATION.products.mesa' : '13.0.6' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + } + + { + # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary) + __condition__ : "VARS.dist in ['DB08']" + 'APPLICATION.products.tbb' : '4.4' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + } +] diff --git a/applications/SALOME-master-MPI.pyconf b/applications/SALOME-master-MPI.pyconf new file mode 100644 index 0000000..f055aac --- /dev/null +++ b/applications/SALOME-master-MPI.pyconf @@ -0,0 +1,196 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-master-MPI' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'master' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + SALOME_USE_64BIT_IDS : '1' + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.58.0' + CAS : 'CR740-SALOME-PATCH' + certifi : '2018.8.24' + cgns : {tag : '3.3.1', hpc : 'yes'} + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : {tag : '1.10.3', hpc : 'yes'} + #hdf5 : {tag : '1.10.3', hpc : 'yes', section : 'default_Autotools'} + homard_bin : '11.12_hdf51103med410' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + libxml2 : '2.9.1' + llvm : '8.0.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : {tag : '4.1.0', hpc : 'yes', section : 'default_Autotools' } + mesa : '19.0.8' + MeshGems : {tag : '2.10-4', hpc : 'yes'} + #metis : '5.1.0' + ParMetis : '3.1.1' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + openmpi : '2.1.6' + openssl : "native" + ospray : '1.8.4' + packaging : '17.1' + ParaView : {tag : '5.8.0', hpc : 'yes', section: 'version_5_8_0_MPI'} + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.7' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : 'native' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3rc2'} + 'KERNEL' : {section : 'default_MPI', verbose : 'yes'} + 'MEDCOUPLING' : {section : 'default_MPI', verbose : 'yes'} + 'GUI' : {verbose : 'yes'} + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "yes" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'APPLICATION.products.tbb' : '4.4' + 'APPLICATION.products.llvm' : '3.9.1-clang' + 'APPLICATION.products.mesa' : '13.0.6' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + } + + { + # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary) + __condition__ : "VARS.dist in ['DB08']" + 'APPLICATION.products.tbb' : '4.4' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + } +] diff --git a/applications/SALOME-master-int64.pyconf b/applications/SALOME-master-int64.pyconf new file mode 100644 index 0000000..62edb34 --- /dev/null +++ b/applications/SALOME-master-int64.pyconf @@ -0,0 +1,193 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-master-int64' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'master' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + SALOME_USE_64BIT_IDS : '1' + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.58.0' + CAS : 'CR740-SALOME-PATCH' + certifi : '2018.8.24' + cgns : '3.3.1' + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + homard_bin : '11.12_hdf51103med410' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + libxml2 : '2.9.1' + llvm : '8.0.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : {section: 'default_Autotools', tag: '4.1.0'} + mesa : '19.0.8' + MeshGems : '2.10-4' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + openssl : "native" + ospray : '1.8.4' + packaging : '17.1' + ParaView : '5.8.0' + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.7' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : 'native' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3rc2'} + 'KERNEL' + 'MEDCOUPLING' : {tag : 'master', section: 'default_int64'} # this will trigger other modules as int64 + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "yes" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'APPLICATION.products.tbb' : '4.4' + 'APPLICATION.products.llvm' : '3.9.1-clang' + 'APPLICATION.products.mesa' : '13.0.6' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + } + + { + # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary) + __condition__ : "VARS.dist in ['DB08']" + 'APPLICATION.products.tbb' : '4.4' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + } +] diff --git a/applications/SALOME-master-native.pyconf b/applications/SALOME-master-native.pyconf new file mode 100644 index 0000000..858c61e --- /dev/null +++ b/applications/SALOME-master-native.pyconf @@ -0,0 +1,207 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-master-native' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'master' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + } + launch : {PYTHONIOENCODING:"UTF_8"} # alternative is to encode every accentued string with .encode('utf-8') + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : 'native' + Babel : 'native' + # Previous master version : '1.58.0' + boost : 'native' + CAS : 'V7_4_0p1' + certifi : 'native' + # Previous master version : '3.3.1' + cgns : 'native' + chardet : 'native' + click : 'native' + # Previous master version : '3.12.1' + cmake : 'native' + # Previous master version : '1.13.2' + cppunit : 'native' + cycler : 'native' + Cython : 'native' + dateutil : 'native' + docutils : 'native' + # Previous master version : '1.8.14' + doxygen : 'native' + # Previous master version : '3.3.4' + eigen : 'native' + embree : '3.3.0' + # Previous master version : '3.16.0' + freeimage : 'native' + # Previous master version : '2.9.1' + freetype : 'native' + # Previous master version : '1.4.0_4037312' + gl2ps : 'native' + # 'native' too difficult here : need python-pip package (gmsh-sdk) besides system packages + gmsh : '4.1.4' + # Previous master version : '2.38.0' + graphviz : 'native' + hdf5 : '1.10.3' + homard_bin : '11.12_hdf51103med410' + idna : 'native' + imagesize : 'native' + # 'native' not exists (only available on Fedora platform) + ispc : '1.9.2' + Jinja2 : 'native' + kiwisolver : 'native' + # Previous master version : '3.8.0' + lapack : 'native' + # Previous master version : '2.9.1' + libxml2 : 'native' + # 'native' is conflicting : version 7 which needs a higher ispc version than above + llvm : 'native' + markupsafe : 'native' + matplotlib : 'native' + medfile : '4.1.0' + # Previous master version : '13.0.6' + mesa : 'native' + MeshGems : '2.11-5' + # Previous master version : '5.1.0' + metis : 'native' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : 'native' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + # Previous master version : '3.2.0' + opencv : 'native' + openssl : 'native' + ospray : '1.8.4' + packaging : 'native' + ParaView : '5.8.0' + Pillow : 'native' + # 'native' not exists : freeCAD part but not delivered with it from package handler + planegcs : '0.18-3cb6890' + pockets : 'native' + Pygments : 'native' + pyparsing : 'native' + PyQt : 'native' + pyreadline : 'native' + Python : 'native' + pytz : 'native' + qt : 'native' + qwt : '6.1.2' + requests : 'native' + scipy : 'native' + # Previous master version : '6.0.4' (too old for native metis) + scotch : 'native' + setuptools : 'native' + sip : 'native' + six : 'native' + snowballstemmer : 'native' + Sphinx : 'native' + sphinxcontrib_napoleon : 'native' + sphinxcontrib_websupport : 'native' + sphinxintl: 'native' + sphinx_rtd_theme : 'native' + # Previous master version : '3.0.12' + swig : 'native' + # Previous master version : '4.4' + tbb : 'native' + # 'native' isn't compliant with netgen5 on Debian + tcl : 'native' + tk : 'native' + urllib3 : 'native' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "yes" + } +} +__overwrite__ : +[ + { + # + __condition__ : "VARS.dist in ['DB10']" + 'PRODUCTS.embree.default.depend' : ['ispc'] + } + + { + # as agreed, we don't build SALOME with OSpray support. + __condition__ : "VARS.dist in ['FD30']" + 'APPLICATION.rm_products' : ['embree', 'ispc', 'ospray'] + 'APPLICATION.products.omniORB' : 'native' + 'APPLICATION.products.omniORBpy' : 'native' + } +] diff --git a/applications/SALOME-master-windows.pyconf b/applications/SALOME-master-windows.pyconf new file mode 100644 index 0000000..2fe3d99 --- /dev/null +++ b/applications/SALOME-master-windows.pyconf @@ -0,0 +1,182 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-master' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + cmake_generator : 'Visual Studio 15 2017 Win64' + tag : 'master' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + SALOME_TMP_DIR : "%appdata%" + SALOME_HAS_GLOBAL_ENV : "1" + HOME : "%userprofile%" + SET_usr_docs_VARS : "1" # required for PyEditor build + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.67.0' + CAS : {section: 'version_CR740_SALOME_PATCH_win', tag: 'CR740-SALOME-PATCH'} + certifi : '2019.6.16' + cgns : '3.3.1' + chardet : '3.0.4' + click : '7.0' + cmake : '3.12.1' + colorama: '0.4.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.29.12' + dateutil : '2.8.0' + docutils : '0.14' + doxygen : '1.8.3.1' + eigen : '3.3.4' + embree : '3.5.2' + expat : '2.0.1' + f2c : '1.0.0' + freeimage : '3.18.0' + freetype : '2.9.1' + #gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + #homard_bin : '11.12' + idna : '2.8' + imagesize : '1.1.0' + ispc : '1.10.0' + Jinja2 : '2.10.1' + kiwisolver : '1.1.0' + lapack : '3.8.0' + libjpeg: '9c' + libpng: '1.5.10' + libxml2 : '2.9.1' + llvm : '8.0.1-clang-win' + markupsafe : '1.1.1' + matplotlib : '3.1.0' + medfile : '4.1.0' + mesa : '19.2.3' + MeshGems : '2.11-5' + metis : '5.1.0' + msvc : '2017' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.5.0' + numpy : '1.16.4' + omniORB : '4.2.3' + omniORBpy : '4.2.3' + opencv : '3.2.0' + ospray : '1.8.4' + packaging : '19.0' + ParaView : '5.8.0' + perl : '5.28.1.1' + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.7.2' + pthreads : '2.9.1' + Pygments : '2.4.2' + pyparsing : '2.4.0' + PyQt : '5.9' + pyreadline : '2.1' + Python : '3.6.5' + pytz : '2019.1' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.22.0' + ruby : '2.5.5-1' + scipy : '1.4.1' + setuptools : '41.0.1' + sip : '4.19.3' + six : '1.12.0' + snowballstemmer : '1.9.0' + Sphinx : '2.1.2' + sphinxcontrib_applehelp : '1.0.1' + sphinxcontrib_devhelp : '1.0.1' + sphinxcontrib_jsmath : '1.0.1' + sphinxcontrib_htmlhelp : '1.0.2' + sphinxcontrib_napoleon : '0.7' + sphinxcontrib_qthelp : '1.0.2' + sphinxcontrib_serializinghtml :'1.1.3' + sphinxcontrib_websupport : '1.1.2' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '2.0.0' + swig : '3.0.12' + tbb : '2019_U8_win' + tcltk : '8.6.9' + urllib3 : '1.25.3' + zlib : '1.2.5' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + #'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + #'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'ADAO' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "no" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "yes" + } +} diff --git a/applications/SALOME-master.pyconf b/applications/SALOME-master.pyconf new file mode 100644 index 0000000..d4b9567 --- /dev/null +++ b/applications/SALOME-master.pyconf @@ -0,0 +1,227 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'SALOME-master' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + tag : 'master' + dev : 'no' + verbose :'no' + debug : 'no' + base : 'no' + python3 : 'yes' + environ : + { + build : + { + CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" + RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED" + } + launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"} + SALOME_trace : "local" # local/file:.../with_logger + SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER" # specify the first modules to display in gui + } + products : + { + # PREREQUISITES : + alabaster : '0.7.6' + Babel : '2.7.0' + boost : '1.58.0' + CAS : 'CR740-SALOME-PATCH' + certifi : '2018.8.24' + cgns : '3.3.1' + chardet : '3.0.4' + click : '6.7' + cmake : '3.12.1' + cppunit : '1.13.2' + cycler : '0.10.0' + Cython : '0.25.2' + dateutil : '2.4.2' + docutils : '0.12' + doxygen : '1.8.14' + eigen : '3.3.4' + embree : '3.3.0' + freeimage : '3.16.0' + freetype : '2.9.1' + gmsh : '4.1.4' + graphviz : '2.38.0' + hdf5 : '1.10.3' + homard_bin : '11.12_hdf51103med410' + idna : '2.7' + imagesize : '1.0.0' + ispc : '1.9.2' + Jinja2 : '2.7.3' + kiwisolver : '1.0.1' + lapack : '3.8.0' + libxml2 : '2.9.1' + llvm : '8.0.1-clang' + markupsafe : '0.23' + matplotlib : '2.2.2' + medfile : '4.1.0' + mesa : '19.0.8' + MeshGems : '2.11-5' + metis : '5.1.0' + netgen : '5.3.1_with_CAS_7.2' + nlopt : '2.4.2' + numpy : '1.15.1' + omniORB : '4.2.2' + omniORBpy : '4.2.2' + opencv : '3.2.0' + openssl : "native" + ospray : '1.8.4' + packaging : '17.1' + ParaView : '5.8.0' + Pillow : '7.1.1' + planegcs : '0.18-3cb6890' + pockets : '0.6.2' + Pygments : '2.0.2' + pyparsing : '2.0.3' + PyQt : '5.9' + pyreadline : '2.0' + Python : '3.6.5' + pytz : '2015.7' + qt : '5.9.1' + qwt : '6.1.2' + requests : '2.19.1' + scipy : '0.19.1' + scotch : '6.0.4' + setuptools : '38.4.0' + sip : '4.19.3' + six : '1.10.0' + snowballstemmer : '1.2.1' + Sphinx : '1.7.6' + sphinxcontrib_napoleon : '0.6.1' + sphinxcontrib_websupport : '1.1.0' + sphinx_rtd_theme : '0.4.3' + sphinxintl: '0.9.10' + swig : '3.0.12' + tbb : 'native' + tcl : '8.6.0' + tk : '8.6.0' + urllib3 : '1.23' + + # SALOME MODULES : + 'CONFIGURATION' + 'SALOME' + 'SHAPER' + 'SHAPERSTUDY' + 'RESTRICTED' + 'LIBBATCH' : {tag :'V2_4_3'} + 'KERNEL' + 'MEDCOUPLING' + 'GUI' + 'GEOM' + 'SMESH' + 'NETGENPLUGIN' + 'BLSURFPLUGIN' + 'GHS3DPLUGIN' + 'GHS3DPRLPLUGIN' + 'HYBRIDPLUGIN' + 'HexoticPLUGIN' + 'GMSHPLUGIN' + 'HEXABLOCK' + 'HEXABLOCKPLUGIN' + 'HOMARD' + 'FIELDS' + 'PARAVIS' + 'JOBMANAGER' + 'YACS' + 'YACSGEN' + 'DOCUMENTATION' + 'SAMPLES' + 'COMPONENT' + 'PYCALCULATOR' + 'CALCULATOR' + 'HELLO' + 'PYHELLO' + 'EFICAS' + 'EFICAS_TOOLS' + 'PY2CPP' : {tag: 'v2.0'} + 'ADAO' + 'ADAO_INTERFACE' + 'CEATESTBASE' : {tag: 'SalomeV9'} + } + profile : + { + launcher_name : "salome" + } + virtual_app: + { + name : "salome" + application_name : "APPLI" + } + test_base : + { + name : "SALOME" + tag : "SalomeV9" + } + properties : + { + mesa_launcher_in_package : "yes" + repo_dev : "yes" + pip : 'yes' + pip_install_dir : 'python' + single_install_dir : "yes" + } +} +__overwrite__ : +[ + { + # GTK compilation issue + __condition__ : "VARS.dist in ['CO6']" + 'APPLICATION.products.opencv' : '2.4.13.5' + 'APPLICATION.products.tbb' : '4.4' + 'APPLICATION.products.llvm' : '3.9.1-clang' + 'APPLICATION.products.mesa' : '13.0.6' + 'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch'] + } + + { + # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary) + __condition__ : "VARS.dist in ['DB08']" + 'APPLICATION.products.tbb' : '4.4' + } + + { + # + __condition__ : "VARS.dist in ['FD26']" + 'APPLICATION.products.tbb' : '2017-7' + 'APPLICATION.products.embree' : '3.5.2' + } + + { + # + __condition__ : "VARS.dist in ['UB20.04']" + 'PRODUCTS.qt.version_5_9_1.patches' : ['qt-5.9.1-UB20-FD32-socketcanbackend.patch'] + } + + { + __condition__ : "VARS.dist in ['FD32']" + 'APPLICATION.products.scipy' : '1.5.2' # gcc https://github.com/scipy/scipy/issues/11611 - either patch numpy to include -fallow-argument-mismatch or move to that version + # see https://bugs.gentoo.org/708730 + 'PRODUCTS.llvm.version_8_0_1_clang.patches' : ['llvm-8.0.1-clang-FD32.patch'] + 'PRODUCTS.qt.version_5_9_1.patches' : ['qt-5.9.1-UB20-FD32-socketcanbackend.patch', 'qt-5.9.1-mapbox-FD32.patch'] + 'PRODUCTS.mesa.version_19_0_8.patches' : ['mesa-19.0.8-debug_symbol.patch'] + 'PRODUCTS.ParaView.version_5_8_0.patches' : ['paraview.0010-ParaViewClient.patch', + 'paraview.0004-ParaView_hdf5.patch', + 'paraview.0005-ParaView_find_cgns.patch', + 'paraview.0006-ParaView_find_libxml2.patch', + 'paraview.0007-ParaView_find_freetype.patch', + 'paraview.0009-ParaView_volume_mapper.patch', + 'pv_coincident.patch' + ] + } + + { + __condition__ : "VARS.dist in ['CO8']" + 'PRODUCTS.ParaView.version_5_8_0.patches' : ['paraview.0010-ParaViewClient.patch', + 'paraview.0004-ParaView_hdf5.patch', + 'paraview.0005-ParaView_find_cgns.patch', + 'paraview.0006-ParaView_find_libxml2.patch', + 'paraview.0007-ParaView_find_freetype.patch', + 'paraview.0009-ParaView_volume_mapper.patch', + 'pv_coincident.patch' + ] + } +] diff --git a/applications/appli-test.pyconf b/applications/appli-test.pyconf new file mode 100644 index 0000000..bdab008 --- /dev/null +++ b/applications/appli-test.pyconf @@ -0,0 +1,43 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +APPLICATION : +{ + name : 'APPLI-TEST' + workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist + base : 'base' + tag : 'master' + get_method : 'git' + environ : + { + ACCEPT_SALOME_WARNINGS : '1' + LC_NUMERIC : 'C' + } + products : + { + 'Python' : 'native' + 'PRODUCT_GIT' + 'PRODUCT_ARCHIVE' + 'PRODUCT_DIR' : '4.4.2' + 'PRODUCT_CVS' : 'V6_7_0' + 'PRODUCT_NATIVE' : 'native' + #'PRODUCT_ERROR' + #'PRODUCT_UNKNOWN' + #'PRODUCT_SVN' : {'tag' : 'master'} + 'PRODUCT_DEV' : {'tag' : 'master' , 'dev' : 'yes'} + 'PRODUCT_FIXED' : "/export/home/salome" + 'NO_DEF' : "native" + } + grid_to_test : 'SALOME_V7' + #profile : + #{ + # product : 'SALOME_PROFILE' + #} + dev_products : ['MODULE_ARCHIVE', 'MODULE_CVS'] + + #hook : + #{ + # config : '/tmp/test_hook_config.py' + #} +} + diff --git a/jobs/TEST-820.pyconf b/jobs/TEST-820.pyconf new file mode 100644 index 0000000..9bc3dfc --- /dev/null +++ b/jobs/TEST-820.pyconf @@ -0,0 +1,350 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +MONDAY : 0 +TUESDAY : 1 +WEDNESDAY : 2 +THURSDAY : 3 +FRIDAY : 4 +SATURDAY : 5 +SUNDAY : 6 + +LUNDI : 0 +MARDI : 1 +MERCREDI : 2 +JEUDI : 3 +VENDREDI : 4 +SAMEDI : 5 +DIMANCHE : 6 + +m : 60 + +h : 60 * $m + +display : 'is225302.intra.cea.fr:0.0' + +machines: +[ + { + name : "CO7.2 info" + host : is231761 #is223284 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + { + name : "FD18 physique" + host : is221713 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD18 virtuelle" + host : isv20852 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO7.2 physique" + host : is228818 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO7.2 virtuelle" + host : isv20845 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "DB08 virtuelle" + host : isv20848 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "UB16.04 physique" ###master Clarisse + host : is221556 ###anciennement is212797 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + { + name : "UB14.04 virtuelle" + host : isv20851 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD20 physique" + host : is228817 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD20 virtuelle" + host : isv20849 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD22 physique" + host : is223287 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD22 virtuelle" + host : isv20850 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD24 virtuelle" + host : isv20843 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO6.4 physique" + host : is225299 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO6.4 physique corpus" + host : is221049 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO6.4 virtuelle" + host : isv20844 #isv20853 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "MG05 physique" + host : is221560 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } +] + +jobs : +[ + + ################# SALOME 8.2.0 ############################## + + { + name : 'SALOME 820 DB08' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "DB08 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 UB14.04' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "UB14.04 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 UB16.04' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "UB16.04 physique" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 CO7.2' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "CO7.2 physique" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 CO7.3' + when : [$MARDI, $TUESDAY, $WEDNESDAY, $THURSDAY, $FRIDAY] + application : "SALOME-8.2.0" + machine : "CO7.2 info" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 FD18' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "FD18 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 FD20' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "FD20 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 FD22' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "FD22 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 FD24' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "FD24 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 CO6.4' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "CO6.4 virtuelle" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + prefix : "scl enable devtoolset-2" + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + { + name : 'SALOME 820 MG05' + when : [$MARDI] #[$FRIDAY] + application : "SALOME-8.2.0" + machine : "MG05 physique" + board : "TEST_QT_SALOME_8.2.0" + timeout : 10 * $h + commands : + [ + #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + + 'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all' + 'sat launcher ' + $application + 'sat test ' + $application + ' --display ' + $display + #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf' + #'sat package ' + $application + ' --sources' + #'sat package ' + $application + ' --sources --with_vcs' + ] + } + + ############################################################# + +] + diff --git a/jobs/clean_all.pyconf b/jobs/clean_all.pyconf new file mode 100644 index 0000000..0730063 --- /dev/null +++ b/jobs/clean_all.pyconf @@ -0,0 +1,706 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +MONDAY : 0 +TUESDAY : 1 +WEDNESDAY : 2 +THURSDAY : 3 +FRIDAY : 4 +SATURDAY : 5 +SUNDAY : 6 + +LUNDI : 0 +MARDI : 1 +MERCREDI : 2 +JEUDI : 3 +VENDREDI : 4 +SAMEDI : 5 +DIMANCHE : 6 + +m : 60 + +h : 60 * $m + +display : 'is225302.intra.cea.fr:0.0' + +machines: +[ + { + name : "CO7.2 info" + host : is231761 #is223284 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + { + name : "CO7.3 physique W" + host : is221713 + user : salome + sat_path : '/volatile/home/salome/salomeTools-5-jobs' + } + { + name : "FD18 virtuelle" + host : isv20852 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO7.2 physique" + host : is228818 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + { + name : "CO7.2 virtuelle" + host : isv20845 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "DB07 virtuelle" + host : isv20847 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "DB08 virtuelle" + host : isv20848 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "UB16.04 physique" ###master Clarisse + host : is221556 ###anciennement is212797 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + { + name : "UB14.04 virtuelle" + host : isv20851 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD20 physique" + host : is228817 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD20 virtuelle" + host : isv20849 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD22 physique" + host : is223287 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD22 virtuelle" + host : isv20850 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "FD24 virtuelle" + host : isv20843 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO6.4 physique" + host : is225299 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO6.4 physique corpus" + host : is221049 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO6.4 virtuelle" + host : isv20844 #isv20853 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + { + name : "CO7 physique" + host : is221560 + user : salome + sat_path : '/volatile/home/salome/salomeTools-5-jobs' + } +] + +application1 : "SALOME-master" +application2 : "SALOME-master-native" +application3 : "SALOME-8.3.0" +application4 : "SALOME-8.3.0-native" +application5 : "SALOME-8.2.0" +application6 : "SALOME-8.2.0-MPI" +application7 : "SALOME-6.6.0" +application8 : "CORPUS-2.0" +application9 : "SALOME-7.8.2" + +application11 : "MEDCOUPLING-7.8.2" +application12 : "MEDCOUPLING-8.3.0" +application13 : "MEDCOUPLING-8.2.0" +application14 : "MEDCOUPLING" +application15 : "MEDCOUPLING-native" +application16 : "MEDCOUPLING-Micro" +application17 : "MEDCOUPLING-MPI" +application18 : "SHAPER-2.7.0-SAL820" +application19 : "PPGP-1.2beta-7.8.0" + + +jobs : +[ + + { + name : 'CLEAN CO7.2 info' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO7.2 info" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + ] + } + + { + name : 'CLEAN CO7.3 physique W' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO7.3 physique W" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN FD18 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "FD18 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN CO7.2 physique' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO7.2 physique" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN DB07 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "DB07 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN DB08 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "DB08 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN UB16.04 physique' + when : [$FRIDAY] + application : "CLEAN" + machine : "UB16.04 physique" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN UB14.04 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "UB14.04 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN FD20 physique' + when : [$FRIDAY] + application : "CLEAN" + machine : "FD20 physique" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN FD20 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "FD20 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN FD22 physique' + when : [$FRIDAY] + application : "CLEAN" + machine : "FD22 physique" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN FD22 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "FD22 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN FD24 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "FD24 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN CO6.4 physique' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO6.4 physique" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN CO6.4 physique corpus' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO6.4 physique corpus" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN CO6.4 virtuelle' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO6.4 virtuelle" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + + { + name : 'CLEAN CO7 physique' + when : [$FRIDAY] + application : "CLEAN" + machine : "CO7 physique" + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application1 + ' --all' + 'sat clean ' + $application2 + ' --all' + 'sat clean ' + $application3 + ' --all' + 'sat clean ' + $application4 + ' --all' + 'sat clean ' + $application5 + ' --all' + 'sat clean ' + $application6 + ' --all' + 'sat clean ' + $application7 + ' --all' + 'sat clean ' + $application8 + ' --all' + 'sat clean ' + $application9 + ' --all' + + 'sat clean ' + $application11 + ' --all' + 'sat clean ' + $application12 + ' --all' + 'sat clean ' + $application13 + ' --all' + 'sat clean ' + $application14 + ' --all' + 'sat clean ' + $application15 + ' --all' + 'sat clean ' + $application16 + ' --all' + 'sat clean ' + $application17 + ' --all' + 'sat clean ' + $application18 + ' --all' + 'sat clean ' + $application19 + ' --all' + + ] + } + +] + diff --git a/jobs/salome.pyconf b/jobs/salome.pyconf new file mode 100644 index 0000000..f742b9c --- /dev/null +++ b/jobs/salome.pyconf @@ -0,0 +1,882 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +MONDAY : 0 +TUESDAY : 1 +WEDNESDAY : 2 +THURSDAY : 3 +FRIDAY : 4 +SATURDAY : 5 +SUNDAY : 6 + +LUNDI : 0 +MARDI : 1 +MERCREDI : 2 +JEUDI : 3 +VENDREDI : 4 +SAMEDI : 5 +DIMANCHE : 6 + +m : 60 + +h : 60 * $m + +# OP 30/11/2017 Machine display partie -> on bascule sur la UB16 pour test +# mais ce n'est pas vraiment concluant (privilegier display local) +display : 'is232975.intra.cea.fr:0.0' + + +#################################################### +# Liste des machines pour les constructions SALOME # +#################################################### +machines: +[ + { + name : "CO6.4 virtuelle" + host : isv20844 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + # nouveau master CENTOS6.4 LGLS situe dans le bureau de Gilles + { + name : "CO6.4 physique" + host : is212800 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + # OP 17/07/2017 machine inutilisee pour les constructions SALOME + # car packages manquants - Attente VM master CO7 + { + name : "CO7.3 virtuelle" + host : isv20845 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + # OP 17/07/2017 machine Christian + { + name : "CO7.3 Christian" + host : is231761 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + + # OP 22/12/2017 machine Alexandre qui lance la crontab + { + name : "CO7.3 physique A" + host : is228818 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + + # OP 04/07/2018 machine Clarisse + { + name : "CO7.3 Clarisse" + host : is221560 + user : salome + sat_path : '/volatile/home/salome/salomeTools-5-jobs' + } + + { + name : "DB07 virtuelle" + host : isv20847 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + { + name : "DB08 virtuelle" + host : isv20848 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + # OP 22/12/2017 Utilisee pour les constructions CO7 + # en attendant VM infogeree + { + name : "CO7.4 physique S" + host : is234638 + user : salome + sat_path : '/volatile/salome/salomeTools-5-jobs' + } + +# 07/03/2018 AC Suppression de la FD18 en vue de la remplacer par FD26 +# { +# name : "FD18 virtuelle" +# host : isv20852 +# user : salome +# sat_path : '/export/home/salome/salomeTools-5-jobs' +# } + + { + name : "FD20 virtuelle" + host : isv20849 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + +# OP 22/12/2017 Supprimee car arretee visiblement - utilisee pour packages +# { +# name : "FD20 physique" +# host : is228817 +# user : salome +# sat_path : '/export/home/salome/salomeTools-5-jobs' +# } + + { + name : "FD22 virtuelle" + host : isv20850 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + +# OP 19/05/2017 Artifact 8628 : le repertoire local n'est pas bon +# et le montage de /volatile/home/salome +# n'est pas automatique +# { +# name : "DB08 physique" +# host : is223287 +# user : salome +# sat_path : '/export/home/salome/salomeTools-5-jobs' +# } + + { + name : "FD24 virtuelle" + host : isv20843 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + { + name : "UB14.04 virtuelle" + host : isv20851 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } + + # OP 22/12/2017 Utilisee en attendant VM master UB16.04 + { + name : "UB16.04 physique" + host : is232975 + user : salome + sat_path : '/volatile/home/salome/salomeTools-5-jobs' + } + +# AC 22/03/2018 Remplacee par VM FD26 +# { +# name : "FD26 physique STMF" +# host : is221714 +# user : salome +# sat_path : '/export/home/salome/salomeTools-5-jobs' +# } + +# AC 22/03/2018 Ajout de la machine virtuelle FD26 +# (en remplacement de celle physique) + { + name : "FD26 virtuelle" + host : isv20852 + user : salome + sat_path : '/export/home/salome/salomeTools-5-jobs' + } +] + + +########################## +# Liste des applications # +########################## + +# Versions SALOME master (future V9) +salome_master : "SALOME-master" +salome_master_native : "SALOME-master-native" +salome_master_test : "SALOME-master_test" +salome_master_native_test : "SALOME-master-native_test" + +# Versions SALOME 8.5.0 +# TA 16-04-2018 Ajout de SHAPER dans SALOME avec l'appli SALOME-S +salome_8_5_0 : "SALOME-8.5.0" +salome_8_5_0_shaper : "SALOME-8.5.0-S" +salome_8_5_0_native : "SALOME-8.5.0-native" +salome_8_5_0_MPI : "SALOME-8.5.0-MPI" +salome_8_5_0_test : "SALOME-8.5.0_test" +salome_8_5_0_shaper_test : "SALOME-8.5.0-S_test" +salome_8_5_0_native_test : "SALOME-8.5.0-native_test" +salome_8_5_0_MPI_test : "SALOME-8.5.0-MPI_test" +archives_8_5_0 : "Archives-8.5.0" +archives_8_5_0_shaper : "Archives-8.5.0-S" +archives_8_5_0_native : "Archives-8.5.0-native" +archives_8_5_0_MPI : "Archives-8.5.0-MPI" +archives_8_5_0_SRC : "Archives-8.5.0-SRC" +archives_8_5_0_shaper_SRC : "Archives-8.5.0-S-SRC" +archives_8_5_0_native_SRC : "Archives-8.5.0-native-SRC" +archives_8_5_0_MPI_SRC : "Archives-8.5.0-MPI-SRC" + +# Versions SALOME 8.4.0 +salome_8_4_0 : "SALOME-8.4.0" +salome_8_4_0_native : "SALOME-8.4.0-native" +salome_8_4_0_MPI : "SALOME-8.4.0-MPI" +salome_8_4_0_test : "SALOME-8.4.0_test" +archives_8_4_0 : "Archives-8.4.0" +archives_8_4_0_SRC : "Archives-8.4.0-SRC" + +# Versions SALOME anciennes +salome_7_8_2 : "SALOME-7.8.2" +salome_6_6_0 : "SALOME-6.6.0" + +# Versions MEDCOUPLING master +# OP 04/07/2018 Comme la master SALOME est relative a la V9, +# que fait-on pour MEDCOUPLING master ? +medcoupling : "MEDCOUPLING" +medcoupling_native : "MEDCOUPLING-native" +medcoupling_micro : "MEDCOUPLING-Micro" +medcoupling_mpi : "MEDCOUPLING-MPI" + +# TA 21/03/2018 Ajout MEDCOUPLING-8.5.0 +medcoupling_8_5_0 : "MEDCOUPLING-8.5.0" + +# OP 19/10/2017 Ajout MEDCOUPLING-8.4.0 +medcoupling_8_4_0 : "MEDCOUPLING-8.4.0" + +medcoupling_7_8_2 : "MEDCOUPLING-7.8.2" + +# Applications +alamos_7_8_0 : "ALAMOS-7.8.0-master" +coreflows : "COREFLOWS" +corpus_2_0 : "CORPUS-2.0" +corpus_archives : "CORPUS-ARCHIVES" +formation : "FORMATION" +matix : "MATIX" +monte_carlo : "MONTE-CARLO" +oscar : "OSCAR" +ppgp_1_2beta : "PPGP-1.2beta-7.8.0" + +# AC 30/01/2018 Ajout de SHAPER-3.0.0 qui remplace respectivement +# SHAPER 2.9.1, 2.10.0 et 2.10.1 +shaper_3_00 : "SHAPER-3.0.0" + +# OP 31/07/2017 Ajout de SHAPER-master sur CO7 et UB16 +shaper_master : "SHAPER-master" + +tutorial_coupling_782 : "TUTORIAL_COUPLING-7.8.2" +tutorial_coupling_master : "TUTORIAL_COUPLING-master" +wprocess : "WPROCESS" +nuresim_2_1 : "NURESIM-2.1" + + + +jobs : +[ + ########################################################################### + ############################## CLEAN DU VENDREDI ########################## + ########################################################################### + { + name : 'CLEAN' + when : [$FRIDAY] + application : "CLEAN" + machine : ["CO6.4 virtuelle", "CO6.4 physique", "CO7.4 physique S", + "DB07 virtuelle", "DB08 virtuelle", "FD20 virtuelle", + "FD22 virtuelle", "FD24 virtuelle", "FD26 virtuelle", + "UB14.04 virtuelle", "UB16.04 physique"] + board : "CLEAN ALL" + timeout : 10 * $h + commands : + [ + # Versions SALOME + # OP 19/10/2017 Clean des archives SALOME realise autrement + + 'sat clean ' + $salome_master + ' --all' + 'sat clean ' + $salome_master_native + ' --all' + + #'sat clean ' + $salome_8_5_0 + ' --all' + 'sat clean ' + $salome_8_5_0_shaper + ' --all' + 'sat clean ' + $salome_8_5_0_native + ' --all' + 'sat clean ' + $salome_8_5_0_MPI + ' --all' + + 'sat clean ' + $salome_8_4_0 + ' --all' + 'sat clean ' + $salome_8_4_0_native + ' --all' + 'sat clean ' + $salome_8_4_0_MPI + ' --all' + + #'sat clean ' + $salome_7_8_2 + ' --all' + #'sat clean ' + $salome_6_6_0 + ' --all' + + # Versions MEDCOUPLING + 'sat clean ' + $medcoupling + ' --all' + 'sat clean ' + $medcoupling_native + ' --all' + 'sat clean ' + $medcoupling_micro + ' --all' + 'sat clean ' + $medcoupling_mpi + ' --all' + +# OP 04/07/2018 Ajout MEDCOUPLING 8.5.0 + 'sat clean ' + $medcoupling_8_5_0 + ' --all' + +# OP 19/10/2017 Ajout MEDCOUPLING 8.4.0 + 'sat clean ' + $medcoupling_8_4_0 + ' --all' + + 'sat clean ' + $medcoupling_7_8_2 + ' --all' + + # Applications + # OP 03/08/2017 applications suivantes pas encore operationnelles : + # - COREFLOWS + # - FORMATION + # - MATIX + # - MONTE-CARLO + # - OSCAR + # - WPROCESS + 'sat clean ' + $alamos_7_8_0 + ' --all' + #'sat clean ' + $coreflows + ' --all' + 'sat clean ' + $corpus_2_0 + ' --all' + 'sat clean ' + $corpus_archives + ' --all' + #'sat clean ' + $formation + ' --all' + #'sat clean ' + $matix + ' --all' + #'sat clean ' + $monte_carlo + ' --all' + #'sat clean ' + $oscar + ' --all' + 'sat clean ' + $ppgp_1_2beta + ' --all' + + 'sat clean ' + $shaper_3_00 + ' --all' + 'sat clean ' + $shaper_master + ' --all' + + 'sat clean ' + $tutorial_coupling_782 + ' --all' + 'sat clean ' + $tutorial_coupling_master + ' --all' + #'sat clean ' + $wprocess + ' --all' + 'sat clean ' + $nuresim_2_1 + ' --all' + ] + } + + + ############################################################## + ################# SALOME master ############################## + ############################################################## + + + + ##################################################################### + ################# SALOME master native ############################## + ##################################################################### + + + + ############################################################# + ################# SALOME master test ######################## + ############################################################# + + + + ############################################################# + ################# SALOME master native test ################# + ############################################################# + + + + ############################################################# + ################# SALOME 8.5.0 ############################## + ############################################################# + + + + ############################################################# + ################# SALOME Shaper 8.5.0 ####################### + ############################################################# + + + + ##################################################################### + ################# SALOME 8.5.0 native ############################### + ##################################################################### + + + + ################################################################# + ################# SALOME 8.5.0 MPI ############################## + ################################################################# + { + name : 'SALOME 8.5.0 MPI CO6.4' + when : [$FRIDAY] + application : $salome_8_5_0_MPI + machine : "CO6.4 virtuelle" + board : "SALOME" + timeout : 12 * $h + prefix : "scl enable devtoolset-2" +# OP 24/05/2017 Suite aux problemes de blocage sur les checks des modules +# GEOM et SMESH, on supprime les checks + commands : + [ + # TA 19-06-2018 : On garde le clean total de la version MPI tant que + # la construction ne se passe pas sans probleme + 'sat clean ' + $application + ' --all' + 'sat prepare ' + $application + ' --force_patch -f' + 'sat compile ' + $application + ' --clean_build_after' + 'sat launcher ' + $application + 'sat launcher ' + $application + ' --use_mesa -n salome_mesa' + 'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium' + 'sat test ' + $application + ' --display :0' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved' + 'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved' + 'sat package ' + $application + ' --binaries --sources --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.5.0/SALOME_8_5_0_Release_Notes.pdf,/home/salome/SPN_PRIVATE/SAT5/MAINTENANCE/dependances_salome/co6_dep_sys_rpms.txt' + 'sat package ' + $application + ' --sources --with_vcs' + ] + } + + + ############################################################# + ################# SALOME 8.5.0 test ######################### + ############################################################# + + + + ############################################################# + ################# SALOME 8.5.0 shaper test ################## + ############################################################# + + + + ############################################################# + ################# SALOME 8.5.0 native test ################## + ############################################################# + + + + ############################################################# + ################# SALOME 8.5.0 MPI test ##################### + ############################################################# + { + name : 'SALOME 8.5.0 MPI test CO6.4' + when : [$FRIDAY] + application : $salome_8_5_0_MPI_test + prefix : "scl enable devtoolset-2" + machine : ["CO6.4 virtuelle"] + board : "SALOME" + timeout : 3 * $h + commands : + [ + 'sat application ' + $salome_8_5_0_MPI + '/export/home/salome/SALOME-8.5.0-MPI-CO6/salome test -E "KERNEL_Launcher|MEDREADER"' + 'export DISPLAY=:0 ; /export/home/salome/SALOME-8.5.0-MPI-CO6/salome_mesa test -R MEDREADER' + ] + } + + + ############################################################### + ################# ARCHIVES SALOME 8.5.0 ####################### + ############################################################### + + + + ############################################################### + ################# ARCHIVES SALOME 8.5.0 Shaper ################ + ############################################################### + + + + ############################################################### + ################# ARCHIVES SALOME 8.5.0 native ################ + ############################################################### + + + + ############################################################### + ################# ARCHIVES SALOME 8.5.0 MPI ################### + ############################################################### + { + name : 'ARCHIVE 8.5.0 MPI CO6.4' + when : [$FRIDAY] + application : $archives_8_5_0_MPI + machine : "CO6.4 virtuelle" + board : "SALOME" + timeout : 3 * $h + cd_wd : "cd /export/home/salome" + commands : + [ +# OP 04-07-2018 : On garde le dossier Test_Archives pour ne pas +# effacer le package du job ARCHIVE 8.5.0 CO6 +# $cd_wd + '; if [ -d Test_Archives ];then rm -rf Test_Archives; fi' + $cd_wd + '; if [ ! -d Test_Archives ];then mkdir Test_Archives; fi; cd Test_Archives; cp /export/home/salome/SALOME-8.5.0-MPI-CO6/PACKAGE/SALOME-8.5.0-MPI-CO6-SRC.tgz .' + $cd_wd + '/Test_Archives; if [ -d SALOME-8.5.0-MPI-CO6-SRC ];then rm -rf SALOME-8.5.0-MPI-CO6-SRC ; fi; tar xfz SALOME-8.5.0-MPI-CO6-SRC.tgz' + 'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium' + 'sat test SALOME-8.5.0-MPI -l /export/home/salome/Test_Archives/SALOME-8.5.0-MPI-CO6-SRC/salome --display :0' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved' + 'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved' + ] + } + + + ############################################################### + ######## ARCHIVES SALOME 8.5.0 : recompilation SOURCES ######## + # doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 # + ############################################################### + + + + ######################################################################## + ######## ARCHIVES SALOME 8.5.0 Shaper : recompilation SOURCES ########## + ######## doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 Shaper # + ######################################################################## + + + + ######################################################################## + ######## ARCHIVES SALOME 8.5.0 native : recompilation SOURCES ########## + ######## doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 native # + ######################################################################## + + + + ##################################################################### + ######## ARCHIVES SALOME 8.5.0 MPI : recompilation SOURCES ########## + ######## doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 MPI # + ##################################################################### + { + name : 'ARCHIVE 8.5.0 MPI CO6.4 SRC' + when : [$FRIDAY] + application : $archives_8_5_0_MPI_SRC + prefix : "scl enable devtoolset-2" + machine : "CO6.4 virtuelle" + board : "SALOME" + timeout : 8 * $h + sat_arch : "/export/home/salome/Test_Archives/SALOME-8.5.0-MPI-CO6-SRC/salomeTools/sat " + sat_appli : $salome_8_5_0_MPI + commands : + [ + $sat_arch + 'prepare ' + $sat_appli + $sat_arch + 'compile ' + $sat_appli + ' --check --clean_build_after' + $sat_arch + 'launcher ' + $sat_appli + 'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium' + 'sat test ' + $sat_appli + ' -l /export/home/salome/Test_Archives/SALOME-8.5.0-MPI-CO6-SRC/salome --display :0' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved' + 'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved' + ] + } + + + ############################################################# + ################# SALOME 8.4.0 ############################## + ############################################################# + + + + ##################################################################### + ################# SALOME 8.4.0 native ############################### + ##################################################################### + + + + ################################################################# + ################# SALOME 8.4.0 MPI ############################## + ################################################################# + + + + ############################################################# + ################# SALOME 8.4.0 test ######################### + ############################################################# + + + + ############################################################### + ################# ARCHIVES SALOME 8.4.0 ####################### + ############################################################### + + + + ############################################################### + ######## ARCHIVES SALOME 8.4.0 : recompilation SOURCES ######## + # doit etre realise apres les jobs ARCHIVES SALOME 8.4.0 # + ############################################################### + + + + ############################################################# + ################# SALOME 7.8.2 ############################## + ############################################################# + + + + ############################################################# + ################# SALOME 6.6.0 ############################## + ############################################################# + + + + ################################################################### + ################# MEDCOUPLING master ############################## + ################################################################### + + + + ################################################################### + ################# MEDCOUPLING native ############################## + ################################################################### + + + + ################################################################## + ################# MEDCOUPLING Micro ############################## + ################################################################## + + + + ###################################################################### + ################# MEDCOUPLING MPI Metis ############################## + ###################################################################### + + + + ################################################################## + ################# MEDCOUPLING 8.5.0 ############################## + ################################################################## + + + + ################################################################## + ################# MEDCOUPLING 8.4.0 ############################## + ################################################################## + + + + ################################################################## + ################# MEDCOUPLING 7.8.2 ############################## + ################################################################## + + + + ###################################################################### + ################# ALAMOS-7.8.0-master ############################## + ###################################################################### + { + name : 'ALAMOS 7.8.0 master CO6.4' + when : [$FRIDAY] + application : $alamos_7_8_0 + prefix : "scl enable devtoolset-2" + machine : "CO6.4 virtuelle" + board : "APPLICATIONS" + timeout : 10 * $h + commands : + [ + # AC 15-05-2018 Ajout de l'option -f au prepare pour forcer le patch au + # cas ou les sources n'ont pas ete nettoyees + 'sat prepare ' + $application + ' --force_patch -f' + 'sat compile ' + $application + ' --check --clean_build_after' + 'sat launcher ' + $application + # OP 03/08/2017 pas de tests pour l'instant, + # on fait juste un make test + #'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1' + #'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium' + #'sat test ' + $application + ' --display :0' + #'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved' + #'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved' + 'sat package ' + $application + ' --binaries --sources' + 'sat package ' + $application + ' --sources --with_vcs' + ] + } + + { + name : 'ALAMOS 7.8.0 master DB08' + when : [$FRIDAY] + application : $alamos_7_8_0 + machine : "DB08 virtuelle" + board : "APPLICATIONS" + timeout : 10 * $h + commands : + [ + # AC 15-05-2018 Ajout de l'option -f au prepare pour forcer le patch au + # cas ou les sources n'ont pas ete nettoyees + 'sat prepare ' + $application + ' --force_patch -f' + 'sat compile ' + $application + ' --check --clean_build_after' + 'sat launcher ' + $application + # OP 03/08/2017 pas de tests pour l'instant, + # on fait juste un make test + #'sat test ' + $application + ' --display ' + $display + 'sat package ' + $application + ' --binaries --sources' + 'sat package ' + $application + ' --sources --with_vcs' + ] + } + + + ###################################################################### + ################# Archives ALAMOS 7.8.0_V7_dev ##################### + ###################################################################### + + # OP 04/08/2017 Voir si on ajoute des tests d'archives ALAMOS ??? + + + ############################################################ + ################# COREFLOWS ############################## + ############################################################ + + # OP 18/07/2017 A mettre en place : + # - Pour CO6.4, prefix inutile sinon CDMATH ne compile pas + # - Voir quelles sont les taches a lancer + # - Attention aux manips mesa avant les tests +# { +# name : 'COREFLOWS 7.8 CO+DB08+FD18+UB14' +# application : $coreflows +# machine : [["CO6.4 virtuelle", $FRIDAY], ["CO7.4 physique S", $FRIDAY], +# ["DB08 virtuelle", $WEDNESDAY], +# ["FD18 virtuelle", $THURSDAY], +# ["UB14.04 virtuelle", $FRIDAY]] +# board : "APPLICATIONS" +# timeout : 10 * $h +# commands : +# [ +# 'sat prepare ' + $application +# 'sat compile ' + $application + ' --check --clean_build_after' +# 'sat launcher ' + $application +# 'sat test ' + $application + ' --display :0' +# 'sat package ' + $application + ' --binaries --sources' +# 'sat package ' + $application + ' --sources --with_vcs' +# ] +# } + + + ############################################################# + ################# CORPUS 2.0 ############################## + ############################################################# + { + name : 'CORPUS 2.0 CO6' + application : $corpus_2_0 + machine : [["CO6.4 virtuelle", $FRIDAY]] + board : "APPLICATIONS" + timeout : 8 * $h + commands : + [ + 'sat clean ' + $application + ' --install --build --properties corpus:yes' + 'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + 'sat prepare ' + $application + 'sat compile ' + $application + 'sat generate ' + $application + 'sat application ' + $application + 'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium' + 'sat test ' + $application + ' --display :0' + 'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved' + 'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved' + 'sat package ' + $application + ' --binaries --sources --with_vcs' + ] + } + + + ############################################################# + ################ ARCHIVES CORPUS 2.0 ####################### + ############################################################# + + { + name : 'ARCHIVE CORPUS 2.0 CO6.4' + when : [$FRIDAY] + application : $corpus_archives + machine : "CO6.4 physique" + board : "APPLICATIONS" + timeout : 2 * $h + cd_wd : "cd /export/home/salome" + sat_appli : $corpus_2_0 + commands : + [ + $cd_wd + '; if [ -d Test_Archives ];then rm -rf Test_Archives ; fi' + $cd_wd + '; mkdir Test_Archives; cd Test_Archives; scp isv20844:/export/home/salome/CORPUS-2.0-CO6/PACKAGE/CORPUS-2.0-CO6-SRC-VCS.tgz .' + $cd_wd + '/Test_Archives; if [ -d CORPUS-2.0-CO6-SRC-VCS ];then rm -rf CORPUS-2.0-CO6-SRC-VCS ; fi; tar xfz CORPUS-2.0-CO6-SRC-VCS.tgz' + $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./install_bin.sh' + $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat prepare ' + $sat_appli + $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat compile ' + $sat_appli + ' --clean_all -p CRONOSCPP' + $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat environ ' + $sat_appli + $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat application ' + $sat_appli + # OP 22/12/2017 Tests non lances car pas de display local + #'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1' + #'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium' + #'sat test ' + $sat_appli + ' -l /export/home/salome/Test_Archives/CORPUS-2.0-CO6-SRC-VCS/APPLI/runAppli --display :0' + #'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved' + #'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved' + ] + } + + + ############################################################ + ################# FORMATION ############################## + ############################################################ + + # OP 18/07/2017 A mettre en place : + # application : $formation + # machine : [["FD18 virtuelle", $FRIDAY], ["FD24 virtuelle", $WEDNESDAY]] + + + ######################################################## + ################# MATIX ############################## + ######################################################## + + # OP 18/07/2017 A mettre en place : + # application : $matix + + + ############################################################## + ################# MONTE-CARLO ############################## + ############################################################## + + # OP 18/07/2017 A mettre en place : + # application : $monte_carlo + # machine : [["CO6.4 virtuelle", $FRIDAY], ["CO7.4 physique S", $THURSDAY]] + # Pour CO6.4, voir si prefix necessaire ou pas + + + ######################################################## + ################# OSCAR ############################## + ######################################################## + + # OP 18/07/2017 A mettre en place : + # application : $oscar + + + ##################################################### + ################# PPGP ############################## + ##################################################### + { + name : 'PPGP CO6+FD20' + application : $ppgp_1_2beta + machine : [["CO6.4 virtuelle", $FRIDAY], + ["FD20 virtuelle", $FRIDAY]] + board : "APPLICATIONS" + timeout : 10 * $h + commands : + [ + 'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes' + 'sat prepare ' + $application + 'sat compile ' + $application + 'sat launcher ' + $application + 'sat package ' + $application + ' --binaries --sources' + 'sat package ' + $application + ' --sources --with_vcs' + ] + } + + + ################################################################# + ################# SHAPER 3.0.0 ################################## + ################################################################# + + + + ############################################################## + ################# SHAPER master ############################## + ############################################################## + + + + #################################################################### + ########### TUTORIAL COUPLAGE 7.8.2 ############################## + #################################################################### + + + + ##################################################################### + ########### TUTORIAL COUPLAGE master ############################## + ##################################################################### + + + + ########################################################### + ################# WPROCESS ############################## + ########################################################### + + # OP 18/07/2017 A mettre en place : + # application : $wprocess + +] + diff --git a/products/ADAO.pyconf b/products/ADAO.pyconf new file mode 100644 index 0000000..ccbb5ff --- /dev/null +++ b/products/ADAO.pyconf @@ -0,0 +1,41 @@ +default : +{ + name : "ADAO" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "adao.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "adao.git" + } + environ : + { + env_script : $name + ".py" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "adao" + } + depend : [ + "docutils", + "Sphinx", + "setuptools", + "scipy", + "Python", + "nlopt", + "omniORB", + "omniORBpy", + "CONFIGURATION", + "KERNEL", + "EFICAS", + "EFICAS_TOOLS", + "YACS" + ] + build_depend : ["cmake", "swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests : "yes" + } +} diff --git a/products/ADAO_INTERFACE.pyconf b/products/ADAO_INTERFACE.pyconf new file mode 100644 index 0000000..df0aba0 --- /dev/null +++ b/products/ADAO_INTERFACE.pyconf @@ -0,0 +1,30 @@ +default : +{ + name : "ADAO_INTERFACE" + build_source : "cmake" + cmake_options : "-DPY2CPP_ROOT_DIR=${PY2CPP_ROOT_DIR}" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "adao_interface.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "adao_interface.git" + } + environ : + { + env_script : $name + ".py" + } + depend : [ + "Python", + "PY2CPP", + "CONFIGURATION", + "ADAO" + ] + build_depend : ["cmake", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + } +} diff --git a/products/ALAMOS.pyconf b/products/ALAMOS.pyconf new file mode 100644 index 0000000..63622a2 --- /dev/null +++ b/products/ALAMOS.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "ALAMOS" + build_source : "cmake" + get_source : "git" + cmake_options : "-DSALOME_BUILD_DOC=OFF -DSALOME_GUI_BUILD_WITH_QT5=ON" + git_info: + { + repo : "https://codev-tuleap.intra.cea.fr/plugins/git/alamos/" + $name + ".git" + repo_dev : $repo + } + depend : ['Python', 'KERNEL', 'GUI', 'FIELDS'] + environ : + { + } + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + incremental : "yes" + } +} + +default_win : +{ + cmake_options : "-DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\" -DCMAKE_BUILD_TYPE=Release -DSALOME_BUILD_DOC=OFF -DSALOME_GUI_BUILD_WITH_QT5=ON -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib -DCMAKE_CXX_COMPILER_ARCHITECTURE_ID=x64" + depend : ['Python', 'KERNEL', 'GUI', 'FIELDS', 'PyQt','ParaView', 'root'] +} diff --git a/products/ALAMOS_PROFILE.pyconf b/products/ALAMOS_PROFILE.pyconf new file mode 100644 index 0000000..f6ff24e --- /dev/null +++ b/products/ALAMOS_PROFILE.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "ALAMOS_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "https://codev-tuleap.intra.cea.fr/plugins/git/alamos/ALAMOS-profile.git" + repo_dev : $repo + } + environ : + { + _SalomeAppConfig : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "alamos_profile" + } + depend : ['Python', 'Sphinx', 'qt', 'KERNEL', 'GUI'] + opt_depend : ['sphinx_rtd_theme'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + is_salome_application : "yes" + incremental : "yes" + } + patches : [] +} + +default_win : +{ + cmake_options : "-DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\"" +} diff --git a/products/BLSURFPLUGIN.pyconf b/products/BLSURFPLUGIN.pyconf new file mode 100644 index 0000000..a03071d --- /dev/null +++ b/products/BLSURFPLUGIN.pyconf @@ -0,0 +1,114 @@ +default : +{ + name : "BLSURFPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/blsurfplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "blsurfplugin.git" + } + environ : + { + _SMESH_MeshersList : "BLSURFPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "blsurfplugin" + } + depend : [ + "KERNEL", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_V8_4_0 : +{ + name : "BLSURFPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/blsurfplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "blsurfplugin.git" + } + environ : + { + } + depend : [ + "KERNEL", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + patches : ["BLSURFPLUGIN_8_4_0.patch"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_V6_6_0 : +{ + name : "BLSURFPLUGIN" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/blsurfplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "blsurfplugin.git" + } + environ : + { + } + depend : [ + "KERNEL", + "MED", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/Babel.pyconf b/products/Babel.pyconf new file mode 100644 index 0000000..b1b13fa --- /dev/null +++ b/products/Babel.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "Babel" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-babel"] + rpm_dev : [] + apt : ["python3-babel"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools', 'pytz'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension # useful only if pip is set to "no" + archive_info : {archive_name : "Babel-" + $APPLICATION.products.Babel + "_windows.tar.gz"} +} diff --git a/products/CALCULATOR.pyconf b/products/CALCULATOR.pyconf new file mode 100644 index 0000000..c0c103e --- /dev/null +++ b/products/CALCULATOR.pyconf @@ -0,0 +1,70 @@ +default : +{ + name : "CALCULATOR" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/calculator.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "calculator.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "calculator" + } + depend : + [ + "KERNEL", + "MEDCOUPLING", + "FIELDS", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "medfile", + "omniORB" + ] + build_depend : ["cmake", "swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + +version_6_6_0_to_9_1_0 : +{ + name : "CALCULATOR" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/calculator.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "calculator.git" + } + environ : + { + } + depend : + [ + "KERNEL", + "MEDCOUPLING", + "MED", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "medfile", + "omniORB" + ] + build_depend : ["cmake", "swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} diff --git a/products/CAS.pyconf b/products/CAS.pyconf new file mode 100755 index 0000000..509cc05 --- /dev/null +++ b/products/CAS.pyconf @@ -0,0 +1,489 @@ +default : +{ + name : "CAS" + build_source : "cmake" + cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=OFF -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la + # section environ pour conserver + # la generalite du script CAS.py + CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders" + CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "no" + } +} + +version_CR740_SALOME_PATCH : +{ + name : "CAS" + build_source : "cmake" + cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=OFF -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la + # section environ pour conserver + # la generalite du script CAS.py + CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders" + CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "no" + } +} + +version_CR740_SALOME_PATCH_win : +{ + name : "CAS" + build_source : "script" + compil_script : "CAS_7.4.bat" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + CSF_OCCTBinPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin" + CSF_OCCTLibPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib" + CSF_OCCTIncludePath : $install_dir + $VARS.sep + "inc" + CSF_OCCTResourcePath : $install_dir + $VARS.sep + "src" + CSF_OCCTDataPath : $install_dir + $VARS.sep + "data" + CSF_OCCTSamplesPath : $install_dir + $VARS.sep + "samples" + CSF_OCCTTestsPath : $install_dir + $VARS.sep + "tests" + CSF_OCCTDocPath : $install_dir + $VARS.sep + "doc" + CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage" + CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures" + CSF_ShadersDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders" + CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage" + CSF_TObjMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj" + CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_XCAFDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_TObjDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_IGESDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_STEPDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_XmlOcafResource : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource" + CSF_MIGRATION_TYPES : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + MMGT_CLEAR : "1" + MMGT_REENTRANT : "1" + CSF_LANGUAGE : "us" + + env_script : "CAS.py" + } + depend : ['freetype', 'freeimage', 'tbb'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "no" + } +} + + +version_V7_4_0p1 : +{ + name : "CAS" + build_source : "cmake" + cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=OFF -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la + # section environ pour conserver + # la generalite du script CAS.py + CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders" + CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "no" + } +} + +version_V7_4_0p1_win : +{ + name : "CAS" + build_source : "script" + compil_script : "CAS_7.4.bat" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + CSF_OCCTBinPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin" + CSF_OCCTLibPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib" + CSF_OCCTIncludePath : $install_dir + $VARS.sep + "inc" + CSF_OCCTResourcePath : $install_dir + $VARS.sep + "src" + CSF_OCCTDataPath : $install_dir + $VARS.sep + "data" + CSF_OCCTSamplesPath : $install_dir + $VARS.sep + "samples" + CSF_OCCTTestsPath : $install_dir + $VARS.sep + "tests" + CSF_OCCTDocPath : $install_dir + $VARS.sep + "doc" + CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage" + CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures" + CSF_ShadersDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders" + CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage" + CSF_TObjMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj" + CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_XCAFDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_TObjDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_IGESDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_STEPDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_XmlOcafResource : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource" + CSF_MIGRATION_TYPES : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + MMGT_CLEAR : "1" + MMGT_REENTRANT : "1" + CSF_LANGUAGE : "us" + + env_script : "CAS.py" + } + depend : ['freetype', 'freeimage', 'tbb'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "no" + } +} + +version_V7_3_0p4 : +{ + name : "CAS" + build_source : "cmake" + cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=ON -D3RDPARTY_GL2PS_DIR=$GL2PSDIR -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders" + CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage', 'gl2ps'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "no" + } +} + +version_V7_3_0p4_win : +{ + name : "CAS" + build_source : "script" + compil_script : "CAS_7.3.bat" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + CSF_OCCTBinPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin" + CSF_OCCTLibPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib" + CSF_OCCTIncludePath : $install_dir + $VARS.sep + "inc" + CSF_OCCTResourcePath : $install_dir + $VARS.sep + "src" + CSF_OCCTDataPath : $install_dir + $VARS.sep + "data" + CSF_OCCTSamplesPath : $install_dir + $VARS.sep + "samples" + CSF_OCCTTestsPath : $install_dir + $VARS.sep + "tests" + CSF_OCCTDocPath : $install_dir + $VARS.sep + "doc" + CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage" + CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures" + CSF_ShadersDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders" + CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage" + CSF_TObjMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj" + CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_XCAFDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_TObjDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_IGESDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_STEPDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_XmlOcafResource : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource" + CSF_MIGRATION_TYPES : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + MMGT_CLEAR : "1" + MMGT_REENTRANT : "1" + CSF_LANGUAGE : "us" + + env_script : "CAS.py" + } + depend : ['freetype', 'freeimage', 'gl2ps', 'tbb'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "no" + } +} + +version_V7_3_0p3 : +{ + name : "CAS" + build_source : "cmake" + cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=ON -D3RDPARTY_GL2PS_DIR=$GL2PSDIR -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders" + CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage', 'gl2ps'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "no" + } +} + +version_V7_3_0p3_win : +{ + name : "CAS" + build_source : "script" + compil_script : "CAS_7.3.bat" + get_source : "git" + git_info: + { + repo : "http://git.dev.opencascade.org/repos/occt.git" + repo_dev : $repo + } + environ : + { + CSF_OCCTBinPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin" + CSF_OCCTLibPath : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib" + CSF_OCCTIncludePath : $install_dir + $VARS.sep + "inc" + CSF_OCCTResourcePath : $install_dir + $VARS.sep + "src" + CSF_OCCTDataPath : $install_dir + $VARS.sep + "data" + CSF_OCCTSamplesPath : $install_dir + $VARS.sep + "samples" + CSF_OCCTTestsPath : $install_dir + $VARS.sep + "tests" + CSF_OCCTDocPath : $install_dir + $VARS.sep + "doc" + CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage" + CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures" + CSF_ShadersDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders" + CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage" + CSF_TObjMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj" + CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_XCAFDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_TObjDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_IGESDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_STEPDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource" + CSF_XmlOcafResource : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource" + CSF_MIGRATION_TYPES : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + MMGT_CLEAR : "1" + MMGT_REENTRANT : "1" + CSF_LANGUAGE : "us" + + env_script : "CAS.py" + } + depend : ['freetype', 'freeimage', 'gl2ps', 'tbb'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "no" + } +} + + +version_6_0_0_to_7_0_0 : +{ + name : "CAS" + build_source : "autotools" + configure_options : "-without-tcl --without-tk --disable-draw --with-freetype=$FREETYPEDIR --enable-debug=no --enable-production=yes --with-gl2ps=$GL2PSDIR --with-freeimage=$FREEIMAGEDIR" + get_source : "archive" + environ : + { + # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la + # section environ pour conserver + # la generalite du script CAS.py + CSF_UnitsLexicon : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage" + CSF_MDTVFontDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "FontMFT" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage', 'gl2ps', 'tcl', 'tk'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + +version_6_5_4 : +{ + name : "CAS" + build_source : "autotools" + configure_options : "-without-tcl --without-tk --disable-draw --with-freetype=$FREETYPEDIR --with-ftgl=$FTGLDIR --enable-debug=no --enable-production=yes --with-gl2ps=$GL2PSDIR --with-freeimage=$FREEIMAGEDIR" + get_source : "archive" + environ : + { + # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la + # section environ pour conserver + # la generalite du script CAS.py + CSF_UnitsLexicon : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage" + CSF_MDTVFontDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "FontMFT" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage', 'gl2ps', "ftgl", "tcl", "tk"] + build_depend : ["cmake", "doxygen"] + patches : ["CAS-6.5.4.patch"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + +version_7_0_0 : +{ + name : "CAS" + build_source : "cmake" + cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DCMAKE_BUILD_TYPE=Release -DUSE_GL2PS=ON -D3RDPARTY_GL2PS_DIR=$GL2PSDIR -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR" + get_source : "archive" + environ : + { + # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la + # section environ pour conserver + # la generalite du script CAS.py + CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders" + CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat" + CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat" + CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage" + CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage" + CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures" + MMGT_REENTRANT : "1" + CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource" + + env_script : $name + ".py" + } + depend : ['freetype', 'freeimage', 'gl2ps'] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} diff --git a/products/CDMATH.pyconf b/products/CDMATH.pyconf new file mode 100644 index 0000000..64c95eb --- /dev/null +++ b/products/CDMATH.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "CDMATH" + build_source : "cmake" + #cmake_options : "-DCDMATH_WITH_PYTHON=ON"# -DCMAKE_BUILD_TYPE=Release + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DCDMATH_WITH_PYTHON=ON" + get_source : "git" + git_info: + { + repo : "https://github.com/mndjinga/CDMATH.git" + } + environ : + { + env_script : $name + ".py" + } + depend : + [ + "hdf5", + "numpy", + "MEDCOUPLING" + ] + build_depend : ["cmake", "swig"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + #install_dir : 'base' +} diff --git a/products/CEATESTBASE.pyconf b/products/CEATESTBASE.pyconf new file mode 100644 index 0000000..d2e295d --- /dev/null +++ b/products/CEATESTBASE.pyconf @@ -0,0 +1,22 @@ +default : +{ + name : "CEATESTBASE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "https://codev-tuleap.cea.fr/plugins/git/spns/CEATESTBASE.git" + repo_dev : $repo + } + environ : + { + env_script : "ceatest.py" + } + depend : ["KERNEL"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + not_in_package : "yes" + } +} diff --git a/products/COMPONENT.pyconf b/products/COMPONENT.pyconf new file mode 100644 index 0000000..56428b4 --- /dev/null +++ b/products/COMPONENT.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "COMPONENT" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/component.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "component.git" + } + environ : + { + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "Python", + "qt", + "qwt", + "CAS", + "hdf5", + "medfile", + "ParaView", + "omniORB", + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + is_SALOME_module : "yes" + } +} diff --git a/products/CONFIGURATION.pyconf b/products/CONFIGURATION.pyconf new file mode 100755 index 0000000..d19df83 --- /dev/null +++ b/products/CONFIGURATION.pyconf @@ -0,0 +1,23 @@ +default : +{ + name : "CONFIGURATION" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/configuration.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "configuration.git" + } + environ : + { + build : {CONFIGURATION_ROOT_DIR : $source_dir} + } + depend : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + properties : + { + compilation : "no" + configure_dependency : "yes" # the source of this module is required for the configuration of salome + is_SALOME_module : "yes" + } + patches : [] +} diff --git a/products/COREFLOWS.pyconf b/products/COREFLOWS.pyconf new file mode 100644 index 0000000..2adcf93 --- /dev/null +++ b/products/COREFLOWS.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "COREFLOWS" + build_source : "script" + compil_script : $name + ".sh" + get_source : "git" + git_info: + { + repo : "https://github.com/mndjinga/CDMATH-CoreFlows.git" + } + environ : + { + COUCOU : "$KERNEL_ROOT_DIR/bin" + env_script : $name + ".py" + } + depend : + [ + 'hdf5', + 'numpy', + 'KERNEL', + 'GUI', + 'petsc', + 'CDMATH' + ] + build_depend : ["cmake", "swig"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + environment : "salome" + } +} diff --git a/products/COREFLOWS_PROFILE.pyconf b/products/COREFLOWS_PROFILE.pyconf new file mode 100644 index 0000000..33c7e5a --- /dev/null +++ b/products/COREFLOWS_PROFILE.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "COREFLOWS_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/" + $name + ".git" + repo_dev : $repo + } + environ : + { + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name +} + diff --git a/products/Cython.pyconf b/products/Cython.pyconf new file mode 100755 index 0000000..d1abce2 --- /dev/null +++ b/products/Cython.pyconf @@ -0,0 +1,57 @@ +default : +{ + name : "Cython" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-Cython"] + rpm_dev : [] + apt : ["python3-pytest-cython"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "Cython-" + $APPLICATION.products.Cython + "_windows.tar.gz"} +} + +version_0_29_12_win_dbg : +{ + name : "Cython" + build_source : "script" + compil_script : 'cython.bat' + get_source : "archive" + archive_info: + { + archive_name : "Cython-0.29.12_windows.tar.gz" + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + pip : "no" + } +} diff --git a/products/DOCUMENTATION.pyconf b/products/DOCUMENTATION.pyconf new file mode 100644 index 0000000..f92101e --- /dev/null +++ b/products/DOCUMENTATION.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "DOCUMENTATION" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/documentation.git " + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "documentation.git" + } + environ : + { + } + depend : [ + "KERNEL", + "Sphinx", + "Python", + "docutils", + "setuptools", + "six", + "pytz", + "markupsafe" + ] + build_depend : ["cmake", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties : + { + is_SALOME_module : "yes" + } +} diff --git a/products/EFICAS.pyconf b/products/EFICAS.pyconf new file mode 100644 index 0000000..affd685 --- /dev/null +++ b/products/EFICAS.pyconf @@ -0,0 +1,57 @@ +default : +{ + name : "EFICAS" + build_source : "cmake" + + cmake_options : "-DSALOME_GUI_BUILD_WITH_QT5:BOOL=ON" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "eficas.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "eficas.git" + } + environ : + { + EFICAS_ROOT : $install_dir + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "eficas" + } + depend : ["KERNEL","GUI","EFICAS_TOOLS"] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests : "no" + incremental : 'yes' + } +} + +default_win: +{ + cmake_options : " -DSALOME_GUI_BUILD_WITH_QT5:BOOL=ON -DPYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=/% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DPYTHON_INCLUDE_PATH:STRING=%PYTHON_ROOT_DIR:\=/%/include -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib" +} + +version_7_2_0 : +{ + name : "EFICAS" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "eficas_tools.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "eficas.git" + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'PyQt'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + diff --git a/products/EFICAS_TOOLS.pyconf b/products/EFICAS_TOOLS.pyconf new file mode 100644 index 0000000..5e4d26f --- /dev/null +++ b/products/EFICAS_TOOLS.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "EFICAS_TOOLS" + build_source : "cmake" + cmake_options : "-DPYTHON_EXECUTABLE=${PYTHONBIN} -DWITH_TELEMAC_CATA=ON -DBUILD_DOC=ON" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "eficas_tools.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "eficas_tools.git" + } + environ : + { + env_script : $name + ".py" + } + depend : ['PyQt', 'Sphinx'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +default_win : +{ + build_source : "cmake" + cmake_options : ' -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DWITH_TELEMAC_CATA=ON -DSALOME_GUI_BUILD_WITH_QT5:BOOL=ON -DBUILD_DOC=ON -DPYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=/% -DPYTHON_INCLUDE_PATH:STRING=%PYTHON_ROOT_DIR:\=/%/include -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib -DPYUIC5=%PYUIC5:\=/%' +} diff --git a/products/FIELDS.pyconf b/products/FIELDS.pyconf new file mode 100755 index 0000000..23cd0af --- /dev/null +++ b/products/FIELDS.pyconf @@ -0,0 +1,62 @@ +default : +{ + name : "FIELDS" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "fields" + } + depend : [ + "GUI", + "KERNEL", + "MEDCOUPLING" + ] + opt_depend : [ + "Pillow" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + +default_MPI : +{ + name : "FIELDS" + build_source : "cmake" + cmake_options : "-DSALOME_USE_MPI=ON -DMEDCOUPLING_USE_64BIT_IDS=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "fields" + } + depend : [ + "GUI", + "KERNEL", + "MEDCOUPLING", + "openmpi" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/GEOM.pyconf b/products/GEOM.pyconf new file mode 100644 index 0000000..40df241 --- /dev/null +++ b/products/GEOM.pyconf @@ -0,0 +1,88 @@ +default : +{ + name : "GEOM" + build_source : "cmake" + #About the use of OpenCV, see spns #7996 + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_GEOM_USE_OPENCV=ON" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/geom.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "geom.git" + } + environ : + { + PARALLEL_VISU : "1" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "geom" + GEOM_PluginsList : "BREPPlugin:STEPPlugin:IGESPlugin:STLPlugin:XAOPlugin:VTKPlugin:AdvancedGEOM" + CSF_ShHealingDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "geom" + } + depend : ["KERNEL", + "GUI", + "boost", + "CAS", + "Python", + "hdf5", + "omniORB", + "qt", + "ParaView", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "opencv", + "six", + "pytz" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + + +default_win : +{ + cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DSALOME_GEOM_USE_OPENCV=ON -DOPENCV_ROOT_DIR=%OPENCV_ROOT_DIR:\=/% -DOpenCV_INCLUDE_DIRS=%OpenCV_INCLUDE_DIRS:\=/% " +} + +_from_8_5_0_to_9_2_1 : # these versions requires the path geom_8.5.0_xao_data_dir.patch (for salome test) +{ + patches : [ + "geom_8.5.0_xao_data_dir.patch" + ] +} + +version_V6_6_0 : +{ + build_source : "autotools" + cmake_options : "" + get_source : "git" + environ : + { + } + depend : ["KERNEL", + "GUI", + "boost", + "CAS", + "Python", + "hdf5", + "omniORB", + "qt", + "ParaView", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments" + ] + nb_proc : 1 +} diff --git a/products/GHS3DPLUGIN.pyconf b/products/GHS3DPLUGIN.pyconf new file mode 100644 index 0000000..310d01f --- /dev/null +++ b/products/GHS3DPLUGIN.pyconf @@ -0,0 +1,78 @@ +default : +{ + name : "GHS3DPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/ghs3dplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "ghs3dplugin.git" + } + environ : + { + _SMESH_MeshersList : "GHS3DPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "ghs3dplugin" + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_V6_6_0 : +{ + name : "GHS3DPLUGIN" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/ghs3dplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "ghs3dplugin.git" + } + environ : + { + } + depend : [ + "KERNEL", + "MED", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + build_depend : ["swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + diff --git a/products/GHS3DPRLPLUGIN.pyconf b/products/GHS3DPRLPLUGIN.pyconf new file mode 100644 index 0000000..af95bfa --- /dev/null +++ b/products/GHS3DPRLPLUGIN.pyconf @@ -0,0 +1,40 @@ +default : +{ + name : "GHS3DPRLPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/ghs3dprlplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "ghs3dprlplugin.git" + } + environ : + { + _SMESH_MeshersList : "GHS3DPRLPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "ghs3dprlplugin" + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "omniORB", + "hdf5", + "medfile", + "libxml2", + "docutils", + "ParaView" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/GMSHPLUGIN.pyconf b/products/GMSHPLUGIN.pyconf new file mode 100644 index 0000000..eef7865 --- /dev/null +++ b/products/GMSHPLUGIN.pyconf @@ -0,0 +1,95 @@ +default : +{ + name : "GMSHPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/gmshplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gmshplugin.git" + } + environ : + { + _SMESH_MeshersList : "GMSHPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "gmshplugin" + } + depend : [ + "KERNEL", + "GUI", + "SMESH", + "gmsh", + "boost", + "Python" + ] + build_depend : ["cmake", "swig", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + + +version_8_1_0_to_9_1_0 : +{ + name : "GMSHPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/gmshplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gmshplugin.git" + } + environ : + { + } + depend : [ + "KERNEL", + "GUI", + "SMESH", + "MED", + "gmsh", + "boost", + "Python" + ] + build_depend : ["cmake", "swig", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + +version_V7_8_0 : +{ + name : "GMSHPLUGIN" + build_source : "autotools" + get_source : "git" + nb_proc : 4 + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/gmshplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gmshplugin.git" + } + environ : + { + } + depend : [ + "KERNEL", + "GUI", + "SMESH", + "MED", + "gmsh", + "boost", + "Python" + ] + build_depend : ["cmake", "swig", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} diff --git a/products/GUI.pyconf b/products/GUI.pyconf new file mode 100644 index 0000000..a54ce60 --- /dev/null +++ b/products/GUI.pyconf @@ -0,0 +1,289 @@ +default : +{ + name : "GUI" + build_source : "cmake" + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSIP_INCLUDE_DIR=${SIP_ROOT_DIR}" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "gui" + } + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "ParaView", + "omniORB", + "docutils", + "libxml2", + "sphinxintl", + "sphinxcontrib_napoleon" + ] + opt_depend : ["sphinx_rtd_theme"] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + is_SALOME_module : "yes" + has_unit_tests + } + patches : [] +} + +default_win : +{ + cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DSALOME_BUILD_WITH_QT5:BOOL=ON " + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "ParaView", + "omniORB", + "docutils", + "libxml2", + "sphinxintl", + "sphinxcontrib_websupport", + "sphinxcontrib_applehelp", + "sphinxcontrib_serializinghtml", + "sphinxcontrib_napoleon" + ] + opt_depend : ["sphinx_rtd_theme"] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + +} + +version_8_5_0_to_9_4_0 : +{ + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "gl2ps", + "ParaView", + "omniORB", + "docutils", + "libxml2", + "sphinxintl", + "sphinxcontrib_napoleon" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] +} + +version_9_4_0_win: +{ + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "gl2ps", + "ParaView", + "omniORB", + "docutils", + "libxml2", + "sphinxintl", + "sphinxcontrib_websupport", + "sphinxcontrib_applehelp", + "sphinxcontrib_serializinghtml", + "sphinxcontrib_napoleon" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] +} + +# OP 19/04/2018 Add section for SALOME 7.8.0 to 8.4.0 due to new dependencies in SALOME 8.5.0 +version_7_8_0_to_8_4_0 : +{ + name : "GUI" + build_source : "cmake" + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git" + } + environ : + { + } + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "gl2ps", + "ParaView", + "omniORB", + "docutils", + "libxml2" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_python_async : +{ + name : "GUI" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git" + } + environ : + { + } + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "gl2ps", + "ParaView", + "omniORB", + "docutils", + "libxml2" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + patches : [ + "GUI_Python_async.patch" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_oscar : +{ + name : "GUI" + build_source : "cmake" + cmake_options : "-DSALOME_USE_VTKVIEWER=OFF -DSALOME_USE_PVVIEWER=OFF" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git" + } + environ : + { + } + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "gl2ps", + "omniORB", + "docutils", + "libxml2" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_V6_6_0 : +{ + name : "GUI" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git" + } + environ : + { + } + depend : ["KERNEL", + "Python", + "qt", + "sip", + "PyQt", + "boost", + "CAS", + "qwt", + "hdf5", + "freetype", + "freeimage", + "gl2ps", + "ParaView", + "omniORB", + "docutils", + "libxml2"] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/HELLO.pyconf b/products/HELLO.pyconf new file mode 100644 index 0000000..b39d6f7 --- /dev/null +++ b/products/HELLO.pyconf @@ -0,0 +1,32 @@ +default : +{ + name : "HELLO" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/hello.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hello.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hello" + } + depend : [ + "KERNEL", + "GUI", + "boost", + "CAS", + "Python", + "qt", + "omniORB", + ] + build_depend : ["cmake", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + } +} diff --git a/products/HEXABLOCK.pyconf b/products/HEXABLOCK.pyconf new file mode 100644 index 0000000..7287c29 --- /dev/null +++ b/products/HEXABLOCK.pyconf @@ -0,0 +1,92 @@ +default : +{ + name : "HEXABLOCK" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/hexablock.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexablock.git" + } + environ : + { + _SMESH_MeshersList : "HEXABLOCKPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hexablock" + } + depend : [ + "KERNEL", + "GUI", + "GEOM", + "boost", + "CAS", + "Python", + "omniORB", + "qt", + "ParaView", + "docutils", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "six", + "pytz", + "markupsafe" + ] + build_depend : ["cmake", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + +default_MPI : +{ + name : "HEXABLOCK" + build_source : "cmake" + cmake_options : "-DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/hexablock.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexablock.git" + } + environ : + { + } + depend : [ + "KERNEL", + "GUI", + "GEOM", + "boost", + "CAS", + "Python", + "omniORB", + "qt", + "ParaView", + "docutils", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "six", + "pytz", + "markupsafe", + "openmpi" + ] + build_depend : ["cmake", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + diff --git a/products/HEXABLOCKPLUGIN.pyconf b/products/HEXABLOCKPLUGIN.pyconf new file mode 100644 index 0000000..76c4fe5 --- /dev/null +++ b/products/HEXABLOCKPLUGIN.pyconf @@ -0,0 +1,39 @@ +default : +{ + name : "HEXABLOCKPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/hexablockplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexablockplugin.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hexablock" + } + depend : [ + "KERNEL", + "GUI", + "GEOM", + "MEDCOUPLING", + "SMESH", + "HEXABLOCK", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "ParaView" + ] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + diff --git a/products/HOMARD.pyconf b/products/HOMARD.pyconf new file mode 100644 index 0000000..21922eb --- /dev/null +++ b/products/HOMARD.pyconf @@ -0,0 +1,29 @@ +default : +{ + name : "HOMARD" + build_source : "cmake" + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/homard.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "homard.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "homard" + } + depend : [ + "SMESH", + "homard_bin" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + diff --git a/products/HXX2SALOME.pyconf b/products/HXX2SALOME.pyconf new file mode 100644 index 0000000..dff9278 --- /dev/null +++ b/products/HXX2SALOME.pyconf @@ -0,0 +1,24 @@ +default : +{ + name : "HXX2SALOME" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/hxx2salome.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hxx2salome.git" + } + environ : + { + } + depend : [ + "qt" + ] + build_depend : ["cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} diff --git a/products/HYBRIDPLUGIN.pyconf b/products/HYBRIDPLUGIN.pyconf new file mode 100644 index 0000000..3db881c --- /dev/null +++ b/products/HYBRIDPLUGIN.pyconf @@ -0,0 +1,41 @@ +default : +{ + name : "HYBRIDPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/hybridplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hybridplugin.git" + } + environ : + { + _SMESH_MeshersList : "HYBRIDPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hybridplugin" + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "GEOM", + "SMESH", + "BLSURFPLUGIN", + "NETGENPLUGIN", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/Hexotic.pyconf b/products/Hexotic.pyconf new file mode 100644 index 0000000..85ae8c9 --- /dev/null +++ b/products/Hexotic.pyconf @@ -0,0 +1,22 @@ +version_1_0 : +{ + name : "Hexotic" + build_source : "script" + compil_script : "Hexotic.sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" + properties : + { + is_distene : "yes" + licence : "dlim8.var.py" + } +} + diff --git a/products/HexoticPLUGIN.pyconf b/products/HexoticPLUGIN.pyconf new file mode 100644 index 0000000..b0c4c06 --- /dev/null +++ b/products/HexoticPLUGIN.pyconf @@ -0,0 +1,39 @@ +default : +{ + name : "HexoticPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/hexoticplugin.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexoticplugin.git" + } + environ : + { + _SMESH_MeshersList : "HexoticPLUGIN" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hexoticplugin" + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "hdf5", + "omniORB", + "docutils", + "ParaView", + "MeshGems" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + diff --git a/products/JOBMANAGER.pyconf b/products/JOBMANAGER.pyconf new file mode 100644 index 0000000..2aaf802 --- /dev/null +++ b/products/JOBMANAGER.pyconf @@ -0,0 +1,82 @@ +default : +{ + name : "JOBMANAGER" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/jobmanager.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "jobmanager.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "jobmanager" + } + depend : [ + "LIBBATCH", + "KERNEL", + "GUI", + "Python", + "qt", + "omniORB", + "boost", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "docutils", + "six", + "pytz", + "markupsafe" + ] + build_depend : ["cmake", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + } +} + +default_MPI : +{ + name : "JOBMANAGER" + build_source : "cmake" + cmake_options : "-DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/jobmanager.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "jobmanager.git" + } + environ : + { + } + depend : [ + "LIBBATCH", + "KERNEL", + "GUI", + "Python", + "qt", + "omniORB", + "boost", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "docutils", + "six", + "pytz", + "markupsafe", + "openmpi" + ] + build_depend : ["cmake", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + } +} diff --git a/products/Jinja2.pyconf b/products/Jinja2.pyconf new file mode 100644 index 0000000..6a370d5 --- /dev/null +++ b/products/Jinja2.pyconf @@ -0,0 +1,38 @@ +default : +{ + name : "Jinja2" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-jinja2"] + rpm_dev : [] + apt : ["python3-jinja2"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools', 'markupsafe'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "Jinja2-" + $APPLICATION.products.Jinja2 + "_windows.tar.gz"} +} + +version_2_6 : +{ + depend : ['Python', 'setuptools'] +} diff --git a/products/KERNEL.pyconf b/products/KERNEL.pyconf new file mode 100644 index 0000000..25daa5d --- /dev/null +++ b/products/KERNEL.pyconf @@ -0,0 +1,270 @@ +# add sphinxintl to version_7_8_0_to_8_4_0 +default : +{ + name : "KERNEL" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git" + } + environ : + { + } + depend : ["Python", + "boost", + "cppunit", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "Jinja2", + "setuptools", + "Pygments", + "pytz", + "LIBBATCH" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + cmake_options : "-DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_CMAKE_DEBUG=ON" + properties: + { + is_SALOME_module : "yes" + has_unit_tests + incremental : "yes" + } +} + +default_win : +{ + cmake_options : "-DSALOME_USE_LIBBATCH=ON -DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\" -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DCMAKE_CXX_COMPILER_ARCHITECTURE_ID=x64 -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/% -DBOOST_DEBUG=ON -DBoost_ADDITIONAL_VERSIONS=\"1.67.0\" \"1.67\" -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 -DBOOST_LIBRARYDIR=%BOOST_ROOT_DIR:\=/%/lib " + depend : ["Python", + "boost", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "Jinja2", + "setuptools", + "Pygments", + "pytz", + "LIBBATCH" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] +} + +version_7_8_0_to_8_4_0 : +{ + depend : ["Python", + "boost", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "pytz", + "LIBBATCH" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + cmake_options : "-DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" +} + + +# this section is equivalent with version_7_8_0_to_8_4_0, without LIBBATCH +ALAMOS_SALOME_9 : +{ + name : "KERNEL" + build_source : "cmake" + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git" + } + environ : + { + } + depend : ["Python", + "boost", + "cppunit", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "Jinja2", + "setuptools", + "Pygments", + "pytz" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +ALAMOS_SALOME_9_win : +{ + name : "KERNEL" + build_source : "cmake" + cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe" + depend : ["Python", + "boost", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "Jinja2", + "setuptools", + "Pygments", + "pytz", + "pthreads" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git" + } + environ : + { + } +} + +# this section is equivalent with version_7_8_0_to_8_4_0, without LIBBATCH +ALAMOS : +{ + name : "KERNEL" + build_source : "cmake" + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git" + } + environ : + { + } + depend : ["Python", + "boost", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "pytz" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} + +# Default section for MPI version, for SALOME-8.5.0-MPI and later +# (adding sphinxintl prerequisite to previous MPI section). + +default_MPI : +{ + cmake_options : "-DSALOME_USE_MPI=ON -DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + depend : ["Python", + "boost", + "numpy", + "lapack", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "Jinja2", + "setuptools", + "Pygments", + "pytz", + "cppunit", + "openmpi", + "LIBBATCH" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] +} + +version_V6_6_0 : +{ + name : "KERNEL" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git" + } + environ : + { + } + depend : ["Python", + "boost", + "numpy", + "hdf5", + "omniORB", + "omniORBpy", + "docutils", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments" + ] + opt_depend : ["LIBBATCH"] + build_depend : ["swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/LIBBATCH.pyconf b/products/LIBBATCH.pyconf new file mode 100755 index 0000000..100afe5 --- /dev/null +++ b/products/LIBBATCH.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "LIBBATCH" + build_source : "cmake" + cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/libbatch.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "libbatch.git" + } + environ : + { + env_script : $name + ".py" + } + depend : [ "Python"] + build_depend : ["cmake", "swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" + properties: + { + incremental : "yes" + } +} + +default_win : +{ + cmake_options : '-DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe' + depend : [ "Python", "pthreads" ] +} diff --git a/products/MED.pyconf b/products/MED.pyconf new file mode 100755 index 0000000..fa24faa --- /dev/null +++ b/products/MED.pyconf @@ -0,0 +1,90 @@ +default : +{ + name : "MED" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git" + } + environ : + { + } + depend : [ + "GUI", + "KERNEL", + "MEDCOUPLING" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + +default_MPI : +{ + name : "MED" + build_source : "cmake" + cmake_options : "-DSALOME_USE_MPI=ON" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git" + } + environ : + { + } + depend : [ + "GUI", + "KERNEL", + "MEDCOUPLING", + "openmpi" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + +version_V6_6_0 : +{ + name : "MED" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git" + } + environ : + { + } + depend : [ + "medfile", + "GUI", + "KERNEL", + ] + patches : [ + #avoid the horrible medmem traces! + "med_mode_non_debug.patch" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_salome_gui : "yes" + has_unit_tests + } +} + diff --git a/products/MEDCOUPLING.pyconf b/products/MEDCOUPLING.pyconf new file mode 100644 index 0000000..dc75b25 --- /dev/null +++ b/products/MEDCOUPLING.pyconf @@ -0,0 +1,134 @@ +default : +{ + name : "MEDCOUPLING" + build_source : "cmake" + cmake_options : "-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=ON -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=ON -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=OFF -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=OFF" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/medcoupling.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "medcoupling.git" + } + depend : [ + "boost", + "cppunit", + "Python", + "hdf5", + "medfile", + "scotch", + "metis", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "setuptools", + "six", + "pytz", + "numpy", + "scipy", + "lapack", + "CONFIGURATION" + ] + build_depend : ["cmake", "swig", "doxygen", "graphviz", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_unit_tests + fhs : "yes" + incremental : "yes" + } +} + + +default_win : +{ + cmake_options : ' -DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=ON -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF -DMEDCOUPLING_PARTITIONER_PARMETIS=OFF -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=OFF ' + depend : [ + "boost", + "Python", + "hdf5", + "medfile", + "metis", + "docutils", + "libxml2", + "Sphinx", + "sphinxintl", + "setuptools", + "six", + "pytz", + "numpy", + "CONFIGURATION" + ] +} + +default_int64: +{ + cmake_options : "-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=ON -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=ON -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=OFF -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=OFF -DMEDCOUPLING_USE_64BIT_IDS=ON" + +} + +version_7_8_2_to_8_4_0 : +{ + depend : [ + "boost", + "Python", + "hdf5", + "medfile", + "scotch", + "metis", + "docutils", + "libxml2", + "Sphinx", + "setuptools", + "numpy", + "scipy", + "lapack" + "CONFIGURATION" + ] +} + +# Default section for MPI version, for SALOME-8.5.0-MPI and later +default_MPI : +{ + cmake_options : "-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=ON -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON -DMEDCOUPLING_USE_64BIT_IDS=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + depend : [ + "boost", + "Python", + "hdf5", + "medfile", + "scotch", + "docutils", + "libxml2", + "ParMetis", + "Sphinx", + "sphinxintl", + "setuptools", + "six", + "pytz", + "numpy", + "scipy", + "lapack", + "openmpi", + "cppunit", + "CONFIGURATION" + ] +} + +version_V7_8_0 : +{ + cmake_options : "-DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF" + depend : [ + "boost", + "Python", + "hdf5", + "medfile", + "libxml2", + "Sphinx", + "setuptools", + "numpy", + "scipy", + "lapack" + ] +} diff --git a/products/MeshGems.pyconf b/products/MeshGems.pyconf new file mode 100644 index 0000000..dad3860 --- /dev/null +++ b/products/MeshGems.pyconf @@ -0,0 +1,45 @@ +default : +{ + name : "MeshGems" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + opt_depend : ['openmpi'] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + is_distene : "yes" + licence : "dlim8.var.py" + incremental : "yes" + } +} + + +default_win : +{ + archive_info : {archive_name : "MeshGems-" + $APPLICATION.products.MeshGems + "_windows.tar.gz"} + properties : + { + is_distene : "yes" + licence : "dlim8.var.py" + incremental : "yes" + single_install_dir : "yes" # aimed to solve sat #18914 + } +} + +version_2_9_6 : +{ +} + +version_2_9_6_win : +{ + archive_info : {archive_name : "MeshGems_V2.9.6_windows.tar.gz"} +} \ No newline at end of file diff --git a/products/NETGENPLUGIN.pyconf b/products/NETGENPLUGIN.pyconf new file mode 100755 index 0000000..1a753f6 --- /dev/null +++ b/products/NETGENPLUGIN.pyconf @@ -0,0 +1,90 @@ +default : +{ + name : "NETGENPLUGIN" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/netgenplugin.git " + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "netgenplugin.git " + } + environ : + { + _SMESH_MeshersList : "NETGENPlugin" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "netgenplugin" + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "freeimage", + "hdf5", + "medfile", + "omniORB", + "docutils", + "netgen", + "ParaView", + "six", + "pytz" + ] + build_depend : ["swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + +default_win : +{ + cmake_options : " -DZLIB_LIBRARY=%ZLIB_BIN:\=/% -DZLIB_INCLUDE_DIR=%ZLIB_INCLUDE_DIR:\=/% -DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\" " + depend : [ + "KERNEL", + "MEDCOUPLING", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "freeimage", + "hdf5", + "medfile", + "omniORB", + "docutils", + "netgen", + "ParaView", + "six", + "pytz", + "zlib" + ] +} + +version_V6_6_0 : +{ + build_source : "autotools" + depend : [ + "KERNEL", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "CAS", + "freeimage", + "hdf5", + "medfile", + "omniORB", + "docutils", + "netgen", + "ParaView" + ] +} diff --git a/products/PARAVIS.pyconf b/products/PARAVIS.pyconf new file mode 100644 index 0000000..10bc493 --- /dev/null +++ b/products/PARAVIS.pyconf @@ -0,0 +1,216 @@ +default : +{ + name : "PARAVIS" + build_source : "cmake" + cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DBUILD_TESTING=ON" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/paravis.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "paravis.git" + } + environ : + { + _PV_PLUGIN_PATH : $install_dir + $VARS.sep + "lib" + $VARS.sep + "paraview" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "paravis" + } + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "FIELDS", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz" + ] + opt_depend : [] + build_depend : ["cmake", "swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + incremental : "yes" + } +} + +default_win: +{ + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "FIELDS", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz", + ] +} + +default_MPI : +{ + cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "FIELDS", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz", + "openmpi" + ] +} + +version_7_8_0_to_9_1_0 : +{ + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "MED", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz" + ] +} + +version_9_5_0_MPI : +{ + cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + patches : ['PARAVIS-MEDReader-CMakeLists.patch'] # backporting bos #20031 + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "FIELDS", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz", + "openmpi" + ] +} + +version_8_5_0_MPI : +{ + cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON" + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "MED", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz" + ] + patches : ["paravis_8_3_mpi_medinclude.patch"] +} + +version_V6_6_0 : +{ + cmake_options : "" + depend : [ + "KERNEL", + "GUI", + "MED", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2" + ] +} + +version_alamos : +{ + cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=OFF -DSALOME_PARAVIS_USE_SMESH_SOURCE=OFF" + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz" + ] +} diff --git a/products/PY2CPP.pyconf b/products/PY2CPP.pyconf new file mode 100644 index 0000000..e586468 --- /dev/null +++ b/products/PY2CPP.pyconf @@ -0,0 +1,35 @@ +default : +{ + name : "PY2CPP" + build_source : "cmake" + + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "py2cpp.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "py2cpp.git" + } + environ : + { + PY2CPP_ROOT_DIR : $install_dir + } + depend : [ + "CONFIGURATION", + "Python", + "KERNEL" + ] + build_depend : ["cmake", "cppunit"] + + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + } +} + +default_win : +{ +# cmake_options : " -DPYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=/% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DPYTHON_INCLUDE_PATH=%PYTHON_INCLUDE:\=/% -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/lib/libpython%PYTHON_VERSION%.lib" + cmake_options : " -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DPYTHON_INCLUDE_PATH=%PYTHON_INCLUDE:\=/% -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/libpython%PYTHON_VERSION%.lib" +} diff --git a/products/PYCALCULATOR.pyconf b/products/PYCALCULATOR.pyconf new file mode 100644 index 0000000..4c18ce7 --- /dev/null +++ b/products/PYCALCULATOR.pyconf @@ -0,0 +1,42 @@ +default : +{ + name : "PYCALCULATOR" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/pycalculator.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "pycalculator.git" + } + environ : + { + } + depend : [ + "KERNEL", + "MEDCOUPLING", + "FIELDS", + "Python", + "medfile", + "omniORB", + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + is_SALOME_module : "yes" + } +} + +version_6_6_0_to_9_1_0 : +{ + depend : [ + "KERNEL", + "MEDCOUPLING", + "MED", + "Python", + "medfile", + "omniORB", + ] +} diff --git a/products/PYHELLO.pyconf b/products/PYHELLO.pyconf new file mode 100644 index 0000000..2df58fd --- /dev/null +++ b/products/PYHELLO.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "PYHELLO" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/pyhello.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "pyhello.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "pyhello" + } + depend : [ + "KERNEL", + "GUI", + "Python", + "omniORB", + "qt", + "boost" + ] + build_depend : ["cmake", "doxygen", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + } +} diff --git a/products/ParMetis.pyconf b/products/ParMetis.pyconf new file mode 100644 index 0000000..692de89 --- /dev/null +++ b/products/ParMetis.pyconf @@ -0,0 +1,24 @@ +default : +{ + name : "ParMetis" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + opt_depend : ["openmpi"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} +version_3_1_1 : +{ + compil_script : "ParMetis-3.sh" +} diff --git a/products/ParaView.pyconf b/products/ParaView.pyconf new file mode 100755 index 0000000..a607f07 --- /dev/null +++ b/products/ParaView.pyconf @@ -0,0 +1,339 @@ +default : +{ + name : "ParaView" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'cgns', + 'Pygments' + ] + opt_depend : ['openmpi', 'ospray','tbb'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +version_5_8_0 : +{ + archive_info : {archive_name : "ParaView-5.8.0-lata.tar.gz"} + # two other LATA patches already included in archive + patches : ['paraview.0003-ParaViewClient.patch', + 'paraview.0004-ParaView_hdf5.patch', + 'paraview.0005-ParaView_find_cgns.patch', + 'paraview.0006-ParaView_find_libxml2.patch', + 'paraview.0007-ParaView_find_freetype.patch', + 'paraview.0009-ParaView_volume_mapper.patch', + 'pv_coincident.patch' + ] +} + +version_5_8_0_win : +{ + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'cgns', + 'Pygments', + 'pthreads', + 'zlib' + ] + patches : ['paraview.0003-ParaViewClient.patch', + 'paraview.0004-ParaView_hdf5.patch', + 'paraview.0005-ParaView_find_cgns.patch', + 'paraview.0006-ParaView_find_libxml2.patch', + 'paraview.0007-ParaView_find_freetype.patch', + 'paraview.0008-ParaView_find_zlib.patch', + 'paraview.0009-ParaView_volume_mapper.patch', + 'pv_coincident.patch' + ] +} + +version_5_8_0_MPI : +{ + archive_info : {archive_name : "ParaView-5.8.0-lata.tar.gz"} + # two other LATA patches already included in archive + patches : ['paraview.0003-ParaViewClient.patch', + 'paraview.0004-ParaView_hdf5.patch', + 'paraview.0005-ParaView_find_cgns.patch', + 'paraview.0006-ParaView_find_libxml2.patch', + 'paraview.0007-ParaView_find_freetype.patch', + 'paraview.0009-ParaView_volume_mapper.patch', + 'paraview.0010-VTKM_MPI.patch', + 'pv_coincident.patch' + ] +} + +version_5_6_0_bfaf7b8 : +{ + compil_script : "ParaView-5.6.0_bfaf7b8.sh" + patches :[ + 'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch', + 'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch' + ] + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'gl2ps', + 'cgns', + 'Pygments' + ] +} + +version_5_6_0_bfaf7b8_win : +{ + compil_script : "ParaView-5.6.0_bfaf7b8.bat" + patches : [ + 'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch', + 'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch', + 'ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch' + ] + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'gl2ps', + 'cgns', + 'Pygments', + 'pthreads' + ] +} + +version_5_6_0_bfaf7b8_ospray_win : +{ + compil_script : "ParaView-5.6.0_bfaf7b8.bat" + archive_info : {archive_name : "ParaView-5.6.0_bfaf7b8.tar.gz"} + patches : [ + 'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch', + 'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch', + 'ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch' + ] + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'gl2ps', + 'cgns', + 'Pygments', + 'ospray', + 'pthreads' + ] +} + +version_5_6_0p1_7bafc2b : +{ + compil_script : "ParaView-5.6.0p1_7bafc2b.sh" + patches : [ + ] + depend : [ + 'cmake', + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'gl2ps', + 'cgns', + 'Pygments' + ] +} + +version_5_6_0p1_7bafc2b_win : +{ + compil_script : "ParaView-5.6.0p1_7bafc2b.bat" + patches : [ + 'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch', + 'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch', + 'ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch' + ] + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'gl2ps', + 'cgns', + 'Pygments', + 'pthreads' + ] +} + +version_5_4_1b5c4c89 : +{ + compil_script : "ParaView-5.4.1_b5c4c89.sh" + # TA - OP 29/05/2018 Add the 3 patches from BO + patches : [ + 'ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch', + 'ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch', + 'ParaView-5.4.0-b5c4c893_temporaty_patch.patch' + ] + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'gl2ps', + 'cgns', + 'Pygments' + ] +} + + +version_5_1_2plus_820 : +{ + compil_script : "ParaView-5.1-820.sh" + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'gl2ps', + 'libxml2', + 'freetype', + 'matplotlib' + ] +} + +version_5_1_2plus_820_offscreen_rendering : +{ + compil_script : "ParaView-5.1-820-offscreen_rendering.sh" + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'gl2ps', + 'libxml2', + 'freetype', + 'matplotlib', + 'mesa' + ] +} + +version_5_1_2plus_820_win : +{ + compil_script : "ParaView-5.1-820.bat" + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'gl2ps', + 'libxml2', + 'freetype', + 'matplotlib', + 'zlib', + 'libpng' + ] + opt_depend : [] + patches : [ 'ParaView-5.1.2-win.patch' ] +} + +version_5_1_2plus : +{ + compil_script : "ParaView-5.1.sh" + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'gl2ps', + 'libxml2', + 'freetype', + 'matplotlib', + 'cgns' + ] +} + +version_5_0_1p1 : +{ + name : "ParaView" + compil_script : $name + "-5.0.sh" + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'gl2ps', + 'libxml2', + 'freetype', + 'matplotlib' + ] +} + +version_4_2_0 : +{ + compil_script : $name + "-3.14.0.sh" + depend : [ + 'Python', + 'hdf5', + 'qt', + 'boost', + 'gl2ps', + 'libxml2', + 'freetype', + 'matplotlib' + ] + patches : [ + $name + "-4.2.0.patch" + ] +} + +version_3_14_0 : +{ + name : "ParaView" + compil_script : $name + "-3.14.0.sh" + depend : [ + "Python", + "hdf5", + "qt", + "ParaViewData", + "boost", + "gl2ps" + ] + patches : [ + $name + "-3.14.0.patch" + ] +} diff --git a/products/ParaViewData.pyconf b/products/ParaViewData.pyconf new file mode 100644 index 0000000..9abab36 --- /dev/null +++ b/products/ParaViewData.pyconf @@ -0,0 +1,18 @@ +version_3_14_0 : +{ + name : "ParaViewData" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" + +} + diff --git a/products/Pillow.pyconf b/products/Pillow.pyconf new file mode 100644 index 0000000..d6535b0 --- /dev/null +++ b/products/Pillow.pyconf @@ -0,0 +1,28 @@ +default : +{ + name : "Pillow" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-pillow"] + rpm_dev : [] + apt : ["python3-pil"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools', 'docutils'] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} diff --git a/products/PyHamcrest.pyconf b/products/PyHamcrest.pyconf new file mode 100644 index 0000000..3432ed9 --- /dev/null +++ b/products/PyHamcrest.pyconf @@ -0,0 +1,20 @@ +default : +{ + name : "PyHamcrest" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} diff --git a/products/PyQt.pyconf b/products/PyQt.pyconf new file mode 100644 index 0000000..1054ca2 --- /dev/null +++ b/products/PyQt.pyconf @@ -0,0 +1,64 @@ +default : +{ + name : "PyQt" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-qt5"] + rpm_dev : [] + apt : ["python3-pyqt5"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'qt', 'sip'] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +version_5_6 : +{ + compil_script : "PyQt-5.6" + $VARS.scriptExtension +} + +version_5_7 : +{ + compil_script : "PyQt-5.7" + $VARS.scriptExtension +} + +version_5_9 : +{ + compil_script : "PyQt-5.9" + $VARS.scriptExtension + check_install : ["lib/python[23].[0-9]/site-packages/PyQt5/QtGui.so"] +} + +version_5_9_win : +{ + check_install : ['lib' + $VARS.sep + 'python3.6' + $VARS.sep + 'site-packages' + $VARS.sep + 'PyQt5' + $VARS.sep + 'QtGui.pyd'] +} + +version_5_5_1_to_5_6_0 : +{ + compil_script : "PyQt_5_5_1" + $VARS.scriptExtension +} + +version_4_9_6 : +{ + patches : ["patchPyQt496noPhonon.patch"] +} + +version_4_9_1 : +{ + patches : ["PyQt-4.9.1.patch"] +} diff --git a/products/Pygments.pyconf b/products/Pygments.pyconf new file mode 100644 index 0000000..f3a8917 --- /dev/null +++ b/products/Pygments.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "Pygments" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-pygments"] + rpm_dev : [] + apt : ["python3-pygments"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ["Python", "setuptools"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + pip : "yes" + incremental : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "Pygments-" + $APPLICATION.products.Pygments + "_windows.tar.gz"} +} diff --git a/products/Python.pyconf b/products/Python.pyconf new file mode 100755 index 0000000..0812669 --- /dev/null +++ b/products/Python.pyconf @@ -0,0 +1,53 @@ +default : +{ + name : "Python" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python36"] + rpm_dev : [] + apt : ["python36"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + compile_and_runtime : "yes" + } +} + +version_2_6_6 : +{ + patches : ["Python_zlib_detection.patch", "Python_SSL.patch"] +} + +version_2_7_10 : +{ + patches : [ + #'remove-windows-python-subprojects.patch', #patch Windows non applicable sur Linux + #'enable-windows-plugin-compilation.patch', + ] +} + +version_3_6_5 : +{ + patches : [] +} + +version_3_6_5_win : +{ + compil_script : "Python-3.6.5.bat" + patches : ['Python-3.6.5_windows.patch'] +} + diff --git a/products/RESTRICTED.pyconf b/products/RESTRICTED.pyconf new file mode 100644 index 0000000..d88e859 --- /dev/null +++ b/products/RESTRICTED.pyconf @@ -0,0 +1,18 @@ +default : +{ + name : "RESTRICTED" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "restricted.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "restricted.git" + } + depend : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + properties : + { + compilation : "no" + not_in_package : "yes" + } + patches : [] +} diff --git a/products/SALOME.pyconf b/products/SALOME.pyconf new file mode 100644 index 0000000..6bd59fe --- /dev/null +++ b/products/SALOME.pyconf @@ -0,0 +1,24 @@ +default : +{ + name : "SALOME" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "https://codev-tuleap.cea.fr/plugins/git/salome/" + $name + ".git" + repo_dev : $repo + } + environ : + { + _SalomeAppConfig : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "salome" + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + is_salome_application : "yes" + incremental : "yes" + } +} diff --git a/products/SALOME_FORMATION_PROFILE.pyconf b/products/SALOME_FORMATION_PROFILE.pyconf new file mode 100644 index 0000000..9207c55 --- /dev/null +++ b/products/SALOME_FORMATION_PROFILE.pyconf @@ -0,0 +1,25 @@ +default : +{ + name : "SALOME_FORMATION_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/" + $name + ".git" + repo_dev : $repo + } + environ : + { + launch : { + "SalomeAppConfig" : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "salome_formation_profile" + } + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_gui : "yes" + } +} diff --git a/products/SALOME_PROFILE.pyconf b/products/SALOME_PROFILE.pyconf new file mode 100644 index 0000000..563f9b7 --- /dev/null +++ b/products/SALOME_PROFILE.pyconf @@ -0,0 +1,94 @@ +default : +{ + name : "SALOME_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/" + $name + ".git" + repo_dev : $repo + } + environ : + { + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + +version_Vmaster : +{ + name : "SALOME_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/" + $name + ".git" + repo_dev : $repo + } + environ : + { + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + patches : ["SALOME_PROFILE_NO_ENV_master_V2.patch"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + +version_8_0_0_to_8_1_0 : +{ + name : "SALOME_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/" + $name + ".git" + repo_dev : $repo + } + environ : + { + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + patches : ["SALOME_PROFILE_NO_ENV_master_V2.patch"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + + + +version_6_6_0_to_7_8_0 : +{ + name : "SALOME_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/" + $name + ".git" + repo_dev : $repo + } + environ : + { + } + depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"] + patches : ["SALOME_PROFILE_NO_ENV.patch"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} + + diff --git a/products/SAMPLES.pyconf b/products/SAMPLES.pyconf new file mode 100644 index 0000000..8d31398 --- /dev/null +++ b/products/SAMPLES.pyconf @@ -0,0 +1,24 @@ +default : +{ + name : "SAMPLES" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/datafiles.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "datafiles.git" + } + depend : [] + patches : [] + environ : + { + env_script : $name + ".py" + } + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + properties : + { + incremental : "yes" + compilation : "no" + sources_in_package : "yes" + } +} + diff --git a/products/SHAPER.pyconf b/products/SHAPER.pyconf new file mode 100644 index 0000000..e242c65 --- /dev/null +++ b/products/SHAPER.pyconf @@ -0,0 +1,58 @@ +default : +{ + name : "SHAPER" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "shaper" + } + depend : [ + 'KERNEL', + 'GUI', + 'boost', + 'CAS', + 'Python', + 'hdf5', + 'omniORB', + 'qt', + 'ParaView', + 'docutils', + 'Sphinx', + 'Jinja2', + 'setuptools', + 'Pygments', + 'planegcs', + 'six', + 'pytz', + 'markupsafe', + 'eigen' + ] + build_depend : ["cmake", "swig", "doxygen"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + incremental : "yes" + has_unit_tests : "yes" + } + cmake_options : "-DCMAKE_CXX_FLAGS=-fpermissive -DNO_SolveSpace=TRUE -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DADD_COMPATIBILITY_TESTS=ON -DADD_MODELS_TESTS=ON -DADD_HDF_TESTS=ON" + patches : ['patch_shaper_cursor_cross.diff'] +} + +default_win : +{ + cmake_options : " -DNO_SolveSpace=TRUE -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe " +} + +version_9_3_0_to_9_4_0 : +{ + patches : [] +} diff --git a/products/SHAPERSTUDY.pyconf b/products/SHAPERSTUDY.pyconf new file mode 100644 index 0000000..3612804 --- /dev/null +++ b/products/SHAPERSTUDY.pyconf @@ -0,0 +1,36 @@ +default : +{ + name : "SHAPERSTUDY" + build_source : "cmake" + get_source : "git" + git_info : + { + repo : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper_study.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper_study.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "shaperstudy" + } + depend : + [ + 'Python', + 'omniORB', + 'omniORBpy', + 'qt', + 'CONFIGURATION', + 'KERNEL', + 'GEOM', + 'SHAPER', + 'GUI' + ] + build_depend : ["cmake", "swig"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties : + { + is_SALOME_module : "yes" + incremental : "yes" + has_unit_tests : "yes" + } +} diff --git a/products/SMESH.pyconf b/products/SMESH.pyconf new file mode 100644 index 0000000..0d95b62 --- /dev/null +++ b/products/SMESH.pyconf @@ -0,0 +1,188 @@ +default : +{ + name : "SMESH" + build_source : "cmake" + # cmake option SALOME_SMESH_BUILD_FRENCH_DOC=OFF until SMESH doc has been translated + cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON -DSALOME_SMESH_BUILD_FRENCH_DOC=OFF -DSALOME_SMESH_USE_TBB=ON" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/smesh.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "smesh.git" + } + environ : + { + _SMESH_MeshersList : "StdMeshers" + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "smesh" + } + depend : ["KERNEL", + "GUI", + "GEOM", + "MEDCOUPLING", + "Python", + "qt", + "PyQt", + "boost", + "CAS", + "hdf5", + "medfile", + "qwt", + "ParaView", + "libxml2", + "omniORB", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "cgns", + "six", + "pytz", + "sphinxintl", + "sphinxcontrib_napoleon", + "tbb" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + patches : [] + check_install : ["share/doc/salome/gui/SMESH/yams/index.html"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} + +default_win : +{ + cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DSALOME_SMESH_USE_CGNS:BOOL=ON -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON -DSALOME_SMESH_BUILD_FRENCH_DOC=OFF -DSALOME_SMESH_USE_TBB=ON" + patches : [] + depend : ["KERNEL", + "GUI", + "GEOM", + "MEDCOUPLING", + "Python", + "qt", + "PyQt", + "boost", + "CAS", + "hdf5", + "medfile", + "qwt", + "ParaView", + "libxml2", + "omniORB", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "cgns", + "six", + "pytz", + "Sphinx", + "sphinxintl", + "sphinxcontrib_napoleon", + "tbb" + ] +} + +# Starting from SALOME 9.4.0, we use tbb as product and build SMESH using it to accelerate its performances +version_8_5_0_to_9_3_0 : +{ + cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON -DSALOME_SMESH_BUILD_FRENCH_DOC=OFF" + depend : ["KERNEL", + "GUI", + "GEOM", + "MEDCOUPLING", + "Python", + "qt", + "PyQt", + "boost", + "CAS", + "hdf5", + "medfile", + "qwt", + "ParaView", + "libxml2", + "omniORB", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "cgns", + "six", + "pytz", + "sphinxintl", + "sphinxcontrib_napoleon" + ] +} + +# OP 19/04/2018 Add section for SALOME 7.8.0 to 8.4.0 due to new dependencies in SALOME 8.5.0 +version_7_8_0_to_8_4_0 : +{ + cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON" + environ : + { + } + depend : ["KERNEL", + "GUI", + "GEOM", + "MEDCOUPLING", + "Python", + "qt", + "PyQt", + "boost", + "CAS", + "hdf5", + "medfile", + "qwt", + "ParaView", + "libxml2", + "omniORB", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "cgns", + "six", + "pytz" + ] + nb_proc : 8 +} + +version_V6_6_0 : +{ + build_source : "autotools" + cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON" + environ : + { + } + depend : ["KERNEL", + "GUI", + "GEOM", + "MED", + "Python", + "qt", + "PyQt", + "boost", + "CAS", + "hdf5", + "medfile", + "qwt", + "ParaView", + "libxml2", + "omniORB", + "docutils", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments" + ] + check_install : [] +} diff --git a/products/SOLVERLAB.pyconf b/products/SOLVERLAB.pyconf new file mode 100644 index 0000000..700f1a6 --- /dev/null +++ b/products/SOLVERLAB.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "SOLVERLAB" + build_source : "script" + compil_script : $name + ".sh" + get_source : "git" + git_info: + { + repo : "https://codev-tuleap.cea.fr/plugins/git/spns/SolverLab.git" + } + environ : + { + env_script : $name + ".py" + } + depend : + [ + 'hdf5', + 'matplotlib', + 'medfile', + 'numpy', + 'ParaView', + 'petsc', + 'Python', + 'MEDCOUPLING', + ] + build_depend : ["cmake", "swig", "doxygen", "graphviz","cppunit"] + # mscgen + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + nb_proc : 1 +} diff --git a/products/Sphinx.pyconf b/products/Sphinx.pyconf new file mode 100644 index 0000000..9b50d20 --- /dev/null +++ b/products/Sphinx.pyconf @@ -0,0 +1,55 @@ +default : +{ + name : "Sphinx" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-sphinx"] + rpm_dev : [] + apt : ["python3-sphinx"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ["Python", "setuptools", "six", "Pygments", "Jinja2", "docutils", "sphinxcontrib_websupport", "packaging", "requests", "imagesize", "alabaster", "Babel", "snowballstemmer"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "Sphinx-" + $APPLICATION.products.Sphinx + "_windows.tar.gz"} + depend : ["Python", "setuptools", "Pygments", "Jinja2", "docutils", "sphinxcontrib_applehelp", "sphinxcontrib_serializinghtml","sphinxcontrib_websupport", "sphinxcontrib_htmlhelp", "sphinxcontrib_qthelp", "sphinxcontrib_devhelp", "sphinxcontrib_jsmath", "packaging", "requests", "imagesize", "alabaster", "Babel", "snowballstemmer", "markupsafe"] + properties: + { + incremental : "yes" + pip : "no" + } +} + +version_1_1_3_to_1_2_3 : +{ + name : "Sphinx" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + depend : ["Python", "setuptools", "Pygments", "Jinja2", "docutils"] +} + +version_1_7_6_py2 : +{ + name : "Sphinx" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + depend : ["Python", "setuptools", "Pygments", "Jinja2", "docutils", "sphinxcontrib_websupport", "packaging", "requests", "imagesize", "alabaster", "Babel", "snowballstemmer", "markupsafe", "typing"] +} diff --git a/products/TECHOBJ_ROOT.pyconf b/products/TECHOBJ_ROOT.pyconf new file mode 100644 index 0000000..157f3a8 --- /dev/null +++ b/products/TECHOBJ_ROOT.pyconf @@ -0,0 +1,32 @@ +default : +{ + name : "TECHOBJ_ROOT" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : "/home/salome/GitRepo/TECHOBJ_ROOT.git" + } + environ : + { + TECHOBJ_ROOT_DIR : $install_dir + } + depend : [ + 'Python', + 'XDATA', + 'omniORB', + 'boost', + 'PyQt', + 'ParaView' + ] + opt_depend : [LIBBATCH, CALCULATOR, MED, GUI] + build_depend : ["swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + } +} diff --git a/products/TRIOCFD_IHM.pyconf b/products/TRIOCFD_IHM.pyconf new file mode 100644 index 0000000..6885889 --- /dev/null +++ b/products/TRIOCFD_IHM.pyconf @@ -0,0 +1,27 @@ +default : +{ + name : "TRIOCFD" + build_source : "cmake" + cmake_options : "-DENABLE_DOCUMENTATION:BOOL=ON -DCOMPILE_PYFILES:BOOL=ON" + get_source : "git" + git_info: + { + repo : 'https://codev-tuleap.intra.cea.fr/plugins/git/triocfd/triocfd-ihm.git' + repo_dev : $repo + } + environ : + { + TRIOCFD_IHM_ROOT_DIR : $install_dir + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "triocfd" + } + depend : ["MEDCOUPLING","GUI"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + } + # mandatory, otherwise compilation will fail. + nb_proc : 1 +} diff --git a/products/TRIOCFD_PROFILE.pyconf b/products/TRIOCFD_PROFILE.pyconf new file mode 100644 index 0000000..9823968 --- /dev/null +++ b/products/TRIOCFD_PROFILE.pyconf @@ -0,0 +1,24 @@ +default : +{ + name : "TRIOCFD_PROFILE" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : "https://codev-tuleap.intra.cea.fr/plugins/git/triocfd/triocfd-ihm-profile.git" + repo_dev : $repo + } + environ : + { + _SalomeAppConfig : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "triocfd_profile" + } + depend : ['Python', 'Sphinx', 'qt', 'KERNEL', 'GUI'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + is_SALOME_module : "yes" + } +} + diff --git a/products/TRUST.pyconf b/products/TRUST.pyconf new file mode 100644 index 0000000..7bfa53a --- /dev/null +++ b/products/TRUST.pyconf @@ -0,0 +1,18 @@ +default : +{ + name : "TRUST" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['medfile', 'hdf5'] + opt_depend : [ ] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + #install_dir : 'base' +} + diff --git a/products/Togl.pyconf b/products/Togl.pyconf new file mode 100644 index 0000000..6bd4d6f --- /dev/null +++ b/products/Togl.pyconf @@ -0,0 +1,16 @@ +version_1_7: +{ + name : "Togl" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [tcl, tk] + + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} diff --git a/products/TrioCFD.pyconf b/products/TrioCFD.pyconf new file mode 100644 index 0000000..02f2168 --- /dev/null +++ b/products/TrioCFD.pyconf @@ -0,0 +1,18 @@ +default : +{ + name : "TrioCFD" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['TRUST'] + opt_depend : [ ] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + #install_dir : 'base' +} + diff --git a/products/VISU.pyconf b/products/VISU.pyconf new file mode 100644 index 0000000..cacfe9f --- /dev/null +++ b/products/VISU.pyconf @@ -0,0 +1,36 @@ +default : +{ + name : "VISU" + build_source : "autotools" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/visu.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "visu.git" + } + environ : + { + } + depend : ["Python", + "boost", + "CAS", + "qt", + "qwt", + "medfile", + "ParaView", + "hdf5", + "omniORB", + "docutils", + "KERNEL", + "GUI", + "MED" + ] + build_depend : ["swig", "cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + has_salome_gui : "yes" + } +} diff --git a/products/XDATA.pyconf b/products/XDATA.pyconf new file mode 100644 index 0000000..12d1fe6 --- /dev/null +++ b/products/XDATA.pyconf @@ -0,0 +1,35 @@ +version_0_9_11 : +{ + name : "XDATA" + get_source : "archive" + build_source : "script" + compil_script : $name + ".py" + archive_info : + { + archive_name : "xdata-0.9.11.tar.gz" + } + environ : + { + env_script : $name + ".py" + } + depend : [ + 'Python', + 'omniORB', + 'boost', + 'PyQt', + 'KERNEL' + ] + opt_depend : [LIBBATCH, CALCULATOR, MED, GUI] + build_depend : ["cppunit"] + patches : [ + #"xdata-0.9.9.python2.7.patch", #patch obsolete car integre aux sources en 7.8.0 + "xdata-0.9.11.patch", + "xdata_qt.patch" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + is_SALOME_module : "yes" + } +} diff --git a/products/YACS.pyconf b/products/YACS.pyconf new file mode 100644 index 0000000..cc228aa --- /dev/null +++ b/products/YACS.pyconf @@ -0,0 +1,78 @@ +default : +{ + name : "YACS" + build_source : "cmake" + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/yacs.git" + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "yacs.git" + } + environ : + { + SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "yacs" + } + depend : [ + "KERNEL", + "GUI", + "Python", + "qt", + "boost", + "omniORB", + "docutils", + "graphviz", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments", + "six", + "pytz", + "markupsafe" + ] + build_depend : ["cmake", "swig", "doxygen", "cppunit"] + + patches : [ + "yacs_cea_v2.patch" + ] + + nb_proc : 4 + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + has_salome_gui : "yes" + is_SALOME_module : "yes" + has_unit_tests + incremental : "yes" + } +} + +# bug in cmake for multi proc compilation +from_7_7_0_to_8_5_0 : +{ + nb_proc : 1 +} + +# autotools are used for version 6 +# do not depend upon six, pytz, markupsafe +version_V6_6_0 : +{ + build_source : "autotools" + depend : [ + "KERNEL", + "GUI", + "Python", + "qt", + "boost", + "omniORB", + "docutils", + "graphviz", + "libxml2", + "Sphinx", + "Jinja2", + "setuptools", + "Pygments" + ] + build_depend : ["swig", "doxygen", "cppunit"] +} diff --git a/products/YACSGEN.pyconf b/products/YACSGEN.pyconf new file mode 100644 index 0000000..8415b09 --- /dev/null +++ b/products/YACSGEN.pyconf @@ -0,0 +1,39 @@ +default : +{ + name : "YACSGEN" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "git" + git_info: + { + repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/yacsgen.git " + repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "yacsgen.git " + } + environ : + { + env_script : $name + ".py" + } + depend : [ + "Python" + ] + build_depend : ["cppunit"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + patches :[] + properties: + { + incremental : "yes" + } +} + +version_V7_8_BR : +{ + compil_script : "YACSGEN.py" + patches : ["yacsgen_hxx.patch"] + properties: + { + incremental : "yes" + is_SALOME_module : "yes" + } +} + diff --git a/products/alabaster.pyconf b/products/alabaster.pyconf new file mode 100644 index 0000000..dc61976 --- /dev/null +++ b/products/alabaster.pyconf @@ -0,0 +1,36 @@ +default : +{ + name : "alabaster" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-sphinx-theme-alabaster"] + rpm_dev : [] + apt : ["python3-alabaster"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info: + { + archive_name : "alabaster-" + $APPLICATION.products.alabaster + "_windows.tar.gz" + } +} diff --git a/products/boost.pyconf b/products/boost.pyconf new file mode 100644 index 0000000..84c4535 --- /dev/null +++ b/products/boost.pyconf @@ -0,0 +1,52 @@ +default : +{ + name : "boost" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["boost"] + rpm_dev : ["boost-devel"] + apt : ["libboost-regexr", "libboost-thread" , "libboost-serialization", + "libboost-chrono", "libboost-filesystem", "libboost-system", + "libboost-date-time"] + apt_dev : ["libboost-regexr-dev", "libboost-thread-dev", "libboost-serialization-dev", + "libboost-chrono-dev", "libboost-filesystem-dev", "libboost-system-dev", + "libboost-date-time-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python' ] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +default_win : +{ + compil_script : "boost_V" + $APPLICATION.products.boost + ".bat" + archive_info : {archive_name : "boost-" + $APPLICATION.products.boost + "_windows.tar.gz"} +} + +version_1_52_0 : +{ + patches : + [ + 'boost-1.52.0-cstdint_missing_include.patch', + 'boost-1.52.0_recent_glibc_versions.patch' + ] +} + +version_1_49_0: +{ + patches : [ "boost-1.49.0.patch" ] +} diff --git a/products/bsd_xdr.pyconf b/products/bsd_xdr.pyconf new file mode 100755 index 0000000..2ee35f8 --- /dev/null +++ b/products/bsd_xdr.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "bsd_xdr" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/certifi.pyconf b/products/certifi.pyconf new file mode 100755 index 0000000..3ce065e --- /dev/null +++ b/products/certifi.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "certifi" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-certifi"] + rpm_dev : [] + apt : ["python3-certifi"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "certifi-" + $APPLICATION.products.certifi + "_windows.tar.gz"} + depend : ['Python','urllib3'] +} diff --git a/products/cgns.pyconf b/products/cgns.pyconf new file mode 100644 index 0000000..1cc0112 --- /dev/null +++ b/products/cgns.pyconf @@ -0,0 +1,29 @@ +default : +{ + name : "cgns" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["cgnslib"] + rpm_dev : ["cgnslib-devel"] + apt : ["libcgns3"] + apt_dev : ["libcgns-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ["hdf5"] + opt_depend : ["openmpi"] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/chardet.pyconf b/products/chardet.pyconf new file mode 100755 index 0000000..69c88e9 --- /dev/null +++ b/products/chardet.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "chardet" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-chardet"] + rpm_dev : [] + apt : ["python3-chardet"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "chardet-" + $APPLICATION.products.chardet + "_windows.tar.gz"} + +} diff --git a/products/click.pyconf b/products/click.pyconf new file mode 100644 index 0000000..3fc92ef --- /dev/null +++ b/products/click.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "click" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-click"] + rpm_dev : [] + apt : ["python3-click"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "click-" + $APPLICATION.products.click + "_windows.tar.gz"} +} diff --git a/products/cmake.pyconf b/products/cmake.pyconf new file mode 100644 index 0000000..898e608 --- /dev/null +++ b/products/cmake.pyconf @@ -0,0 +1,27 @@ +default : +{ + name : "cmake" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["cmake"] + apt : ["cmake"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + compile_time : "yes" + } +} diff --git a/products/colorama.pyconf b/products/colorama.pyconf new file mode 100755 index 0000000..5e946e1 --- /dev/null +++ b/products/colorama.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "colorama" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "colorama-" + $APPLICATION.products.colorama + "_windows.tar.gz"} +} diff --git a/products/compil_scripts/ADAO.bat b/products/compil_scripts/ADAO.bat new file mode 100644 index 0000000..c21b76b --- /dev/null +++ b/products/compil_scripts/ADAO.bat @@ -0,0 +1,121 @@ +@echo off + +echo ########################################################################## +echo ADAO %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +echo ########################################################################## +echo Compile ADAO TOOL +echo ########################################################################## + +set CURRENT_SOFTWARE_INSTALL_DIR=%PRODUCT_INSTALL:\=/% +set PYTHONPATH=%SOURCE_DIR%/bin;%PYTHONPATH% +set PYTHONPATH=%PRODUCT_INSTALL%/lib/python%PYTHON_VERSION%/site-packages;%PYTHONPATH% + +cd %BUILD_DIR% +set CMAKE_OPTIONS= +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64" + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +echo ########################################################################## +echo Compile ADAO MODULE +echo ########################################################################## +set ADAO_PYTHON_ROOT_DIR=%CURRENT_SOFTWARE_INSTALL_DIR% +set ADAO_ENGINE_ROOT_DIR=%CURRENT_SOFTWARE_INSTALL_DIR% +set CMAKE_OPTIONS= +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DADAO_PYTHON_MODULE:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DKERNEL_ROOT_DIR=%KERNEL_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DADAO_PYTHON_ROOT_DIR=%ADAO_PYTHON_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DEFICAS_ROOT_DIR=%EFICAS_TOOLS_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64" + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +REM set CL=/D__WIN32__ /DSIZEOF_INT=4 /DSIZEOF_LONG=4 %CL% + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +set MSBUILDDISABLENODEREUSE=1 + + diff --git a/products/compil_scripts/ADAO.sh b/products/compil_scripts/ADAO.sh new file mode 100755 index 0000000..85c1454 --- /dev/null +++ b/products/compil_scripts/ADAO.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ADAO/ADAO_TOOL" $VERSION +echo "##########################################################################" + + +PYTHON_VERSION_MAJ=${PYTHON_VERSION:0:1} + +echo "##########################################################################" +echo "Compile ADAO TOOL" +echo "##########################################################################" + +export CURRENT_SOFTWARE_INSTALL_DIR=${PRODUCT_INSTALL} + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHONBIN}" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo "##########################################################################" +echo "Compile ADAO MODULE" +echo "##########################################################################" +export ADAO_PYTHON_ROOT_DIR=${CURRENT_SOFTWARE_INSTALL_DIR} +export ADAO_ENGINE_ROOT_DIR==${CURRENT_SOFTWARE_INSTALL_DIR} +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DADAO_PYTHON_MODULE=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHONBIN}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DKERNEL_ROOT_DIR=${KERNEL_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DADAO_PYTHON_ROOT_DIR=${ADAO_PYTHON_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DEFICAS_ROOT_DIR=${EFICAS_TOOLS_ROOT_DIR}" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + + + diff --git a/products/compil_scripts/Babel.bat b/products/compil_scripts/Babel.bat new file mode 100644 index 0000000..31ac4ca --- /dev/null +++ b/products/compil_scripts/Babel.bat @@ -0,0 +1,44 @@ +@echo off + +echo ########################################################################## +echo Babel %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% + +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END + diff --git a/products/compil_scripts/Babel.sh b/products/compil_scripts/Babel.sh new file mode 100755 index 0000000..9053e1a --- /dev/null +++ b/products/compil_scripts/Babel.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Babel" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/CAS_6.7.sh b/products/compil_scripts/CAS_6.7.sh new file mode 100755 index 0000000..eb3bf96 --- /dev/null +++ b/products/compil_scripts/CAS_6.7.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +echo "###############################################" +echo "CASCADE" $VERSION +echo "###############################################" + + + +echo +echo "*** build_configure" +./build_configure +if [ $? -ne 0 ] +then + echo "ERROR on build_configure" + exit 1 +fi + +echo +echo "*** configure" +./configure \ + --without-tcl --without-tk --disable-draw \ + --with-freetype=$FREETYPEDIR \ + --enable-debug=no --enable-production=yes \ + --with-gl2ps=$GL2PSDIR \ + --with-freeimage=$FREEIMAGEDIR \ + --prefix=$PRODUCT_INSTALL + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/CAS_7.0.sh b/products/compil_scripts/CAS_7.0.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/CAS_7.0.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/compil_scripts/CAS_7.3.bat b/products/compil_scripts/CAS_7.3.bat new file mode 100644 index 0000000..4621b92 --- /dev/null +++ b/products/compil_scripts/CAS_7.3.bat @@ -0,0 +1,95 @@ +@echo off + +echo ########################################################################## +echo CAS %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +if %SAT_DEBUG% == 1 ( + set PRODUCT_BUILD_TYPE=Debug +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% + +REM TBB +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TBB:BOOL=ON -D3RDPARTY_TBB_DIR:STRING=%TBB_DIR:\=/% +REM FREETYPE +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREETYPE:BOOL=ON -D3RDPARTY_FREETYPE_DIR:STRING=%FREETYPEDIR:\=/% +REM FREEIMAGE +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREEIMAGE:BOOL=ON -D3RDPARTY_FREEIMAGE_DIR:STRING=%FREEIMAGEDIR:\=/% + +REM GL2PS +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_GL2PS:BOOL=ON -D3RDPARTY_GL2PS_DIR:STRING=%GL2PSDIR:\=/% + +REM no TCL/TK +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +echo. +echo ********************************************************************* +echo *** installation (data)... +echo ********************************************************************* +echo. +robocopy %SOURCE_DIR%\data %PRODUCT_INSTALL%\data /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying %SOURCE_DIR%\data + exit 1 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END + diff --git a/products/compil_scripts/CAS_7.4.bat b/products/compil_scripts/CAS_7.4.bat new file mode 100644 index 0000000..71f0597 --- /dev/null +++ b/products/compil_scripts/CAS_7.4.bat @@ -0,0 +1,95 @@ +@echo off + +echo ########################################################################## +echo CAS %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +if %SAT_DEBUG% == 1 ( + set PRODUCT_BUILD_TYPE=Debug +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% + +REM TBB +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TBB:BOOL=ON -D3RDPARTY_TBB_DIR:STRING=%TBB_DIR:\=/% +REM FREETYPE +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREETYPE:BOOL=ON -D3RDPARTY_FREETYPE_DIR:STRING=%FREETYPEDIR:\=/% +REM FREEIMAGE +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREEIMAGE:BOOL=ON -D3RDPARTY_FREEIMAGE_DIR:STRING=%FREEIMAGEDIR:\=/% + +REM no GL2PS +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_GL2PS:BOOL=OFF + +REM no TCL/TK +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +echo. +echo ********************************************************************* +echo *** installation (data)... +echo ********************************************************************* +echo. +robocopy %SOURCE_DIR%\data %PRODUCT_INSTALL%\data /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying %SOURCE_DIR%\data + exit 1 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END + diff --git a/products/compil_scripts/COREFLOWS.sh b/products/compil_scripts/COREFLOWS.sh new file mode 100755 index 0000000..5bd68ab --- /dev/null +++ b/products/compil_scripts/COREFLOWS.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +echo "##########################################################################" +echo "CoreFlows" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +#============== +#rm -rf $CoreFlows_build $CoreFlows_INSTALL +#mkdir -p $CoreFlows_build +#mkdir -p $CoreFlows_INSTALL +#============== + +#cd $BUILD_DIR + +#================ A MODIFIER ============================= +# CDMATH_DIR, PETSC_DIR, PETSC_ARCH, CoreFlows_ROOT : Paths to be set by the user +export CDMATH_DIR=${CDMATH_ROOT_DIR} +export PETSC_DIR=${PETSC_ROOT_DIR} +export PETSC_ARCH=arch-linux2-c-debug # usually for fedora: arch-linux2-c-opt or arch-linux2-c-debug, for ubuntu: linux-gnu-c-opt or linux-gnu-c-debug +export CoreFlows_ROOT=$SOURCE_DIR +export CoreFlows_INSTALL=$PRODUCT_INSTALL + +#Compilation options (PYTHON, Doc, GUI) to be set by the user +export CoreFlows_PYTHON='ON' # To generate the SWIG module "Python = ON or OFF " +export CoreFlows_DOC='ON' # To generate the Documentation "Doc = ON or OFF " +export CoreFlows_GUI='ON' # To generate the Graphic user interface "GUI = ON or OFF " + +#------------------------------------------------------------------------------------------------------------------- +export CoreFlows=$CoreFlows_INSTALL/bin/Executable/CoreFlowsMainExe +export LD_LIBRARY_PATH=$CDMATH_DIR/lib/:$PETSC_DIR/$PETSC_ARCH/lib:$CoreFlows_INSTALL/lib:${LD_LIBRARY_PATH} +export PYTHONPATH=$CoreFlows_INSTALL/lib:$CoreFlows_INSTALL/lib/CoreFlows_Python:$CoreFlows_INSTALL/bin/CoreFlows_Python:$CoreFlows_INSTALL/lib/python2.7/site-packages/salome:$CDMATH_DIR/lib/:$CDMATH_DIR/lib/cdmath:$CDMATH_DIR/bin/cdmath:${PYTHONPATH} +export CoreFlowsGUI=$CoreFlows_INSTALL/bin/salome/CoreFlows_Standalone.py +export COREFLOWS_ROOT_DIR=$CoreFlows_INSTALL +#========================================================= + +#CMAKE_OPTIONS="$CoreFlows_ROOT/CoreFlows_src -DCMAKE_INSTALL_PREFIX=$CoreFlows_INSTALL -DCMAKE_BUILD_TYPE=Debug -G"Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.3 -DCOREFLOWS_WITH_DOCUMENTATION=$CoreFlows_DOC -DCOREFLOWS_WITH_PYTHON=$CoreFlows_PYTHON -DCOREFLOWS_WITH_GUI=$CoreFlows_GUI -DCOREFLOWS_WITH_PACKAGE=OFF" +CMAKE_OPTIONS="-DCMAKE_INSTALL_PREFIX=$CoreFlows_INSTALL -DCMAKE_BUILD_TYPE=Debug -DCOREFLOWS_WITH_DOCUMENTATION=$CoreFlows_DOC -DCOREFLOWS_WITH_PYTHON=$CoreFlows_PYTHON -DCOREFLOWS_WITH_GUI=$CoreFlows_GUI -DCOREFLOWS_WITH_PACKAGE=OFF" + +echo +echo "*** cmake" $CMAKE_OPTIONS +cmake $SOURCE_DIR/CoreFlows_src $CMAKE_OPTIONS + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cd .. +chmod -R 755 $CoreFlows_INSTALL/bin/CoreFlows_Python/* $CoreFlows_INSTALL/share/examples/Python/* + +echo +echo "########## END" diff --git a/products/compil_scripts/Hexotic.sh b/products/compil_scripts/Hexotic.sh new file mode 100755 index 0000000..493cc23 --- /dev/null +++ b/products/compil_scripts/Hexotic.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Hexotic" $VERSION +echo "##########################################################################" + +echo +echo "*** mkdir" $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on mkdir" + exit 1 +fi + +echo +echo "*** cp -r * " $PRODUCT_INSTALL +cp -r $SOURCE_DIR/* $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 2 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/Homard-SALOME9.sh b/products/compil_scripts/Homard-SALOME9.sh new file mode 100755 index 0000000..9e95327 --- /dev/null +++ b/products/compil_scripts/Homard-SALOME9.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Homard" $VERSION +echo "##########################################################################" + +echo +echo "*** mkdir" $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on mkdir" + exit 1 +fi + +echo +echo "*** cp -r "$SOURCE_DIR"/* " $PRODUCT_INSTALL"/homard" +cp -r $SOURCE_DIR/* $PRODUCT_INSTALL/ +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 2 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/Homard.sh b/products/compil_scripts/Homard.sh new file mode 100755 index 0000000..3ef29b9 --- /dev/null +++ b/products/compil_scripts/Homard.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Homard" $VERSION +echo "##########################################################################" + +echo +echo "*** mkdir" $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on mkdir" + exit 1 +fi + +echo +echo "*** cp -r "$SOURCE_DIR"/* " $PRODUCT_INSTALL"/homard" +cp -r $SOURCE_DIR/* $PRODUCT_INSTALL/homard +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 2 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/Jinja2.bat b/products/compil_scripts/Jinja2.bat new file mode 100755 index 0000000..a5184cf --- /dev/null +++ b/products/compil_scripts/Jinja2.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo Jinja2 %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/Jinja2.sh b/products/compil_scripts/Jinja2.sh new file mode 100755 index 0000000..15ac1b8 --- /dev/null +++ b/products/compil_scripts/Jinja2.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Jinja2" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH} + +## unset PYTHONDONTWRITEBYTECODE set by default on MD10 +#PYTHONDONTWRITEBYTECODE= + +echo +echo "*** setup.py" +python setup.py install --prefix=${PRODUCT_INSTALL} --install-lib ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/MeshGems.bat b/products/compil_scripts/MeshGems.bat new file mode 100755 index 0000000..5d76b6f --- /dev/null +++ b/products/compil_scripts/MeshGems.bat @@ -0,0 +1,51 @@ +@echo off + +echo ########################################################################## +echo MeshGems $VERSION +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set SRC_FOLDER=Win7_64_VC14 + +cd DISTENE\MeshGems-*\Products + +echo SRC_FOLDER = %SRC_FOLDER% +echo PRODUCT_INSTALL = %PRODUCT_INSTALL% + +rem ## Includes +xcopy include\* %PRODUCT_INSTALL%\include /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copying include + exit 1 +) + +rem ## Lib +echo. +echo running command: xcopy lib\%SRC_FOLDER%\* %PRODUCT_INSTALL%\lib /E /I /Q +xcopy lib\%SRC_FOLDER%\* %PRODUCT_INSTALL%\lib /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copying lib + exit 2 +) + +rem ## Bin +echo. +echo running command: bin\%SRC_FOLDER%\* %PRODUCT_INSTALL%\bin /E /I /Q +xcopy bin\%SRC_FOLDER%\* %PRODUCT_INSTALL%\bin /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copying bin + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/MeshGems.sh b/products/compil_scripts/MeshGems.sh new file mode 100755 index 0000000..5113afd --- /dev/null +++ b/products/compil_scripts/MeshGems.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +echo "##########################################################################" +echo "MeshGems" $VERSION +echo "##########################################################################" + +echo +echo "*** mkdir" $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on mkdir" + exit 1 +fi + +echo +echo "*** cp -r "$SOURCE_DIR"/* " $PRODUCT_INSTALL +cp -r $SOURCE_DIR/* $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 2 +fi + +if [ -n "$SAT_HPC" ] +then + echo "WARNING: adding MG-Tetra_HPC ..." + cd $PRODUCT_INSTALL/stubs + mpicc meshgems_mpi.c -DMESHGEMS_LINUX_BUILD -I ../include -shared -fPIC -o ../lib/Linux_64/libmeshgems_mpi.so +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParMetis-3.sh b/products/compil_scripts/ParMetis-3.sh new file mode 100755 index 0000000..26faaf5 --- /dev/null +++ b/products/compil_scripts/ParMetis-3.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParMetis" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo +echo "*** apply sed for 64bits platforms" +sed -e 's/CC = mpicc/CC = mpicc -fPIC/g' Makefile.in > Makefile.in_new +cp Makefile.in_new Makefile.in + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +# install +echo "** install" +mkdir -p $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL"/METISLib" +mkdir -p $PRODUCT_INSTALL"/ParMETISLib" + +cp libparmetis.a $PRODUCT_INSTALL +cp libmetis.a $PRODUCT_INSTALL +cp parmetis.h $PRODUCT_INSTALL +cp Graphs/ptest Graphs/mtest Graphs/parmetis Graphs/pometis $PRODUCT_INSTALL + +cp METISLib/*.h $PRODUCT_INSTALL"/METISLib" +cp ParMETISLib/*.h $PRODUCT_INSTALL"/ParMETISLib" + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-3.14.0.sh b/products/compil_scripts/ParaView-3.14.0.sh new file mode 100755 index 0000000..f971d01 --- /dev/null +++ b/products/compil_scripts/ParaView-3.14.0.sh @@ -0,0 +1,143 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + + +echo "Resize image in plugin SurfaceLIC doc" +BUILD_DIR=`pwd` +cd $SOURCE_DIR/Plugins/SurfaceLIC/doc/ +convert surface_lic.png -resize 400 surface_lic2.png +if [ $? -ne 0 ] +then + echo "convert command failed" + exit 1 +fi +mv surface_lic2.png surface_lic.png +cd $BUILD_DIR + + +python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +### compiler settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T=1" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON" +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_HYBRID:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_PARALLEL:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_PATENTED:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_RENDERING:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_QT_USE_WEBKIT:BOOL=ON" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_PYTHON:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_PATH:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_TK:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_INCLUDE_DIR:STRING=${HDF5HOME}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_LIBRARY:STRING=${HDF5HOME}/lib/libhdf5.so" + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOSTDIR}" + +### gl2ps settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_GL2PS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PSDIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PSDIR}/lib/libgl2ps.so" + +### Extra options (switch off non-used Paraview plug-ins) +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessing:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Prism:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_VisTrailsPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_pvblot:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 2 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 4 +fi + +echo +echo "Copy some missing files" +PVCMAKEDIR=$PRODUCT_INSTALL/lib/paraview-3.14/CMake +cp ../CMake/generate_proxydocumentation.cmake $PVCMAKEDIR +cp ../CMake/smxml_to_xml.xsl $PVCMAKEDIR +cp ../CMake/xml_to_html.xsl $PVCMAKEDIR +cp ../CMake/xml_to_wiki.xsl.in $PVCMAKEDIR +cp ../CMake/generate_qhp.cmake $PVCMAKEDIR + + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-4.2.0.sh b/products/compil_scripts/ParaView-4.2.0.sh new file mode 100755 index 0000000..72a5cb1 --- /dev/null +++ b/products/compil_scripts/ParaView-4.2.0.sh @@ -0,0 +1,144 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" + + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" + + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +mkdir -p BUILD +cd BUILD + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} .. +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.0.sh b/products/compil_scripts/ParaView-5.0.sh new file mode 100755 index 0000000..002932c --- /dev/null +++ b/products/compil_scripts/ParaView-5.0.sh @@ -0,0 +1,187 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" +fi + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" +fi + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" + + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options since OCC presta to improve Paraview for Salome +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON" + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.0/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh b/products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh new file mode 100755 index 0000000..dcb956f --- /dev/null +++ b/products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh @@ -0,0 +1,194 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" +fi + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" + + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options since OCC presta to improve Paraview for Salome +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON" + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +# Offscreen-rendering +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_X=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOPENGL_INCLUDE_DIR=IGNORE" #wiki paraview #${MESA_ROOT_DIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOPENGL_xmesa_INCLUDE_DIR=IGNORE" #wiki paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOPENGL_gl_LIBRARY=IGNORE" #wiki paraview #${MESA_ROOT_DIR}/lib/libOSMesa.so +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOPENGL_glu_LIBRARY=${GLU_ROOT_DIR}/lib/libGLU.so" #devrait etre -DOPENGL_glu_LIBRARY=${MESA_ROOT_DIR}/lib/libGLU.so mais libGLU.so est manquant dans l'install de mesa +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_OPENGL_HAS_OSMESA=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_OFFSCREEN=OFF" #wiki paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOSMESA_INCLUDE_DIR=${MESA_ROOT_DIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOSMESA_LIBRARY=${MESA_ROOT_DIR}/lib/libOSMesa.so" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.1/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.1-820.sh b/products/compil_scripts/ParaView-5.1-820.sh new file mode 100755 index 0000000..14fe9a9 --- /dev/null +++ b/products/compil_scripts/ParaView-5.1-820.sh @@ -0,0 +1,189 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" +fi + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" +fi + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" + + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options since OCC presta to improve Paraview for Salome +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON" + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.1/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.1.sh b/products/compil_scripts/ParaView-5.1.sh new file mode 100755 index 0000000..8f8473b --- /dev/null +++ b/products/compil_scripts/ParaView-5.1.sh @@ -0,0 +1,190 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +### for import/export in CGNS format +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON" + + +### compiler settings +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" +fi + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" +fi + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" + + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options since OCC presta to improve Paraview for Salome +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON" + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.1/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.4-b5c4c89.sh b/products/compil_scripts/ParaView-5.4-b5c4c89.sh new file mode 100755 index 0000000..0df376f --- /dev/null +++ b/products/compil_scripts/ParaView-5.4-b5c4c89.sh @@ -0,0 +1,215 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +if [[ $BITS == "64" ]] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +fi + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView +#TA 09/01/18 Modification due to latest version of ParaView-b5c4c893 +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR="lib/paraview-5.4"" +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX="site-packages"" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" + +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +# OpenGl2 mandatory in this version of paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" +fi + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + if [ ${PYTHON_VERSION%%.*} == 3 ] + then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so" + else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + fi +fi + +### No tcl tk wrap +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" + +### VisIt Database bridge settings +if [ $DIST == "FD26" ] +then + echo we are on fedora 26, we don t compile VISITBRIDGE + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=OFF" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + ### Boost settings (needed when activating VisIt bridge) + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" +fi + +### gl2ps settings +# VTK and system gl2ps conflict resolution +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options since OCC presta to improve Paraview for Salome +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON" + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF" + +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi +if [ ${PYTHON_VERSION%%.*} == 3 ] +then + BUILD_DIR=`pwd` + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc +fi +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +mv ${PRODUCT_INSTALL}/lib/libvtkm_cont-pv5.4.so* ${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/ + + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.4.1_b5c4c89.sh b/products/compil_scripts/ParaView-5.4.1_b5c4c89.sh new file mode 100755 index 0000000..1bcde0d --- /dev/null +++ b/products/compil_scripts/ParaView-5.4.1_b5c4c89.sh @@ -0,0 +1,250 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +# OP TEST +#if [[ $BITS == "64" ]] +#then +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +#fi +# OP 29/05/2018 Add 2 options used by BO +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView + +# OP inhibit embedded Pygments and use the system (or SALOME) one +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON" + +# TA - OP 17/01/2018 Add options for ParaView libraries installation +# due to latest version of ParaView-b5c4c893 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" + +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +# OpenGl2 mandatory in this version of paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator" +fi +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" + +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON" + +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + if [ ${PYTHON_VERSION%%.*} == 3 ] + then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so" + else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + fi +fi + +### No tcl tk wrap +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +# OP 11/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +# VTK and system gl2ps conflict resolution +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" + +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +# OP 10/04/2018 Add cgns prerequisite for import/export in CGNS format +# OP 10/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so" +# OP TEST +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON" +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi +if [ ${PYTHON_VERSION%%.*} == 3 ] +then + BUILD_DIR=`pwd` + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc +fi +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake + +# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above + + + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.5.2p2_7591431.sh b/products/compil_scripts/ParaView-5.5.2p2_7591431.sh new file mode 100755 index 0000000..2b690c2 --- /dev/null +++ b/products/compil_scripts/ParaView-5.5.2p2_7591431.sh @@ -0,0 +1,252 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +# OP TEST +#if [[ $BITS == "64" ]] +#then +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +#fi +# OP 29/05/2018 Add 2 options used by BO +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView + +# OP inhibit embedded Pygments and use the system (or SALOME) one +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON" + +# TA - OP 17/01/2018 Add options for ParaView libraries installation +# due to latest version of ParaView-b5c4c893 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" + +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +# OpenGl2 mandatory in this version of paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator" +fi +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" + +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON" + +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + if [ ${PYTHON_VERSION%%.*} == 3 ] + then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so" + else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + fi +fi + +### No tcl tk wrap +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +# OP 11/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +# VTK and system gl2ps conflict resolution +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" + +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +# OP 10/04/2018 Add cgns prerequisite for import/export in CGNS format +# OP 10/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so" +# OP TEST +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON" +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi +if [ ${PYTHON_VERSION%%.*} == 3 ] +then + BUILD_DIR=`pwd` + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc +fi +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake + +# && sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake + +# OP 17/07/2018 post-install suppressed for SALOME master test +# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above + + + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat b/products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat new file mode 100644 index 0000000..0c6f911 --- /dev/null +++ b/products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat @@ -0,0 +1,209 @@ +@echo off + +echo ########################################################################## +echo ParaView %VERSION% %PYTHON_VERSION% %PYTHON_VERSION:.=% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +set CMAKE_OPTIONS= + +set PVLIBVERSION=5.6 + +set python_name=python%PYTHON_VERSION% + +REM verbose log +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE=ON + +REM common settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_TESTING:BOOL=OFF + +REM Paraview general settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_MPI:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF + + +REM VTK general settings +REM # issue 1779 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_64BIT_IDS:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_NO_PYTHON_THREADS:BOOL=OFF + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-%PVLIBVERSION% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-%PVLIBVERSION% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-%PVLIBVERSION%/plugins +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTKm_INSTALL_LIB_DIR=lib/paraview-%PVLIBVERSION% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF + +REM OpenGL2 backend for performance improvment +REM https://blog.kitware.com/new-opengl-rendering-in-vtk/ +REM OpenGl2 mandatory in this version of paraview +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_RENDERING_BACKEND:STRING=OpenGL2 + +REM OpenMP to speed computation of some filters +REM https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +REM https://blog.kitware.com/accelerated-filters-in-paraview-5/ +REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP + +REM Qt settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_QT_GUI:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_QT_VERSION=5 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_HELP_GENERATOR:STRING=%QT5_ROOT_DIR:\=/%/bin/qhelpgenerator.exe + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF +REM # additionaly for windows +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_QMAKE_EXECUTABLE:STRING=%QT5_ROOT_DIR:\=/%/bin/qmake.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_BINARY_DIR:STRING=%QT5_ROOT_DIR:\=/%/bin/ + +REM # Python settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_PYTHON:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_PYTHON:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE:STRING=%PYTHON_ROOT_DIR:\=/%/python.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_LIBRARY:STRING=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WINDOWS_PYTHON_DEBUGGABLE:BOOL=OFF +REM No tcl tk wrap +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_JAVA:BOOL=OFF + +REM HDF5 settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_HDF5:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_INCLUDE_DIRS:STRING=%HDF5_ROOT_DIR:\=/%/include + +set LIST_HDF5_LIBRARIES=%HDF5_ROOT_DIR:\=/%/lib/hdf5_cpp.lib +set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl_cpp.lib +set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5.lib +set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_LIBRARIES:STRING=%LIST_HDF5_LIBRARIES% + +REM VisIt Database bridge settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_VISITBRIDGE=ON + +REM Boost settings (needed when activating VisIt bridge) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0 1.67" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +REM gl2ps settings +REM VTK and system gl2ps conflict resolution +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_GL2PS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_INCLUDE_DIR:STRING=%GL2PS_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_LIBRARY:STRING=%GL2PS_ROOT_DIR:\=/%/lib/gl2ps.lib + +REM # libxml2 settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_INCLUDE_DIR:STRING=%LIBXML2_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_LIBRARIES:STRING=%LIBXML2_ROOT_DIR:\=/%/lib/libxml2.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_XMLLINT_EXECUTABLE=%LIBXML2_ROOT_DIR:\=/%/bin/xmllint.exe + +REM # freetype settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIR_freetype2:STRING=%FREETYPE_ROOT_DIR:\=/%/include/freetype2 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_LIBRARY:STRING=%FREETYPE_ROOT_DIR:\=/%/lib/freetype.lib + +REM Extra options (switch off non-used Paraview plug-ins) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_VTKmFilters:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_CATALYST_ADAPTORS:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_WEB=OFF + +REM Extra options (switch on required Paraview plug-ins) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_FIND_REQUIRED:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_INCLUDE_DIR:STRING=%CGNS_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_LIBRARY:STRING=%CGNS_ROOT_DIR:\=/%/lib/cgns.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_CGNS:BOOL=ON + +if defined OSPRAY_ROOT_DIR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_OSPRAY:BOOL=ON -DOSPRAY_INSTALL_DIR:STRING=%OSPRAY_ROOT_DIR:\=/% +) + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + +cd %BUILD_DIR% +echo. +echo INFO: running command: %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +if defined OSPRAY_ROOT_DIR ( + sed -i "s/;ospray::ospray//g" %PRODUCT_INSTALL:\=/%/lib/cmake/paraview-%PVLIBVERSION%/ParaViewTargets.cmake + sed -i "s/;ospray::ospray//g" %PRODUCT_INSTALL:\=/%/lib/cmake/qttesting/ParaViewTargets.cmake +) + +REM in order to fullfill some prerequistes by GUI! +cd %PRODUCT_INSTALL%\bin +mkdir Lib +MOVE /Y site-packages Lib\site-packages + +REM move +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo -------------------------------------------------------------------------- +echo *** Post processing +echo -------------------------------------------------------------------------- +echo. + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh b/products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh new file mode 100755 index 0000000..c962bd4 --- /dev/null +++ b/products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh @@ -0,0 +1,271 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +# OP TEST +#if [[ $BITS == "64" ]] +#then +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +#fi +# OP 29/05/2018 Add 2 options used by BO +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView + +# OP inhibit embedded Pygments and use the system (or SALOME) one +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON" + +# TA - OP 17/01/2018 Add options for ParaView libraries installation +# due to latest version of ParaView-b5c4c893 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" + +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +# OpenGl2 mandatory in this version of paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator" +fi +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" + +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON" + +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + if [ ${PYTHON_VERSION%%.*} == 3 ] + then + # OP TEST + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/lib${python_name}.so" + else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + fi +fi + +### No tcl tk wrap +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +# OP 11/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +# VTK and system gl2ps conflict resolution +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" + +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON" +if [ -n "$CGNS_ROOT_DIR" ] +then + # with a native cgns, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so" +fi + + +# Check whether OSPRAY needs to be switched on +if [ -n "$OSPRAY_ROOT_DIR" ] +then + echo "WARNING: OSPRAY plugin requested..." + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_OSPRAY=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOSPRAY_INSTALL_DIR=$OSPRAY_ROOT_DIR" +fi +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi +if [ ${PYTHON_VERSION%%.*} == 3 ] +then + BUILD_DIR=`pwd` + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc +fi +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake + +# weird behavior - bug in Paraview OSpray generation. LATA will fail to link otherwise on Fedora 26 +if [ -n "$OSPRAY_ROOT_DIR" ] +then + sed -i 's/;ospray::ospray//g' ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake + sed -i 's/;ospray::ospray//g' ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/ParaViewTargets.cmake + sed -i 's/;ospray::ospray//g' ${PRODUCT_INSTALL}/lib/cmake/qttesting/ParaViewTargets.cmake +fi + +# && sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake + +# OP 17/07/2018 post-install suppressed for SALOME master test +# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above + + + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat b/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat new file mode 100644 index 0000000..f5a523e --- /dev/null +++ b/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat @@ -0,0 +1,201 @@ +@echo off + +echo ########################################################################## +echo ParaView %VERSION% %PYTHON_VERSION% %PYTHON_VERSION:.=% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +set CMAKE_OPTIONS= + +set PVLIBVERSION=5.6 + +set python_name=python%PYTHON_VERSION% + +REM verbose log +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE=ON + +REM common settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_TESTING:BOOL=OFF + +REM Paraview general settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_MPI:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF + + +REM VTK general settings +REM # issue 1779 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_64BIT_IDS:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_NO_PYTHON_THREADS:BOOL=OFF + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-%PVLIBVERSION% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-%PVLIBVERSION% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-%PVLIBVERSION%/plugins +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTKm_INSTALL_LIB_DIR=lib/paraview-%PVLIBVERSION% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF + +REM OpenGL2 backend for performance improvment +REM https://blog.kitware.com/new-opengl-rendering-in-vtk/ +REM OpenGl2 mandatory in this version of paraview +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_RENDERING_BACKEND:STRING=OpenGL2 + +REM OpenMP to speed computation of some filters +REM https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +REM https://blog.kitware.com/accelerated-filters-in-paraview-5/ +REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP + +REM Qt settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_QT_GUI:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_QT_VERSION=5 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_HELP_GENERATOR:STRING=%QT5_ROOT_DIR:\=/%/bin/qhelpgenerator.exe + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF +REM # additionaly for windows +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_QMAKE_EXECUTABLE:STRING=%QT5_ROOT_DIR:\=/%/bin/qmake.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_BINARY_DIR:STRING=%QT5_ROOT_DIR:\=/%/bin/ + +REM # Python settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_PYTHON:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_PYTHON:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE:STRING=%PYTHON_ROOT_DIR:\=/%/python.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_LIBRARY:STRING=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WINDOWS_PYTHON_DEBUGGABLE:BOOL=OFF +REM No tcl tk wrap +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_JAVA:BOOL=OFF + +REM HDF5 settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_HDF5:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_INCLUDE_DIRS:STRING=%HDF5_ROOT_DIR:\=/%/include + +set LIST_HDF5_LIBRARIES=%HDF5_ROOT_DIR:\=/%/lib/hdf5_cpp.lib +set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl_cpp.lib +set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5.lib +set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_LIBRARIES:STRING=%LIST_HDF5_LIBRARIES% + +REM VisIt Database bridge settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_VISITBRIDGE=ON + +REM Boost settings (needed when activating VisIt bridge) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0 1.67" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +REM gl2ps settings +REM VTK and system gl2ps conflict resolution +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_GL2PS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_INCLUDE_DIR:STRING=%GL2PS_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_LIBRARY:STRING=%GL2PS_ROOT_DIR:\=/%/lib/gl2ps.lib + +REM # libxml2 settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_INCLUDE_DIR:STRING=%LIBXML2_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_LIBRARIES:STRING=%LIBXML2_ROOT_DIR:\=/%/lib/libxml2.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_XMLLINT_EXECUTABLE=%LIBXML2_ROOT_DIR:\=/%/bin/xmllint.exe + +REM # freetype settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIR_freetype2:STRING=%FREETYPE_ROOT_DIR:\=/%/include/freetype2 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_LIBRARY:STRING=%FREETYPE_ROOT_DIR:\=/%/lib/freetype.lib + +REM Extra options (switch off non-used Paraview plug-ins) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_VTKmFilters:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_CATALYST_ADAPTORS:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_WEB=OFF + +REM Extra options (switch on required Paraview plug-ins) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_FIND_REQUIRED:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_INCLUDE_DIR:STRING=%CGNS_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_LIBRARY:STRING=%CGNS_ROOT_DIR:\=/%/lib/cgns.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_CGNS:BOOL=ON + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + +cd %BUILD_DIR% +echo. +echo INFO: running command: %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + + +REM in order to fullfill some prerequistes by GUI! +cd %PRODUCT_INSTALL%\bin +mkdir Lib +MOVE /Y site-packages Lib\site-packages + +REM move +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo -------------------------------------------------------------------------- +echo *** Post processing +echo -------------------------------------------------------------------------- +echo. + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh b/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh new file mode 100755 index 0000000..b3c6dc8 --- /dev/null +++ b/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh @@ -0,0 +1,254 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + +rm -Rf $PRODUCT_INSTALL + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` +export python_name=python$PYTHON_VERSION + +CMAKE_OPTIONS="" + +### verbose log +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON" + +### common settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF" + + +### compiler settings +# OP TEST +#if [[ $BITS == "64" ]] +#then +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +# CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" +#fi +# OP 29/05/2018 Add 2 options used by BO +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64" + +### Paraview general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF" + # OP 11/04/2018 Option not used + # CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Option not used + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF" +fi + +### VTK general settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF" # issue 1779 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF" # Make sure Python is thread-safe in ParaView + +# OP inhibit embedded Pygments and use the system (or SALOME) one +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON" + +# TA - OP 17/01/2018 Add options for ParaView libraries installation +# due to latest version of ParaView-b5c4c893 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" + +### OpenGL2 backend for performance improvment +# https://blog.kitware.com/new-opengl-rendering-in-vtk/ +# OpenGl2 mandatory in this version of paraview +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2" +### OpenMP to speed computation of some filters +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +# https://blog.kitware.com/accelerated-filters-in-paraview-5/ +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" + +### Qt settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON" +if [ -n "$QT5_ROOT_DIR" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5" + # OP 29/05/2018 Add option used by BO + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator" +fi +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF" + +### Python settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON" + +# OP 29/05/2018 Add option used by BO +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON" + +if [ -n "$PYTHONHOME" ] +then + # with a native python, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}" + if [ ${PYTHON_VERSION%%.*} == 3 ] + then + # OP TEST + #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/lib${python_name}.so" + else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so" + fi +fi + +### No tcl tk wrap +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF" + +### HDF5 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON" +# OP 11/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON" + +### VisIt Database bridge settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON" + +### Boost settings (needed when activating VisIt bridge) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}" + +### gl2ps settings +# VTK and system gl2ps conflict resolution +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON" +if [ -n "$GL2PS_ROOT_DIR" ] +then + # with a native gl2ps, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so" +fi + +### libxml2 settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON" +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON" + +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options (switch off non-used Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF" + +### Extra options (switch on required Paraview plug-ins) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON" + +# OP 29/05/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON" + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON" + +# OP 10/04/2018 Add cgns prerequisite for import/export in CGNS format +# OP 10/04/2018 Option not used +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so" +# OP TEST +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON" +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi +if [ ${PYTHON_VERSION%%.*} == 3 ] +then + BUILD_DIR=`pwd` + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo + cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc +fi +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \ +sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake + +# && sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake + +# OP 17/07/2018 post-install suppressed for SALOME master test +# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above + + + +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView.bat b/products/compil_scripts/ParaView.bat new file mode 100644 index 0000000..1efac77 --- /dev/null +++ b/products/compil_scripts/ParaView.bat @@ -0,0 +1,194 @@ +@echo off + +echo ########################################################################## +echo ParaView %VERSION% %PYTHON_VERSION% %PYTHON_VERSION:.=% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +set CMAKE_OPTIONS= + +set PVLIBVERSION=5.8 + +set python_name=python%PYTHON_VERSION% + +REM common compiler and install settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% + +REM common ParaView settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_LIBDIR:STRING=lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_TESTING:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON + +REM OpenGL settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DOpenGL_GL_PREFERENCE:STRING=LEGACY + +REM Ray-tracing settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_RAYTRACING:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_ENABLE_OSPRAY:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -Dospray_DIR:PATH=%OSPRAY_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -Dembree_DIR:PATH=%EMBREE_ROOT_DIR:\=/% + +REM Paraview general settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_VERSION:STRING=3 + +REM VTK general settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_64BIT_IDS:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-%PVLIBVERSION% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-%PVLIBVERSION% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTKm_INSTALL_LIB_DIR=lib/paraview-%PVLIBVERSION% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_RenderingLOD:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_FiltersCore:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_CommonCore:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_IOCore:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_IOEnSight:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_IOInfovis:INTERNAL=YES + +REM TBB settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DTBB_ROOT:PATH=%TBB_ROOT_DIR:\=/% + +REM Qt settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_QT:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF + +REM Python settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_PYTHON:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_PYTHON:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPython3_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPython3_LIBRARY:STRING=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_NO_PYTHON_THREADS:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_VERSION:STRING=3 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WINDOWS_PYTHON_DEBUGGABLE:BOOL=OFF + +REM Java settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_JAVA:BOOL=OFF + +REM MPI settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_MPI:BOOL=OFF + +REM HDF5 settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_DIR:PATH=%HDF5_ROOT_DIR:\=/%/cmake/hdf5 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_INCLUDE_DIRS:PATH=%HDF5_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF + +REM CGNS +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_ParaView_cgns:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_INCLUDE_DIR:PATH=%CGNS_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_LIBRARY:STRING=%CGNS_ROOT_DIR:\=/%/lib/cgnsdll.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_ParaView_cgns:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSReader:INTERNAL=YES +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSWriter:INTERNAL=YES + +REM VisIt Database bridge settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_VISITBRIDGE:BOOL=ON + +REM Boost settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0 1.67" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_NO_BOOST_CMAKE:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_NO_SYSTEM_PATHS:BOOL=ON + +REM libxml2 settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_INCLUDE_DIR:STRING=%LIBXML2_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_LIBRARIES:STRING=%LIBXML2_ROOT_DIR:\=/%/lib/libxml2.lib +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_XMLLINT_EXECUTABLE=%LIBXML2_ROOT_DIR:\=/%/bin/xmllint.exe + +REM gl2ps settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF + +REM freetype settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIRS:PATH=%FREETYPE_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIR_freetype2:PATH=%FREETYPE_ROOT_DIR:\=/%/include/freetype2 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_LIBRARY:STRING=%FREETYPE_ROOT_DIR:\=/%/lib/freetype.lib + +REM ZLIB settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_zlib:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_INCLUDE_DIR:STRING=%ZLIB_ROOT_DIR:\=/%/include +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_LIBRARY:STRING=%ZLIB_ROOT_DIR:\=/%/bin/zlib1.lib + +REM Extra options (switch off non-used Paraview plug-ins) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGINS_DEFAULT:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_Moments:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_SLACTools:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_SierraPlotTools:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_PacMan:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_pvblot:BOOL=OFF + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + +cd %BUILD_DIR% +echo. +echo INFO: running command: %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +REM in order to fullfill some prerequistes by GUI! +cd %PRODUCT_INSTALL%\bin +mkdir Lib +MOVE /Y site-packages Lib\site-packages + +REM move +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo -------------------------------------------------------------------------- +echo *** Post processing +echo -------------------------------------------------------------------------- +echo. + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaView.sh b/products/compil_scripts/ParaView.sh new file mode 100755 index 0000000..7816c57 --- /dev/null +++ b/products/compil_scripts/ParaView.sh @@ -0,0 +1,206 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaView" $VERSION +echo "##########################################################################" + + +PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'` + +CMAKE_OPTIONS="" + +### common compiler and install settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_FLAGS:STRING=-m64" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_FLAGS:STRING=-m64" + +### common ParaView settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_BUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_LIBDIR:STRING=lib" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBUILD_TESTING:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON" + +### OpenGL settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DOpenGL_GL_PREFERENCE:STRING=LEGACY" + +### Ray-tracing settings +if [ -n "$OSPRAY_ROOT_DIR" ] +then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_RAYTRACING:BOOL=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_ENABLE_OSPRAY:BOOL=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -Dospray_DIR:PATH=${OSPRAY_ROOT_DIR}/lib/cmake/ospray-${OSPRAY_VERSION}" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -Dembree_DIR:PATH=${EMBREE_ROOT_DIR}/lib/cmake/embree-${EMBREE_VERSION}" +else + echo "WARNING: Paraview will be built without OSPRAY support!" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_RAYTRACING:BOOL=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_OSPRAY:BOOL=OFF" +fi + +### VTK general settings +if [ -n "$SALOME_USE_64BIT_IDS" ] +then + echo "WARNING: user requested VTK 64 bits encoding..." + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_USE_64BIT_IDS:BOOL=ON" +else + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_USE_64BIT_IDS:BOOL=OFF" +fi +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}" + +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF" + +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_RenderingLOD:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_FiltersCore:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_CommonCore:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_IOCore:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_IOEnSight:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_IOInfovis:INTERNAL=YES" + +### TBB settings (in case of a system installation, TBB will be detected automatically) +if [ -n "$TBB_ROOT_DIR" ] +then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DTBB_ROOT:PATH=${TBB_ROOT_DIR}" +fi + +### Qt settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_QT:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF" + +### Python settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_PYTHON:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON" +if [ "${PYTHON_ROOT_DIR}" == "/usr" ] +then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}m" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib64/libpython${PYTHON_VERSION}m.so" +else + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so" +fi +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_NO_PYTHON_THREADS:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_PYTHON_VERSION:STRING=3" + +### Java settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_JAVA:BOOL=OFF" + +### MPI settings +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_MPI:BOOL=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP -DVTKm_ENABLE_OPENMP=ON" +else + echo "WARNING: MPI will not be supported!" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_MPI:BOOL=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER:STRING=`which g++`" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_COMPILER:STRING=`which gcc`" +fi + +### HDF5 settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}" + +### CGNS +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_ParaView_cgns:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCGNS_INCLUDE_DIR:PATH=${CGNS_ROOT_DIR}/include" +if [ "$CGNS_ROOT_DIR" == "/usr" ] +then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCGNS_LIBRARY:PATH=${CGNS_ROOT_DIR}/lib64/libcgns.so" +else + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCGNS_LIBRARY:PATH=${CGNS_ROOT_DIR}/lib/libcgns.so" +fi +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_ParaView_cgns:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSReader:INTERNAL=YES" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSWriter:INTERNAL=YES" + +### VisIt Database bridge settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_VISITBRIDGE:BOOL=ON" + +### Boost settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBOOST_ROOT:PATH=${BOOST_ROOT_DIR}" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBoost_NO_BOOST_CMAKE:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBoost_NO_SYSTEM_PATHS:BOOL=ON" + +### gl2ps settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF" + +### libxml2 settings +if [ -n "$LIBXML2_ROOT_DIR" ] +then + # with a native libxml2, do not use these options + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2" + if [ "${LIBXML2_ROOT_DIR}" == "/usr" ] + then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib64/libxml2.so" + else + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so" + fi + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint" +fi + +### freetype settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON" +if [ -n "$FREETYPE_ROOT_DIR" ] +then + # with a native freetype, do not use these options + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so" +fi + +### Extra options +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGINS_DEFAULT:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_Moments:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_SLACTools:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_SierraPlotTools:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_PacMan:BOOL=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_pvblot:BOOL=OFF" + +echo +echo "*** cmake" ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +# SPN #18779 +MEMTOTAL=$(cat /proc/meminfo | grep MemTotal | awk ' {print $2}') +MEMTHRESHOLD=15000000 +if [ "$MEMTOTAL" -lt "$MEMTHRESHOLD" ] || [ -n "$SAT_PARAVIEW_FORCE_MAKE_J1" ]; then + echo "WARNING: ParaView build requires large memory for VTKm compilation step..." + echo "WARNING: ParaView build requires large memory for VTKm compilation step..." + echo "WARNING: Available RAM is smaller than 16GB... using -j 1" + MAKE_OPTIONS="-j 1 " +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ParaViewData.sh b/products/compil_scripts/ParaViewData.sh new file mode 100755 index 0000000..eaa7255 --- /dev/null +++ b/products/compil_scripts/ParaViewData.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ParaViewData" $VERSION +echo "##########################################################################" + + + +mkdir -p $PRODUCT_INSTALL +cp -a $SOURCE_DIR/* $PRODUCT_INSTALL + +echo +echo "########## END" + diff --git a/products/compil_scripts/PyQt-5.6.bat b/products/compil_scripts/PyQt-5.6.bat new file mode 100644 index 0000000..89db176 --- /dev/null +++ b/products/compil_scripts/PyQt-5.6.bat @@ -0,0 +1,64 @@ +@echo off + +echo ########################################################################## +echo PyQt %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\Python" +set python_exe=%RETVAL%\python.exe +set python_name=python%PYTHON_VERSION% + +call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\sip" +set sip_incdir=%RETVAL%\include\%python_name% + +echo. +echo -------------------------------------------------------------------------- +echo *** python configure.py +echo -------------------------------------------------------------------------- + +python configure.py --confirm-license --no-designer-plugin --bindir=%PRODUCT_INSTALL%\bin --destdir=%PRODUCT_INSTALL%\lib\%python_name%\site-packages --sipdir=%PRODUCT_INSTALL%\sip --spec=win32-msvc --sip-incdir=%sip_incdir% --pyuic5-interpreter=%python_exe% --disable QtNfc 2>&1 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on python configure.py + exit 1 +) + +REM Compilation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake +echo -------------------------------------------------------------------------- + +nmake VERBOSE=1 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake + exit 2 +) + +REM Installation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install +echo -------------------------------------------------------------------------- + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo. +echo ########## END + +:: ========== FUNCTIONS ========== +EXIT /B + +:NORMALIZEPATH + SET RETVAL=%~dpfn1 + EXIT /B \ No newline at end of file diff --git a/products/compil_scripts/PyQt-5.6.sh b/products/compil_scripts/PyQt-5.6.sh new file mode 100755 index 0000000..35584a2 --- /dev/null +++ b/products/compil_scripts/PyQt-5.6.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo "##########################################################################" +echo "PyQt" $VERSION +echo "##########################################################################" + + + +python_name=python$PYTHON_VERSION + +echo `env` + +echo +echo "*** configure" +python $SOURCE_DIR/configure.py --confirm-license --no-designer-plugin \ + --bindir=${PRODUCT_INSTALL}/bin \ + --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \ + --sipdir=${PRODUCT_INSTALL}/sip 2>&1 +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/PyQt-5.9.bat b/products/compil_scripts/PyQt-5.9.bat new file mode 100644 index 0000000..ebd688f --- /dev/null +++ b/products/compil_scripts/PyQt-5.9.bat @@ -0,0 +1,64 @@ +@echo off + +echo ########################################################################## +echo PyQt %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\Python" +set python_exe=%RETVAL%\python.exe +set python_name=python%PYTHON_VERSION% + +call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\sip" +set sip_incdir=%RETVAL%\include\%python_name% + +echo. +echo -------------------------------------------------------------------------- +echo *** python configure.py +echo -------------------------------------------------------------------------- + +python configure.py --confirm-license --no-designer-plugin --bindir=%PRODUCT_INSTALL%\bin --destdir=%PRODUCT_INSTALL%\lib\%python_name%\site-packages --sipdir=%PRODUCT_INSTALL%\sip --spec=win32-msvc --sip-incdir=%sip_incdir% --pyuic5-interpreter=%python_exe% --disable QtNfc --disable=QtNetwork --disable=QtWebSockets 2>&1 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on python configure.py + exit 1 +) + +REM Compilation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake +echo -------------------------------------------------------------------------- + +nmake VERBOSE=1 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake + exit 2 +) + +REM Installation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install +echo -------------------------------------------------------------------------- + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo. +echo ########## END + +:: ========== FUNCTIONS ========== +EXIT /B + +:NORMALIZEPATH + SET RETVAL=%~dpfn1 + EXIT /B \ No newline at end of file diff --git a/products/compil_scripts/PyQt-5.9.sh b/products/compil_scripts/PyQt-5.9.sh new file mode 100755 index 0000000..c44adf1 --- /dev/null +++ b/products/compil_scripts/PyQt-5.9.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +echo "##########################################################################" +echo "PyQt" $VERSION +echo "##########################################################################" + + + +python_name=python$PYTHON_VERSION + +# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9 +# On fait tout dans les sources +#CURRENT_DIR=`pwd` +cd $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on $SOURCE_DIR access" + exit 1 +fi + + +echo +echo "*** configure.py --confirm-license --no-designer-plugin --verbose --bindir=${PRODUCT_INSTALL}/bin --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages --sipdir=${PRODUCT_INSTALL}/sip --disable=QtNetwork --disable=QtWebSockets" +$PYTHONBIN ./configure.py --confirm-license --no-designer-plugin --verbose \ + --bindir=${PRODUCT_INSTALL}/bin \ + --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \ + --sipdir=${PRODUCT_INSTALL}/sip \ + --disable=QtNetwork --disable=QtWebSockets 2>&1 + +if [ $? -ne 0 ] +then + echo "ERROR on configure" +# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9 +# On fait tout dans les sources +# exit 1 +# cd $CURRENT_DIR + exit 2 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" +# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9 +# On fait tout dans les sources +# exit 2 +# cd $CURRENT_DIR + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" +# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9 +# On fait tout dans les sources +# exit 3 +# cd $CURRENT_DIR + exit 4 +fi + +# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9 +# Ajout du make clean +echo +echo "*** make clean" +make clean +if [ $? -ne 0 ] +then + echo "ERROR on make clean" +# cd $CURRENT_DIR + exit 5 +fi + + +echo +echo "########## END" + +exit 0 + diff --git a/products/compil_scripts/PyQt.sh b/products/compil_scripts/PyQt.sh new file mode 100755 index 0000000..2756619 --- /dev/null +++ b/products/compil_scripts/PyQt.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +echo "##########################################################################" +echo "PyQt" $VERSION +echo "##########################################################################" + + + +python_name=python$PYTHON_VERSION + +echo `env` + +echo +echo "*** configure" +python $SOURCE_DIR/configure.py --confirm-license --no-designer-plugin --verbose \ + --bindir=${PRODUCT_INSTALL}/bin \ + --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \ + --sipdir=${PRODUCT_INSTALL}/sip 2>&1 +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + + +echo +echo "########## END" + diff --git a/products/compil_scripts/PyQt_5_5_1.bat b/products/compil_scripts/PyQt_5_5_1.bat new file mode 100755 index 0000000..f29ab2d --- /dev/null +++ b/products/compil_scripts/PyQt_5_5_1.bat @@ -0,0 +1,64 @@ +@echo off + +echo ########################################################################## +echo PyQt 5.6 %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\Python" +set python_exe=%RETVAL%\python.exe +set python_name=python%PYTHON_VERSION% + +call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\sip" +set sip_incdir=%RETVAL%\include\%python_name% + +echo. +echo -------------------------------------------------------------------------- +echo *** python configure.py +echo -------------------------------------------------------------------------- + +python configure.py --confirm-license --no-designer-plugin --bindir=%PRODUCT_INSTALL%\bin --destdir=%PRODUCT_INSTALL%\lib\%python_name%\site-packages --sipdir=%PRODUCT_INSTALL%\sip --spec=win32-msvc2010 --sip-incdir=%sip_incdir% --pyuic5-interpreter=%python_exe% --disable QtNfc 2>&1 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on python configure.py + exit 1 +) + +REM Compilation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake +echo -------------------------------------------------------------------------- + +nmake VERBOSE=1 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake + exit 2 +) + +REM Installation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install +echo -------------------------------------------------------------------------- + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo. +echo ########## END + +:: ========== FUNCTIONS ========== +EXIT /B + +:NORMALIZEPATH + SET RETVAL=%~dpfn1 + EXIT /B \ No newline at end of file diff --git a/products/compil_scripts/PyQt_5_5_1.sh b/products/compil_scripts/PyQt_5_5_1.sh new file mode 100755 index 0000000..35584a2 --- /dev/null +++ b/products/compil_scripts/PyQt_5_5_1.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo "##########################################################################" +echo "PyQt" $VERSION +echo "##########################################################################" + + + +python_name=python$PYTHON_VERSION + +echo `env` + +echo +echo "*** configure" +python $SOURCE_DIR/configure.py --confirm-license --no-designer-plugin \ + --bindir=${PRODUCT_INSTALL}/bin \ + --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \ + --sipdir=${PRODUCT_INSTALL}/sip 2>&1 +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/Pygments.bat b/products/compil_scripts/Pygments.bat new file mode 100755 index 0000000..03ee1e3 --- /dev/null +++ b/products/compil_scripts/Pygments.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo Pygments %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages" +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) + +echo +echo "########## END" diff --git a/products/compil_scripts/Pygments.sh b/products/compil_scripts/Pygments.sh new file mode 100755 index 0000000..0648b58 --- /dev/null +++ b/products/compil_scripts/Pygments.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Pygments" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH} + +## unset PYTHONDONTWRITEBYTECODE set by default on MD10 +#PYTHONDONTWRITEBYTECODE= + +echo +echo "*** setup.py" +python setup.py install --prefix=${PRODUCT_INSTALL} --install-lib ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/Python-3.6.5.bat b/products/compil_scripts/Python-3.6.5.bat new file mode 100644 index 0000000..8112a59 --- /dev/null +++ b/products/compil_scripts/Python-3.6.5.bat @@ -0,0 +1,166 @@ +@echo off + +echo ########################################################################## +echo Python %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +if %SAT_DEBUG% == 1 ( + set PRODUCT_BUILD_TYPE=Debug +) + +SET LIB_TAG= +if %SAT_DEBUG% == 1 ( + set LIB_TAG=_d +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\libs" mkdir %PRODUCT_INSTALL%\libs +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET MSBUILDDISABLENODEREUSE=1 + +cd %SOURCE_DIR%\PCbuild + +REM Upgrade to current version of MSVC +echo. +echo *** devenv pcbuild.sln /upgrade +devenv pcbuild.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 1 +) + + +echo. +REM echo Extracting nasm... +if exist "%SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06" +if exist "%SOURCE_DIR%\externals\nasm-2.11.06" rmdir /Q /S "%SOURCE_DIR%\externals\nasm-2.11.06" +7z x -y %SOURCE_DIR%\externals\zips\nasm-2.11.06.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06 %SOURCE_DIR%\externals\nasm-2.11.06 + +REM echo Extracting openssl... +if exist "%SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k" +if exist "%SOURCE_DIR%\externals\openssl-1.0.2k" rmdir /Q /S "%SOURCE_DIR%\externals\openssl-1.0.2k" +7z x -y %SOURCE_DIR%\externals\zips\openssl-1.0.2k.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k %SOURCE_DIR%\externals\openssl-1.0.2k + +REM echo Extracting sqlite... +if exist "%SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0" +if exist "%SOURCE_DIR%\externals\sqlite-3.21.0.0" rmdir /Q /S "%SOURCE_DIR%\externals\sqlite-3.21.0.0" +7z x -y %SOURCE_DIR%\externals\zips\sqlite-3.21.0.0.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0 %SOURCE_DIR%\externals\sqlite-3.21.0.0 + +REM echo Extracting xz... +if exist "%SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2" +if exist "%SOURCE_DIR%\externals\xz-5.2.2" rmdir /Q /S "%SOURCE_DIR%\externals\xz-5.2.2" +7z x -y %SOURCE_DIR%\externals\zips\xz-5.2.2.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2 %SOURCE_DIR%\externals\xz-5.2.2 + +REM echo Extracting xz... +if exist "%SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6" +if exist "%SOURCE_DIR%\externals\bzip2-1.0.6" rmdir /Q /S "%SOURCE_DIR%\externals\bzip2-1.0.6" +7z x -y %SOURCE_DIR%\externals\zips\bzip2-1.0.6.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6 %SOURCE_DIR%\externals\bzip2-1.0.6 + +REM echo Extracting pip... +if exist "%SOURCE_DIR%\externals\pip-19.1.1" rmdir /Q /S "%SOURCE_DIR%\externals\pip-19.1.1" +7z x -y %SOURCE_DIR%\externals\zips\pip-19.1.1.zip -o%SOURCE_DIR%\externals + +REM Compilation + +cd %SOURCE_DIR% +echo. +echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 /p:BuildProjectReferences=false /p:OutDir=%PRODUCT_INSTALL%\ +msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 /p:OutDir=%PRODUCT_INSTALL%\ +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 2 +) + +REM Installation of additional files +echo. +echo *** Installation of additional files +cd .. +xcopy /Y /I /E %SOURCE_DIR%\include %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy include + exit 3 +) + +copy /Y %SOURCE_DIR%\PC\pyconfig.h %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copy PC\pyconfig.h + exit 4 +) + +xcopy /Y /I /E %SOURCE_DIR%\lib %PRODUCT_INSTALL%\lib +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy lib + exit 5 +) + +REM some prequistes if compiled in Debug mode require the lib to be in folder libs +REM other ones require these static lib to be in the root directory +REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode. +xcopy /Y %PRODUCT_INSTALL%\*.lib %PRODUCT_INSTALL%\libs\ +if NOT %ERRORLEVEL% == 0 ( + echo ERROR could not copy static libraries + exit 6 +) + +REM on purpose, we don't use mklink +copy /Y /B %PRODUCT_INSTALL%\python%LIB_TAG%.exe %PRODUCT_INSTALL%\python3.exe + +REM some prequistes the DLL to be renamed +REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode. +cd %PRODUCT_INSTALL%\ +if %SAT_DEBUG% == 1 ( + FOR %%G IN (python3 python python36 sqlite3 pyshellext) DO copy /Y /B %PRODUCT_INSTALL%\%%G%LIB_TAG%.dll %PRODUCT_INSTALL%\%%G.dll +) + +REM some of the products expect .lib instead of _d.lib... +REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode. +cd %PRODUCT_INSTALL%\libs\ +if %SAT_DEBUG% == 1 ( + SETLOCAL ENABLEDELAYEDEXPANSION + FOR %%f IN (*_d.lib) do ( + set X=%%f + copy /Y /B %PRODUCT_INSTALL%\libs\%%f %PRODUCT_INSTALL%\libs\!X:_d.lib=.lib! + copy /Y /B %PRODUCT_INSTALL%\%%f %PRODUCT_INSTALL%\!X:_d.lib=.lib! + ) + ENDLOCAL +) + +cd %PRODUCT_INSTALL%\ +powershell -Command "Get-ChildItem *_d.exe| Rename-Item -newname { $_.name -replace '_d.exe','.exe' }" +REM powershell -Command "Get-ChildItem *_d.dll| Rename-Item -newname { $_.name -replace '_d.dll','.dll' }" +REM powershell -Command "Get-ChildItem *_d.pdb| Rename-Item -newname { $_.name -replace '_d.pdb','.pdb' }" +REM powershell -Command "Get-ChildItem *_d.pyd| Rename-Item -newname { $_.name -replace '_d.pyd','.pyd' }" +REM powershell -Command "Get-ChildItem *_d.exp| Rename-Item -newname { $_.name -replace '_d.exp','.exp' }" +REM powershell -Command "Get-ChildItem *_d.ilk| Rename-Item -newname { $_.name -replace '_d.ilk','.ilk' }" + +REM Add PIP support +set PYTHONHOME=%PRODUCT_INSTALL% +set PYTHON_ROOT_DIR=%PRODUCT_INSTALL% +set PYTHON_VERSION=3.6 +set PATH=%PRODUCT_INSTALL%;%PATH% +set PATH=%PRODUCT_INSTALL%\lib;%PATH% +set PYTHON_INCLUDE=%PRODUCT_INSTALL%\include +set PYTHONPATH=%PRODUCT_INSTALL%\lib;%PYTHONPATH% +set PYTHONPATH=%PRODUCT_INSTALL%\lib\site-packages;%PYTHONPATH% +set PYTHONBIN=%PRODUCT_INSTALL%\python.exe +set PATH=%PRODUCT_INSTALL%\Scripts;%PATH% + +%PRODUCT_INSTALL%\python.exe %SOURCE_DIR%\externals\pip-19.1.1\get-pip.py --force-reinstall --no-setuptools --no-wheel --no-index --find-links=%SOURCE_DIR%\externals\pip-19.1.1 + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/Python.bat b/products/compil_scripts/Python.bat new file mode 100755 index 0000000..29a10fa --- /dev/null +++ b/products/compil_scripts/Python.bat @@ -0,0 +1,106 @@ +@echo off + +echo ########################################################################## +echo Python %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\libs" mkdir %PRODUCT_INSTALL%\libs +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set buildConfiguration=Debug + +SET MSBUILDDISABLENODEREUSE=1 + +SET TargetPlatformVersion=10.0.17134.0 +cd %SOURCE_DIR%\PCbuild + +REM Upgrade to current version of MSVC +echo. +echo *** devenv pcbuild.sln /upgrade +devenv pcbuild.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 1 +) + +cd %BUILD_DIR% + +echo. +REM echo Extracting nasm... +7z x -y %SOURCE_DIR%\externals\zips\nasm-2.11.06.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06 %SOURCE_DIR%\externals\nasm-2.11.06 + +REM echo Extracting openssl... +7z x -y %SOURCE_DIR%\externals\zips\openssl-1.0.2k.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k %SOURCE_DIR%\externals\openssl-1.0.2k + +REM echo Extracting sqlite... +7z x -y %SOURCE_DIR%\externals\zips\sqlite-3.14.2.0.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.14.2.0 %SOURCE_DIR%\externals\sqlite-3.14.2.0 + +REM echo Extracting xz... +7z x -y %SOURCE_DIR%\externals\zips\xz-5.2.2.zip -o%SOURCE_DIR%\externals +mv %SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2 %SOURCE_DIR%\externals\xz-5.2.2 + +REM Compilation + +echo. +echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% /p:BuildProjectReferences=false +msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 2 +) + +REM Installation +echo. +echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln %MAKE_OPTIONS% %MAKE_OPTIONS% %LIST_OF_PROJECTS% /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% /p:BuildProjectReferences=false /p:OutDir=%PRODUCT_INSTALL%\ +msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln %MAKE_OPTIONS% /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% /p:OutDir=%PRODUCT_INSTALL%\ +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 3 +) + +REM Installation of additional files +echo. +echo *** Installation of additional files +cd .. +xcopy /i %SOURCE_DIR%\include %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy include + exit 4 +) + +copy %SOURCE_DIR%\PC\pyconfig.h %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copy PC\pyconfig.h + exit 5 +) + +xcopy /i /e %SOURCE_DIR%\lib %PRODUCT_INSTALL%\lib +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy lib + exit 6 +) + +xcopy /i %PRODUCT_INSTALL%\python3.lib %PRODUCT_INSTALL%\libs +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy python3.lib + exit 7 +) + +xcopy /i %PRODUCT_INSTALL%\python36.lib %PRODUCT_INSTALL%\libs +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy python36.lib + exit 8 +) + +robocopy %PRODUCT_INSTALL%\python.exe %PRODUCT_INSTALL%\python3.exe /Y + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/Python.sh b/products/compil_scripts/Python.sh new file mode 100755 index 0000000..4f5be6a --- /dev/null +++ b/products/compil_scripts/Python.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Python" $VERSION +echo "##########################################################################" + +if [ ${#VERSION} -lt 5 ] +then + echo "ERROR : VERSION argument of Python compilation script has not the expected x.y.z format" + exit 1 +fi +PYTHON_VERSION="${VERSION:0:3}" +PYTHON_VERSION_MAJ=${PYTHON_VERSION:0:1} + + +function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } +if version_ge $VERSION "3.6"; then + echo "*** Python version is newer than version 3.6 ..." + # --enable-shared : enable building shared python library + # --with-threads : enable thread support + # --without-pymalloc: disable specialized mallocs + # --with-ensurepip : installation using bundled pip + # --enable-optimizations: recommandé et utilisé par Nijni -> mais trop long! + CONFIGURE_ARGUMENTS="--enable-shared --with-threads --without-pymalloc --with-ensurepip=install" +else + echo "*** Python version is older than version 3.6 ..." + CONFIGURE_ARGUMENTS="--enable-shared --with-threads --without-pymalloc --enable-unicode=ucs4" +fi + +echo +echo "*** configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS" +$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +if [ ${PYTHON_VERSION_MAJ} == 3 ] +then + # OP trick for Python 3.6.1 + #cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION} + cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}* +else + cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config +fi + +if [ ! -e libpython${PYTHON_VERSION}.so ] +then + echo + echo "*** create missing link" + ln -sf ../../libpython${PYTHON_VERSION}.so . + if [ $? -ne 0 ] + then + echo "ERROR when creating missing link" + # no error here + fi +fi +if [ ${PYTHON_VERSION_MAJ} == 3 ] +then + cd ${PRODUCT_INSTALL}/bin + ln -s python3 python +fi + +# fix the path... +if version_ge $VERSION "3.6"; then + L="2to3 2to3-3.6 easy_install-3.6 idle3 idle3.6 pip3 pip3.6 pydoc3 pydoc3.6 pyvenv pyvenv-3.6" + cd ${PRODUCT_INSTALL}/bin + for f in $L; do + awk '$0 = NR==1 ? replace : $0' replace="#!/usr/bin/env python3" $f > $f.t && mv $f.t $f && chmod 755 $f + done +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/SOLVERLAB.sh b/products/compil_scripts/SOLVERLAB.sh new file mode 100755 index 0000000..1689cfc --- /dev/null +++ b/products/compil_scripts/SOLVERLAB.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +echo "##########################################################################" +echo "SOLVERLAB" $VERSION +echo "##########################################################################" + + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DDOXYGEN_EXECUTABLE=${DOXYGEN_ROOT_DIR}/bin/doxygen" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCPPUNIT_ROOT_USER=${CPPUNIT_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ROOT=${HDF5_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_ROOT_DIR=${MEDFILE_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPETSC_DIR=${PETSC_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDCOUPLING_ROOT_DIR=${MEDCOUPLING_ROOT_DIR}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_VERSION=5.8" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCDMATH_WITH_PYTHON=OFF" + +echo +echo "*** cmake "$CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make doc install" +make docCDMATH docCoreFlows install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/Sphinx.bat b/products/compil_scripts/Sphinx.bat new file mode 100755 index 0000000..52cc63f --- /dev/null +++ b/products/compil_scripts/Sphinx.bat @@ -0,0 +1,59 @@ +@echo off + +echo ########################################################################## +echo Sphinx %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo "*** rename dir Scripts into bin" +echo -------------------------------------------------------------------------- + +set cur_dir=%CD% +echo we are in directory %cur_dir% +cd %PRODUCT_INSTALL% +echo we are in directory %CD% +echo do the copy +xcopy /i Scripts bin +echo delete dir Scripts +rd /Q /S Scripts +echo go back home +cd %cur_dir% + +echo. +echo ########## END + diff --git a/products/compil_scripts/Sphinx.sh b/products/compil_scripts/Sphinx.sh new file mode 100755 index 0000000..b2d11da --- /dev/null +++ b/products/compil_scripts/Sphinx.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Sphinx" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/TRUST.sh b/products/compil_scripts/TRUST.sh new file mode 100755 index 0000000..b03feae --- /dev/null +++ b/products/compil_scripts/TRUST.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +echo "##########################################################################" +echo "trust" $VERSION +echo "##########################################################################" + + + +echo "Install directory :" +echo $PRODUCT_INSTALL +echo "Build directory :" +echo $BUILD_DIR +echo "Source directory :" +echo $SOURCE_DIR + +mkdir -p ${PRODUCT_INSTALL} + +#cp -rf $BUILD_DIR/TRUST_$VERSION/* $PRODUCT_INSTALL +cp -rf $SOURCE_DIR/* $PRODUCT_INSTALL + +#ORG=$PRODUCT_INSTALL"/TRUST_"$VERSION +#cd $ORG +cd $PRODUCT_INSTALL + +export LANG=C + +#TRUST_VERSION=1.7.3 +TRUST_VERSION=$VERSION +export TRUST_VERSION + +OPTIONS="-disable-gnuplot -disable-valgrind -without-visit -disable-gmsh -disable-plot2d -disable-checks -disable-check_sources" +#OPTIONS="-disable-optionals" +#OPTIONS="-for_appli_salome" + +echo +echo "*** configure" +./configure $OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +source $PRODUCT_INSTALL/env/env_TRUST.sh + +MAKE_OPTIONS="optim" + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/Togl.sh b/products/compil_scripts/Togl.sh new file mode 100755 index 0000000..2140c74 --- /dev/null +++ b/products/compil_scripts/Togl.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Togl" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . +echo +echo "*** configure" +./configure --prefix=${TCLHOME} --with-tcl=${TCLHOME}/lib \ + --with-tk=${TCLHOME}/lib --with-tclinclude=${TCLHOME}/include --with-tkinclude=${TCLHOME}/include +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +mkdir -p $PRODUCT_INSTALL +echo "Togl is installed into tcl dir $TCLHOME" > $PRODUCT_INSTALL/README + +echo +echo "########## END" + diff --git a/products/compil_scripts/TrioCFD.sh b/products/compil_scripts/TrioCFD.sh new file mode 100755 index 0000000..280a3fe --- /dev/null +++ b/products/compil_scripts/TrioCFD.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +echo "##########################################################################" +echo "triocfd" $VERSION +echo "##########################################################################" + + + +echo "Install directory :" +echo $PRODUCT_INSTALL +echo "Build directory :" +echo $BUILD_DIR +echo "Source directory :" +echo $SOURCE_DIR +echo "TRUST directory :" +echo $TRUST_ROOT_DIR + +mkdir -p ${PRODUCT_INSTALL} + +#cp -rf $BUILD_DIR/TrioCFD/* $PRODUCT_INSTALL +cp -rf $SOURCE_DIR/* $PRODUCT_INSTALL + +TRUST_ROOT=$TRUST_ROOT_DIR + +#ORG=$PRODUCT_INSTALL"/TrioCFD" +#cd $ORG +cd $PRODUCT_INSTALL + +export LANG=C + +#TRUST_VERSION=1.7.2 +TRUST_VERSION=$VERSION +export TRUST_VERSION + +source $TRUST_ROOT_DIR/env/env_TRUST.sh + +OPTIONS="" + +echo +echo "*** configure" +baltik_build_configure +./configure $OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +MAKE_OPTIONS="optim debug" + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/XDATA.py b/products/compil_scripts/XDATA.py new file mode 100755 index 0000000..c7b88be --- /dev/null +++ b/products/compil_scripts/XDATA.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def compil(config, builder, logger): + + res_prepare = builder.prepare() + + if platform.system() == "Windows" : + res_configure = builder.cmake() + res_make = builder.wmake() + else: + res_configure = builder.configure() + res_make = builder.make(builder.nb_proc) + + res_install = builder.install() + + res = res_prepare + res_configure + res_install + if res != 0: + res = 1 + + return res diff --git a/products/compil_scripts/YACS.sh b/products/compil_scripts/YACS.sh new file mode 100755 index 0000000..4b2e57f --- /dev/null +++ b/products/compil_scripts/YACS.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +echo "##########################################################################" +echo "YACS" $VERSION +echo "##########################################################################" + + + +echo +echo "*** cmake" +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +#MAKE_OPTIONS=$MAKE_OPTIONS" -j1" + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/YACS.sh1 b/products/compil_scripts/YACS.sh1 new file mode 100644 index 0000000..4b2e57f --- /dev/null +++ b/products/compil_scripts/YACS.sh1 @@ -0,0 +1,40 @@ +#!/bin/bash + +echo "##########################################################################" +echo "YACS" $VERSION +echo "##########################################################################" + + + +echo +echo "*** cmake" +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +#MAKE_OPTIONS=$MAKE_OPTIONS" -j1" + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/YACSGEN.bat b/products/compil_scripts/YACSGEN.bat new file mode 100644 index 0000000..cf85d5f --- /dev/null +++ b/products/compil_scripts/YACSGEN.bat @@ -0,0 +1,39 @@ +@echo off + +echo ########################################################################## +echo YACSGEN %VERSION% +echo ########################################################################## + + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +echo *** build in SOURCE directory +cd %SOURCE_DIR% + + +REM we don't install in python directory -> modify environment as described in INSTALL file +mkdir %PRODUCT_INSTALL%\lib\python%PYTHON_VERSION% +set INSTALL_LIB=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%INSTALL_LIB%" mkdir %INSTALL_LIB% +set PYTHONPATH=%INSTALL_LIB%;%PYTHONPATH% + +set PYTHONPATH=%PYTHONPATH%;%PYTHON_ROOT_DIR% +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%INSTALL_LIB% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%INSTALL_LIB% + exit 1 +) + +echo. +echo YACSGEN installed in %PYTHON_ROOT_DIR% > %PRODUCT_INSTALL%\README.txt + +echo. +echo ########## END diff --git a/products/compil_scripts/YACSGEN.py b/products/compil_scripts/YACSGEN.py new file mode 100755 index 0000000..643d3cc --- /dev/null +++ b/products/compil_scripts/YACSGEN.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- +import subprocess + +def compil(config, builder, logger): + builder.prepare() + if not builder.install_dir.exists(): + builder.install_dir.make() + + command = "python setup.py install --prefix=" + str(builder.install_dir) + res = subprocess.call(command, + shell=True, + #cwd=str(helper.build_dir), + cwd=str(builder.source_dir), + env=builder.build_environ.environ.environ, + stdout=logger.logTxtFile, + stderr=subprocess.STDOUT) + if res != 0: + res = 1 + return res diff --git a/products/compil_scripts/YACSGEN.sh b/products/compil_scripts/YACSGEN.sh new file mode 100755 index 0000000..2c672e8 --- /dev/null +++ b/products/compil_scripts/YACSGEN.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "YACSGEN" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/alabaster.bat b/products/compil_scripts/alabaster.bat new file mode 100755 index 0000000..f8e2f66 --- /dev/null +++ b/products/compil_scripts/alabaster.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo alabaster %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/alabaster.sh b/products/compil_scripts/alabaster.sh new file mode 100755 index 0000000..69cb615 --- /dev/null +++ b/products/compil_scripts/alabaster.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "alabaster" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/boost.bat b/products/compil_scripts/boost.bat new file mode 100755 index 0000000..1eac466 --- /dev/null +++ b/products/compil_scripts/boost.bat @@ -0,0 +1,80 @@ +@echo off + +echo ########################################################################## +echo BOOST %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** Extracting distribution +echo -------------------------------------------------------------------------- + +call :NORMALIZEPATH "boost*exe" +set installer=%RETVAL% +if not exist "%installer%" ( + echo "ERROR no installer found." + exit 1 +) + +echo Installer : %installer% + +call %installer% /SILENT /SP- /NOICONS /NOCANCEL /NORESTART /DIR="%BUILD_DIR%" /LOG="%BUILD_DIR%\boost_install.log" +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on extraction." + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Installation +echo -------------------------------------------------------------------------- + +cd "%BUILD_DIR%" + +echo *** Includes... + +set target_inc=%PRODUCT_INSTALL%\include\boost-1_58\boost +mkdir %target_inc% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when creating include directory : %target_inc% + exit 30 +) + +robocopy %BUILD_DIR%\boost %target_inc% /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying include + exit 31 +) + +echo *** Libs... + +set target_lib=%PRODUCT_INSTALL%\lib +mkdir %target_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when creating lib directory : %target_lib% + exit 32 +) + +rem Visual studio 2010 specific +robocopy %BUILD_DIR%\lib64-msvc-10.0 %target_lib% /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying lib + exit 33 +) + +echo. +echo ########## END + +:: ========== FUNCTIONS ========== +EXIT /B + +:NORMALIZEPATH + SET RETVAL=%~dpfn1 + EXIT /B \ No newline at end of file diff --git a/products/compil_scripts/boost.sh b/products/compil_scripts/boost.sh new file mode 100755 index 0000000..c005b88 --- /dev/null +++ b/products/compil_scripts/boost.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +echo "##########################################################################" +echo "BOOST" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** bootstrap.sh" +./bootstrap.sh --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on bootstrap" + exit 1 +fi + +echo "*** bjam install" + +./bjam install + +if [ $? -ne 0 ] +then + echo "ERROR on bjam install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/boost_V1.67.0.bat b/products/compil_scripts/boost_V1.67.0.bat new file mode 100644 index 0000000..ff595b3 --- /dev/null +++ b/products/compil_scripts/boost_V1.67.0.bat @@ -0,0 +1,44 @@ +@echo off + +echo ########################################################################## +echo BOOST %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=release + +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +call bootstrap.bat + +echo. +echo -------------------------------------------------------------------------- +echo *** Compilation +echo -------------------------------------------------------------------------- +.\bjam --toolset=msvc --prefix=%PRODUCT_INSTALL% address-model=64 --build-type=complete stage variant=%PRODUCT_BUILD_TYPE% threading=multi link=shared runtime-link=shared install + +cd "%BUILD_DIR%" + +MOVE /Y %PRODUCT_INSTALL%\include\boost\boost-1_67 %PRODUCT_INSTALL%\include\boost +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying include + exit 31 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/bsd_xdr.bat b/products/compil_scripts/bsd_xdr.bat new file mode 100755 index 0000000..b81918a --- /dev/null +++ b/products/compil_scripts/bsd_xdr.bat @@ -0,0 +1,54 @@ +@echo off + +echo ########################################################################## +echo bsd-xdr $VERSION +echo ########################################################################## + +if exist "%PRODUCT_INSTALL%" rmdir /Q /S "%PRODUCT_INSTALL%" +mkdir %PRODUCT_INSTALL% + +set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 10 2010 Win64" +) + +set MSBUILDDISABLENODEREUSE=1 + +cd %SOURCE_DIR% + +sed -i "s|# Where netcdf will be installed:||g" cmake\ConfigUser.cmake +sed -i "s|set (CMAKE_INSTALL_PREFIX z:/software)||g" cmake\ConfigUser.cmake +sed -i "s|typedef __int8 int8_t;|// typedef __int8 int8_t;|g" rpc\types.h + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL +echo -------------------------------------------------------------------------- +echo. + +%CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake build" + exit 2 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/bsd_xdr.sh b/products/compil_scripts/bsd_xdr.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/bsd_xdr.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/compil_scripts/certifi.sh b/products/compil_scripts/certifi.sh new file mode 100755 index 0000000..d478e2b --- /dev/null +++ b/products/compil_scripts/certifi.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "certifi" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/cgns.bat b/products/compil_scripts/cgns.bat new file mode 100755 index 0000000..20d9497 --- /dev/null +++ b/products/compil_scripts/cgns.bat @@ -0,0 +1,80 @@ +@echo off + +echo ########################################################################## +echo cgnslib %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release + +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET CMAKE_OPTIONS= +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_C_FLAGS=-DH5_BUILT_AS_DYNAMIC_LIB=1 +REM add hdf5 support (tuleap spns #8161) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_ENABLE_HDF5:BOOL=ON +if DEFINED SAT_HPC ( + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=ON +) else ( + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=OFF +) +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on cgnslib + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +copy src\%PRODUCT_BUILD_TYPE%\cgnsdll.dll src\cgnsdll.dll +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copying cgnsdll.dll + exit 21 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/cgns.sh b/products/compil_scripts/cgns.sh new file mode 100755 index 0000000..bcb2da7 --- /dev/null +++ b/products/compil_scripts/cgns.sh @@ -0,0 +1,55 @@ +#!/bin/bash +echo "##########################################################################" +echo "cgnslib" $VERSION +echo "##########################################################################" + + + +# compilation +echo "cgnslib compilation" + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" + +#add hdf5 support (tuleap spns #8161) +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_ENABLE_HDF5:BOOL=ON" + +if [ -n "$SAT_HPC" ] +then + echo "HPC mode, activate -DHDF5_NEEDS_MPI:BOOL=ON option" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_NEEDS_MPI:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" +fi + +echo +echo "*** cmake" $CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/chardet.sh b/products/compil_scripts/chardet.sh new file mode 100755 index 0000000..1ba9f9c --- /dev/null +++ b/products/compil_scripts/chardet.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "chardet" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/click.sh b/products/compil_scripts/click.sh new file mode 100755 index 0000000..4489eb0 --- /dev/null +++ b/products/compil_scripts/click.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "click" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/cmake.bat b/products/compil_scripts/cmake.bat new file mode 100644 index 0000000..aa6fd1a --- /dev/null +++ b/products/compil_scripts/cmake.bat @@ -0,0 +1,59 @@ +@echo off + +echo ########################################################################## +echo cmake %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +rem # Configuration +rem # According to cmake README, cmake is mandatory for compiling cmake on windows +set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=Release +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) + +set MSBUILDDISABLENODEREUSE=1 + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- +cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj +echo -------------------------------------------------------------------------- +msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj +echo -------------------------------------------------------------------------- +msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/cmake.sh b/products/compil_scripts/cmake.sh new file mode 100755 index 0000000..d0aacdc --- /dev/null +++ b/products/compil_scripts/cmake.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +echo "##########################################################################" +echo "cmake" $VERSION +echo "##########################################################################" + + + +echo +echo "*** bootstrap" +$SOURCE_DIR/bootstrap --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on bootstrap" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/colorama.bat b/products/compil_scripts/colorama.bat new file mode 100755 index 0000000..5331420 --- /dev/null +++ b/products/compil_scripts/colorama.bat @@ -0,0 +1,42 @@ +@echo off + +echo ########################################################################## +echo colorama %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\site-packages +if NOT exist mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/colorama.sh b/products/compil_scripts/colorama.sh new file mode 100755 index 0000000..4a2834f --- /dev/null +++ b/products/compil_scripts/colorama.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +echo "##########################################################################" +echo "colorama" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +python_name=python$PYTHON_VERSION + +echo +echo "*** configure" +python ./configure.py -b ${PRODUCT_INSTALL}/bin \ + -d ${PRODUCT_INSTALL}/lib/${python_name}/site-packages \ + -e ${PRODUCT_INSTALL}/include/${python_name} \ + -v ${PRODUCT_INSTALL}/colorama + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/cppunit.bat b/products/compil_scripts/cppunit.bat new file mode 100755 index 0000000..6327308 --- /dev/null +++ b/products/compil_scripts/cppunit.bat @@ -0,0 +1,94 @@ +@echo off + +echo ########################################################################## +echo cppunit %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo Sources copy into build directory... +echo -------------------------------------------------------------------------- + +robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC /NJH /NJS +if NOT %ERRORLEVEL% == 1 ( + echo ERROR %ERRORLEVEL% on robocopy + exit 1 +) + +REM Upgrade to current version of MSVC +echo. +echo *** devenv %BUILD_DIR%\src\cppunit\cppunit.vcxproj /upgrade +devenv %BUILD_DIR%\src\cppunit\cppunit.vcxproj /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 1 +) + +echo. +echo ------------------------------------------------------------------------------- +echo msbuild cppunit.vcxproj %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo ------------------------------------------------------------------------------- + +cd %BUILD_DIR%\src\cppunit + +msbuild cppunit.vcxproj %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 21 +) + +msbuild cppunit.vcxproj %MAKE_OPTIONS% /p:Configuration=Debug /p:TargetName=cppunitd +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 22 +) + +msbuild cppunit_dll.vcxproj %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 23 +) + +msbuild cppunit_dll.vcxproj %MAKE_OPTIONS% /p:Configuration=Debug /p:TargetName=cppunitd_dll /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 24 +) + +echo. +echo -------------------------------------------------------------------------- +echo Installation +echo -------------------------------------------------------------------------- + +xcopy /i /e %BUILD_DIR%\include %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on 'include' copy + exit 31 +) + +xcopy /i /e %BUILD_DIR%\lib %PRODUCT_INSTALL%\lib +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on 'lib' copy + exit 32 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/cppunit.sh b/products/compil_scripts/cppunit.sh new file mode 100755 index 0000000..531c41b --- /dev/null +++ b/products/compil_scripts/cppunit.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "##########################################################################" +echo "cppunit" $VERSION +echo "##########################################################################" + + + +# compilation +echo "cppunit compilation" + +echo +echo '*** configure --enable-static LDFLAGS="-ldl"' +$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --enable-static LDFLAGS="-ldl" +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/cycler.sh b/products/compil_scripts/cycler.sh new file mode 100755 index 0000000..b648f67 --- /dev/null +++ b/products/compil_scripts/cycler.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +echo "##########################################################################" +echo "cycler" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** build" +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +CYCLER_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${CYCLER_INSTALL} +export PYTHONPATH=${CYCLER_INSTALL}:${PYTHONPATH} +echo +echo "*** install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/cython.bat b/products/compil_scripts/cython.bat new file mode 100755 index 0000000..3715a7b --- /dev/null +++ b/products/compil_scripts/cython.bat @@ -0,0 +1,53 @@ +@echo off + +echo ########################################################################## +echo Cython %VERSION% +echo ########################################################################## + +REM install in python directly +SET INSTALL_CENTRALLY=1 + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- +set BUILD_OPT= +if %SAT_DEBUG% == 1 ( + set BUILD_OPT=--debug +) + +%PYTHON_ROOT_DIR%\python.exe setup.py build %BUILD_OPT% + + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- +if %INSTALL_CENTRALLY% == 1 ( + %PYTHON_ROOT_DIR%\python.exe setup.py install +) else ( + %PYTHON_ROOT_DIR%\python setup.py install --single-version-externally-managed --root=/ --prefix=%PRODUCT_INSTALL% --install-lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +) +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on setup install" + exit 3 +) + +echo. +echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt +echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/cython.sh b/products/compil_scripts/cython.sh new file mode 100755 index 0000000..ab54eda --- /dev/null +++ b/products/compil_scripts/cython.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "cython" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/dateutil.bat b/products/compil_scripts/dateutil.bat new file mode 100755 index 0000000..8a8bbeb --- /dev/null +++ b/products/compil_scripts/dateutil.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo python-dateutil %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\site-packages +if NOT exist "%dir_lib%" mkdir "%dir_lib%" +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/dateutil.sh b/products/compil_scripts/dateutil.sh new file mode 100755 index 0000000..b0c65f6 --- /dev/null +++ b/products/compil_scripts/dateutil.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +echo "##########################################################################" +echo "python-dateutil" $VERSION +echo "##########################################################################" + +rm -rf $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +echo + +cd $SOURCE_DIR + +# Making a directory that will be used in install +BUILD_DIR=`pwd` +cd $PRODUCT_INSTALL +mkdir -p lib/python${PYTHON_VERSION}/site-packages +cd $BUILD_DIR +# Hack PYTHONPATH in order to make 'setup.py install' believe that PRODUCT_INSTALL is in PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH + +echo "*** setup.py BUILD" +python setup.py build + + +echo "*** setup.py INSATALL" +python setup.py install --prefix=${PRODUCT_INSTALL} + +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + + +echo +echo "########## END" + + diff --git a/products/compil_scripts/distribute.bat b/products/compil_scripts/distribute.bat new file mode 100755 index 0000000..e51031d --- /dev/null +++ b/products/compil_scripts/distribute.bat @@ -0,0 +1,43 @@ +@echo off + +echo ########################################################################## +echo distribute %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\site-packages +if NOT exist "%dir_lib%" mkdir "%dir_lib%" +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- +echo. + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- +echo. + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/distribute.sh b/products/compil_scripts/distribute.sh new file mode 100755 index 0000000..8087c11 --- /dev/null +++ b/products/compil_scripts/distribute.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +echo "##########################################################################" +echo "distribute" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL +echo + +cd $SOURCE_DIR + +# Making a directory that will be used in install +mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH + +echo "*** setup.py BUILD" +python $SOURCE_DIR/setup.py build +echo + +echo "*** setup.py INSTALL" +python $SOURCE_DIR/setup.py install --prefix=${PRODUCT_INSTALL} + +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/docutils.bat b/products/compil_scripts/docutils.bat new file mode 100755 index 0000000..c536b36 --- /dev/null +++ b/products/compil_scripts/docutils.bat @@ -0,0 +1,42 @@ +@echo off + +echo ########################################################################## +echo docutils %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir "%dir_lib%" + +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/docutils.sh b/products/compil_scripts/docutils.sh new file mode 100755 index 0000000..19ed2c7 --- /dev/null +++ b/products/compil_scripts/docutils.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +echo "##########################################################################" +echo "docutil" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +#mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +#PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH} + +echo +echo "setup.py" +python setup.py install --prefix ${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/doxygen.bat b/products/compil_scripts/doxygen.bat new file mode 100755 index 0000000..1dc5415 --- /dev/null +++ b/products/compil_scripts/doxygen.bat @@ -0,0 +1,23 @@ +@echo off + +echo ########################################################################## +echo Doxygen %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy bin\* %PRODUCT_INSTALL%\bin /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/doxygen.sh b/products/compil_scripts/doxygen.sh new file mode 100755 index 0000000..766a72f --- /dev/null +++ b/products/compil_scripts/doxygen.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +echo "##########################################################################" +echo "doxygen" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo "doxygen compilation" + +echo +echo "*** configure" +./configure --prefix $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/eficas.sh b/products/compil_scripts/eficas.sh new file mode 100755 index 0000000..3a90eca --- /dev/null +++ b/products/compil_scripts/eficas.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +echo "##########################################################################" +echo "eficas" $VERSION +echo "##########################################################################" + + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DIN_SALOME_CONTEXT:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_ALL_PACKAGES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python${PYTHON_VERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_PATH=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so" + +mkdir -p $BUILD_DIR +cd $BUILD_DIR + +cmake $CMAKE_OPTIONS $SOURCE_DIR + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/eigen-3.2.7.sh b/products/compil_scripts/eigen-3.2.7.sh new file mode 100755 index 0000000..a506e2b --- /dev/null +++ b/products/compil_scripts/eigen-3.2.7.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +echo "##########################################################################" +echo "EIGEN" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** mkdir" $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on mkdir" + exit 1 +fi + +echo +echo "*** cp -r * " $PRODUCT_INSTALL +cp -r * $PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on cp" + exit 2 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/eigen.bat b/products/compil_scripts/eigen.bat new file mode 100644 index 0000000..dee85e0 --- /dev/null +++ b/products/compil_scripts/eigen.bat @@ -0,0 +1,68 @@ +@echo off + +echo ########################################################################## +echo Eigen %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% + +REM Install dir +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END + diff --git a/products/compil_scripts/eigen.sh b/products/compil_scripts/eigen.sh new file mode 100755 index 0000000..840e8e9 --- /dev/null +++ b/products/compil_scripts/eigen.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +echo "##########################################################################" +echo "eigen" $VERSION +echo "##########################################################################" + + + +#cd $SOURCE_DIR + +# Install dir +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX=$PRODUCT_INSTALL" + +echo +echo "*** cmake ${CMAKE_OPTIONS}" +cmake ${CMAKE_OPTIONS} $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + + +#echo +#echo "*** make" $MAKE_OPTIONS +#make $MAKE_OPTIONS +#if [ $? -ne 0 ] +#then +# echo "ERROR on make" +# exit 2 +#fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/expat.bat b/products/compil_scripts/expat.bat new file mode 100644 index 0000000..7322b70 --- /dev/null +++ b/products/compil_scripts/expat.bat @@ -0,0 +1,30 @@ +@echo off + +echo ########################################################################## +echo Expat %VERSION% +echo ########################################################################## + +REM currently this external library is built by OpenCascade +REM As soon as we upgrade to graphviz 2.42, one needs to move to graphviz.bat + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy bin + exit 1 +) + +xcopy include %PRODUCT_INSTALL%\include /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy include + exit 2 +) + +echo. +echo ########## END + diff --git a/products/compil_scripts/expat.sh b/products/compil_scripts/expat.sh new file mode 100755 index 0000000..3958026 --- /dev/null +++ b/products/compil_scripts/expat.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +echo "##########################################################################" +echo "expat" $VERSION +echo "##########################################################################" + +cp -r $SOURCE_DIR/* . + + + +echo +echo "*** configure" +./configure --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/f2c.bat b/products/compil_scripts/f2c.bat new file mode 100644 index 0000000..1efb35b --- /dev/null +++ b/products/compil_scripts/f2c.bat @@ -0,0 +1,94 @@ +@echo off + +echo ########################################################################## +echo F2C %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET MSBUILDDISABLENODEREUSE=1 +cd %BUILD_DIR% +robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying archive + exit 1 +) + +REM Upgrade to current version of MSVC +echo. +echo *** devenv %BUILD_DIR%\f2cAll.sln /upgrade +devenv %BUILD_DIR%\f2cAll.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 1 +) + +echo. +echo *** %BUILD_DIR%\LIBF77\Libf77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +msbuild %BUILD_DIR%\LIBF77\Libf77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild. Cannot build Libf77 + exit 2 +) + +echo. +echo *** %BUILD_DIR%\LIBI77\Libi77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +msbuild %BUILD_DIR%\LIBI77\Libi77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild. Cannot build Libi77 + exit 2 +) + +REM the binary should be compiled in 32 bits mode, otherwise c generated files from fortran are empty... +REM see BOS #16524 +echo. +echo *** %BUILD_DIR%\SRC\f2c.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x86 +msbuild %BUILD_DIR%\SRC\f2c.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x86 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild. Cannot build f2c.exe + exit 2 +) + +echo. +echo *** COPY generated binary and libraries to %PRODUCT_INSTALL% +copy %BUILD_DIR%\SRC\WinRel\f2c.exe %PRODUCT_INSTALL%\f2c.exe +if NOT %ERRORLEVEL% == 0 ( + echo ERROR could not copy %BUILD_DIR%\SRC\WinRel\f2c.exe + exit 2 +) + +copy %BUILD_DIR%\LIBF77\WinRel\Libf77.lib %PRODUCT_INSTALL%\Libf77.lib +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying %BUILD_DIR%\LIBF77\WinRel\Libf77.lib + exit 2 +) + +copy %BUILD_DIR%\LIBI77\WinRel\Libi77.lib %PRODUCT_INSTALL%\Libi77.lib +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying %BUILD_DIR%\LIBF77\WinRel\Libi77.lib + exit 2 +) + +copy %BUILD_DIR%\F2C.H %PRODUCT_INSTALL%\F2C.H +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying %BUILD_DIR%\F2C.H + exit 2 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/freeimage-3.16.0.sh b/products/compil_scripts/freeimage-3.16.0.sh new file mode 100755 index 0000000..32949c5 --- /dev/null +++ b/products/compil_scripts/freeimage-3.16.0.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +echo "###############################################" +echo "freeimage" $VERSION +echo "###############################################" + +cp -r $SOURCE_DIR/* . + +# hack pour CO5.5 +if [[ $DIST_NAME == "CO" && $DIST_VERSION == "5.5" ]] +then + export CC=/usr/bin/gcc44 +fi + + + +echo -n ".. Patching freeimage sources: fix build procedure..." && \ + sed -i "s%DESTDIR ?= /%DESTDIR ?= /usr%g;s%INCDIR ?= \$(DESTDIR)/usr/include%INCDIR ?= \$(DESTDIR)/include%g;s%INSTALLDIR ?= \$(DESTDIR)/usr/lib%INSTALLDIR ?= \$(DESTDIR)/lib%g;s%-o root -g root %%g" Makefile.gnu >& /dev/null && \ + sed -i "s%DESTDIR ?= /%DESTDIR ?= /usr%g;s%INCDIR ?= \$(DESTDIR)/usr/include%INCDIR ?= \$(DESTDIR)/include%g;s%INSTALLDIR ?= \$(DESTDIR)/usr/lib%INSTALLDIR ?= \$(DESTDIR)/lib%g;s%-o root -g root %%g" Makefile.fip >& /dev/null + if [ "$?" != "0" ] ; then + echo + echo "Error: problem patching freeimage sources" + echo + return 1 + fi + echo "OK" + + echo -n ".. Patching freeimage sources: gcc 4.7 compatibility..." && \ + sed -i 's%\(#include "OpenEXRConfig.h"\)%\1\n#include %g' Source/OpenEXR/IlmImf/ImfAutoArray.h + if [ "$?" != "0" ] ; then + echo + echo "Error: problem patching freeimage sources" + echo + fi + echo "OK" + +echo +echo "*** FreeImage: make" $MAKE_OPTIONS +make -f Makefile.gnu +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** FreeImage: make install" +make -f Makefile.gnu DESTDIR=$PRODUCT_INSTALL install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** FreeImage: make clean" +make -f Makefile.gnu clean + +echo +echo "*** FreeImagePlus: make" $MAKE_OPTIONS +make -f Makefile.fip +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** FreeImagePlus: make install" +make -f Makefile.fip DESTDIR=$PRODUCT_INSTALL install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** FreeImagePlus: make clean" +make -f Makefile.fip clean + +echo +echo "########## END" + diff --git a/products/compil_scripts/freeimage.bat b/products/compil_scripts/freeimage.bat new file mode 100644 index 0000000..05ee31d --- /dev/null +++ b/products/compil_scripts/freeimage.bat @@ -0,0 +1,67 @@ +@echo off + +echo ########################################################################## +echo FreeImage %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include +if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET MSBUILDDISABLENODEREUSE=1 +cd %SOURCE_DIR% +xcopy * %BUILD_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +cd %BUILD_DIR% +REM Upgrade to current version of MSVC +echo. +echo *** devenv %BUILD_DIR%\FreeImage.2017.sln /upgrade +devenv %BUILD_DIR%\FreeImage.2017.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 1 +) + +REM Compilation +echo. +echo *** %BUILD_DIR%\FreeImage.2017.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +msbuild %BUILD_DIR%\FreeImage.2017.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 2 +) + + +echo. +echo *** COPY FreeImage DLL to %PRODUCT_INSTALL% + +copy /Y %BUILD_DIR%\Dist\x64\FreeImage.dll %PRODUCT_INSTALL%\bin\FreeImage.dll +copy /Y %BUILD_DIR%\Dist\x64\FreeImage.lib %PRODUCT_INSTALL%\lib\FreeImage.lib +copy /Y %BUILD_DIR%\Dist\x64\FreeImage.h %PRODUCT_INSTALL%\include\FreeImage.h +copy /Y %BUILD_DIR%\Wrapper\FreeImagePlus\dist\x64\FreeImagePlus.dll %PRODUCT_INSTALL%\bin\FreeImagePlus.dll +copy /Y %BUILD_DIR%\Wrapper\FreeImagePlus\dist\x64\FreeImagePlus.lib %PRODUCT_INSTALL%\lib\FreeImagePlus.lib +copy /Y %BUILD_DIR%\Wrapper\FreeImagePlus\dist\x64\FreeImagePlus.h %PRODUCT_INSTALL%\include\FreeImagePlus.h + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/freeimage.sh b/products/compil_scripts/freeimage.sh new file mode 100755 index 0000000..7dac1fb --- /dev/null +++ b/products/compil_scripts/freeimage.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +echo "###############################################" +echo "freeimage" $VERSION +echo "###############################################" +cp -r $SOURCE_DIR/* . + + + +echo +echo "*** FreeImage: make" $MAKE_OPTIONS +make -f Makefile.gnu +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** FreeImage: make install" +make -f Makefile.gnu DESTDIR=$PRODUCT_INSTALL install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** FreeImage: make clean" +make -f Makefile.gnu clean + +echo +echo "*** FreeImagePlus: make" $MAKE_OPTIONS +make -f Makefile.fip +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** FreeImagePlus: make install" +make -f Makefile.fip DESTDIR=$PRODUCT_INSTALL install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** FreeImagePlus: make clean" +make -f Makefile.fip clean + +echo +echo "########## END" + diff --git a/products/compil_scripts/freetype-2.3.sh b/products/compil_scripts/freetype-2.3.sh new file mode 100755 index 0000000..9378bc9 --- /dev/null +++ b/products/compil_scripts/freetype-2.3.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo "###############################################" +echo "freetype" $VERSION +echo "###############################################" + + + +echo +echo "*** configure" +if [[ $BITS == "64" ]] +then + $SOURCE_DIR/configure CFLAGS="-fPIC -m64" --prefix=$PRODUCT_INSTALL --with-harfbuzz=no +else + $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL +fi +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +cp $PRODUCT_INSTALL/include/ft2build.h $PRODUCT_INSTALL/include/freetype2 #Fix for ParaView detection of ft2build.h + +echo +echo "########## END" + diff --git a/products/compil_scripts/freetype.bat b/products/compil_scripts/freetype.bat new file mode 100755 index 0000000..f36414f --- /dev/null +++ b/products/compil_scripts/freetype.bat @@ -0,0 +1,91 @@ +@echo off + +echo ########################################################################## +echo FreeType %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% INSTALL.vcxproj +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +echo. +echo ********************************************************************* +echo *** COPY Freetype DLL file from %BUILD_DIR% to %PRODUCT_INSTALL% +echo ********************************************************************* +echo. +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +copy /Y %BUILD_DIR%\%PRODUCT_BUILD_TYPE%\Freetype.dll %PRODUCT_INSTALL%\bin\Freetype.dll +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying Freetype DLL + exit 2 +) + + +REM needed by ParaView +copy /Y %PRODUCT_INSTALL%\include\freetype2\ft2build.h %PRODUCT_INSTALL%\include\freetype2\freetype\ft2build.h +copy /Y %SOURCE_DIR%\include\freetype\config\ftconfig.h %PRODUCT_INSTALL%\include\freetype2\freetype\config\ftconfig.h + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/freetype.sh b/products/compil_scripts/freetype.sh new file mode 100755 index 0000000..3d7b73c --- /dev/null +++ b/products/compil_scripts/freetype.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +echo "###############################################" +echo "freetype" $VERSION +echo "###############################################" + +echo +echo "*** configure" + +$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --with-harfbuzz=no + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/ftgl_2.1.3.sh b/products/compil_scripts/ftgl_2.1.3.sh new file mode 100755 index 0000000..926dac9 --- /dev/null +++ b/products/compil_scripts/ftgl_2.1.3.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +echo "###############################################" +echo "ftgl" $VERSION +echo "###############################################" + + +cp -r $SOURCE_DIR/* . + + + +./autogen.sh + +echo +echo "*** configure" +./configure --prefix=$PRODUCT_INSTALL --enable-shared=yes \ + --with-ft-prefix=$FREETYPEDIR \ + --with-gl-inc="-lm" +# --disable-doc +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +export ECHO=echo + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + rm -Rf $PRODUCT_INSTALL + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/functools32.sh b/products/compil_scripts/functools32.sh new file mode 100755 index 0000000..1a7ed53 --- /dev/null +++ b/products/compil_scripts/functools32.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +echo "##########################################################################" +echo "functools32" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** build" +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +FUNCTOOLS_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${FUNCTOOLS_INSTALL} +export PYTHONPATH=${FUNCTOOLS_INSTALL}:${PYTHONPATH} +echo +echo "*** install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/gcc-6.3.0.sh b/products/compil_scripts/gcc-6.3.0.sh new file mode 100755 index 0000000..1eb552c --- /dev/null +++ b/products/compil_scripts/gcc-6.3.0.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +echo "##########################################################################" +echo "gcc" $VERSION +echo "##########################################################################" + +CONFIGURE_FLAGS='' +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-languages=c,c++,fortran" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-checking=release" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --disable-multilib" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-shared=yes" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-threads=posix" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-plugins" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-ld" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-bootstrap" + +echo "*** configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}" +$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS} +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/gl2ps-1.4.0.sh b/products/compil_scripts/gl2ps-1.4.0.sh new file mode 100755 index 0000000..c4f410c --- /dev/null +++ b/products/compil_scripts/gl2ps-1.4.0.sh @@ -0,0 +1,60 @@ +#!/bin/bash +echo "##########################################################################" +echo "ispc" $VERSION +echo "##########################################################################" +if [[ $DIST_NAME == "DB" && $DIST_VERSION == "10" ]] +then + # seems like SAT does not create BUILD_DIR ( ask for patch integration) + mkdir -p $INSTALL_DIR && mkdir -p $BUILD_DIR && cd $BUILD_DIR + # check wether a folder named + FMT_EXISTS=0 + if [[ -e "$HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt" ]] + then + FMT_EXISTS=1 + mv $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt.old + fi + + CMAKE_OPTIONS="" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PNG=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_ZLIB=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_GLUT=OFF" + echo + echo "*** cmake" ${CMAKE_OPTIONS} + cmake ${CMAKE_OPTIONS} $SOURCE_DIR + if [ $? -ne 0 ] + then + echo "ERROR on cmake" + exit 1 + fi + + echo + echo "*** make" + make + if [ $? -ne 0 ] + then + echo "ERROR on make" + exit 2 + fi + + echo + echo "*** make" + make install + if [ $? -ne 0 ] + then + echo "ERROR on make install" + exit 3 + fi + + # + if [[ $FMT_EXISTS -eq 1 ]] + then + mv $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt.old $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt + fi + echo + echo "########## END" +else + echo "ERROR distribution: issue with: $DIST_NAME $DIST_VERSION - please fix gl2ps.sh script..." + exit 1 +fi diff --git a/products/compil_scripts/gl2ps.bat b/products/compil_scripts/gl2ps.bat new file mode 100755 index 0000000..c4cbe56 --- /dev/null +++ b/products/compil_scripts/gl2ps.bat @@ -0,0 +1,90 @@ +@echo off + +echo ########################################################################## +echo gl2ps %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL:\=/% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_GLUT=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PNG=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_ZLIB=ON + +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) + +set MSBUILDDISABLENODEREUSE=1 + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on CMake + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild ALL_BUILD.vcxproj +echo -------------------------------------------------------------------------- +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild INSTALL.vcxproj +echo -------------------------------------------------------------------------- +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo -------------------------------------------------------------------------- +echo *** Custom installation +echo -------------------------------------------------------------------------- +echo. + +move /Y %PRODUCT_INSTALL%\lib\gl2ps.dll %PRODUCT_INSTALL%\bin\gl2ps.dll +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on moving gl2ps.dll into %PRODUCT_INSTALL%\bin + exit 4 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/gl2ps.sh b/products/compil_scripts/gl2ps.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/gl2ps.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/compil_scripts/glu.sh b/products/compil_scripts/glu.sh new file mode 100755 index 0000000..b8d2ab3 --- /dev/null +++ b/products/compil_scripts/glu.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +echo "##########################################################################" +echo "glu" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** configure" +./configure --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make -j8 $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/gmsh-2.12.0.sh b/products/compil_scripts/gmsh-2.12.0.sh new file mode 100755 index 0000000..09c26fe --- /dev/null +++ b/products/compil_scripts/gmsh-2.12.0.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +echo "##########################################################################" +echo "gmsh" $VERSION +echo "##########################################################################" + + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_ACIS=0" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_BUILD_SHARED=1" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_FLTK=0" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_MED=0" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_ONELAB_METAMODEL=0" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PARSER=0" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_SALOME=0" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PETSC:BOOL=OFF" #pour éviter de tirer sur MPI + + +cmake $CMAKE_OPTIONS $SOURCE_DIR + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** copy all .h in sources to install" +cp -f --backup=numbered `find $SOURCE_DIR -name "*.h"` $PRODUCT_INSTALL/include/ && mv $PRODUCT_INSTALL/include/gmsh/* $PRODUCT_INSTALL/include/ && rmdir $PRODUCT_INSTALL/include/gmsh/ +if [ $? -ne 0 ] +then + echo "ERROR on copy" + exit 3 +fi + + +echo +echo "########## END" + diff --git a/products/compil_scripts/gmsh.bat b/products/compil_scripts/gmsh.bat new file mode 100644 index 0000000..e47cb4b --- /dev/null +++ b/products/compil_scripts/gmsh.bat @@ -0,0 +1,101 @@ +@echo off + +echo ########################################################################## +echo gmsh %VERSION% +echo ########################################################################## + + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET BLAS_LAPACK_LIBRARIES="%LAPACK_ROOT_DIR%\lib\libblas.dll.a;%LAPACK_ROOT_DIR%\lib\libcblas.dll.a;%LAPACK_ROOT_DIR%\lib\liblapack.dll.a;%LAPACK_ROOT_DIR%\lib\liblapacke.dll.a" +cd %BUILD_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_LIB=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_ACIS=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_FLTK=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_ONELAB_METAMODEL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PARSER=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PETSC=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PRIVATE_API=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_CGNS=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_HXT=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBLAS_LAPACK_LIBRARIES:STRING=%BLAS_LAPACK_LIBRARIES% + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild gmsh.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +echo. +echo ********************************************************************* +echo *** installation Headers... +echo ********************************************************************* +echo. +msbuild /p:Configuration=Release /p:Platform=x64 /p:BuildProjectReferences=false get_headers.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild get_headers.vcxproj + exit 4 +) + +copy /Y /B %BUILD_DIR%\Release\gmsh.lib %PRODUCT_INSTALL%\bin\gmsh.lib +copy /Y /B %BUILD_DIR%\Release\gmsh.exp %PRODUCT_INSTALL%\bin\gmsh.exp + +SETLOCAL ENABLEDELAYEDEXPANSION +FOR %%f IN (gmsh.h gmsh.h_cwrap gmshc.h) do ( + set X=%%f + copy /Y %SOURCE_DIR%\api\%%f %PRODUCT_INSTALL%\include\%X% +) +ENDLOCAL + +cd %BUILD_DIR%\Headers\gmsh +SETLOCAL ENABLEDELAYEDEXPANSION +FOR %%f IN (*.h) do ( + set X=%%f + copy /Y %SOURCE_DIR%\api\%%f %PRODUCT_INSTALL%\include\%X% +) +ENDLOCAL + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/gmsh.sh b/products/compil_scripts/gmsh.sh new file mode 100755 index 0000000..4f86412 --- /dev/null +++ b/products/compil_scripts/gmsh.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +echo "##########################################################################" +echo "gmsh" $VERSION +echo "##########################################################################" + + + +CMAKE_OPTIONS="" +# common settings +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=${PRODUCT_INSTALL}" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_VERBOSE_MAKEFILE=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_BUILD_TYPE=Release" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_BUILD_SHARED=ON" + +# build options +function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } +if version_ge $VERSION "4."; then + echo "*** GMSH version $VERSION >= 4." + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ACIS=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_FLTK=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_MED=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ONELAB_METAMODEL=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PARSER=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PETSC=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PRIVATE_API=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_CGNS=OFF" # default value is set to ON in release 4.1.4 + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_LIBDIR=${PRODUCT_INSTALL}/lib" # strangely on Ubuntu GMSH installs the .so in lib instead of lib/lib64 - so force to lib64 + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_PREFIX_PATH=${LAPACK_ROOT_DIR}" # set path of third libraries to our associated internal products + if [[ $DIST_NAME == "FD" && $DIST_VERSION == "32" ]] + then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_MMG3D=OFF" # removed anyhow in GMS 4.6 + fi +else + echo "*** GMSH version $VERSION < 4." + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ACIS=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_FLTK=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_MED=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ONELAB_METAMODEL=OFF" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PARSER=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PETSC=OFF" +fi + +echo "*** cmake" $CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** copy all .h in sources to install" +cp -f --backup=numbered `find $SOURCE_DIR -name "*.h"` $PRODUCT_INSTALL/include/ && \ + mv $PRODUCT_INSTALL/include/gmsh/* $PRODUCT_INSTALL/include/ && \ + rmdir $PRODUCT_INSTALL/include/gmsh/ +if [ $? -ne 0 ] +then + echo "ERROR on copy" + exit 4 +fi + + +echo +echo "########## END" + diff --git a/products/compil_scripts/graphviz-2.38.0.bat b/products/compil_scripts/graphviz-2.38.0.bat new file mode 100755 index 0000000..e2dfa33 --- /dev/null +++ b/products/compil_scripts/graphviz-2.38.0.bat @@ -0,0 +1,30 @@ +@echo off + +echo ########################################################################## +echo Graphviz %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +REM currently this external library is built by OpenCascade +REM As soon as we upgrade to 2.42, one needs to move to graphviz.bat +cd %SOURCE_DIR% + +xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy bin + exit 1 +) + +xcopy include %PRODUCT_INSTALL%\include /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy include + exit 2 +) + +echo. +echo ########## END + diff --git a/products/compil_scripts/graphviz-2.38.0.sh b/products/compil_scripts/graphviz-2.38.0.sh new file mode 100755 index 0000000..291a688 --- /dev/null +++ b/products/compil_scripts/graphviz-2.38.0.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +echo "##########################################################################" +echo "graphviz" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo "graphviz compilation" + +echo +#echo "*** ./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --with-expat=no --with-qt=no --with-cgraph=no --enable-perl=no" +#./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --with-expat=no --with-qt=no --with-cgraph=no --enable-perl=no +echo "*** ./configure --prefix=${PRODUCT_INSTALL} --enable-tcl=no --with-expat=no --with-qt=no --enable-perl=no --enable-ocaml=no" +./configure --prefix=${PRODUCT_INSTALL} --enable-tcl=no --with-expat=no --with-qt=no --enable-perl=no --enable-ocaml=no --with-ghostscript=no --enable-python=no --enable-java=no + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" ${MAKE_OPTIONS} +make ${MAKE_OPTIONS} +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/graphviz-2.44.1.bat b/products/compil_scripts/graphviz-2.44.1.bat new file mode 100644 index 0000000..2562abd --- /dev/null +++ b/products/compil_scripts/graphviz-2.44.1.bat @@ -0,0 +1,74 @@ +@echo off + +echo ########################################################################## +echo graphviz %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% +set PATH=%PATH%;%BUILD_DIR%\windows\dependencies\graphviz-build-utilities +set PATH=%PATH%;%WINFLEX_ROOT_DIR% +set CMAKE_OPTIONS=%SOURCE_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/graphviz.bat b/products/compil_scripts/graphviz.bat new file mode 100644 index 0000000..9140cfa --- /dev/null +++ b/products/compil_scripts/graphviz.bat @@ -0,0 +1,26 @@ +@echo off + +echo ########################################################################## +echo Graphviz %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% +cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% %SOURCE_DIR% +msbuild ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% +msbuild INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% +echo. +echo ########## END + diff --git a/products/compil_scripts/graphviz.sh b/products/compil_scripts/graphviz.sh new file mode 100755 index 0000000..805214d --- /dev/null +++ b/products/compil_scripts/graphviz.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +echo "##########################################################################" +echo "graphviz" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo "graphviz compilation" +# tcl natif +if [ ${#TCLHOME} -eq 0 ] +then + TCLHOME="/usr" +fi + +echo +echo "*** configure" +if [ "`lsb_release -si``lsb_release -sr`"=="Fedora17" ]&&[ $VERSION=="2.28.0" ] +then + # Fix compilation error graphviz 2.28.0 for Fedora17 (EXTERN.h not found) + ./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --disable-rpath --with-expat=no --with-qt=no --with-cgraph=no --enable-python=no CPPFLAGS="-I/usr/lib64/perl5/CORE" +else + ./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --disable-rpath --with-expat=no --with-qt=no --with-cgraph=no --enable-python=no # 13 mars 2013 ajout de "--with-cgraph=no" a cause d'un conflit avec YACS +fi +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" ${MAKE_OPTIONS} +make ${MAKE_OPTIONS} +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/hdf5-1.10.3.sh b/products/compil_scripts/hdf5-1.10.3.sh new file mode 100755 index 0000000..3b311b5 --- /dev/null +++ b/products/compil_scripts/hdf5-1.10.3.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +echo "##########################################################################" +echo "hdf5" $VERSION +echo "##########################################################################" + + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_USE_16_API_DEFAULT:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ALLOW_EXTERNAL_SUPPORT:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_HL_LIB:BOOL=ON" + + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_TOOLS:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=ON" +fi + +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_THREADSAFE:BOOL=ON" +# OP Set to permit HDF5_BUILD_HL_LIB and HDF5_BUILD_CPP_LIB options to ON +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DALLOW_UNSUPPORTED:BOOL=ON" + +echo +echo "*** cmake" $CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +if [ -n "$SAT_HPC" ] +then + sed -e 's/;//' -i src/CMakeFiles/H5make_libsettings.dir/link.txt + sed -e 's/;//' -i src/CMakeFiles/H5detect.dir/link.txt +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/hdf5Autotools.sh b/products/compil_scripts/hdf5Autotools.sh new file mode 100755 index 0000000..d699c3f --- /dev/null +++ b/products/compil_scripts/hdf5Autotools.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +echo "##########################################################################" +echo "hdf5" $VERSION +echo "##########################################################################" + + +echo LD_LIBRARY_PATH = $LD_LIBRARY_PATH + +CONFIGURE_FLAGS='' +# --enable-shared is set by default +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-unsupported" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-hl" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-build-mode=production" +CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --disable-silent-rules" + +if [ -n "$SAT_HPC" ] +then + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-parallel" +# export FC=mpif90 +# export CXX=mpicxx +# export CC=${MPI_ROOT_DIR}/bin/mpiCC +else + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-threadsafe" + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-cxx" # not compatible with --enable-parallel +fi + +echo "*** configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}" +$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS} +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/hdf5CMake.bat b/products/compil_scripts/hdf5CMake.bat new file mode 100755 index 0000000..e7c9c39 --- /dev/null +++ b/products/compil_scripts/hdf5CMake.bat @@ -0,0 +1,109 @@ +@echo off + +echo ########################################################################## +echo hdf5 %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ENABLE_THREADSAFE:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ALLOW_EXTERNAL_SUPPORT:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DALLOW_UNSUPPORTED:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_BUILD_TOOLS:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_BUILD_HL_LIB:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_BUILD_CPP_LIB:BOOL=ON + +if DEFINED SAT_HPC ( + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ENABLE_PARALLEL:BOOL=ON + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMPI_LINK_FLAGS:STRING=-Wl +) else ( + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ENABLE_PARALLEL:BOOL=OFF +) +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) + +set MSBUILDDISABLENODEREUSE=1 + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on CMake + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +REM some of the products like GUI expect .lib instead of _D.lib... +cd %PRODUCT_INSTALL%\lib\ +if %SAT_DEBUG% == 1 ( + SETLOCAL ENABLEDELAYEDEXPANSION + FOR %%f IN (*_D.lib) do ( + set X=%%f + copy /Y /B %PRODUCT_INSTALL%\lib\%%f %PRODUCT_INSTALL%\lib\!X:_D.lib=.lib! + ) + ENDLOCAL +) + +REM Symbolic links require being in developer mode +cd %PRODUCT_INSTALL%\bin\ +if %SAT_DEBUG% == 1 ( + SETLOCAL ENABLEDELAYEDEXPANSION + FOR %%f IN (*_D.dll) do ( + set X=%%f + copy /Y /B %PRODUCT_INSTALL%\bin\%%f %PRODUCT_INSTALL%\bin\!X:_D.dll=.dll! + ) + ENDLOCAL +) + +taskkill /F /IM "mspdbsrv.exe" + + + +echo. +echo ########## END diff --git a/products/compil_scripts/hdf5CMake.sh b/products/compil_scripts/hdf5CMake.sh new file mode 100755 index 0000000..9c57462 --- /dev/null +++ b/products/compil_scripts/hdf5CMake.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +echo "##########################################################################" +echo "hdf5" $VERSION +echo "##########################################################################" + + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_USE_16_API_DEFAULT:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ALLOW_EXTERNAL_SUPPORT:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_HL_LIB:BOOL=ON" + + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_TOOLS:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=ON" +fi + +echo +echo "*** cmake" $CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +if [ -n "$SAT_HPC" ] +then + sed -e 's/;//' -i src/CMakeFiles/H5make_libsettings.dir/link.txt + sed -e 's/;//' -i src/CMakeFiles/H5detect.dir/link.txt +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/hdf5_cxx.sh b/products/compil_scripts/hdf5_cxx.sh new file mode 100755 index 0000000..99f853e --- /dev/null +++ b/products/compil_scripts/hdf5_cxx.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +echo "##########################################################################" +echo "hdf5" $VERSION +echo "##########################################################################" + + + +#if [[ $BITS == "64" ]] +#then +# CONFIGURE_FLAGS="-m64 CXXFLAGS=-m64" +#fi + +CONFIGURE_FLAGS='' + +if [ -n "$SAT_HPC" ] +then + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-parallel --enable-shared" +else + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-threadsafe" +fi + +echo "*** configure" +$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} --disable-debug \ + --enable-production --enable-cxx --enable-unsupported \ + --with-pthread=/usr/include,/usr/lib \ + --with-default-api-version=v16 ${CONFIGURE_FLAGS} +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/idna.sh b/products/compil_scripts/idna.sh new file mode 100755 index 0000000..2b0950d --- /dev/null +++ b/products/compil_scripts/idna.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "idna" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/imagesize.sh b/products/compil_scripts/imagesize.sh new file mode 100755 index 0000000..aa08acc --- /dev/null +++ b/products/compil_scripts/imagesize.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "imagesize" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/ispc-1.9.2.sh b/products/compil_scripts/ispc-1.9.2.sh new file mode 100755 index 0000000..c8e3f76 --- /dev/null +++ b/products/compil_scripts/ispc-1.9.2.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +echo "##########################################################################" +echo "ispc" $VERSION +echo "##########################################################################" + +if [ -f "$SOURCE_DIR/bin/ispc" ] +then + echo "INFO: about to copy the ispc binary utility to the installation folder: $PRODUCT_INSTALL/bin" + mkdir -p $PRODUCT_INSTALL/bin + cp $SOURCE_DIR/bin/ispc $PRODUCT_INSTALL/bin + chmod +x $PRODUCT_INSTALL/bin/ispc +else + echo "INFO: compiling ispc..." + cd $SOURCE_DIR + TARGET_MAKE=gcc + # issue with the current version of CLANG libraries + if [[ $DIST_NAME == "UB" && $DIST_VERSION == "18.04" ]] + then + TARGET_MAKE=clang + fi + + # CentOS 6 + if [[ $DIST_NAME == "CO" && $DIST_VERSION == "6" ]] + then + TARGET_MAKE=clang + fi + + echo "*** make" $MAKE_OPTIONS $TARGET_MAKE + make $MAKE_OPTIONS $TARGET_MAKE + if [ $? -ne 0 ] + then + echo "ERROR on make" + exit 2 + fi + + echo "INFO: about to copy the ispc binary utility to the installation folder: $PRODUCT_INSTALL/bin" + mkdir -p $PRODUCT_INSTALL/bin + cp $SOURCE_DIR/ispc $PRODUCT_INSTALL/bin + chmod +x $PRODUCT_INSTALL/bin/ispc +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/ispc.bat b/products/compil_scripts/ispc.bat new file mode 100644 index 0000000..fbf0bfe --- /dev/null +++ b/products/compil_scripts/ispc.bat @@ -0,0 +1,75 @@ +@echo off + +echo ########################################################################## +echo ISPC %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +if NOT defined CYGWIN_ROOT_DIR ( + echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR + exit 1 +) else ( + echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR% +) + +set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin + +SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHON_ROOT_DIR:\=/%/python.exe +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on CMake + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/kiwisolver.sh b/products/compil_scripts/kiwisolver.sh new file mode 100755 index 0000000..ae94a28 --- /dev/null +++ b/products/compil_scripts/kiwisolver.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "kiwisolver" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/lapack.bat b/products/compil_scripts/lapack.bat new file mode 100644 index 0000000..02a8e8c --- /dev/null +++ b/products/compil_scripts/lapack.bat @@ -0,0 +1,79 @@ +@echo off + +echo ########################################################################## +echo Installing Lapack %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +set GFORTRAN_EXE=%MINGW_ROOT_DIR%\bin\gfortran.exe + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +echo. +echo ************************************************ +echo *** Setting local path to %MINGW_ROOT_DIR%\bin +echo ************************************************ +set path=%MINGW_ROOT_DIR%\bin;%path% +set CMAKE_OPTIONS=%SOURCE_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_CXX_FLAGS=-fPIC +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_C_FLAGS=-fPIC +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_OPTIMIZED_BLAS=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCBLAS=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLAPACKE=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SIZEOF_VOID_P=8 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_Fortran_COMPILER=%MINGW_ROOT_DIR:\=/%/bin/gfortran.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SH="CMAKE_SH-NOTFOUND" +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="MinGW Makefiles" +) +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo *** cmake %CMAKE_OPTIONS}% +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) +echo. +echo ********************************************************************* +echo *** mingw32-make" +echo ********************************************************************* +echo. + +mingw32-make +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. +mingw32-make install +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + + diff --git a/products/compil_scripts/lapack.sh b/products/compil_scripts/lapack.sh new file mode 100755 index 0000000..6815e65 --- /dev/null +++ b/products/compil_scripts/lapack.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +echo "##########################################################################" +echo "lapack" $VERSION +echo "##########################################################################" + + + +#echo "copy file" +#cp make.inc.example make.inc + +#mkdir -p $PRODUCT_INSTALL +#cp -rp $SOURCE_DIR/* $PRODUCT_INSTALL/ + + +CMAKE_OPTIONS="$SOURCE_DIR" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=$PRODUCT_INSTALL" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_BUILD_TYPE=Release" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_LIBDIR:STRING=lib" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_FLAGS=-fPIC" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_FLAGS=-fPIC" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_OPTIMIZED_BLAS=OFF" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCBLAS=ON" +CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLAPACKE=ON" + +echo +echo "*** cmake ${CMAKE_OPTIONS}" +cmake ${CMAKE_OPTIONS} +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" + +make install + +#cp lib/libblas.so $PRODUCT_INSTALL/lib/ +#cp lib/liblapack.so $PRODUCT_INSTALL/lib/ +#cp lib/libtmglib.so $PRODUCT_INSTALL/lib/ + +#ln -s $PRODUCT_INSTALL/lib/blas_LINUX.so $PRODUCT_INSTALL/lib/libblas.so +#ln -s $PRODUCT_INSTALL/lib/lapack_LINUX.so $PRODUCT_INSTALL/lib/liblapack.so + +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +# Ce lien est nécéssaire pour numpy, qui ne veut entendre parler que du fichier liblapack.so.3 +# Nous n'avons pas trouvé de moyen d'obtenir ce fichier autrement +# Voir https://codev-tuleap.cea.fr/plugins/tracker/?aid=8084 +# Mise en commentaire car plus necessaire (CLACLA) +#VERSION_MAJOR=${VERSION:0:1} +#cd $PRODUCT_INSTALL/lib && ln -s liblapack.so liblapack.so.$VERSION_MAJOR && ln -s libblas.so libblas.so.$VERSION_MAJOR + +#if [ $? -ne 0 ] +#then +# echo "ERROR on symbolic link" +# exit 4 +#fi + +#echo +#echo "*** make" +#make blaslib +#if [ $? -ne 0 ] +#then +# echo "ERROR on make" +# exit 2 +#fi + +#make lapacklib +#if [ $? -ne 0 ] +#then +# echo "ERROR on make" +# exit 2 +#fi +##ln -s blas_LINUX.a libblas.a +##ln -s lapack_LINUX.a liblapack.a + +#ln -s librefblas.a libblas.a + +# En attendant de comprendre pourquoi numpy cherche des .h dans lib au lieu d'include +# j'ajoute les .h dans lib a la main +cp $PRODUCT_INSTALL/include/*.h $PRODUCT_INSTALL/lib/. + +echo +echo "########## END" + diff --git a/products/compil_scripts/lata.bat b/products/compil_scripts/lata.bat new file mode 100644 index 0000000..fb232af --- /dev/null +++ b/products/compil_scripts/lata.bat @@ -0,0 +1,93 @@ +@echo off + +echo ########################################################################## +echo Installing LATA %VERSION% +echo ########################################################################## + + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying archive + exit 1 +) + +REM LATA source directory +set LATA_SRC_DIR=%BUILD_DIR%\src + +REM LATA binary directory +set LATA_BIN_DIR=%BUILD_DIR%\bin + +REM build folder +mkdir %BUILD_DIR%\plugin_visit\build_paraview + +REM copy the patched CMake file... caution, the patch is provided with the archive +copy %BUILD_DIR%\plugin_visit\CMakeLists.txt.para %BUILD_DIR%\plugin_visit\build_paraview\CMakeLists.txt +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying CMakeLists.txt + exit 2 +) + +cd %BUILD_DIR%\plugin_visit\build_paraview + +REM add required symbolic links +cp %BUILD_DIR%\plugin_visit\src\avtlataFileFormat.h avtlataFileFormat.h +cp %BUILD_DIR%\plugin_visit\src\avtlataFileFormat.C avtlataFileFormat.C +for /r "%LATA_SRC_DIR%/commun_triou" %%G in (*.cpp) do COPY %%~G *.C +for /r "%LATA_SRC_DIR%/commun_triou" %%G in (*.h) do COPY %%~G *.h +for /r "%LATA_SRC_DIR%/triou_compat" %%G in (*.h) do COPY %%~G *.h +for /r "%LATA_SRC_DIR%/triou_compat" %%G in (*.cpp) do COPY %%~G *.C + +REM define the VISITLIBPATH variable +set VISITLIBPATH=%BUILD_DIR%\VisItLib + +echo. +echo INFO: running cmake -DVisItBridgePlugin_SOURCE_DIR=%BUILD_DIR%\VisItLib + +cd %BUILD_DIR%\build_paraview + +SET CMAKE_OPTIONS=-DCMAKE_BUILD_TYPE:STRING=Release +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVisItBridgePlugin_SOURCE_DIR=%BUILD_DIR:\=/%/VisItLib +cmake %CMAKE_OPTIONS% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR: failed to run command: cmake %CMAKE_OPTIONS% + exit 1 +) + +echo. +echo INFO: fix file: vtkVisItReaderlataSM.xml +REM copy the patched CMake file... caution, the patch is provided with the archive +rm -f vtkVisItReaderlataSM.xml + +cp %BUILD_DIR%\plugin_visit\vtkVisItReaderlataSM.xml.para vtkVisItReaderlataSM.xml + +REM create a doc folder +mkdir %BUILD_DIR%\doc + +echo. +echo "INFO: running command: make..." +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=Release /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo INFO: copy the shared objects library to the installation folder. +copy %BUILD_DIR%\libVisItReaderlata.dll %PRODUCT_INSTALL%\lib\libVisItReaderlata.dll +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying libVisItReaderlata.dll + exit 2 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/lata.sh b/products/compil_scripts/lata.sh new file mode 100755 index 0000000..cdfbda3 --- /dev/null +++ b/products/compil_scripts/lata.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +echo "##########################################################################" +echo "lata" $VERSION +echo "##########################################################################" + +# create the build directory +rm -rf $BUILD_DIR && mkdir -p $BUILD_DIR +cd $BUILD_DIR +# copy everything from the source +cp -r $SOURCE_DIR/* . + +# LATA source directory +LATA_SRC_DIR=$BUILD_DIR/src + +# LATA binary directory +LATA_BIN_DIR=$BUILD_DIR/bin + +# build folder +mkdir -p $BUILD_DIR/plugin_visit/build_paraview + +# copy the patched CMake file... caution, the patch is provided with the archive +cp $BUILD_DIR/plugin_visit/CMakeLists.txt.para $BUILD_DIR/plugin_visit/build_paraview/CMakeLists.txt + +cd $BUILD_DIR/plugin_visit/build_paraview + +# add required symbolic links +ln -s $BUILD_DIR/plugin_visit/src/avtlataFileFormat.* . + +for i in $LATA_SRC_DIR/commun_triou/*.cpp $LATA_SRC_DIR/triou_compat/*.cpp +do + ln -s $i `basename $i .cpp`.C +done + +for i in $LATA_SRC_DIR/commun_triou/*.h $LATA_SRC_DIR/triou_compat/*.h +do + ln -s $i `basename $i` +done + +# define the VISITLIBPATH variable +VISITLIBPATH=$BUILD_DIR/VisItLib + +echo +echo "INFO: running cmake -DVisItBridgePlugin_SOURCE_DIR=$BUILD_DIR/VisItLib" + +cd $BUILD_DIR/build_paraview +cmake -DVisItBridgePlugin_SOURCE_DIR=$BUILD_DIR/VisItLib +if [ $? -ne 0 ] +then + echo "ERROR: failed to run command: cmake -DVisItBridgePlugin_SOURCE_DIR=$BUILD_DIR/VisItLib" + exit 1 +fi + +echo +echo "INFO: fix vtkVisItReaderlataSM.xml" +sed '5a\ \n \n \n ' vtkVisItReaderlataSM.xml > tmp.txt +mv tmp.txt vtkVisItReaderlataSM.xml + +# create a doc folder +mkdir -p doc + +echo +echo "INFO: running command: make..." +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "INFO: copy the shared objects library to the installation folder" +mkdir -p ${PRODUCT_INSTALL}/lib +cp libVisItReaderlata.so ${PRODUCT_INSTALL}/lib + +echo +echo "########## END" diff --git a/products/compil_scripts/libjpeg.bat b/products/compil_scripts/libjpeg.bat new file mode 100644 index 0000000..cf51cf9 --- /dev/null +++ b/products/compil_scripts/libjpeg.bat @@ -0,0 +1,67 @@ +@echo off + +echo ########################################################################## +echo libjpeg %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET MSBUILDDISABLENODEREUSE=1 +cd %BUILD_DIR% +robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying source files + exit 1 +) + +REM Upgrade to current version of MSVC +echo. +echo *** devenv %BUILD_DIR%\jpeg.sln /upgrade +devenv %BUILD_DIR%\jpeg.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 1 +) + +REM Build LIB +echo. +echo *** msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 2 +) + +REM Build DLL +echo. +echo *** msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=DLL;Platform=x64 +msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=DLL;Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 2 +) + +echo. +echo *** COPY jpeg LIB to %PRODUCT_INSTALL% +cp %BUILD_DIR%\x64\%PRODUCT_BUILD_TYPE%\jpeg.lib %PRODUCT_INSTALL%\bin\jpeg.lib +cp %BUILD_DIR%\x64\DLL\jpeg.dll %PRODUCT_INSTALL%\bin\jpeg.dll + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/libpng.bat b/products/compil_scripts/libpng.bat new file mode 100755 index 0000000..2d254ee --- /dev/null +++ b/products/compil_scripts/libpng.bat @@ -0,0 +1,84 @@ +@echo off + +echo ########################################################################## +echo libpng %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +REM current built by Opencascade. move to the commented section below once agreed. +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy include %PRODUCT_INSTALL%\include /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy include + exit 1 +) + +xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy bin + exit 1 +) + +echo. +echo ########## END + +REM if exist "%PRODUCT_INSTALL%" rmdir /Q /S "%PRODUCT_INSTALL%" +REM mkdir %PRODUCT_INSTALL% + +REM set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +REM if defined CMAKE_GENERATOR ( + REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +REM ) else ( + REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +REM ) + +REM set MSBUILDDISABLENODEREUSE=1 + +REM cd %BUILD_DIR% + +REM echo. +REM echo -------------------------------------------------------------------------- +REM echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +REM echo -------------------------------------------------------------------------- + +REM %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +REM if NOT %ERRORLEVEL% == 0 ( + REM echo "ERROR on cmake" + REM exit 1 +REM ) + +REM echo. +REM echo -------------------------------------------------------------------------- +REM echo *** cmake --build . --config Release --target INSTALL +REM echo -------------------------------------------------------------------------- + +REM %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL +REM if NOT %ERRORLEVEL% == 0 ( + REM echo "ERROR on cmake build" + REM exit 2 +REM ) + +REM cp %PRODUCT_INSTALL%\lib\libpng15.lib %PRODUCT_INSTALL%\lib\libpng.lib +REM if NOT %ERRORLEVEL% == 0 ( + REM echo "ERROR on copy libpng15.lib" + REM exit 3 +REM ) + +REM taskkill /F /IM "mspdbsrv.exe" + +REM echo. +REM echo ########## END diff --git a/products/compil_scripts/libpng.sh b/products/compil_scripts/libpng.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/libpng.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/compil_scripts/libxml2.bat b/products/compil_scripts/libxml2.bat new file mode 100755 index 0000000..75dab19 --- /dev/null +++ b/products/compil_scripts/libxml2.bat @@ -0,0 +1,61 @@ +@echo off + +echo ########################################################################## +echo libxml2 %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%"\include mkdir %PRODUCT_INSTALL%\include + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +SET ROOT_DIR=%CD% + +cd %ROOT_DIR%\win32 + +echo. +echo -------------------------------------------------------------------------- +echo *** cscript configure.js compiler=msvc prefix=%PRODUCT_INSTALL% iconv=no +echo -------------------------------------------------------------------------- + +cscript configure.js compiler=msvc prefix=%PRODUCT_INSTALL% iconv=no +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on configure + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake /f Makefile.msvc +echo -------------------------------------------------------------------------- + +nmake /f Makefile.msvc +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install /f Makefile.msvc +echo -------------------------------------------------------------------------- + +nmake install /f Makefile.msvc +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake install + exit 3 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Post-installation +echo -------------------------------------------------------------------------- + +move %PRODUCT_INSTALL%\include\libxml2\libxml %PRODUCT_INSTALL%\include\libxml + +echo. +echo ########## END diff --git a/products/compil_scripts/libxml2.sh b/products/compil_scripts/libxml2.sh new file mode 100755 index 0000000..0d4e98f --- /dev/null +++ b/products/compil_scripts/libxml2.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +echo "##########################################################################" +echo "libxml2" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR +echo +echo "*** configure" +#$SOURCE_DIR/configure --with-python=${PYTHON_ROOT_DIR} --prefix=$PRODUCT_INSTALL +./configure --with-python=${PYTHON_ROOT_DIR} --prefix=$PRODUCT_INSTALL LDFLAGS=-L${PYTHON_ROOT_DIR}/lib +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +echo ${LD_LIBRARY_PATH} +make -d $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +#CNC 08/06/18 : this part of script is maybe obsolete? +# OP 04/04/2018 Not useful +#cd python +#echo +#echo "*** build python" +#CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python ./setup.py build +#if [ $? -ne 0 ] +#then +# echo "ERROR on python build" +# exit 4 +#fi +# +#echo +#echo "*** install python" +#CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python ./setup.py install +#if [ $? -ne 0 ] +#then +# echo "ERROR on python install" +# exit 5 +#fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/libxml2_2_9_2.sh b/products/compil_scripts/libxml2_2_9_2.sh new file mode 100755 index 0000000..0be8024 --- /dev/null +++ b/products/compil_scripts/libxml2_2_9_2.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +echo "##########################################################################" +echo "libxml2" $VERSION +echo "##########################################################################" + + + +export LDFLAGS=-L$PYTHON_ROOT_DIR/lib + +echo +echo "*** autogen" +$SOURCE_DIR/autogen.sh + +echo +echo "*** configure" +$SOURCE_DIR/configure --with-python=${PYTHON_ROOT_DIR} --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +#if [[ $DIST_NAME == "MG" ]] +#then +# export PYTHON_LIBS="-L${PYTHON_ROOT_DIR}/lib" +#fi + +echo +echo "*** make" $MAKE_OPTIONS +make -d $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** install python" +PWD = `pwd` +cd python +CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python setup.py build +CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python setup.py install + +echo +echo "########## END" + diff --git a/products/compil_scripts/llvm.sh b/products/compil_scripts/llvm.sh new file mode 100755 index 0000000..59c8ddd --- /dev/null +++ b/products/compil_scripts/llvm.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +echo "##########################################################################" +echo "llvm" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** configure" +./configure --enable-shared --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make -j8 $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/markupsafe.bat b/products/compil_scripts/markupsafe.bat new file mode 100755 index 0000000..93b0c91 --- /dev/null +++ b/products/compil_scripts/markupsafe.bat @@ -0,0 +1,43 @@ +@echo off + +echo ########################################################################## +echo markupsafe %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% + +cd %SOURCE_DIR% + +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/markupsafe.sh b/products/compil_scripts/markupsafe.sh new file mode 100755 index 0000000..964589f --- /dev/null +++ b/products/compil_scripts/markupsafe.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "markupsafe" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/matplotlib-2.0.2.sh b/products/compil_scripts/matplotlib-2.0.2.sh new file mode 100755 index 0000000..4f4a307 --- /dev/null +++ b/products/compil_scripts/matplotlib-2.0.2.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +echo "##########################################################################" +echo "matplotlib" $VERSION +echo "##########################################################################" + +rm -rf $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +echo +echo "*** setup.py" + +cp -r $SOURCE_DIR/* . + +# Making a directory that will be used in install +BUILD_DIR=`pwd` +cd $PRODUCT_INSTALL +mkdir -p lib/python${PYTHON_VERSION}/site-packages +cd $BUILD_DIR +# Hack PYTHONPATH in order to make 'setup.py install' believe that PRODUCT_INSTALL is in PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH + + +echo "*** setup.py BUILD" + +python setup.py build + +echo "*** setup.py INSTALL" + +python setup.py install --prefix=${PRODUCT_INSTALL} + +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/matplotlib.bat b/products/compil_scripts/matplotlib.bat new file mode 100755 index 0000000..030534a --- /dev/null +++ b/products/compil_scripts/matplotlib.bat @@ -0,0 +1,44 @@ +@echo off + +echo ########################################################################## +echo matplotlib %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% + +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo PYTHONPATH=%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/matplotlib.sh b/products/compil_scripts/matplotlib.sh new file mode 100755 index 0000000..3b7720c --- /dev/null +++ b/products/compil_scripts/matplotlib.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "matplotlib" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/med.sh b/products/compil_scripts/med.sh new file mode 100755 index 0000000..0481354 --- /dev/null +++ b/products/compil_scripts/med.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +echo "##########################################################################" +echo "med" $VERSION +echo "##########################################################################" + + + +CONFIGURE_FLAGS=$CONFIGURE_FLAGS'CFLAGS=-m64 CXXFLAGS=-m64' +# OP 06/02/2017 +# Putting option enable-python=no +# Reason : compilation failure of python interface modules on FD24 (generated by swig in medfile) +# CEA decision 13/02/2017 : deactivation of the compilation of python interface modules because no need python interface +CONFIGURE_FLAGS=$CONFIGURE_FLAGS' --enable-python=no' + +if [ -n "$SAT_HPC" ] +then + CONFIGURE_FLAGS=$CONFIGURE_FLAGS' --enable-parallel' +else + # CNC 24/01/2017 + # the line "export F77=gfortran" is commented, as we think it is not useful. + # at least it should'n. + # If it happens to be necessary, we will correct automake procedure. + # + # SRE 27/01/2017 + # In fact this line is necessary because when the g77 compiler exists on the machine, + # it is found before gfortran and it makes the compilation fail. + # A mail has been sent to Eric Fayolle to fix this bug. + # En attendant, on remet la ligne. + export F77=gfortran +fi + +if [ -n "$SALOME_USE_64BIT_IDS" ] +then + echo "WARNING: user requested 64 bits encoding for integers..." + export FFLAGS=-fdefault-integer-8 + export FFLAGS=$FFLAGS' -g -O2 -ffixed-line-length-none' + CONFIGURE_FLAGS=$CONFIGURE_FLAGS' --with-med_int=long' +else + FFLAGS="-g -O2 -ffixed-line-length-none" +fi + +echo +echo "*** configure" +$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL FFLAGS="${FFLAGS}" $CONFIGURE_FLAGS +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/medCMake.bat b/products/compil_scripts/medCMake.bat new file mode 100755 index 0000000..4338f96 --- /dev/null +++ b/products/compil_scripts/medCMake.bat @@ -0,0 +1,79 @@ +@echo off + +echo ########################################################################## +echo med %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_BUILD_STATIC_LIBS:BOOL=OFF +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_BUILD_SHARED_LIBS:BOOL=ON +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ROOT_DIR:STRING=%HDF5_ROOT_DIR% + +if DEFINED SAT_HPC ( + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=ON +) else ( + SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=OFF +) + +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on CMake + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + + +echo. +echo ########## END diff --git a/products/compil_scripts/medCMake.sh b/products/compil_scripts/medCMake.sh new file mode 100755 index 0000000..b682bf8 --- /dev/null +++ b/products/compil_scripts/medCMake.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +echo "##########################################################################" +echo "med" $VERSION +echo "##########################################################################" + + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_BUILD_STATIC_LIBS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_BUILD_SHARED_LIBS:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ROOT_DIR:STRING=${HDF5_ROOT_DIR}" + +if [ -n "$SAT_HPC" ] +then + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_USE_MPI:BOOL=ON" +else + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_USE_MPI:BOOL=OFF" +fi + +# OP 20/04/2017 TEST pour overwrite compilateur Fortran sur CO6 avec cmake +preCMake="" +lsb_release -a > /dev/null +if [ $? -eq 0 ] +then +# commande connue donc on peut l'utiliser pour recuperer l'OS + OSDesc=`lsb_release -a | grep -i description` + COFound=`echo $OSDesc | grep CentOS` + R6Found=`echo $OSDesc | grep '6\.'` + if [ -n "$COFound" -a -n "$R6Found" ] + then + #echo "Compilation on CentOS 6 !!!" + preCMake="FC=`which gfortran` F77=`which gfortran`" + fi +fi + +echo "*** cmake" $CMAKE_OPTIONS +#cmake $CMAKE_OPTIONS $SOURCE_DIR +#echo "$preCMake cmake $CMAKE_OPTIONS $SOURCE_DIR" +eval $preCMake cmake $CMAKE_OPTIONS $SOURCE_DIR + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/mesa.bat b/products/compil_scripts/mesa.bat new file mode 100644 index 0000000..436339d --- /dev/null +++ b/products/compil_scripts/mesa.bat @@ -0,0 +1,21 @@ +@echo off + +echo ########################################################################## +echo Mesa %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% +xcopy * %PRODUCT_INSTALL% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/mesa.sh b/products/compil_scripts/mesa.sh new file mode 100755 index 0000000..a5668d6 --- /dev/null +++ b/products/compil_scripts/mesa.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +echo "##########################################################################" +echo "mesa" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR +autoreconf -fi + +cd $BUILD_DIR + +echo +echo "*** configure" + +function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } + +if version_ge $VERSION "19"; then + $SOURCE_DIR/configure \ + --prefix=$PRODUCT_INSTALL \ + --enable-opengl --disable-gles1 --disable-gles2 \ + --disable-va --disable-xvmc --disable-vdpau \ + --enable-shared-glapi \ + --disable-texture-float \ + --enable-llvm --disable-llvm-shared-libs \ + --with-llvm-prefix=$LLVM_ROOT_DIR \ + --with-gallium-drivers=swrast \ + --disable-dri --with-dri-drivers= \ + --disable-egl --with-platforms=x11 --disable-gbm \ + --enable-glx=gallium-xlib \ + --disable-osmesa --enable-gallium-osmesa \ + --enable-autotools +elif version_ge $VERSION "17"; then + $SOURCE_DIR/configure \ + --prefix=$PRODUCT_INSTALL \ + --enable-opengl --disable-gles1 --disable-gles2 \ + --disable-va --disable-xvmc --disable-vdpau \ + --enable-shared-glapi \ + --disable-texture-float \ + --enable-gallium-llvm --enable-llvm-shared-libs \ + --with-llvm-prefix=$LLVM_ROOT_DIR \ + --with-gallium-drivers=swrast \ + --disable-dri --with-dri-drivers= \ + --disable-egl --with-platforms=x11 --disable-gbm \ + --enable-glx=gallium-xlib \ + --disable-osmesa --enable-gallium-osmesa + +else + $SOURCE_DIR/configure CXXFLAGS="-O2 -g -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \ + CFLAGS="-O2 -g -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \ + --prefix=$PRODUCT_INSTALL \ + --enable-opengl --disable-gles1 --disable-gles2 \ + --disable-va --disable-xvmc --disable-vdpau \ + --enable-shared-glapi \ + --disable-texture-float \ + --enable-gallium-llvm --enable-llvm-shared-libs \ + --with-llvm-prefix=$LLVM_ROOT_DIR \ + --with-gallium-drivers=swrast,swr \ + --disable-dri --with-dri-drivers= \ + --disable-egl --with-egl-platforms= --disable-gbm \ + --enable-glx=gallium-xlib \ + --disable-osmesa --enable-gallium-osmesa \ + PYTHON2=${PYTHON_ROOT_DIR}/bin/python +fi + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make -j8 $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/metis-5.1.0.bat b/products/compil_scripts/metis-5.1.0.bat new file mode 100755 index 0000000..aef0223 --- /dev/null +++ b/products/compil_scripts/metis-5.1.0.bat @@ -0,0 +1,92 @@ +@echo off + +echo ########################################################################## +echo Metis %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +REM ensure that the installation directory does exist +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% +cd %BUILD_DIR% + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +echo ********************************************************************* +echo. + + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +xcopy /y /e /q programs\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\bin +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying binaries + exit 3 +) + +xcopy /y /e /q libmetis\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\lib +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying lib + exit 4 +) + +xcopy /y /e /q include %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying include + exit 5 +) + +copy %SOURCE_DIR%\include\metis.h %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR when copying include + exit 6 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END + diff --git a/products/compil_scripts/metis-5.1.0.sh b/products/compil_scripts/metis-5.1.0.sh new file mode 100755 index 0000000..9c28087 --- /dev/null +++ b/products/compil_scripts/metis-5.1.0.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Metis" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +echo +echo "*** make config" +make config prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on make config" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/metis.sh b/products/compil_scripts/metis.sh new file mode 100755 index 0000000..ec86720 --- /dev/null +++ b/products/compil_scripts/metis.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Metis" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cp -r $SOURCE_DIR/* . + +echo +echo "*** apply sed for 64bits platforms" +sed -e 's|COPTIONS =|& -fPIC|g' Makefile.in > Makefile.in_new +cp Makefile.in_new Makefile.in + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** copy build to install" +cp -ar * ${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "*** Modification of access rights" +chmod -R g+rwX,o+rX ${PRODUCT_INSTALL} + +echo +echo "########## END" + diff --git a/products/compil_scripts/metis_5_0_2.sh b/products/compil_scripts/metis_5_0_2.sh new file mode 100755 index 0000000..9c28087 --- /dev/null +++ b/products/compil_scripts/metis_5_0_2.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Metis" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +echo +echo "*** make config" +make config prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on make config" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/msvc.bat b/products/compil_scripts/msvc.bat new file mode 100644 index 0000000..35a08f9 --- /dev/null +++ b/products/compil_scripts/msvc.bat @@ -0,0 +1,21 @@ +@echo off + +echo ########################################################################## +echo msvc %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy *.dll %PRODUCT_INSTALL%\bin /E /I /Q /Y +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/netgen.bat b/products/compil_scripts/netgen.bat new file mode 100644 index 0000000..b022dba --- /dev/null +++ b/products/compil_scripts/netgen.bat @@ -0,0 +1,73 @@ +@echo off + +echo ########################################################################## +echo NETGEN %VERSION% +echo ########################################################################## + +dos2unix -q %SOURCE_DIR%/libsrc/occ/* +dos2unix -q %SOURCE_DIR%/libsrc/nglib/* + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) +set MSBUILDDISABLENODEREUSE=1 + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_ROOT_DIR=%ZLIB_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCASROOT=%CASROOT% + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on cmake + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +REM move DLL to bin, in order to reduce the PATH length.. +MOVE /Y %PRODUCT_INSTALL%\lib\nglib.dll %PRODUCT_INSTALL%\bin\nglib.dll +if NOT %ERRORLEVEL% == 0 ( + echo ERROR could not move DLL to BIN directory... + exit 4 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/netgen.sh b/products/compil_scripts/netgen.sh new file mode 100755 index 0000000..f2ab5d9 --- /dev/null +++ b/products/compil_scripts/netgen.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +echo "##########################################################################" +echo "netgen" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo +echo "*** configure" +BFLAG="-m64" +OLEVEL="-O2" +echo ./configure --prefix=${PRODUCT_INSTALL} \ + --with-occ=${CASROOT} \ + --with-tcl=${TCLHOME}/lib \ + --with-tk=${TCLHOME}/lib \ + --with-togl=${TCLHOME}/lib \ + LDFLAGS="-L${TCLHOME}/lib" \ + CPPFLAGS="-I${TCLHOME}/include" \ + CXXFLAGS="${OLEVEL} ${BFLAG}" +./configure --prefix=${PRODUCT_INSTALL} \ + --with-occ=${CASROOT} \ + --with-tcl=${TCLHOME}/lib \ + --with-tk=${TCLHOME}/lib \ + --with-togl=${TCLHOME} \ + LDFLAGS="-L${TCLHOME}/lib" \ + CPPFLAGS="-I${TCLHOME}/include" \ + CXXFLAGS="${OLEVEL} ${BFLAG}" +if [ $? -ne 0 ] +then + echo "error on configure" + exit 1 +fi + +echo +echo "*** compile" +make +if [ $? -ne 0 ] +then + echo "error on make" + exit 2 +fi + +echo +echo "*** install" +make install +if [ $? -ne 0 ] +then + echo "error on make install" + exit 3 +fi + +echo +echo "*** copy headers" +for directory in general gprim linalg meshing ; do + cp -vf ${PRODUCT_BUILD}/libsrc/${directory}/*.hpp ${PRODUCT_INSTALL}/include +done +cp -vf ${PRODUCT_BUILD}/libsrc/include/mystdlib.h ${PRODUCT_BUILD}/libsrc/include/mydefs.hpp ${PRODUCT_INSTALL}/include +cp -vf ${PRODUCT_BUILD}/libsrc/occ/occ*.hpp ${PRODUCT_INSTALL}/include + + +echo +echo "########## END" diff --git a/products/compil_scripts/netgen_5_3_1.bat b/products/compil_scripts/netgen_5_3_1.bat new file mode 100755 index 0000000..818c73e --- /dev/null +++ b/products/compil_scripts/netgen_5_3_1.bat @@ -0,0 +1,157 @@ +@echo off + +echo ########################################################################## +echo NETGEN %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include +if NOT exist "%PRODUCT_INSTALL%\cmake" mkdir %PRODUCT_INSTALL%\cmake + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +dos2unix -q %SOURCE_DIR%/libsrc/occ/* +dos2unix -q %SOURCE_DIR%/libsrc/occ/* +dos2unix -q %SOURCE_DIR%/libsrc/nglib/* + +set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) +set MSBUILDDISABLENODEREUSE=1 + +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_ROOT_DIR=%ZLIB_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCASROOT=%CASROOT% + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on cmake + exit 1 +) + + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake --build . --config %PRODUCT_BUILD_TYPE% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake --build . --config %PRODUCT_BUILD_TYPE% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on cmake build + exit 2 +) + + +echo. +echo -------------------------------------------------------------------------- +echo *** Installation into %PRODUCT_INSTALL% +echo -------------------------------------------------------------------------- + +robocopy nglib\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\bin "*.exe" /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR on install executables + exit 3 +) + +robocopy nglib\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\lib "*.lib" "*.dll" /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR on install libraries + exit 4 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\meshing\*.h* %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install meshing includes + exit 5 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\gprim\*.h* %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install gprim includes + exit 6 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\general\*.h* %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install general includes + exit 7 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\linalg\*.h* %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install linalg includes + exit 8 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\occ\*.h* %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install occ includes + exit 9 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\mydefs.hpp %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install mydefs.hpp + exit 10 +) +xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\mystdlib.h %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install mystdlib.h + exit 11 +) +xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\nginterface.h %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install nginterface.h + exit 12 +) +xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\nginterface_V2.hpp %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install nginterface_V2.hpp + exit 13 +) + +xcopy /q /r /Y %SOURCE_DIR%\nglib\nglib.h %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install nglib.h + exit 14 +) + +xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\stlgeom.hpp %PRODUCT_INSTALL%\include +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on install stlgeom + exit 15 +) + +robocopy %SOURCE_DIR%\cmake %PRODUCT_INSTALL%\cmake "*.cmake" /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR on install cmake files + exit 16 +) +taskkill /F /IM "mspdbsrv.exe" + + +echo. +echo ########## END diff --git a/products/compil_scripts/netgen_5_3_1.sh b/products/compil_scripts/netgen_5_3_1.sh new file mode 100755 index 0000000..d2cc4d8 --- /dev/null +++ b/products/compil_scripts/netgen_5_3_1.sh @@ -0,0 +1,119 @@ +#!/bin/bash + +echo "##########################################################################" +echo "netgen" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo +echo "*** manual call of the aclocal, libtoolize, autoconf and automake in order to re-generate configure script and Makefiles" +aclocal -I m4 +if [ $? -ne 0 ] +then + echo "error on manual call to aclocal" + exit 1 +fi +libtoolize --force --copy --automake +if [ $? -ne 0 ] +then + echo "error on manual call to libtoolize" + exit 1 +fi +autoconf +if [ $? -ne 0 ] +then + echo "error on manual call to autoconf" + exit 1 +fi +automake --copy --gnu --add-missing +if [ $? -ne 0 ] +then + echo "error on manual call to automake" + exit 1 +fi + +# Variable for Multithreading +export DISABLE_FPE=1 +export MMGT_REENTRANT=1 +export PATH=$CASROOT/inc:$CASROOT/include:$CASROOT/include/opencascade:${PATH} +export LD_LIBRARY_PATH=$CASROOT/lib:$CASROOT/lin64/gcc/lib:${LD_LIBRARY_PATH} +# Variable for 3D viewer +export CSF_ShadersDirectory=$CASROOT/share/opencascade/resources/Shaders/ +# Variable for Foundation Classes : +export CSF_UnitsLexicon=$CASROOT/share/opencascade/resources/UnitsAPI/Lexi_Expr.dat +export CSF_UnitsDefinition=$CASROOT/share/opencascade/resources/UnitsAPI/Units.dat +# Variable for DataExchange : +export CSF_SHMessage=$CASROOT/share/opencascade/resources/SHMessage +export CSF_XSMessage=$CASROOT/share/opencascade/resources/XSMessage +# Variable for Font : +#export CSF_MDTVFontDirectory=$CASROOT/src/FontMFT +export CSF_MDTVTexturesDirectory=$CASROOT/share/opencascade/resources/Textures +# library tcl/tk et tix +export TCL_LIBRARY=${TCLHOME} +export TK_LIBRARY=${TCLHOME} +export TIX_LIBRARY=${TCLHOME} + +echo +echo "*** configure" +BFLAG="-m64" +OLEVEL="-O2" + +if [ "${TCLHOME}" == '/usr' ] +then + TCL_LIB_DIR=${TCLHOME}/lib64 +else + TCL_LIB_DIR=${TCLHOME}/lib +fi +echo ./configure --prefix=${PRODUCT_INSTALL} \ + --with-occ=${CASROOT} \ + --with-tcl=${TCL_LIB_DIR} \ + --with-tk=${TCL_LIB_DIR} \ + --disable-openmp \ + --with-tclinclude=${TCLHOME}/include \ + CXXFLAGS="-I${CASROOT}/include/opencascade ${OLEVEL} ${BFLAG} -std=c++0x" +./configure --prefix=${PRODUCT_INSTALL} \ + --with-occ=${CASROOT} \ + --with-tcl=${TCL_LIB_DIR} \ + --with-tk=${TCL_LIB_DIR} \ + --disable-openmp \ + --with-tclinclude=${TCLHOME}/include \ + CXXFLAGS="-I${CASROOT}/include/opencascade ${OLEVEL} ${BFLAG} -std=c++0x" #-std=gnu++11" #-std=c++11 -std=c++0x" + +if [ $? -ne 0 ] +then + echo "error on configure" + exit 1 +fi + +echo +echo "*** compile" +make +if [ $? -ne 0 ] +then + echo "error on make" + exit 2 +fi + +echo +echo "*** install" +make install +if [ $? -ne 0 ] +then + echo "error on make install" + exit 3 +fi + +echo +echo "*** copy headers" +for directory in general gprim linalg meshing ; do + cp -vf ${PRODUCT_BUILD}/libsrc/${directory}/*.h* ${PRODUCT_INSTALL}/include +done +cp -vf ${PRODUCT_BUILD}/libsrc/include/mystdlib.h ${PRODUCT_BUILD}/libsrc/include/mydefs.hpp ${PRODUCT_INSTALL}/include +cp -vf ${PRODUCT_BUILD}/libsrc/occ/occgeom.hpp ${PRODUCT_BUILD}/libsrc/occ/occmeshsurf.hpp ${PRODUCT_INSTALL}/include +cp -vf ${PRODUCT_BUILD}/libsrc/stlgeom/*.hpp ${PRODUCT_INSTALL}/include + +echo +echo "########## END" diff --git a/products/compil_scripts/netgen_CAS7.sh b/products/compil_scripts/netgen_CAS7.sh new file mode 100755 index 0000000..d960ddc --- /dev/null +++ b/products/compil_scripts/netgen_CAS7.sh @@ -0,0 +1,97 @@ +#!/bin/bash + +echo "##########################################################################" +echo "netgen" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +# Variable for Multithreading +export DISABLE_FPE=1 +export MMGT_REENTRANT=1 +export PATH=$CASROOT/inc:$CASROOT/include:$CASROOT/include/opencascade:${PATH} +export LD_LIBRARY_PATH=$CASROOT/lib:$CASROOT/lin64/gcc/lib:${LD_LIBRARY_PATH} +# Variable for 3D viewer +export CSF_ShadersDirectory=$CASROOT/share/opencascade/resources/Shaders/ +# Variable for Foundation Classes : +export CSF_UnitsLexicon=$CASROOT/share/opencascade/resources/UnitsAPI/Lexi_Expr.dat +export CSF_UnitsDefinition=$CASROOT/share/opencascade/resources/UnitsAPI/Units.dat +# Variable for DataExchange : +export CSF_SHMessage=$CASROOT/share/opencascade/resources/SHMessage +export CSF_XSMessage=$CASROOT/share/opencascade/resources/XSMessage +# Variable for Font : +#export CSF_MDTVFontDirectory=$CASROOT/src/FontMFT +export CSF_MDTVTexturesDirectory=$CASROOT/share/opencascade/resources/Textures +# library tcl/tk et tix +export TCL_LIBRARY=${TCLHOME} +export TK_LIBRARY=${TCLHOME} +export TIX_LIBRARY=${TCLHOME} + +echo +echo "*** configure" +BFLAG="-m64" + + +echo ./configure --prefix=${PRODUCT_INSTALL} \ + --with-occ=${CASROOT} \ + --with-tcl=${TCLHOME}/lib \ + --with-tk=${TCLHOME}/lib \ + --with-tclinclude=${TCLHOME}/include \ + #--with-togl=${TCLHOME}/lib \ + #LDFLAGS="-L${TCLHOME}/lib" \ + #CPPFLAGS="-I${TCLHOME}/include" \ + CXXFLAGS="${OLEVEL} ${BFLAG}" +./configure --prefix=${PRODUCT_INSTALL} \ + --with-occ=${CASROOT} \ + --with-tcl=${TCLHOME}/lib \ + --with-tk=${TCLHOME}/lib \ + --with-tclinclude=${TCLHOME}/include \ + CXXFLAGS="${OLEVEL} ${BFLAG} -std=c++11 -std=c++0x" #-std=gnu++11" #-std=c++11 -std=c++0x" + #--with-togl=${TCLHOME} \ + #LDFLAGS="-L${TCLHOME}/lib" \ + #CPPFLAGS="-I${TCLHOME}/include" \ + +if [ $? -ne 0 ] +then + echo "error on configure" + exit 1 +fi + +sed -i -e "s/\/inc -D_OCC64/\/include\/opencascade -D_OCC64/g" ${PRODUCT_BUILD}/libsrc/occ/Makefile +sed -i -e "s/\/inc -D_OCC64/\/include\/opencascade -D_OCC64/g" ${PRODUCT_BUILD}/libsrc/visualization/Makefile + + +echo +echo "*** compile" +make +if [ $? -ne 0 ] +then + echo "error on make" + exit 2 +fi + +echo +echo "*** install" +make install +if [ $? -ne 0 ] +then + echo "error on make install" + exit 3 +fi + +echo +echo "*** copy headers" +for directory in general gprim linalg meshing ; do + cp -vf ${PRODUCT_BUILD}/libsrc/${directory}/*.hpp ${PRODUCT_INSTALL}/include +done +cp -vf ${PRODUCT_BUILD}/libsrc/include/mystdlib.h ${PRODUCT_BUILD}/libsrc/include/mydefs.hpp ${PRODUCT_INSTALL}/include +cp -vf ${PRODUCT_BUILD}/libsrc/occ/occ*.hpp ${PRODUCT_INSTALL}/include + +if [ -f ${PRODUCT_BUILD}/config.h ] ; then + cp -f ${PRODUCT_BUILD}/config.h ${PRODUCT_BUILD}/libsrc/occ/occmeshsurf.hpp ${PRODUCT_INSTALL}/include +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/nlopt.bat b/products/compil_scripts/nlopt.bat new file mode 100644 index 0000000..927a421 --- /dev/null +++ b/products/compil_scripts/nlopt.bat @@ -0,0 +1,64 @@ +@echo off + +echo ########################################################################## +echo nlopt %VERSION% +echo ########################################################################## + + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %BUILD_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DNLOPT_MATLAB:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DNLOPT_OCTAVE:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DNLOPT_GUILE:BOOL=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64" + + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild gmsh.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/nlopt.sh b/products/compil_scripts/nlopt.sh new file mode 100755 index 0000000..955eb6e --- /dev/null +++ b/products/compil_scripts/nlopt.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +echo "##########################################################################" +echo "nlopt" $VERSION +echo "##########################################################################" + + +# +function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } + +if version_ge $VERSION "2.4.2"; then + $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --enable-shared --with-python PYTHON=$(which python3) PYTHON_CONFIG=$(which python3-config) CFLAGS='-m64 -fPIC' CPPFLAGS='-m64 -fPIC' +else + $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --enable-shared --without-octave +fi +echo "*** configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS" +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/numpy-1.12.1.sh b/products/compil_scripts/numpy-1.12.1.sh new file mode 100755 index 0000000..c37277d --- /dev/null +++ b/products/compil_scripts/numpy-1.12.1.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +echo "##########################################################################" +echo "numpy" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +## editer customize.py Pour LApack : using Atlas, Pour Blas : Using gsl +# OP 29/03/2018 We create a build configuration file to set +# information about lapack preprequisite +echo "#" > site.cfg +echo "# Build configuration for numpy" >> site.cfg +echo "#" >> site.cfg +echo >> site.cfg +echo "# Section ALL to set global information for lapack dependency" >> site.cfg +echo "[ALL]" >> site.cfg +echo "libraries = lapack,blas,cblas,lapacke,tmglib" >> site.cfg +echo "library_dirs = \$\{LAPACKHOME\}/lib" >> site.cfg +echo "include_dirs = \$\{LAPACKHOME\}/include" >> site.cfg +echo >> site.cfg + +echo +echo "*** setup.py build" +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on setup build" + rm -f site.cfg + exit 1 +fi + +NUMPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${NUMPY_INSTALL} +PYTHONPATH=${NUMPY_INSTALL}:${PYTHONPATH} + +echo +echo "*** setup.py install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on setup install" + rm -f site.cfg + exit 2 +fi + +rm -f site.cfg + +echo +echo "########## END" + diff --git a/products/compil_scripts/numpy-1.15.1.sh b/products/compil_scripts/numpy-1.15.1.sh new file mode 100755 index 0000000..f70e0b0 --- /dev/null +++ b/products/compil_scripts/numpy-1.15.1.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +echo "##########################################################################" +echo "numpy" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +## editer customize.py Pour LApack : using Atlas, Pour Blas : Using gsl +# OP 29/03/2018 We create a build configuration file to set +# information about lapack preprequisite +echo "#" > site.cfg +echo "# Build configuration for numpy" >> site.cfg +echo "#" >> site.cfg +echo >> site.cfg +echo "# Section ALL to set global information for lapack dependency" >> site.cfg +echo "[ALL]" >> site.cfg +echo "libraries = lapack,blas,cblas,lapacke,tmglib" >> site.cfg +echo "library_dirs = \$\{LAPACKHOME\}/lib" >> site.cfg +#echo "runtime_library_dirs = ${LAPACKHOME}/lib" >> site.cfg +echo "include_dirs = \$\{LAPACKHOME\}/include" >> site.cfg +#echo "extra_link_args = -lcblas" >> site.cfg +echo >> site.cfg + + +NUMPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${NUMPY_INSTALL} +PYTHONPATH=${NUMPY_INSTALL}:${PYTHONPATH} + +echo +echo "*** setup.py install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on setup install" + rm -f site.cfg + exit 2 +fi + +rm -f site.cfg + +echo +echo "########## END" + diff --git a/products/compil_scripts/numpy.bat b/products/compil_scripts/numpy.bat new file mode 100755 index 0000000..5dc527e --- /dev/null +++ b/products/compil_scripts/numpy.bat @@ -0,0 +1,59 @@ +@echo off + +echo ########################################################################## +echo numpy %VERSION% +echo ########################################################################## + +REM install in python directly +SET INSTALL_CENTRALLY=1 + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set BLAS=None +set ATLAS=None +set LAPACK=None + +cd %SOURCE_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- +set BUILD_OPT= +if %SAT_DEBUG% == 1 ( + set BUILD_OPT=--debug +) + +%PYTHON_ROOT_DIR%\python.exe setup.py build %BUILD_OPT% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +if %INSTALL_CENTRALLY% == 1 ( + %PYTHON_ROOT_DIR%\python.exe setup.py install +) else ( + %PYTHON_ROOT_DIR%\python.exe setup.py install --single-version-externally-managed --root=/ --prefix=%PRODUCT_INSTALL% --install-lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +) + +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt +echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt + +echo. +echo ########## END diff --git a/products/compil_scripts/numpy.sh b/products/compil_scripts/numpy.sh new file mode 100755 index 0000000..eb93088 --- /dev/null +++ b/products/compil_scripts/numpy.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +echo "##########################################################################" +echo "numpy" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +## editer customize.py Pour LApack : using Atlas, Pour Blas : Using gsl +# OP 29/03/2018 We create a build configuration file to set +# information about lapack preprequisite +echo "#" > site.cfg +echo "# Build configuration for numpy" >> site.cfg +echo "#" >> site.cfg +echo >> site.cfg +echo "# Section ALL to set global information for lapack dependency" >> site.cfg +echo "[ALL]" >> site.cfg +echo "libraries = lapack,blas,cblas,lapacke,tmglib" >> site.cfg +echo "library_dirs = \$\{LAPACKHOME\}/lib" >> site.cfg +#echo "runtime_library_dirs = ${LAPACKHOME}/lib" >> site.cfg +echo "include_dirs = \$\{LAPACKHOME\}/include" >> site.cfg +#echo "extra_link_args = -lcblas" >> site.cfg +echo >> site.cfg + +#echo +#echo "*** setup.py build" +#python setup.py build +#if [ $? -ne 0 ] +#then +# echo "ERROR on setup build" +# rm -f site.cfg +# exit 1 +#fi + +NUMPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${NUMPY_INSTALL} +PYTHONPATH=${NUMPY_INSTALL}:${PYTHONPATH} + +echo +echo "*** setup.py install" +# OP TEST +#python setup.py install --prefix=${PRODUCT_INSTALL} +$PYTHONBIN setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on setup install" + rm -f site.cfg + exit 2 +fi + +rm -f site.cfg + +echo +echo "########## END" + diff --git a/products/compil_scripts/omniNotify.sh b/products/compil_scripts/omniNotify.sh new file mode 100755 index 0000000..e8351af --- /dev/null +++ b/products/compil_scripts/omniNotify.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +echo "##########################################################################" +echo "omniNotify" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo +echo "*** configure" +./configure --prefix=${OMNIORB_ROOT_DIR} PYTHON=${PYTHON_ROOT_DIR}/bin/python +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 3 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +mkdir -p $PRODUCT_INSTALL +echo "omniNotify is installed into omni dir ${OMNIORB_ROOT_DIR}" > $PRODUCT_INSTALL/README + +echo +echo "########## END" + diff --git a/products/compil_scripts/omniORB.bat b/products/compil_scripts/omniORB.bat new file mode 100755 index 0000000..8579b1c --- /dev/null +++ b/products/compil_scripts/omniORB.bat @@ -0,0 +1,74 @@ +@echo off + +echo ########################################################################## +echo omniORB %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +if NOT defined CYGWIN_ROOT_DIR ( + echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR + exit 1 +) else ( + echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR% +) + +if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%" +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% +xcopy * %BUILD_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 2 +) + +REM select the correct platform +set CONFIG_MK=%BUILD_DIR%\config\config.mk +set CONFIG_REF=%BUILD_DIR%\config\config.mk.ref +set CONFIG_DBG=%BUILD_DIR%\config\config.mk.dbg +copy %CONFIG_MK% %CONFIG_REF% +echo INFO: activating platform target: x86_win32_vs_15 +sed "s/#platform = x86_win32_vs_15/platform = x86_win32_vs_15/g" < %CONFIG_REF% > %CONFIG_MK% +if %SAT_DEBUG% == 1 ( + copy %CONFIG_MK% %CONFIG_DBG% +) +if %SAT_DEBUG% == 1 ( + sed "s/#BuildDebugBinary = 1/BuildDebugBinary = 1/g" < %CONFIG_DBG% > %CONFIG_MK% +) + +REM target our Python in the configuration file +set PLATFORM_MK=%BUILD_DIR%\mk\platforms\x86_win32_vs_15.mk +set PLATFORM_REF=%BUILD_DIR%\mk\platforms\x86_win32_vs_15.mk.ref +copy %PLATFORM_MK% %PLATFORM_REF% + +set CYGWIN_PYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=\/% +set CYGWIN_PYTHON_ROOT_DIR=%CYGWIN_PYTHON_ROOT_DIR::=% +echo Setting path to Python binary... +sed "s/#PYTHON = \/cygdrive\/c\/Python36\/python/PYTHON = \/cygdrive\/%CYGWIN_PYTHON_ROOT_DIR%\/python/g" < %PLATFORM_REF% > %PLATFORM_MK% + +cd %BUILD_DIR%\src +echo INFO: compilation starts now... +set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin;%PYTHON_ROOT_DIR% +make export +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on make export + exit 3 +) + +cd %BUILD_DIR% +xcopy * %INSTALL_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 4 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/omniORB.sh b/products/compil_scripts/omniORB.sh new file mode 100755 index 0000000..a9d941f --- /dev/null +++ b/products/compil_scripts/omniORB.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +echo "##########################################################################" +echo "omniORB" $VERSION +echo "##########################################################################" + + + +PYTHON_HOME=$PYTHONHOME + +echo +echo "*** configure --disable-ipv6" +$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --disable-ipv6 +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +if [[ $VERSION == "4.1.6" ]] +then + # fix headers + echo + echo "*** fix headers" + cd $PRODUCT_INSTALL/bin + sed -e "s%#\!.*python%#\!/usr/bin/env python%" omniidl > _omniidl + mv -f _omniidl omniidl + chmod a+x omniidl + sed -e "s%#\!.*python%#\!/usr/bin/env python%" omniidlrun.py > _omniidlrun.py + mv -f _omniidlrun.py omniidlrun.py + chmod a+x omniidlrun.py +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/omniORBpy.bat b/products/compil_scripts/omniORBpy.bat new file mode 100755 index 0000000..ab87ed1 --- /dev/null +++ b/products/compil_scripts/omniORBpy.bat @@ -0,0 +1,40 @@ +@echo off + +echo ########################################################################## +echo omniORBpy %VERSION% +echo ########################################################################## + +if NOT defined CYGWIN_ROOT_DIR ( + echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR + exit 2 +) else ( + echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR% +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set OMNIORBPY_WORK_DIR=%OMNIORB_ROOT_DIR%\src\lib\omniORBpy +cd %SOURCE_DIR% +if exist "%OMNIORBPY_WORK_DIR%" rmdir /Q /S "%OMNIORBPY_WORK_DIR%" +mkdir %OMNIORBPY_WORK_DIR% + +xcopy * %OMNIORBPY_WORK_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +cd %OMNIORBPY_WORK_DIR% +echo INFO: compilation starts now... +set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin;%PYTHON_ROOT_DIR% +make export +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on make export + exit 2 +) + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/omniORBpy.sh b/products/compil_scripts/omniORBpy.sh new file mode 100755 index 0000000..be12bdc --- /dev/null +++ b/products/compil_scripts/omniORBpy.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +echo "##########################################################################" +echo "omniORBpy" $VERSION +echo "##########################################################################" + +echo +echo "*** configure" +$SOURCE_DIR/configure --prefix=${OMNIORB_ROOT_DIR} +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +mkdir -p $PRODUCT_INSTALL +echo "omniORBpy is installed into omni dir ${OMNIORB_ROOT_DIR}" > $PRODUCT_INSTALL/README + +echo +echo "########## END" + diff --git a/products/compil_scripts/openblas.bat b/products/compil_scripts/openblas.bat new file mode 100644 index 0000000..c3d92e4 --- /dev/null +++ b/products/compil_scripts/openblas.bat @@ -0,0 +1,79 @@ +@echo off + +echo ########################################################################## +echo Installing OpenBLAS %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set GFORTRAN_EXE=%MINGW_ROOT_DIR%\bin\gfortran.exe + +echo. +echo ************************************************ +echo *** Setting local path to %MINGW_ROOT_DIR%\bin +echo ************************************************ +set path=%MINGW_ROOT_DIR%\bin;%path% +set CMAKE_OPTIONS=%SOURCE_DIR% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_CXX_FLAGS=-fPIC +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_C_FLAGS=-fPIC +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_OPTIMIZED_BLAS=OFF +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCBLAS=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLAPACKE=ON +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SIZEOF_VOID_P=8 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_Fortran_COMPILER=%MINGW_ROOT_DIR:\=/%/bin/gfortran.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SH="CMAKE_SH-NOTFOUND" +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="MinGW Makefiles" +) +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo *** cmake %CMAKE_OPTIONS}% +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) +echo. +echo ********************************************************************* +echo *** mingw32-make" +echo ********************************************************************* +echo. + +mingw32-make +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. +mingw32-make install +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + + diff --git a/products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh b/products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh new file mode 100755 index 0000000..4e357ea --- /dev/null +++ b/products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +echo "##########################################################################" +echo "opencv" $VERSION +echo "##########################################################################" + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_NEW_PYTHON_SUPPORT=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_EXAMPLES:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_NUMPY_INCLUDE_DIRS=${NUMPY_INCLUDE_DIR};${NUMPY_INCLUDE_DIR2}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_IPP:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_opencv_java:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR2=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_FFMPEG:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_LAPACK:BOOL=ON" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_CUDA:BOOL=OFF" +# bos 19730 +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_VTK:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PRECOMPILED_HEADERS:BOOL=OFF" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS=-fPIC" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS=-fPIC" + + +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR +cd $BUILD_DIR + +echo "*** cmake" $CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 2 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/opencv.bat b/products/compil_scripts/opencv.bat new file mode 100755 index 0000000..2559c0b --- /dev/null +++ b/products/compil_scripts/opencv.bat @@ -0,0 +1,71 @@ +@echo off + +echo ########################################################################## +echo opencv %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DWITH_CUDA:BOOL=OFF +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DWITH_EIGEN:BOOL=OFF +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DSTATIC_LIBRARY_FLAGS:STRING="/machine:x64" +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHON_ROOT_DIR:\=/%/python.exe +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_opencv_java:STRING=OFF +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" + +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +echo -------------------------------------------------------------------------- + +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on CMake + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +echo -------------------------------------------------------------------------- + +msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/opencv.sh b/products/compil_scripts/opencv.sh new file mode 100755 index 0000000..3118d7a --- /dev/null +++ b/products/compil_scripts/opencv.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +echo "##########################################################################" +echo "opencv" $VERSION +echo "##########################################################################" + +function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" + +if version_ge $VERSION "3."; then + echo "*** openCV version $VERSION >= 3." + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_NEW_PYTHON_SUPPORT=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_EXAMPLES:BOOL=ON" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_NUMPY_INCLUDE_DIRS=${NUMPY_INCLUDE_DIR};${NUMPY_INCLUDE_DIR2}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_IPP:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_opencv_java:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR2=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_FFMPEG:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_LAPACK:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_CUDA:BOOL=OFF" + # bos 19730 + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_VTK:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PRECOMPILED_HEADERS:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS=-fPIC" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS=-fPIC" + + # +else + echo "*** openCV version $VERSION < 3." + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_CUDA:BOOL=OFF" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_FFMPEG:BOOL=OFF" + # OP opencv on Ubuntu + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIRS=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so" + CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_opencv_java=OFF" +fi + + +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR +cd $BUILD_DIR + +cmake $CMAKE_OPTIONS $SOURCE_DIR + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 2 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/openmpi.sh b/products/compil_scripts/openmpi.sh new file mode 100755 index 0000000..73fd89b --- /dev/null +++ b/products/compil_scripts/openmpi.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +echo "##########################################################################" +echo "OpenMPI" $VERSION +echo "##########################################################################" + + + +# Attention la variable $PYTHOSTARTUP pose problem -> unset. +# Si erreur au make install -> environement "pollué" + +echo +echo "*** configure" +$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/packaging.sh b/products/compil_scripts/packaging.sh new file mode 100755 index 0000000..0140262 --- /dev/null +++ b/products/compil_scripts/packaging.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "packaging" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/perl.bat b/products/compil_scripts/perl.bat new file mode 100644 index 0000000..67d84ca --- /dev/null +++ b/products/compil_scripts/perl.bat @@ -0,0 +1,21 @@ +@echo off + +echo ########################################################################## +echo Perl %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy * %PRODUCT_INSTALL% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/petsc.sh b/products/compil_scripts/petsc.sh new file mode 100755 index 0000000..ccf99fe --- /dev/null +++ b/products/compil_scripts/petsc.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Petsc" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +echo +echo "*** configure" +./configure --prefix=$PRODUCT_INSTALL --with-mpi=0 --download-f2cblaslapack=https://www.mcs.anl.gov/petsc/mirror/externalpackages/f2cblaslapack-3.4.2.q4.tar.gz --download-slepc=https://slepc.upv.es/download/distrib/slepc-3.13.4.tar.gz + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +MAKE_OPTIONS="PETSC_DIR=${BUILD_DIR}" + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +MAKE_OPTIONS=$MAKE_OPTIONS" PETSC_ARCH=arch-linux-c-debug" + +echo +echo "*** make install" +make $MAKE_OPTIONS install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/pip.bat b/products/compil_scripts/pip.bat new file mode 100644 index 0000000..01391a0 --- /dev/null +++ b/products/compil_scripts/pip.bat @@ -0,0 +1,20 @@ +@echo off + +echo ########################################################################## +echo pip %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + + +cd %SOURCE_DIR% + +REM +python --version +echo python get-pip.py --force-reinstall --no-setuptools --no-wheel --no-index --find-links=%SOURCE_DIR% +python get-pip.py --force-reinstall --no-setuptools --no-wheel --no-index --find-links=%SOURCE_DIR% +echo. +echo ########## END diff --git a/products/compil_scripts/pip_install.bat b/products/compil_scripts/pip_install.bat new file mode 100644 index 0000000..07b06d3 --- /dev/null +++ b/products/compil_scripts/pip_install.bat @@ -0,0 +1,55 @@ +@echo off + +SET INSTALL_CENTRALLY=1 +REM retrieve the PRODUCT name... +for %%i in (%PRODUCT_INSTALL%) do set "PRODUCT_NAME=%%~nxi" +echo ########################################################################## +echo *** Installing %PRODUCT_NAME% version: %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set INSTALL_LIB=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%INSTALL_LIB%" mkdir %INSTALL_LIB% +set PYTHONPATH=%INSTALL_LIB%;%PYTHONPATH% + +echo. +echo ########################################################################## +echo *** Launching "python.exe setup.py build" +echo ########################################################################## + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo ########################################################################## +echo *** Launching "python.exe setup.py install" +echo ########################################################################## + +if %INSTALL_CENTRALLY% == 1 ( + %PYTHON_ROOT_DIR%\python.exe setup.py install +) else ( + %PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%INSTALL_LIB% +) + +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) +if %INSTALL_CENTRALLY% == 1 ( + @echo off + @echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt + @echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt +) + +echo. +echo ########## END + diff --git a/products/compil_scripts/pip_install.sh b/products/compil_scripts/pip_install.sh new file mode 100755 index 0000000..f0caa45 --- /dev/null +++ b/products/compil_scripts/pip_install.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +echo "##########################################################################" +#echo "alabaster" $VERSION +prdtName=`basename $PRODUCT_INSTALL` +echo $prdtName $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build with $PYTHONBIN" +$PYTHONBIN setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +echo +echo "*** install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/pip_install_whl.bat b/products/compil_scripts/pip_install_whl.bat new file mode 100644 index 0000000..00bd85f --- /dev/null +++ b/products/compil_scripts/pip_install_whl.bat @@ -0,0 +1,42 @@ +@echo off + +set INSTALL_CENTRALLY=1 +for %%i in (%PRODUCT_INSTALL%) do set "PRODUCT_NAME=%%~nxi" + +echo ########################################################################## +echo *** Installing %PRODUCT_NAME% version: %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +echo. +set PRODUCT_WHL= +FOR /F "delims=" %%i IN ('dir /s /b') DO (set PRODUCT_WHL=%%~ni%%~xi) + +echo. +echo INFO: found file: %PRODUCT_WHL% + +if %INSTALL_CENTRALLY% == 1 ( + echo INFO: running command: %PYTHON_ROOT_DIR%\python.exe -m pip install --no-dependencies %PRODUCT_WHL% + @echo off + @echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt + @echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt + %PYTHON_ROOT_DIR%\python.exe -m pip install --no-dependencies %PRODUCT_WHL% +) else ( + echo INFO: running command: %PYTHON_ROOT_DIR%\python.exe -m pip install %PRODUCT_WHL% --prefix=%PRODUCT_INSTALL% + %PYTHON_ROOT_DIR%\python.exe -m pip install --no-dependencies %PRODUCT_WHL% --prefix=%PRODUCT_INSTALL% +) + +if NOT %ERRORLEVEL% == 0 ( + echo ERROR pip install + exit 1 +) + +echo. +echo ########## END + diff --git a/products/compil_scripts/planegcs.bat b/products/compil_scripts/planegcs.bat new file mode 100644 index 0000000..4441e59 --- /dev/null +++ b/products/compil_scripts/planegcs.bat @@ -0,0 +1,82 @@ +@echo off + +echo ########################################################################## +echo PLANEGCS %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set CMAKE_OPTIONS= +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% +SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL:\=/% + +REM Boost settings +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/% +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0" "1.67" +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 +set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 + +if defined CMAKE_GENERATOR ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +) else ( + set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +) + +set MSBUILDDISABLENODEREUSE=1 + +echo. +echo ********************************************************************* +echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% +echo ********************************************************************* +echo. + +cd %BUILD_DIR% +%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on cmake" + exit 1 +) + +echo. +echo ********************************************************************* +echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj" +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild ALL_BUILD.vcxproj + exit 2 +) + +echo. +echo ********************************************************************* +echo *** installation... +echo ********************************************************************* +echo. + +msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild INSTALL.vcxproj + exit 3 +) + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END + diff --git a/products/compil_scripts/planegcs.sh b/products/compil_scripts/planegcs.sh new file mode 100755 index 0000000..58cc667 --- /dev/null +++ b/products/compil_scripts/planegcs.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +echo "##########################################################################" +echo "PLANEGCS" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +# Install dir +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX=$PRODUCT_INSTALL" + +echo +echo "*** cmake " ${CMAKE_OPTIONS} +cmake ${CMAKE_OPTIONS} +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/pockets.sh b/products/compil_scripts/pockets.sh new file mode 100755 index 0000000..e16de65 --- /dev/null +++ b/products/compil_scripts/pockets.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "pockets" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/pthreads.bat b/products/compil_scripts/pthreads.bat new file mode 100755 index 0000000..2cb43af --- /dev/null +++ b/products/compil_scripts/pthreads.bat @@ -0,0 +1,89 @@ +@echo off + +echo ########################################################################## +echo PThreads %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=Release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=Debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib +if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when copying archive %ERRORLEVEL% + exit 1 +) + +cd %BUILD_DIR% + +REM Upgrade to current version of MSVC +echo. +echo *** devenv %BUILD_DIR%\pthread.sln /upgrade +devenv %BUILD_DIR%\pthread.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 2 +) + +REM Compilation +echo. +echo *** %BUILD_DIR%\pthread.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 + +msbuild %BUILD_DIR%\pthread.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on msbuild + exit 3 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Installing includes +echo -------------------------------------------------------------------------- +echo. + +xcopy %BUILD_DIR%\*.h %PRODUCT_INSTALL%\include\ +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on copying includes" + exit 4 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** Installing libs +echo -------------------------------------------------------------------------- +echo. + +xcopy %BUILD_DIR%\*.dll %PRODUCT_INSTALL%\lib\ +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on copying dll files" + exit 5 +) + +xcopy %BUILD_DIR%\*.lib %PRODUCT_INSTALL%\lib\ +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on copying lib files" + exit 6 +) + +copy %PRODUCT_INSTALL%\lib\pthreadVC2.lib %PRODUCT_INSTALL%\lib\pthreadVC2_64.lib +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on renaming lib\pthreadVC2.lib" + exit 7 +) + +echo. +echo "########## END" diff --git a/products/compil_scripts/pthreads.sh b/products/compil_scripts/pthreads.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/pthreads.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/compil_scripts/pyhamcrest.sh b/products/compil_scripts/pyhamcrest.sh new file mode 100755 index 0000000..52be542 --- /dev/null +++ b/products/compil_scripts/pyhamcrest.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "##########################################################################" +echo "pyhamcrest" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR +PRODUCT_NAME=`ls *.whl` + +echo ########################################################################## +echo *** Installing $PRODUCT_NAME version: $VERSION +echo ########################################################################## + +rm -rf $PRODUCT_INSTALL && mkdir -p $PRODUCT_INSTALL +$PYTHONBIN -m pip install --no-dependencies $PRODUCT_NAME +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/pyparsing.bat b/products/compil_scripts/pyparsing.bat new file mode 100755 index 0000000..72ae1a4 --- /dev/null +++ b/products/compil_scripts/pyparsing.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo pyparsing %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/pyparsing.sh b/products/compil_scripts/pyparsing.sh new file mode 100755 index 0000000..8e35928 --- /dev/null +++ b/products/compil_scripts/pyparsing.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "pyparsing" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/pyreadline.bat b/products/compil_scripts/pyreadline.bat new file mode 100755 index 0000000..1159360 --- /dev/null +++ b/products/compil_scripts/pyreadline.bat @@ -0,0 +1,45 @@ +rem @echo off + +echo ########################################################################## +echo pyreadline %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) + +echo. +echo "pyreadline is installed into %PYTHONHOME% dir " > %PRODUCT_INSTALL%\README.txt + +echo. +echo ########## END diff --git a/products/compil_scripts/pyreadline.sh b/products/compil_scripts/pyreadline.sh new file mode 100755 index 0000000..f8920f1 --- /dev/null +++ b/products/compil_scripts/pyreadline.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +echo "##########################################################################" +echo "pyreadline" $VERSION +echo "##########################################################################" + + +mkdir -p $PRODUCT_INSTALL +echo "pyreadline is a Windows porting of readline, a native module of Unix python" > $PRODUCT_INSTALL/README + +echo +echo "########## END" diff --git a/products/compil_scripts/pytz.bat b/products/compil_scripts/pytz.bat new file mode 100755 index 0000000..2a1eae0 --- /dev/null +++ b/products/compil_scripts/pytz.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo Pytz %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/pytz.sh b/products/compil_scripts/pytz.sh new file mode 100755 index 0000000..2c1c64d --- /dev/null +++ b/products/compil_scripts/pytz.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "pytz" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/qt-4.6.3.sh b/products/compil_scripts/qt-4.6.3.sh new file mode 100755 index 0000000..f2e0797 --- /dev/null +++ b/products/compil_scripts/qt-4.6.3.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + + + +echo +echo "*** configure" +CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +if [[ $BITS == "64" ]] +then + echo "*** create link for lib64" + cd $PRODUCT_INSTALL + ln -s lib lib64 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/qt-4.8.4.sh b/products/compil_scripts/qt-4.8.4.sh new file mode 100755 index 0000000..b18c4b1 --- /dev/null +++ b/products/compil_scripts/qt-4.8.4.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + + + +echo +echo "*** configure" +CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng -no-sql-cli +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo "*** create link for lib64" +cd $PRODUCT_INSTALL +ln -s lib lib64 + + +echo "*** correction of a problem with webcore and jscore libraries" +cd ${PRODUCT_INSTALL}/lib && sed -i "s% -L../../WebCore/release%%g;s% -L../../JavaScriptCore/release%%g;s% -lwebcore%%g;s% -ljscore%%g" libQtWebKit.la + +echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation" +cd ${PRODUCT_INSTALL}/bin && echo -e "[Paths]\nPrefix=..\nBinaries=bin" > qt.conf + +echo +echo "########## END" + diff --git a/products/compil_scripts/qt-5.5.1.sh b/products/compil_scripts/qt-5.5.1.sh new file mode 100755 index 0000000..ff91508 --- /dev/null +++ b/products/compil_scripts/qt-5.5.1.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + + + +# OP 02/05/2017 Artifact 8644 : probleme de longueur sur certaines commandes +# de compilation Qt. On fait tout dans les sources +#CURRENT_DIR=`pwd` +cd $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on $SOURCE_DIR access" + exit 1 +fi + +echo +echo "*** configure" +# OP 02/05/2017 Artifact 8644 : probleme de longueur sur certaines commandes +# de compilation Qt. On fait tout dans les sources +#CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ +# -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-compile-examples +CXXFLAGS="-fpermissive" ./configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-compile-examples -skip qtwebengine +if [ $? -ne 0 ] +then + echo "ERROR on configure" +# OP 02/05/2017 Artifact 8644 : modification du numero d'erreur + +# repositionnement dans le repertoire d'origine +# exit 1 +# cd $CURRENT_DIR + exit 2 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" +# OP 02/05/2017 Artifact 8644 : modification du numero d'erreur + +# repositionnement dans le repertoire d'origine +# exit 2 +# cd $CURRENT_DIR + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" +# OP 02/05/2017 Artifact 8644 : modification du numero d'erreur + +# repositionnement dans le repertoire d'origine +# exit 3 +# cd $CURRENT_DIR + exit 4 +fi + +# OP 12/05/2017 Artifact 8644 : on supprime le make clean car il provoque +# une boucle infinie dans le repertoire source +# qt/qtwebkit/Source/WebCore +#echo +#echo "*** make clean" +#make clean +#if [ $? -ne 0 ] +#then +# echo "ERROR on make clean" +# OP 04/05/2017 Artifact 8644 : repositionnement dans le repertoire d'origine +# cd $CURRENT_DIR +# exit 5 +#fi + +if [[ $BITS == "64" ]] +then + echo "*** create link for lib64" + cd $PRODUCT_INSTALL +# OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande + if [ $? -ne 0 ] + then + echo "ERROR on $PRODUCT_INSTALL access" + exit 5 + fi + ln -s lib lib64 + # OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande + if [ $? -ne 0 ] + then + echo "ERROR on create link for lib64 in $PRODUCT_INSTALL" + exit 6 + fi +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/qt-5.6.1.bat b/products/compil_scripts/qt-5.6.1.bat new file mode 100755 index 0000000..7f31c37 --- /dev/null +++ b/products/compil_scripts/qt-5.6.1.bat @@ -0,0 +1,65 @@ +@echo off + +echo ########################################################################## +echo Qt %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +REM Configure +echo. +echo -------------------------------------------------------------------------- +echo *** configure +echo -------------------------------------------------------------------------- + +rem configure -prefix %PRODUCT_INSTALL% -release -opensource -verbose -no-separate-debug-info -confirm-license -no-compile-examples -qt-libpng + +REM call configure -prefix %PRODUCT_INSTALL% -confirm-license -verbose -release -platform win32-msvc2010 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -opensource -make libs -qt-designer + +call configure -prefix %PRODUCT_INSTALL% -confirm-license -verbose -release -platform win32-msvc2010 -qt-pcre -qt-libjpeg -opengl desktop -qt-sql-sqlite -qt-sql-odbc -opensource -make tools -make libs + +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on configure" + exit 1 +) + +REM Compilation with nmake as said in qt documentation +REM nmake can crash because of multi-threading problems +REM Thus, we will try to run it 42 times until it works +set /a remaining_tries = 42 +:nmake +echo *** Trying to run nmake %remaining_tries% more time. +set /a remaining_tries = remaining_tries - 1 +nmake +if NOT %ERRORLEVEL% == 0 if %remaining_tries% gtr 0 ( + goto nmake +) +if %remaining_tries% == 0 ( + echo "ERROR on nmake" + exit 2 +) + +REM Installation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install +echo -------------------------------------------------------------------------- + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation" +echo [Paths] > %PRODUCT_INSTALL%\bin\qt.conf +echo Prefix=../ >> %PRODUCT_INSTALL%\bin\qt.conf + +echo. +echo ########## END + diff --git a/products/compil_scripts/qt-5.6.1.sh b/products/compil_scripts/qt-5.6.1.sh new file mode 100755 index 0000000..bb50ddb --- /dev/null +++ b/products/compil_scripts/qt-5.6.1.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + + + +# OP 28/04/2017 Artifact 8644 : probleme de longueur sur certaines commandes +# de compilation Qt. On fait tout dans les sources +#CURRENT_DIR=`pwd` +cd $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on $SOURCE_DIR access" + exit 1 +fi + +echo +echo "*** configure" +# OP 28/04/2017 Artifact 8644 : probleme de longueur sur certaines commandes +# de compilation Qt. On fait tout dans les sources +#CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ +# -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime +CXXFLAGS="-fpermissive" ./configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime -skip qtwebengine +if [ $? -ne 0 ] +then + echo "ERROR on configure" +# OP 28/04/2017 Artifact 8644 : modification du numero d'erreur + +# repositionnement dans le repertoire d'origine +# exit 1 +# cd $CURRENT_DIR + exit 2 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + # OP 28/04/2017 Artifact 8644 : modification du numero d'erreur + +# repositionnement dans le repertoire d'origine +# exit 2 +# cd $CURRENT_DIR + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + # OP 28/04/2017 Artifact 8644 : modification du numero d'erreur + +# repositionnement dans le repertoire d'origine +# exit 3 +# cd $CURRENT_DIR + exit 4 +fi + +# OP 04/03/2017 Artifact 8644 : ajout du make clean pour nettoyer les sources +echo +echo "*** make clean" +make clean +if [ $? -ne 0 ] +then + echo "ERROR on make clean" +# OP 04/05/2017 Artifact 8644 : repositionnement dans le repertoire d'origine +# cd $CURRENT_DIR + exit 5 +fi + +if [[ $BITS == "64" ]] +then + echo "*** create link for lib64" + cd $PRODUCT_INSTALL +# OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande + if [ $? -ne 0 ] + then + echo "ERROR on $PRODUCT_INSTALL access" + exit 6 + fi + ln -s lib lib64 + # OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande + if [ $? -ne 0 ] + then + echo "ERROR on create link for lib64 in $PRODUCT_INSTALL" + exit 7 + fi +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/qt-5.6.1_test.sh b/products/compil_scripts/qt-5.6.1_test.sh new file mode 100755 index 0000000..daa20a6 --- /dev/null +++ b/products/compil_scripts/qt-5.6.1_test.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + + + +echo +echo "*** configure" +CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb +#-no-egl -no-eglfs -no-use-gold-linker +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +if [[ $BITS == "64" ]] +then + echo "*** create link for lib64" + cd $PRODUCT_INSTALL + ln -s lib lib64 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/qt-5.8.4.sh b/products/compil_scripts/qt-5.8.4.sh new file mode 100755 index 0000000..b18c4b1 --- /dev/null +++ b/products/compil_scripts/qt-5.8.4.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + + + +echo +echo "*** configure" +CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng -no-sql-cli +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo "*** create link for lib64" +cd $PRODUCT_INSTALL +ln -s lib lib64 + + +echo "*** correction of a problem with webcore and jscore libraries" +cd ${PRODUCT_INSTALL}/lib && sed -i "s% -L../../WebCore/release%%g;s% -L../../JavaScriptCore/release%%g;s% -lwebcore%%g;s% -ljscore%%g" libQtWebKit.la + +echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation" +cd ${PRODUCT_INSTALL}/bin && echo -e "[Paths]\nPrefix=..\nBinaries=bin" > qt.conf + +echo +echo "########## END" + diff --git a/products/compil_scripts/qt.bat b/products/compil_scripts/qt.bat new file mode 100644 index 0000000..18132c6 --- /dev/null +++ b/products/compil_scripts/qt.bat @@ -0,0 +1,75 @@ +@echo off + +echo ########################################################################## +echo Qt %VERSION% +echo ########################################################################## + +IF NOT DEFINED SAT_DEBUG ( + SET SAT_DEBUG=0 +) + +SET PRODUCT_BUILD_TYPE=-release +REM TODO: NGH: not Tested yet +REM if %SAT_DEBUG% == 1 ( +REM set PRODUCT_BUILD_TYPE=-debug +REM ) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +REM Configure +echo. +echo -------------------------------------------------------------------------- +echo *** configure +echo -------------------------------------------------------------------------- + +set QT_OPTIONS=-platform win32-msvc2017 +set QT_OPTIONS=%QT_OPTIONS% -opensource -confirm-license %PRODUCT_BUILD_TYPE% +set QT_OPTIONS=%QT_OPTIONS% -no-angle -opengl desktop -nomake examples -nomake tests +set QT_OPTIONS=%QT_OPTIONS% -skip qtwebengine -skip wayland -skip qtgamepad -no-openssl +set QT_OPTIONS=%QT_OPTIONS% -prefix %PRODUCT_INSTALL% +call configure %QT_OPTIONS% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on configure" + exit 1 +) + +REM Compilation with nmake as said in qt documentation +REM nmake can crash because of multi-threading problems +REM Thus, we will try to run it 42 times until it works +set /a remaining_tries = 42 +:nmake +echo *** Trying to run nmake %remaining_tries% more time. +set /a remaining_tries = remaining_tries - 1 +nmake +if NOT %ERRORLEVEL% == 0 if %remaining_tries% gtr 0 ( + goto nmake +) +if %remaining_tries% == 0 ( + echo "ERROR on nmake" + exit 2 +) + +REM Installation +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install +echo -------------------------------------------------------------------------- + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation" +echo [Paths] > %PRODUCT_INSTALL%\bin\qt.conf +echo Prefix=../ >> %PRODUCT_INSTALL%\bin\qt.conf + +echo. +echo ########## END + diff --git a/products/compil_scripts/qt.sh b/products/compil_scripts/qt.sh new file mode 100755 index 0000000..cc943e3 --- /dev/null +++ b/products/compil_scripts/qt.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Qt" $VERSION +echo "##########################################################################" + +cd $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on $SOURCE_DIR access" + exit 1 +fi + +if [[ $DIST_NAME == "FD" && $DIST_VERSION == "32" ]] +then + export QMAKE_CXXFLAGS="-std=c++11" +fi + +# For -qt-harfbuzz option, see spns #9694 +echo +echo "*** ./configure -prefix $PRODUCT_INSTALL -release -opensource -nomake tests -nomake examples -no-rpath -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime -skip qtwebengine -skip wayland -skip qtgamepad -system-freetype -qt-harfbuzz -no-openssl -no-glib" + +./configure -prefix $PRODUCT_INSTALL -release -opensource -nomake tests -nomake examples -no-rpath \ + -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime -skip qtwebengine \ + -skip wayland -skip qtgamepad -system-freetype -qt-harfbuzz \ + -no-openssl -no-glib + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 2 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 3 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 4 +fi + +# make clean pour nettoyer les sources +echo +echo "*** make clean" +make clean +if [ $? -ne 0 ] +then + echo "ERROR on make clean" + exit 5 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/qwt-6.1.0.bat b/products/compil_scripts/qwt-6.1.0.bat new file mode 100755 index 0000000..b015a0e --- /dev/null +++ b/products/compil_scripts/qwt-6.1.0.bat @@ -0,0 +1,95 @@ +@echo off + +echo ########################################################################## +echo qwt %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%" +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% +xcopy * %BUILD_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) +cd %BUILD_DIR% + +echo. +echo -------------------------------------------------------------------------- +echo *** prepare qmake +echo -------------------------------------------------------------------------- +echo. + +rem # Remplacement des antislashs par des slashs +set str=%PRODUCT_INSTALL% +set str=%str:\=/% + +call :GETTEMPNAME +attrib -R qwtconfig.pri +sed "s|\(QWT_INSTALL_PREFIX[[:space:]]*\)=\([[:space:]]*\)\(.*\)|\1=\2%str%|g" < qwtconfig.pri > %tmpfile% +move /y %tmpfile% qwtconfig.pri + +cd designer +call :GETTEMPNAME +attrib -R designer.pro +sed "s|\(target\.path[[:space:]]*\)=\([[:space:]]*\).*|\1=\2\$\$QWT_INSTALL_PREFIX/plugins/designer|g" < designer.pro > %tmpfile% +move /y %tmpfile% designer.pro +cd .. + +rem # Desactivation du mode Debug +call :GETTEMPNAME +attrib -R qwtbuild.pri +sed "s|\(CONFIG[[:space:]]*+=[[:space:]]*debug_and_release\)|#\1|g" < qwtbuild.pri > %tmpfile% +move /y %tmpfile% qwtbuild.pri +sed "s|\(CONFIG[[:space:]]*+=[[:space:]]*build_all\)|#\1|g" < qwtbuild.pri > %tmpfile% +move /y %tmpfile% qwtbuild.pri + +echo. +echo -------------------------------------------------------------------------- +echo *** qmake +echo -------------------------------------------------------------------------- +echo. + +qmake +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on qmake : %ERRORLEVEL% + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake +echo -------------------------------------------------------------------------- +echo. + +nmake +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake install +echo -------------------------------------------------------------------------- +echo. + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on nmake install + exit 3 +) + +echo. +echo ########## END + +:: ========== FUNCTIONS ========== +exit /B + +:GETTEMPNAME + set tmpfile=%TMP%\mytempfile-%RANDOM%.tmp + if exist "%tmpfile%" GOTO :GETTEMPNAME + exit /B diff --git a/products/compil_scripts/qwt-6.1.0.sh b/products/compil_scripts/qwt-6.1.0.sh new file mode 100755 index 0000000..28cfca4 --- /dev/null +++ b/products/compil_scripts/qwt-6.1.0.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +echo "##########################################################################" +echo "qwt" $VERSION +echo "##########################################################################" + + + +export TMAKEPATH=${QTDIR}/bin +export PATH=${TMAKEPATH}:${PATH} + +echo +echo "*** copy source" +mkdir -p ${PRODUCT_INSTALL} +#cp -r $SOURCE_DIR/* . +cd $SOURCE_DIR + +echo +echo "*** prepare qmake" +sed -i "s|\(QWT_INSTALL_PREFIX[[:space:]]*\)=\([[:space:]]*\)\(.*\)|\1=\2${PRODUCT_INSTALL}|g" qwtconfig.pri +sed -i "s|#\(CONFIG[[:space:]]*+=[[:space:]]*QwtSVGItem\)|\1|g" qwtconfig.pri + +sed -i "s|\(target\.path[[:space:]]*\)=\([[:space:]]*\).*|\1=\2\$\$QWT_INSTALL_PREFIX/plugins/designer|g" designer/designer.pro + +echo +echo "** qmake" +qmake +if [ $? -ne 0 ] +then + echo "ERROR on qmake" + exit 1 +fi + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/qwt.sh b/products/compil_scripts/qwt.sh new file mode 100755 index 0000000..e086e96 --- /dev/null +++ b/products/compil_scripts/qwt.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +echo "##########################################################################" +echo "qwt" $VERSION +echo "##########################################################################" + + + +cp -r $SOURCE_DIR/* . + +export TMAKEPATH=${QTDIR}/bin +export PATH=${TMAKEPATH}:${PATH} + +echo +echo "*** copy source" +mkdir -p ${PRODUCT_INSTALL} + +echo +echo "*** prepare qmake" +sed -i "s|\(INSTALLBASE[[:space:]]*\)=\([[:space:]]*\)\(.*\)|\1=\2${PRODUCT_INSTALL}|g" qwtconfig.pri +sed -i "s|#\(CONFIG[[:space:]]*+=[[:space:]]*QwtSVGItem\)|\1|g" qwtconfig.pri + +sed -i "s|\(target\.path[[:space:]]*\)=\([[:space:]]*\).*|\1=\2\$\$INSTALLBASE/plugins/designer|g" designer/designer.pro + +echo +echo "** qmake" +qmake +if [ $? -ne 0 ] +then + echo "ERROR on qmake" + exit 1 +fi + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + + diff --git a/products/compil_scripts/requests.sh b/products/compil_scripts/requests.sh new file mode 100755 index 0000000..cfeec8b --- /dev/null +++ b/products/compil_scripts/requests.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "requests" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/root.bat b/products/compil_scripts/root.bat new file mode 100644 index 0000000..f0f801d --- /dev/null +++ b/products/compil_scripts/root.bat @@ -0,0 +1,21 @@ +@echo off + +echo ########################################################################## +echo ROOT %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + + +xcopy %SOURCE_DIR%\* %PRODUCT_INSTALL% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/ruby.bat b/products/compil_scripts/ruby.bat new file mode 100644 index 0000000..25824f3 --- /dev/null +++ b/products/compil_scripts/ruby.bat @@ -0,0 +1,22 @@ +@echo off + +echo ########################################################################## +echo Ruby %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy * %PRODUCT_INSTALL% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/scipy.bat b/products/compil_scripts/scipy.bat new file mode 100755 index 0000000..800979b --- /dev/null +++ b/products/compil_scripts/scipy.bat @@ -0,0 +1,33 @@ +@echo off + +echo ########################################################################## +echo Scipy %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +set INSTALL_LIB=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION% +if NOT exist "%INSTALL_LIB%" mkdir %INSTALL_LIB% +set PYTHONPATH=%INSTALL_LIB%;%PYTHONPATH% + +cd %SOURCE_DIR% +echo. +FOR /F "delims=" %%i IN ("*.whl") DO (set SCIPY_LIB_WHL=%%~ni%%~xi) +echo. +echo INFO: found Wheel file: %SCIPY_LIB_WHL% + +python -m pip install --no-dependencies --ignore-installed %SCIPY_LIB_WHL% --prefix=%PRODUCT_INSTALL% + +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on pip based Scipy installation" + exit 1 +) + +mv %PRODUCT_INSTALL%\lib\site-packages %INSTALL_LIB%\site-packages + +echo. +echo "########## END" diff --git a/products/compil_scripts/scipy.sh b/products/compil_scripts/scipy.sh new file mode 100755 index 0000000..21347b9 --- /dev/null +++ b/products/compil_scripts/scipy.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +echo "##########################################################################" +echo "scipy" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** build" +echo ${PYTHONPATH} +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +SCIPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${SCIPY_INSTALL} +PYTHONPATH=${SCIPY_INSTALL}:${PYTHONPATH} +echo +echo "*** install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/scons.sh b/products/compil_scripts/scons.sh new file mode 100755 index 0000000..79702f3 --- /dev/null +++ b/products/compil_scripts/scons.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +echo "##########################################################################" +echo "Scons" $VERSION +echo "##########################################################################" +# +cd $SOURCE_DIR +# +echo +echo "*** setup.py" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi +echo +echo "########## END" + diff --git a/products/compil_scripts/scotch-5.1.12.sh b/products/compil_scripts/scotch-5.1.12.sh new file mode 100755 index 0000000..48d283d --- /dev/null +++ b/products/compil_scripts/scotch-5.1.12.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Scotch" $VERSION +echo "##########################################################################" + + + +mkdir -p $PRODUCT_INSTALL + +cd $SOURCE_DIR + +echo +#echo "*** copy BUILD to INSTALL : cp -ar ${PRODUCT_BUILD} ${PRODUCT_INSTALL}" +#cp -ar * ${PRODUCT_INSTALL} +#if [ $? -ne 0 ] +#then +# echo "ERROR on cp -ar ${SOURCE_DIR} ${PRODUCT_INSTALL}" +# exit 1 +#fi +#echo "INSTALL :: ${PRODUCT_INSTALL}" + +cd src + +cp Make.inc/Makefile.inc.x86-64_pc_linux2 ./Makefile.inc.ori + +# add pthread for gcc > 4.4 +sed -e "s%LDFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%LDFLAGS\1=\2 \3 -lpthread%g" Makefile.inc.ori > Makefile.inc + +# add -fPIC +sed -e 's|CFLAGS[\t ]*=|& -fPIC|g' Makefile.inc > Makefile.in_new +cp Makefile.in_new Makefile.inc + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 1 +fi + +echo "*** copy to INSTALL : cp -ar ${SOURCE_DIR}/* ${PRODUCT_INSTALL}" +cp -ar ${SOURCE_DIR}/* ${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on cp -ar ${SOURCE_DIR}/* ${PRODUCT_INSTALL}" + exit 2 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/scotch.sh b/products/compil_scripts/scotch.sh new file mode 100755 index 0000000..b26f46a --- /dev/null +++ b/products/compil_scripts/scotch.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Scotch" $VERSION +echo "##########################################################################" + + + +mkdir -p $PRODUCT_INSTALL + +cp -r $SOURCE_DIR/* . + +echo +echo "*** copy BUILD to INSTALL" +cp -ar ${PRODUCT_BUILD}/* ${PRODUCT_INSTALL} +cd ${PRODUCT_INSTALL}/src + +echo +echo "*** create Makefile" +if [[ $VERSION == "6.0.4" ]] +then + sed -e "s%CFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%CFLAGS\1=\2-fPIC \3%g" Make.inc/Makefile.inc.x86-64_pc_linux2 > Makefile.inc +fi +if [[ $BITS == "64" ]] +then + if [[ $VERSION == "5.1.11" ]] + then + sed -e "s%CFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%CFLAGS\1=\2-fPIC \3%g" Makefile.inc > Makefile.in_new + cp Makefile.in_new Makefile.inc + else + sed -e 's|CFLAGS\t=|& -fPIC|g' Makefile.inc > Makefile.in_new + cp Makefile.in_new Makefile.inc + fi +fi + +# add pthread for gcc > 4.4 +sed -e "s%LDFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%LDFLAGS\1=\2 \3 -lpthread%g" Makefile.inc > Makefile.in_new +cp Makefile.in_new Makefile.inc + + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/setuptools.bat b/products/compil_scripts/setuptools.bat new file mode 100755 index 0000000..3e934eb --- /dev/null +++ b/products/compil_scripts/setuptools.bat @@ -0,0 +1,42 @@ +@echo off + +echo ########################################################################## +echo setuptools %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% --single-version-externally-managed --record files.txt +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/setuptools.sh b/products/compil_scripts/setuptools.sh new file mode 100755 index 0000000..063bff7 --- /dev/null +++ b/products/compil_scripts/setuptools.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +echo "##########################################################################" +echo "setuptools" $VERSION +echo "##########################################################################" + +mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH} +mkdir -p $PRODUCT_INSTALL +echo + +cd $SOURCE_DIR + +## unset PYTHONDONTWRITEBYTECODE set by default on MD10 +#PYTHONDONTWRITEBYTECODE= + +echo "*** setup.py BUILD" +python setup.py build +echo + +echo "*** setup.py INSTALL" +python setup.py install --prefix=${PRODUCT_INSTALL} --install-lib ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +if [ $? -ne 0 ] +then + echo "ERROR on setup" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/sip.bat b/products/compil_scripts/sip.bat new file mode 100755 index 0000000..2b39abc --- /dev/null +++ b/products/compil_scripts/sip.bat @@ -0,0 +1,50 @@ +@echo off + +echo ########################################################################## +echo sip %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set python_name=python%PYTHON_VERSION% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe configure.py" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe configure.py -b %PRODUCT_INSTALL%\bin -d %PRODUCT_INSTALL%\lib\%python_name%\site-packages -e %PRODUCT_INSTALL%\include\%python_name% -v %PRODUCT_INSTALL%\sip -p win32-msvc +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on python configure.py " + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "nmake" +echo -------------------------------------------------------------------------- + +nmake +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake" + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "nmake install" +echo -------------------------------------------------------------------------- + +nmake install +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/sip.sh b/products/compil_scripts/sip.sh new file mode 100755 index 0000000..ca80cb7 --- /dev/null +++ b/products/compil_scripts/sip.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +echo "##########################################################################" +echo "sip" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +python_name=python$PYTHON_VERSION + +echo +echo "*** configure.py -b ${PRODUCT_INSTALL}/bin -d ${PRODUCT_INSTALL}/lib/${python_name}/site-packages -e ${PRODUCT_INSTALL}/include/${python_name} -v ${PRODUCT_INSTALL}/sip" +python ./configure.py -b ${PRODUCT_INSTALL}/bin \ + -d ${PRODUCT_INSTALL}/lib/${python_name}/site-packages \ + -e ${PRODUCT_INSTALL}/include/${python_name} \ + -v ${PRODUCT_INSTALL}/sip + +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/six.bat b/products/compil_scripts/six.bat new file mode 100755 index 0000000..03871b0 --- /dev/null +++ b/products/compil_scripts/six.bat @@ -0,0 +1,41 @@ +@echo off + +echo ########################################################################## +echo six %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages +if NOT exist "%dir_lib%" mkdir %dir_lib% +set PYTHONPATH=%dir_lib%;%PYTHONPATH% + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py build" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py build + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo Launching "python.exe setup.py install" +echo -------------------------------------------------------------------------- + +%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on setup.py install + exit 2 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/six.sh b/products/compil_scripts/six.sh new file mode 100755 index 0000000..4f185d4 --- /dev/null +++ b/products/compil_scripts/six.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "six" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/snowballstemmer.sh b/products/compil_scripts/snowballstemmer.sh new file mode 100755 index 0000000..7cdc251 --- /dev/null +++ b/products/compil_scripts/snowballstemmer.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "snowballstemmer" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/solvespace-2.1.sh b/products/compil_scripts/solvespace-2.1.sh new file mode 100755 index 0000000..c16efce --- /dev/null +++ b/products/compil_scripts/solvespace-2.1.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +echo "##########################################################################" +echo "solvespace" $VERSION +echo "##########################################################################" + + + + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DONLY_LIB=ON" + +echo '$SOURCE_DIR ' $SOURCE_DIR +cmake $CMAKE_OPTIONS $SOURCE_DIR + +if [ $? -ne 0 ] +then + echo "ERROR on CMake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/sphinx_rtd_theme.sh b/products/compil_scripts/sphinx_rtd_theme.sh new file mode 100755 index 0000000..8e2d622 --- /dev/null +++ b/products/compil_scripts/sphinx_rtd_theme.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +echo "##########################################################################" +echo "sphinx_rtd_theme" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** setup.py BUILD" +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +dir_lib=$PRODUCT_INSTALL'/lib/python'$PYTHON_VERSION'/site-packages' + +# HACK +PYTHONPATH=$PYTHONPATH:$dir_lib + +mkdir -p $PRODUCT_INSTALL +mkdir -p $dir_lib + +echo +echo "*** install" +python setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/sphinxcontrib.sh b/products/compil_scripts/sphinxcontrib.sh new file mode 100755 index 0000000..98ba065 --- /dev/null +++ b/products/compil_scripts/sphinxcontrib.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +echo "##########################################################################" +echo "sphinxcontrib" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** build" +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +SPHINXCONTRIB_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${SPHINXCONTRIB_INSTALL} +export PYTHONPATH=${SPHINXCONTRIB_INSTALL}:${PYTHONPATH} +echo +echo "*** install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/sphinxcontrib_napoleon.sh b/products/compil_scripts/sphinxcontrib_napoleon.sh new file mode 100755 index 0000000..c74b284 --- /dev/null +++ b/products/compil_scripts/sphinxcontrib_napoleon.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "sphinxcontrib_napoleon" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/sphinxcontrib_websupport.sh b/products/compil_scripts/sphinxcontrib_websupport.sh new file mode 100755 index 0000000..02ed2d7 --- /dev/null +++ b/products/compil_scripts/sphinxcontrib_websupport.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "sphinxcontrib_websupport" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/sphinxintl.sh b/products/compil_scripts/sphinxintl.sh new file mode 100755 index 0000000..b0df5d0 --- /dev/null +++ b/products/compil_scripts/sphinxintl.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "sphinxintl" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/subprocess32.sh b/products/compil_scripts/subprocess32.sh new file mode 100755 index 0000000..624bee8 --- /dev/null +++ b/products/compil_scripts/subprocess32.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +echo "##########################################################################" +echo "subprocess32" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +echo +echo "*** build" +python setup.py build +if [ $? -ne 0 ] +then + echo "ERROR on build" + exit 2 +fi + +SUBPROCESS_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +mkdir -p ${SUBPROCESS_INSTALL} +export PYTHONPATH=${SUBPROCESS_INSTALL}:${PYTHONPATH} +echo +echo "*** install" +python setup.py install --prefix=${PRODUCT_INSTALL} +if [ $? -ne 0 ] +then + echo "ERROR on install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/swig.bat b/products/compil_scripts/swig.bat new file mode 100755 index 0000000..3939414 --- /dev/null +++ b/products/compil_scripts/swig.bat @@ -0,0 +1,31 @@ +@echo off + +echo ########################################################################## +echo swig %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy . %PRODUCT_INSTALL% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +cd %PRODUCT_INSTALL% +mkdir %PRODUCT_INSTALL%\bin + +mv %PRODUCT_INSTALL%\swig.exe %PRODUCT_INSTALL%\bin\swig.exe +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on copy swig.exe + exit 2 +) + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/swig.sh b/products/compil_scripts/swig.sh new file mode 100755 index 0000000..2c0a87c --- /dev/null +++ b/products/compil_scripts/swig.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +echo "##########################################################################" +echo "swig" $VERSION +echo "##########################################################################" + + + +#echo +#echo "*** autogen" +#./autogen.sh +#if [ $? -ne 0 ] +#then +# echo "ERROR on autogen" +# exit 1 +#fi + +echo +echo "*** configure --without-pcre --without-octave" +$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} --without-pcre --without-octave +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +#echo "*** link swig2.0 -> swig" +#cd $PRODUCT_INSTALL/bin +#ln -s swig swig2.0 +#if [ $? -ne 0 ] +#then +# echo "ERROR on link swig2.0 -> swig" +# exit 4 +#fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/tbb.bat b/products/compil_scripts/tbb.bat new file mode 100644 index 0000000..57bd70d --- /dev/null +++ b/products/compil_scripts/tbb.bat @@ -0,0 +1,63 @@ +@echo off + +echo ########################################################################## +echo Threading Building Blocks %VERSION% +echo ########################################################################## + +if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%" +mkdir %BUILD_DIR% + +SET MSBUILDDISABLENODEREUSE=1 +cd %SOURCE_DIR% +xcopy * %BUILD_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +if NOT defined CYGWIN_ROOT_DIR ( + echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR + exit 1 +) else ( + echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR% +) + +cd %BUILD_DIR% + +REM pay attention to ROBOCOY 1: One or more files were copied successfully (that is, new files have arrived) +robocopy %BUILD_DIR%\build\vs2013 %BUILD_DIR%\build\vs2017 /E /NP /NFL /NDL /NS /NC +if NOT %ERRORLEVEL% == 1 ( + echo ERROR when renaming subfolder %BUILD_DIR%\build\vs2013 + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** start compilation +echo -------------------------------------------------------------------------- +REM Upgrade to current version of MSVC +echo. +echo *** devenv %BUILD_DIR%\build\vs2017\makefile.sln /upgrade +devenv %BUILD_DIR%\build\vs2017\makefile.sln /upgrade +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on devenv + exit 3 +) +REM remove the residual file named nul which is a reserved field for Windows... +set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin + +%PYTHON_ROOT_DIR%\python.exe %SOURCE_DIR:\=/%/build/build.py --install --install-python --vs=2017 --msbuild --prefix=%PRODUCT_INSTALL:\=/% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on %PYTHON_ROOT_DIR%\python.exe %SOURCE_DIR:\=/%/build/build.py + exit 4 +) + +REM remove the residual file named nul which is a reserved field for Windows... +mv %BUILD_DIR%\src\nul %BUILD_DIR%\src\null.txt + +taskkill /F /IM "mspdbsrv.exe" + +echo. +echo ########## END diff --git a/products/compil_scripts/tbb.sh b/products/compil_scripts/tbb.sh new file mode 100755 index 0000000..5f29405 --- /dev/null +++ b/products/compil_scripts/tbb.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +echo "##########################################################################" +echo "tbb" $VERSION +echo "##########################################################################" + +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR +cd $BUILD_DIR + +cp -r $SOURCE_DIR/* $BUILD_DIR/ + + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +rm -rf $PRODUCT_INSTALL +mkdir -p $PRODUCT_INSTALL +cp -r $BUILD_DIR/include $PRODUCT_INSTALL/include +cp -r $BUILD_DIR/build/linux*_release $PRODUCT_INSTALL/lib + +echo +echo "########## END" diff --git a/products/compil_scripts/tcl.bat b/products/compil_scripts/tcl.bat new file mode 100755 index 0000000..551c064 --- /dev/null +++ b/products/compil_scripts/tcl.bat @@ -0,0 +1,54 @@ +@echo off + +echo ########################################################################## +echo tcl %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%" +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% +xcopy * %BUILD_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +cd %BUILD_DIR%\win + +echo. +echo -------------------------------------------------------------------------- +echo *** prepare nmake +echo -------------------------------------------------------------------------- + +REM tcl/tk does not compile, this SDK tag is required +REM see https://wiki.tcl-lang.org/page/Building+with+Visual+Studio+2017 +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 10.0.15063.0 + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake" + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc install +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc install INSTALLDIR=%PRODUCT_INSTALL% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +echo. +echo ########## END + diff --git a/products/compil_scripts/tcl.sh b/products/compil_scripts/tcl.sh new file mode 100755 index 0000000..cf18b5d --- /dev/null +++ b/products/compil_scripts/tcl.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +echo "##########################################################################" +echo "tcl" $VERSION +echo "##########################################################################" + + + +echo +echo "*** configure --enable-shared --enable-threads" +$SOURCE_DIR/unix/configure --prefix=$PRODUCT_INSTALL --enable-shared --enable-threads +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "########## END" + diff --git a/products/compil_scripts/tcltk.bat b/products/compil_scripts/tcltk.bat new file mode 100644 index 0000000..26c0233 --- /dev/null +++ b/products/compil_scripts/tcltk.bat @@ -0,0 +1,94 @@ +@echo off + +echo ########################################################################## +echo tcl/tk %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% +xcopy * %BUILD_DIR% /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +cd %BUILD_DIR%\tcl\win + +echo. +echo -------------------------------------------------------------------------- +echo *** prepare nmake +echo -------------------------------------------------------------------------- + +REM tcl/tk does not compile, this SDK tag is required +REM see https://wiki.tcl-lang.org/page/Building+with+Visual+Studio+2017 +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 10.0.15063.0 + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake" + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc install +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc install INSTALLDIR=%PRODUCT_INSTALL% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 3 +) + +cd %SOURCE_DIR%\tcl\win + + +echo. +echo **************************************************************** +where.exe nmake + +cd %BUILD_DIR%\tk\win +set TCLDIR=%BUILD_DIR%\tcl + +echo. +echo -------------------------------------------------------------------------- +echo *** prepare nmake +echo -------------------------------------------------------------------------- + +dir rules.vc + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake" + exit 4 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk INSTALLDIR=%PRODUCT_INSTALL% +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk INSTALLDIR=%PRODUCT_INSTALL% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 5 +) + + +echo. +echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/tcltk.sh b/products/compil_scripts/tcltk.sh new file mode 100755 index 0000000..aaf1d7c --- /dev/null +++ b/products/compil_scripts/tcltk.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +echo "##########################################################################" +echo "tcl/tk" $VERSION +echo "##########################################################################" + +echo +echo "INFO: building tcl..." +echo "INFO: running command: configure --enable-shared --enable-threads" + +mkdir -p $BUILD_DIR/tcl && cd $BUILD_DIR/tcl +$SOURCE_DIR/tcl/unix/configure --prefix=$PRODUCT_INSTALL --enable-shared --enable-threads +if [ $? -ne 0 ] +then + echo "ERROR on configure (tcl)" + exit 1 +fi + +echo +echo "INFO: running command: make " $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make (tcl)" + exit 2 +fi + +echo +echo "INFO: running command: make install (tcl)" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install (tcl)" + exit 3 +fi + +echo "INFO: building tk..." +mkdir -p $BUILD_DIR/tk && cd $BUILD_DIR/tk +echo "INFO: running command: configure --enable-shared --enable-threads --with-tcl=$PRODUCT_INSTALL/lib --with-tclinclude=$PRODUCT_INSTALL/include" +$SOURCE_DIR/tk/unix/configure --prefix=$PRODUCT_INSTALL --enable-shared --enable-threads \ + --with-tcl=$PRODUCT_INSTALL/lib --with-tclinclude=$PRODUCT_INSTALL/include +if [ $? -ne 0 ] +then + echo "ERROR on configure (tk)" + exit 2 +fi + +echo +echo "INFO: running command: make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make (tk)" + exit 2 +fi + +echo +echo "INFO: running command: make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install (tk)" + exit 3 +fi + +cp tkConfig.sh $PRODUCT_INSTALL/lib # needed by Netgen + +echo +echo "########## END" + diff --git a/products/compil_scripts/tk.bat b/products/compil_scripts/tk.bat new file mode 100755 index 0000000..f0e22f9 --- /dev/null +++ b/products/compil_scripts/tk.bat @@ -0,0 +1,78 @@ +@echo off + +echo ########################################################################## +echo tk %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR%\win + +echo. +echo **************************************************************** +where.exe nmake + +REM tcl/tk does not compile, this SDK tag is required +REM see https://wiki.tcl-lang.org/page/Building+with+Visual+Studio+2017 +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 10.0.15063.0 + +echo. +echo **************************************************************** +where.exe nmake + + +call :NORMALIZEPATH "%BUILD_DIR%\..\tcl" +set TCLDIR=%RETVAL% + +echo. +echo -------------------------------------------------------------------------- +echo *** prepare nmake +echo -------------------------------------------------------------------------- + +dir rules.vc + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR% +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake" + exit 1 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR% INSTALLDIR=%TCLHOME% +echo -------------------------------------------------------------------------- + +nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR% INSTALLDIR=%TCLHOME% +if NOT %ERRORLEVEL% == 0 ( + echo "ERROR on nmake install" + exit 2 +) + +echo. +echo -------------------------------------------------------------------------- +echo *** post-installation (%TCLHOME%) +echo -------------------------------------------------------------------------- + +echo "Tk is installed into tcl dir %TCLHOME%" > %PRODUCT_INSTALL%/README + +rem tkConfig.sh n a pas ete +rem cp tkConfig.sh %TCLHOME%/lib rem Needed fot netgen and Togl + +echo. +echo ########## END + +:: ========== FUNCTIONS ========== +exit /B + +:NORMALIZEPATH + SET RETVAL=%~dpfn1 + EXIT /B + diff --git a/products/compil_scripts/tk.sh b/products/compil_scripts/tk.sh new file mode 100755 index 0000000..558cbf0 --- /dev/null +++ b/products/compil_scripts/tk.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo "##########################################################################" +echo "tk" $VERSION +echo "##########################################################################" + + + +#cp $TCLHOME/include/*.h generic/ + +echo +echo "*** configure --enable-shared --enable-threads --with-tcl=$TCLHOME/lib --with-tclinclude=$TCLHOME/include" +$SOURCE_DIR/unix/configure --prefix=$TCLHOME --enable-shared --enable-threads \ + --with-tcl=$TCLHOME/lib --with-tclinclude=$TCLHOME/include +if [ $? -ne 0 ] +then + echo "ERROR on configure" + exit 2 +fi + +echo +echo "*** make" +make +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +mkdir -p $PRODUCT_INSTALL +echo "Tk is installed into tcl dir $TCLHOME" > $PRODUCT_INSTALL/README +cp tkConfig.sh $TCLHOME/lib #Needed fot netgen + +echo +echo "########## END" + diff --git a/products/compil_scripts/typing.sh b/products/compil_scripts/typing.sh new file mode 100755 index 0000000..f12907c --- /dev/null +++ b/products/compil_scripts/typing.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +echo "##########################################################################" +echo "typing $VERSION" +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** install with $PYTHONBIN $PYTHON_VERSION" +function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } + +if version_ge $PYTHON_VERSION "3."; then + echo "*** $VERSION >= 2.X is not supported and was not tested! Please, report this issue to SALOME support!" + exit 3 +else + $PYTHONBIN pip-10.0.1-py2.py3-none-any.whl/pip install --no-index --target $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages typing-${VERSION}-py2-none-any.whl + if [ $? -ne 0 ] + then + echo "ERROR on install" $? + exit 3 + fi +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/uranie_win.bat b/products/compil_scripts/uranie_win.bat new file mode 100755 index 0000000..4a5cee2 --- /dev/null +++ b/products/compil_scripts/uranie_win.bat @@ -0,0 +1,21 @@ +@echo off + +echo ########################################################################## +echo Uranie %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy /s /y /q * %PRODUCT_INSTALL% +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy + exit 1 +) + +echo. +echo ########## END diff --git a/products/compil_scripts/uranie_win.sh b/products/compil_scripts/uranie_win.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/uranie_win.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/compil_scripts/urllib3.sh b/products/compil_scripts/urllib3.sh new file mode 100755 index 0000000..ae5a27b --- /dev/null +++ b/products/compil_scripts/urllib3.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +echo "##########################################################################" +echo "urllib3" $VERSION +echo "##########################################################################" + + + +echo "*** build in SOURCE directory" +cd $SOURCE_DIR + +# we don't install in python directory -> modify environment as described in INSTALL file +mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH + +echo +echo "*** build and install with $PYTHONBIN" +$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL +if [ $? -ne 0 ] +then + echo "ERROR on build/install" + exit 3 +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/vtk.sh b/products/compil_scripts/vtk.sh new file mode 100755 index 0000000..4179d53 --- /dev/null +++ b/products/compil_scripts/vtk.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +echo "##########################################################################" +echo "VTK" $VERSION +echo "##########################################################################" + + + +cd $SOURCE_DIR + +python_name=python$PYTHON_VERSION + +sed -i "s%seekg(self->GetFile()->tellg()%seekg(static_cast(self->GetFile()->tellg())%g" IO/vtkBMPReader.cxx +sed -i "s%seekg(self->GetFile()->tellg()%seekg(static_cast(self->GetFile()->tellg())%g" IO/vtkImageReader.cxx +sed -i "s%#include %#include \n#include %g" Utilities/DICOMParser/DICOMFile.cxx +sed -i "s%#include %#include \n#include %g" Utilities/DICOMParser/DICOMParser.cxx +sed -i "s%#include %#include \n#include %g" Utilities/DICOMParser/DICOMAppHelper.cxx + +chmod 600 Utilities/vtktiff/tif_fax3sm.c + +#sed -i "s%char \*doc \=%const char \*doc \=%g" Common/vtkPythonUtil.cxx + +VTK_CMAKE_OPTIONS="" +### compiler options +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS"-DVTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T=1" +### common VTK settings +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_HYBRID:BOOL=ON" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_PARALLEL:BOOL=ON" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_PATENTED:BOOL=OFF" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_RENDERING:BOOL=ON" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_GL2PS:BOOL=ON" # GL_2_PS +### Wrap Python settings +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_WRAP_PYTHON:BOOL=ON" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHONHOME}/bin/${python_name}" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DPYTHON_INCLUDE_PATH:STRING=${PYTHONHOME}/include/${python_name}" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHONHOME}/lib/${python_name}/config/lib${python_name}.a" +### No tcl tk wrap +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF" +VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_TK:BOOL=OFF" + +echo +echo "*** cmake" ${VTK_CMAKE_OPTIONS} +cmake ${VTK_CMAKE_OPTIONS} . +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** create links" +cd ${PRODUCT_INSTALL}/include +ln -s vtk-${VERSION%.*}/ vtk +cd ${PRODUCT_INSTALL}/lib +ln -s . vtk + +echo +echo "########## END" + diff --git a/products/compil_scripts/zlib.bat b/products/compil_scripts/zlib.bat new file mode 100755 index 0000000..db7b538 --- /dev/null +++ b/products/compil_scripts/zlib.bat @@ -0,0 +1,72 @@ +@echo off + +echo ########################################################################## +echo zlib %VERSION% +echo ########################################################################## + +if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL% + +REM clean BUILD directory +if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR% +mkdir %BUILD_DIR% + +cd %SOURCE_DIR% + +xcopy include %PRODUCT_INSTALL%\include /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy include + exit 1 +) + +xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q +if NOT %ERRORLEVEL% == 0 ( + echo ERROR on xcopy bin + exit 2 +) + +echo. +echo ########## END + +REM if exist "%PRODUCT_INSTALL%" rmdir /Q /S "%PRODUCT_INSTALL%" +REM mkdir %PRODUCT_INSTALL% + +REM set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% +REM if defined CMAKE_GENERATOR ( + REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR% +REM ) else ( + REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" +REM ) +REM set MSBUILDDISABLENODEREUSE=1 + +REM cd %BUILD_DIR% + +REM echo. +REM echo -------------------------------------------------------------------------- +REM echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +REM echo -------------------------------------------------------------------------- + +REM %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR% +REM if NOT %ERRORLEVEL% == 0 ( + REM echo ERROR on cmake + REM exit 1 +REM ) + +REM echo. +REM echo -------------------------------------------------------------------------- +REM echo *** %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL +REM echo -------------------------------------------------------------------------- + +REM %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL +REM if NOT %ERRORLEVEL% == 0 ( + REM echo ERROR on cmake build + REM exit 2 +REM ) + +REM cp %PRODUCT_INSTALL%\lib\zlib.lib %PRODUCT_INSTALL%\lib\zlib1.lib +REM cp %PRODUCT_INSTALL%\lib\zlib.lib %PRODUCT_INSTALL%\lib\z.lib +REM cp %PRODUCT_INSTALL%\bin\zlib.dll %PRODUCT_INSTALL%\bin\zlib1.dll + +REM taskkill /F /IM "mspdbsrv.exe" + +REM echo. +REM echo ########## END \ No newline at end of file diff --git a/products/compil_scripts/zlib.sh b/products/compil_scripts/zlib.sh new file mode 100755 index 0000000..7cf3358 --- /dev/null +++ b/products/compil_scripts/zlib.sh @@ -0,0 +1 @@ +# Utile pour SAT5 \ No newline at end of file diff --git a/products/cppunit.pyconf b/products/cppunit.pyconf new file mode 100644 index 0000000..29e9583 --- /dev/null +++ b/products/cppunit.pyconf @@ -0,0 +1,46 @@ +default : +{ + name : "cppunit" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["cppunit"] + rpm_dev : ["cppunit-devel"] + apt : ["libcppunit"] + apt_dev : ["libcppunit-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +# NOTE: do not delete this section, it was added on purpose in order to be able to overload it for Windows in the main application. +version_1_13_2 : +{ + patches : [] +} + +version_1_13_2_win : +{ + patches : ['cppunit-1.13.2_windows.patch'] + properties: + { + incremental : "yes" + single_install_dir : "yes" + compile_time : "yes" + } +} + diff --git a/products/cycler.pyconf b/products/cycler.pyconf new file mode 100644 index 0000000..d6e1a2f --- /dev/null +++ b/products/cycler.pyconf @@ -0,0 +1,40 @@ +default : +{ + name : "cycler" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-cycler"] + rpm_dev : [] + apt : ["python3-cycler"] + apt_dev : [] + } + archive_info: + { + archive_name : $name + "-" + $APPLICATION.products.cycler + ".tar.gz" + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'six', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info: + { + archive_name : "cycler-" + $APPLICATION.products.cycler + "_windows.tar.gz" + } +} diff --git a/products/dateutil.pyconf b/products/dateutil.pyconf new file mode 100644 index 0000000..dcc5764 --- /dev/null +++ b/products/dateutil.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "python_dateutil" + build_source : "script" + compil_script : "pip_install.sh" + get_source : "archive" + system_info : + { + rpm : ["python3-dateutil"] + rpm_dev : [] + apt : ["python3-dateutil"] + apt_dev : [] + } + environ : + { + env_script : "dateutil.py" + } + depend : ['Python', 'setuptools', 'six'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental: "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "dateutil-" + $APPLICATION.products.dateutil + "_windows.tar.gz"} +} diff --git a/products/distribute.pyconf b/products/distribute.pyconf new file mode 100755 index 0000000..6d84fe5 --- /dev/null +++ b/products/distribute.pyconf @@ -0,0 +1,24 @@ +default : +{ + name : "distribute" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental: "yes" + } +} + +default_win: +{ + depend : ['Python'] +} diff --git a/products/docutils.pyconf b/products/docutils.pyconf new file mode 100644 index 0000000..f4843fb --- /dev/null +++ b/products/docutils.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "docutils" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-docutils"] + rpm_dev : [] + apt : ["python3-docutils"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ["Python", "setuptools"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "docutils-" + $APPLICATION.products.docutils + "_windows.tar.gz"} +} diff --git a/products/doxygen.pyconf b/products/doxygen.pyconf new file mode 100755 index 0000000..f14f6e5 --- /dev/null +++ b/products/doxygen.pyconf @@ -0,0 +1,64 @@ +default : +{ + name : "doxygen" + build_source : "cmake" + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["doxygen"] + apt : [] + apt_dev : ["doxygen"] + } + environ : + { + env_script : $name + ".py" + } + depend : ["graphviz", "cmake"] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + compile_time : "yes" + } +} + +default_win : +{ + build_source : "script" + compil_script : "doxygen.bat" + archive_info : {archive_name : "doxygen-" + $APPLICATION.products.doxygen + "_windows.tar.gz"} + properties: + { + incremental : "yes" + single_install_dir : "yes" + compile_time : "yes" + } +} + +version_1_8_3_1 : +{ + build_source : "script" + compil_script : "doxygen" + $VARS.scriptExtension + patches : [ + "doxygen-1.8.3.1.patch" + "doxygen_compatibility_flex260.patch" + ] +} + +version_1_8_3_1_win : +{ + # no patch since we are using Windows binary + patches : [] + depend : [] +} + +version_1_8_0 : +{ + build_source : "script" + compil_script : "doxygen.sh" +} diff --git a/products/eigen.pyconf b/products/eigen.pyconf new file mode 100644 index 0000000..7e494bc --- /dev/null +++ b/products/eigen.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "eigen" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["eigen3-devel"] + apt : [] + apt_dev : ["libeigen3-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +version_3_2_7 : +{ + compil_script : "eigen-3.2.7.sh" + depend : [] +} + diff --git a/products/embree.pyconf b/products/embree.pyconf new file mode 100644 index 0000000..7f06cf5 --- /dev/null +++ b/products/embree.pyconf @@ -0,0 +1,27 @@ +default : +{ + name : "embree" + build_source : "cmake" + cmake_options : " -DEMBREE_ISPC_SUPPORT=ON -DEMBREE_TUTORIALS=OFF -DCMAKE_INSTALL_LIBDIR=lib" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['ispc','tbb'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win : +{ + cmake_options : ' -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DEMBREE_ISPC_SUPPORT=ON -DEMBREE_TUTORIALS=OFF -DEMBREE_TASKING_SYSTEM=TBB -DTBB_ROOT=%TBB_DIR:\=/% ' + archive_info : {archive_name : "embree-" + $APPLICATION.products.embree + "_windows.tar.gz"} + depend : ['ispc','tbb'] +} + diff --git a/products/env_scripts/ADAO.py b/products/env_scripts/ADAO.py new file mode 100644 index 0000000..e0ce0cf --- /dev/null +++ b/products/env_scripts/ADAO.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- +import os +import platform + +def set_env(env, product_dir, version): + env.set('ADAO_ENGINE_ROOT_DIR', product_dir) + env.set('ADAO_ROOT_DIR', product_dir) + env.set('CURRENT_SOFTWARE_INSTALL_DIR',product_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(product_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/ADAO_INTERFACE.py b/products/env_scripts/ADAO_INTERFACE.py new file mode 100644 index 0000000..a65f6dc --- /dev/null +++ b/products/env_scripts/ADAO_INTERFACE.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- +import os +import platform + +def set_env(env, product_dir, version): + env.set('ADAO_INTERFACE_ROOT_DIR', product_dir) + env.prepend('LD_LIBRARY_PATH', os.path.join(product_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Babel.py b/products/env_scripts/Babel.py new file mode 100644 index 0000000..30e59ed --- /dev/null +++ b/products/env_scripts/Babel.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("BABEL_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/CAS.py b/products/env_scripts/CAS.py new file mode 100755 index 0000000..459713f --- /dev/null +++ b/products/env_scripts/CAS.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('CASROOT', prereq_dir) + + # [CMake GUI] Nouveau nom pour CASROOT = CAS_ROOT_DIR 22/03/2013 + env.set('OPENCASCADE_ROOT_DIR', prereq_dir) + env.prepend('PATH', prereq_dir) + + if platform.system()=="Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'win64', 'vc14' ,'bin')) + else : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/CDMATH.py b/products/env_scripts/CDMATH.py new file mode 100644 index 0000000..5569bc3 --- /dev/null +++ b/products/env_scripts/CDMATH.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('CDMATH_ROOT_DIR', prereq_dir) + + env.set('CDMATH_DIR', prereq_dir) + + root = env.get('CDMATH_DIR') + + env.prepend('PATH', os.path.join(root, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib', 'cdmath')) + env.prepend('PYTHONPATH', os.path.join(root, 'bin', 'cdmath')) + + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/COREFLOWS.py b/products/env_scripts/COREFLOWS.py new file mode 100644 index 0000000..caf817a --- /dev/null +++ b/products/env_scripts/COREFLOWS.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, product_dir, version): + env.set('CoreFlows_INSTALL', product_dir) + env.set('CoreFlows_ROOT_DIR', product_dir) + + install_rep = env.get('CoreFlows_INSTALL') + root_module_rep = env.get('CoreFlows_ROOT_DIR') + + env.set('CoreFlows_ROOT', product_dir) + env.set('CoreFlows_PYTHON', 'ON') + env.set('CoreFlows_DOC', 'ON') + env.set('CoreFlows_GUI', 'ON') + env.set('CoreFlows', os.path.join(install_rep,'bin','Executable','CoreFlowsMainExe')) + env.set('CoreFlowsGUI', os.path.join(install_rep,'bin','salome','CoreFlows_Standalone.py')) + env.set('COREFLOWS_ROOT_DIR', root_module_rep) + + root = env.get('CoreFlows_ROOT_DIR') + + env.prepend('PATH', os.path.join(root, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib', 'CoreFlows_Python')) + env.prepend('PYTHONPATH', os.path.join(root, 'bin', 'CoreFlows_Python')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib','python2.7','site-packages','salome')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Cython.py b/products/env_scripts/Cython.py new file mode 100644 index 0000000..047f54e --- /dev/null +++ b/products/env_scripts/Cython.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("CYTHON_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/EFICAS_TOOLS.py b/products/env_scripts/EFICAS_TOOLS.py new file mode 100644 index 0000000..e342798 --- /dev/null +++ b/products/env_scripts/EFICAS_TOOLS.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('EFICAS_TOOLS_ROOT_DIR', prereq_dir) # update for cmake + env.set('EFICAS_TOOLS_ROOT', prereq_dir) + env.append('PYTHONPATH', prereq_dir) + env.append('LD_LIBRARY_PATH', prereq_dir) + ld = ['Accas','Aide','convert','Doc','Editeur','Efi2Xsd','Extensions','generator','Ihm','InterfaceQT4','Noyau','Telemac','Traducteur','UiQT5'] + if platform.system() == "Windows" : + LD_LIBRARY_PATH='PATH' + else: + LD_LIBRARY_PATH='LD_LIBRARY_PATH' + + env.append(LD_LIBRARY_PATH, prereq_dir) + for d in ld: + env.append('PYTHONPATH', os.path.join(prereq_dir, d)) + env.append(LD_LIBRARY_PATH, os.path.join(prereq_dir, d)) + +def set_nativ_env(env): + env.set('EFICAS_TOOLS_ROOT_DIR', '/usr') # update for cmake + env.set('EFICAS_TOOLS_ROOT', '/usr') + env.set('EFICAS_TOOLS_LIB_DIR', '/usr/lib') + pass diff --git a/products/env_scripts/Hexotic.py b/products/env_scripts/Hexotic.py new file mode 100755 index 0000000..8c709d0 --- /dev/null +++ b/products/env_scripts/Hexotic.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_distene_licence(env): + try: + license_file = env.environ.get_value("LICENCE_FILE") + except Exception as e: + return + if os.path.exists(license_file): + env.add_line(1) + env.add_comment("Set DISTENE License") + env.set('DISTENE_LICENSE_FILE', 'Use global envvar: DLIM8VAR') + + if os.access(license_file, os.R_OK): + lines = open(license_file, "r").readlines() + for line in lines: + id1=line.find('r"dlim8') + if id1 != -1: + # on a trouvé la clé dlim8 dans line, on extrait sa valeur + id2=line.find('"', id1+2) + if id2 != -1: + env.set("DLIM8VAR", line[id1+2:id2]) + break + +def set_env(env, prereq_dir, version): + if not env.forBuild: + # we don't need licence keys at compile time + set_distene_licence(env) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Homard.py b/products/env_scripts/Homard.py new file mode 100755 index 0000000..9c49ae3 --- /dev/null +++ b/products/env_scripts/Homard.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +def set_env(env, prereq_dir, version): + env.set('HOMARD_REP_EXE', prereq_dir) + root = env.get('HOMARD_REP_EXE') + env.set('HOMARD_EXE', 'homard') + + env.prepend('PATH', root) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Jinja2.py b/products/env_scripts/Jinja2.py new file mode 100755 index 0000000..ae77a5d --- /dev/null +++ b/products/env_scripts/Jinja2.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('JINJADIR', prereq_dir) + env.set('JINJA_ROOT_DIR', prereq_dir) # update for cmake + + pyver = 'python' + env.get('PYTHON_VERSION') + + if not platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + env.set('JINJA_ROOT_DIR', '/usr') # update for cmake + env.set('JINJADIR', '/usr') diff --git a/products/env_scripts/LIBBATCH.py b/products/env_scripts/LIBBATCH.py new file mode 100644 index 0000000..6dac203 --- /dev/null +++ b/products/env_scripts/LIBBATCH.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- +import os +import platform + +def set_env(env, product_dir, version): + env.set('LIBBATCH_ROOT_DIR', product_dir) + + pyver = 'python' + env.get('PYTHON_VERSION') + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(product_dir, 'lib')) + env.prepend('PATH', os.path.join(product_dir, 'lib', pyver)) + env.prepend('PYTHONPATH', os.path.join(product_dir, 'lib', pyver)) + else: + env.prepend('LD_LIBRARY_PATH', os.path.join(product_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(product_dir, 'lib', pyver)) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/MeshGems.py b/products/env_scripts/MeshGems.py new file mode 100644 index 0000000..158b5c6 --- /dev/null +++ b/products/env_scripts/MeshGems.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_distene_licence(env): + try: + license_file = env.environ.get_value("LICENCE_FILE") + except Exception as e: + return + + if os.path.exists(license_file): + env.add_line(1) + env.add_comment("Set DISTENE License") + env.set('DISTENE_LICENSE_FILE', 'Use global envvar: DLIM8VAR') + + if os.access(license_file, os.R_OK): + lines = open(license_file, "r").readlines() + for line in lines: + id1=line.find('r"dlim8') + if id1 != -1: + # on a trouvé la clé dlim8 dans line, on extrait sa valeur + id2=line.find('"', id1+2) + if id2 != -1: + env.set("DLIM8VAR", line[id1+2:id2]) + break + +def set_env(env, prereq_dir, version): + env.add_comment("Here you can define your license parameters for MeshGems") + env.add_comment("DISTENE license") + + if not env.forBuild: + # we don't need licence keys at compile time + set_distene_licence(env) + + env.set('MESHGEMSHOME', prereq_dir) + env.set('MESHGEMS_ROOT_DIR', prereq_dir) # update for cmake + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + else : + libdir = "Linux_64" + env.prepend('PATH', os.path.join(prereq_dir, 'bin', libdir)) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', libdir)) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/ParMetis.py b/products/env_scripts/ParMetis.py new file mode 100644 index 0000000..d4b6857 --- /dev/null +++ b/products/env_scripts/ParMetis.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('PARMETISDIR', prereq_dir) + env.set('PARMETIS_ROOT_DIR', prereq_dir) # update for cmake + root = env.get('PARMETISDIR') + + env.prepend('LD_LIBRARY_PATH', root) + env.prepend('PATH', root) +# env.prepend('PATH', os.path.join(root, "Graphs")) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/ParaView.py b/products/env_scripts/ParaView.py new file mode 100644 index 0000000..b8554c2 --- /dev/null +++ b/products/env_scripts/ParaView.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + # keep only the first two version numbers + ver = '.'.join(version.replace('-', '.').split('.')[:2]) + + # BUG WITH 5.0_beta + if ver == '5.0_beta': + ver = '5.0' + + if ver == '5.8.0rc2' : + ver = '5.8' + + env.set('PVHOME', prereq_dir) + env.set('VTKHOME', prereq_dir) + env.set('PVVERSION', ver) + + env.set('PARAVIEW_ROOT_DIR', prereq_dir) + env.set('PARAVIEW_VERSION', ver) + + set_paraview_env(env, ver) + set_vtk_env(env, ver) + +def set_nativ_env(env): + if os.getenv("PVHOME") is None: + raise Exception("PVHOME is not set") + + if os.getenv("PVVERSION") is None: + raise Exception("PVVERSION is not set") + + version = env.get("PVVERSION") + set_paraview_env(env, version) + +def set_paraview_env(env, version): + root = env.get('PVHOME') + lib_dir = 'lib' + env.set('ParaView_DIR', os.path.join(root, lib_dir, 'paraview-%s' % version)) + env.prepend('PATH', os.path.join(root, 'bin')) + + if platform.system() == "Windows" : + paralib = os.path.join(root, 'lib', 'paraview-' + version) + env.prepend('PATH', paralib) + env.prepend('PV_PLUGIN_PATH', paralib) + env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages')) + env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages')) + env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages', 'paraview')) + env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages', 'vtk')) + else: + paralib = os.path.join(root, lib_dir, 'paraview-' + version) + env.prepend('PV_PLUGIN_PATH', paralib) + env.prepend('PYTHONPATH', os.path.join(paralib, 'site-packages')) + env.prepend('PYTHONPATH', os.path.join(paralib, 'site-packages', 'vtk')) + env.prepend('PATH', os.path.join(root, 'include', 'paraview-' + version)) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, lib_dir, 'paraview-' + version)) + env.prepend('PYTHONPATH', paralib) + +def set_vtk_env(env, version): + root = env.get('VTKHOME') + pyver = 'python' + env.get('PYTHON_VERSION') + lib_dir = 'lib' + + #env.prepend('PATH', os.path.join(root, 'bin')) + + env.set('VTK_ROOT_DIR', root) + env.set('VTK_DIR', os.path.join(root, lib_dir, 'cmake', 'paraview-' + version)) + # OP TEST + env.prepend('VTK_ROOT_DIR', os.path.join(root, lib_dir, 'cmake', 'paraview-' + version)) + #env.prepend('VTK_ROOT_DIR', os.path.join(root, lib_dir, 'paraview-' + version)) + + if not platform.system() == "Windows" : + #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm + #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows. + env.prepend('LD_LIBRARY_PATH', os.path.join(root, lib_dir)) + env.prepend('PYTHONPATH', os.path.join(root, lib_dir, pyver, 'site-packages')) + + # 20 03 2013 compilation de PARAVIS basé sur paraview 3.98.1 et VTK 6 + if version == '3.98': + cmake_dir = os.path.join(root, 'lib', 'cmake', 'paraview-' + version) + env.set('VTK_DIR', cmake_dir) + # fin + diff --git a/products/env_scripts/ParaViewData.py b/products/env_scripts/ParaViewData.py new file mode 100755 index 0000000..99be4d0 --- /dev/null +++ b/products/env_scripts/ParaViewData.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +def set_env(env, prereq_dir, version): + env.set('PARAVIEWDATA_ROOT_DIR', prereq_dir) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Pillow.py b/products/env_scripts/Pillow.py new file mode 100644 index 0000000..559053d --- /dev/null +++ b/products/env_scripts/Pillow.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("PILLOW_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/PyHamcrest.py b/products/env_scripts/PyHamcrest.py new file mode 100644 index 0000000..ab2276b --- /dev/null +++ b/products/env_scripts/PyHamcrest.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('PYHAMCREST_ROOT_DIR', prereq_dir) + + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/PyQt.py b/products/env_scripts/PyQt.py new file mode 100644 index 0000000..73db42d --- /dev/null +++ b/products/env_scripts/PyQt.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('PYQTDIR', prereq_dir) + version_table = version.split('.') + if version_table[0] == '5': + env.set('PYQT5_ROOT_DIR', prereq_dir) + else: + env.set('PYQT4_ROOT_DIR', prereq_dir) + + env.set('PYQT_SIPS', os.path.join(prereq_dir, 'sip')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + if not platform.system() == "Windows" : + env.set('PYUIC5',os.path.join(prereq_dir, 'bin','pyuic5')) + env.prepend('LD_LIBRARY_PATH', prereq_dir) + else: + env.set('PYUIC5',os.path.join(prereq_dir, 'bin','pyuic5.bat')) + +def set_nativ_env(env): + env.set('PYQT5_ROOT_DIR', '/usr') diff --git a/products/env_scripts/Pygments.py b/products/env_scripts/Pygments.py new file mode 100755 index 0000000..ed06696 --- /dev/null +++ b/products/env_scripts/Pygments.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('PYGMENTS_ROOT_DIR', prereq_dir) # update for cmake + env.set('PYGMENTSDIR', prereq_dir) + + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Python.py b/products/env_scripts/Python.py new file mode 100644 index 0000000..cec24e3 --- /dev/null +++ b/products/env_scripts/Python.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env,prereq_dir,version,forBuild=None): + env.set('PYTHONHOME', prereq_dir) + + # [CMake KERNEL] Nouveau nom pour PYTHONHOME = PYTHON_ROOT_DIR 22/03/2013 + env.set('PYTHON_ROOT_DIR', prereq_dir) + + # keep only the first two version numbers + version = '.'.join(version.replace('-', '.').split('.')[:2]) + env.set('PYTHON_VERSION', version) + + env.prepend('PATH', prereq_dir) + + if platform.system() == "Windows" : + env.set('PYTHON_INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib')) + env.set('PYTHON_SITE_PACKAGES',os.path.join(prereq_dir, 'lib','site-packages')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib','site-packages')) + env.set('PYTHONBIN', os.path.join(prereq_dir, 'python.exe')) # needed for runSalome.py + env.prepend('PATH', os.path.join(prereq_dir, 'libs')) + env.prepend('PATH', os.path.join(prereq_dir, 'Scripts')) + else : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + env.set('PYTHON_INCLUDE', os.path.join(prereq_dir, 'include', 'python' + version)) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', 'python' + version)) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', 'python' + version, 'site-packages')) + if version[0]=='3': + env.set('PYTHONBIN', os.path.join(prereq_dir, 'bin','python3')) # needed for runSalome.py + else: + env.set('PYTHONBIN', os.path.join(prereq_dir, 'bin','python')) # needed for runSalome.py + + +def set_nativ_env(env): + import sys + #env.set('PYTHONHOME',"%s.%s" % sys.version_info[0:2]) + env.set('PYTHON_ROOT_DIR', '/usr') + env.set('PYTHON_VERSION', "%s.%s" % sys.version_info[0:2]) + if sys.version_info[0] == 3 : + env.set('PYTHONBIN','/usr/bin/python3') + else: + env.set('PYTHONBIN','/usr/bin/python2') + diff --git a/products/env_scripts/SAMPLES.py b/products/env_scripts/SAMPLES.py new file mode 100644 index 0000000..4223758 --- /dev/null +++ b/products/env_scripts/SAMPLES.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + product_root_dir=env.get("PRODUCT_ROOT_DIR") + env.set('SAMPLES_SRC_DIR', os.path.join(product_root_dir, "SOURCES", "SAMPLES")) + env.set('DATA_DIR', env.get("SAMPLES_SRC_DIR")) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/SOLVERLAB.py b/products/env_scripts/SOLVERLAB.py new file mode 100644 index 0000000..caf817a --- /dev/null +++ b/products/env_scripts/SOLVERLAB.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, product_dir, version): + env.set('CoreFlows_INSTALL', product_dir) + env.set('CoreFlows_ROOT_DIR', product_dir) + + install_rep = env.get('CoreFlows_INSTALL') + root_module_rep = env.get('CoreFlows_ROOT_DIR') + + env.set('CoreFlows_ROOT', product_dir) + env.set('CoreFlows_PYTHON', 'ON') + env.set('CoreFlows_DOC', 'ON') + env.set('CoreFlows_GUI', 'ON') + env.set('CoreFlows', os.path.join(install_rep,'bin','Executable','CoreFlowsMainExe')) + env.set('CoreFlowsGUI', os.path.join(install_rep,'bin','salome','CoreFlows_Standalone.py')) + env.set('COREFLOWS_ROOT_DIR', root_module_rep) + + root = env.get('CoreFlows_ROOT_DIR') + + env.prepend('PATH', os.path.join(root, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib', 'CoreFlows_Python')) + env.prepend('PYTHONPATH', os.path.join(root, 'bin', 'CoreFlows_Python')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib','python2.7','site-packages','salome')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Sphinx.py b/products/env_scripts/Sphinx.py new file mode 100755 index 0000000..7b363f3 --- /dev/null +++ b/products/env_scripts/Sphinx.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('SPHINXDIR', prereq_dir) + env.set('SPHINX_ROOT_DIR', prereq_dir) + if not platform.system() == "Windows" : + env.prepend('PATH',prereq_dir) + env.set('SPHINX_EXECUTABLE',os.path.join(prereq_dir, 'Scripts','sphinx-build.exe')) + env.prepend('PATH', os.path.join(prereq_dir, 'Scripts')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + env.set('SPHINXDIR', '/usr') + env.set('SPHINX_ROOT_DIR', '/usr') diff --git a/products/env_scripts/TRUST.py b/products/env_scripts/TRUST.py new file mode 100644 index 0000000..5c134c4 --- /dev/null +++ b/products/env_scripts/TRUST.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set("TRUST_ROOT_DIR",prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/Togl.py b/products/env_scripts/Togl.py new file mode 100644 index 0000000..f0a75e4 --- /dev/null +++ b/products/env_scripts/Togl.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('TOGL_ROOT_DIR', prereq_dir) # update for cmake + env.set('TOGL', prereq_dir) + env.set('TOGL_SHORT_VERSION', version.split('-')[0]) + + togl = env.get('TOGL_ROOT_DIR') + + env.set('TOGL_LIB_DIR', os.path.join(togl, 'lib', 'Togl' + version.split('-')[0])) + + env.prepend('PATH', env.get('TOGL_LIB_DIR')) + + if platform.system() == "Windows" : + env.prepend('LIB', env.get('TOGL_LIB_DIR')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + +def set_nativ_env(env): + env.set('TOGL_ROOT_DIR', '/usr') # update for cmake + env.set('TOGL', '/usr') + env.set('TOGL_LIB_DIR', '/usr/lib') + diff --git a/products/env_scripts/TrioCFD.py b/products/env_scripts/TrioCFD.py new file mode 100644 index 0000000..4fb4fc7 --- /dev/null +++ b/products/env_scripts/TrioCFD.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set("TRIOCFD_ROOT_DIR",prereq_dir) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/XDATA.py b/products/env_scripts/XDATA.py new file mode 100644 index 0000000..07e1494 --- /dev/null +++ b/products/env_scripts/XDATA.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('XDATAROOT', prereq_dir) + env.set('XDATA_ROOT_DIR', prereq_dir) # update for cmake + root = env.get('XDATAROOT') + pyver = 'python' + env.get('PYTHON_VERSION') + + env.prepend('PATH', os.path.join(root, 'bin')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib', pyver, 'site-packages', 'xdata')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/YACSGEN.py b/products/env_scripts/YACSGEN.py new file mode 100644 index 0000000..2e14c8a --- /dev/null +++ b/products/env_scripts/YACSGEN.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('YACSGENROOT', prereq_dir) + env.set('YACSGEN_ROOT_DIR', prereq_dir) # update for cmake + pyver = 'python' + env.get('PYTHON_VERSION') + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/alabaster.py b/products/env_scripts/alabaster.py new file mode 100644 index 0000000..1038710 --- /dev/null +++ b/products/env_scripts/alabaster.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("ALABASTER_ROOT_DIR",prereq_dir) + versionPython = env.get('PYTHON_VERSION') + if platform.system() == "Windows" : + pass + else : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/boost.py b/products/env_scripts/boost.py new file mode 100755 index 0000000..fc95367 --- /dev/null +++ b/products/env_scripts/boost.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + if platform.system() == "Windows" : + prereq_dir = prereq_dir.replace('/','\\') + env.set('BOOSTDIR', prereq_dir) + env.set('BOOST_ROOT_DIR', prereq_dir) + env.set('BOOST_ROOT', prereq_dir) + env.set('BOOST_INCLUDE_DIR',os.path.join(prereq_dir,'include','boost-1_67','boost')) + env.set('Boost_INCLUDE_DIR',os.path.join(prereq_dir,'include','boost-1_67','boost')) + env.set('BOOST_INCLUDEDIR',os.path.join(prereq_dir,'include','boost-1_67','boost')) + env.set('Boost_ADDITIONAL_VERSIONS',"'1.67.0 1.67'") + env.set('BOOST_LIBRARY_DIR',os.path.join(prereq_dir,'lib')) + env.set('BOOST_LIBRARYDIR',os.path.join(prereq_dir,'lib')) + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + else : + env.set('BOOSTDIR', prereq_dir) + env.set('BOOST_ROOT_DIR', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('BOOSTDIR', '/usr') + env.set('BOOST_ROOT_DIR', '/usr') diff --git a/products/env_scripts/bsd_xdr.py b/products/env_scripts/bsd_xdr.py new file mode 100755 index 0000000..b2aed03 --- /dev/null +++ b/products/env_scripts/bsd_xdr.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('BSD_XDR_DIR', prereq_dir) + + env.set('BSD_XDR_BIN', os.path.join(prereq_dir, 'bin')) + env.set('BSD_XDR_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + env.set('BSD_XDR_LIBRARY', os.path.join(prereq_dir, 'lib')) + + env.prepend('INCLUDE', env.get('BSD_XDR_INCLUDE_DIR')) + env.prepend('PATH', env.get('BSD_XDR_BIN')) + + if not platform.system() == "Windows" : + env.prepend('PATH', env.get('BSD_XDR_LIBRARY')) + +def set_nativ_env(env): + env.set('BSD_XDR_DIR', '/usr') diff --git a/products/env_scripts/ceatest.py b/products/env_scripts/ceatest.py new file mode 100644 index 0000000..a8598cf --- /dev/null +++ b/products/env_scripts/ceatest.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set("CEATESTBASE_ROOT_DIR", prereq_dir) + root=env.get("CEATESTBASE_ROOT_DIR") + env.set('TT_BASE_RESSOURCES', os.path.join(root, "bin", "salome", "test", "RESSOURCES")) + env.set('TT_TMP_RESULT', os.path.join(root, "bin", "salome", "test", "tmp")) + env.prepend('PYTHONPATH', env.get("TT_BASE_RESSOURCES")) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/certifi.py b/products/env_scripts/certifi.py new file mode 100644 index 0000000..efae69d --- /dev/null +++ b/products/env_scripts/certifi.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("CERTIFI_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/cgns.py b/products/env_scripts/cgns.py new file mode 100644 index 0000000..576d8f3 --- /dev/null +++ b/products/env_scripts/cgns.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set('CGNS_ROOT_DIR', prereq_dir) + env.set('CGNS_INCLUDE_DIR',os.path.join(prereq_dir,'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + if platform.system() == "Windows" : + env.set('CGNS_LIBRARY',os.path.join(prereq_dir,'lib','libcgnsdll.lib')) + else: + env.set('CGNS_LIBRARY',os.path.join(prereq_dir,'lib','libcgns.so')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('CGNS_ROOT_DIR', '/usr') diff --git a/products/env_scripts/chardet.py b/products/env_scripts/chardet.py new file mode 100644 index 0000000..f6e7029 --- /dev/null +++ b/products/env_scripts/chardet.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("CHARDET_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/click.py b/products/env_scripts/click.py new file mode 100644 index 0000000..15f1afd --- /dev/null +++ b/products/env_scripts/click.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("CLICK_ROOT_DIR",prereq_dir) + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/cmake.py b/products/env_scripts/cmake.py new file mode 100755 index 0000000..51fbc67 --- /dev/null +++ b/products/env_scripts/cmake.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('CMAKE_ROOT', prereq_dir) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('CMAKE_ROOT', '/usr') + diff --git a/products/env_scripts/colorama.py b/products/env_scripts/colorama.py new file mode 100755 index 0000000..6ba9689 --- /dev/null +++ b/products/env_scripts/colorama.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('COLORAMA_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) + pyver = 'python' + env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/cppunit.py b/products/env_scripts/cppunit.py new file mode 100644 index 0000000..53e4c7b --- /dev/null +++ b/products/env_scripts/cppunit.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('CPPUNITHOME', prereq_dir) + env.set('CPPUNIT_ROOT', prereq_dir) + env.set('CPPUNIT_ROOT_DIR', prereq_dir) # update for cmake + + env.set('CPPUNITINSTDIR', prereq_dir) + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + else : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('CPPUNIT_ROOT_DIR', '/usr') # update for cmake + env.set('CPPUNITHOME','/usr') + env.set('CPPUNIT_ROOT','/usr') diff --git a/products/env_scripts/cycler.py b/products/env_scripts/cycler.py new file mode 100644 index 0000000..e129007 --- /dev/null +++ b/products/env_scripts/cycler.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("CYCLER_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/dateutil.py b/products/env_scripts/dateutil.py new file mode 100644 index 0000000..57624a2 --- /dev/null +++ b/products/env_scripts/dateutil.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + #env.set('DATEUTIL_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) + env.set('DATEUTIL_ROOT_DIR', prereq_dir) + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/distribute.py b/products/env_scripts/distribute.py new file mode 100644 index 0000000..0f043ba --- /dev/null +++ b/products/env_scripts/distribute.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + #env.set('DISTRIBUTE_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) + env.set('DISTRIBUTE_ROOT_DIR', prereq_dir) + + if platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'site-packages')) + else: + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/docutils.py b/products/env_scripts/docutils.py new file mode 100755 index 0000000..51504d5 --- /dev/null +++ b/products/env_scripts/docutils.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('DOCUTILSDIR', prereq_dir) + env.set('DOCUTILS_ROOT_DIR', prereq_dir) # update for cmake + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('DOCUTILS_ROOT_DIR', '/usr') # update for cmake + env.set('DOCUTILSDIR', '/usr') + pass diff --git a/products/env_scripts/doxygen.py b/products/env_scripts/doxygen.py new file mode 100755 index 0000000..757cd78 --- /dev/null +++ b/products/env_scripts/doxygen.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('DOXYGENDIR', prereq_dir) + env.set('DOXYGEN_ROOT_DIR', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('DOXYGENDIR', '/usr') + env.set('DOXYGEN_ROOT_DIR', '/usr') + diff --git a/products/env_scripts/eigen.py b/products/env_scripts/eigen.py new file mode 100644 index 0000000..9db1557 --- /dev/null +++ b/products/env_scripts/eigen.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('EIGEN_ROOT_DIR', prereq_dir) # update for cmake + root = env.get('EIGEN_ROOT_DIR') + if platform.system() != "Windows" : + pass + else: + env.prepend('PATH', os.path.join(root, 'include', 'eigen3')) + +def set_nativ_env(env): + env.set('EIGEN_ROOT_DIR', '/usr') diff --git a/products/env_scripts/embree.py b/products/env_scripts/embree.py new file mode 100644 index 0000000..7703c62 --- /dev/null +++ b/products/env_scripts/embree.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('EMBREE_ROOT_DIR', prereq_dir) + env.set('EMBREE_VERSION', version) + env.set('embree_DIR', prereq_dir) + if platform.system() == "Windows": + env.prepend('PATH',os.path.join(prereq_dir, 'bin')) + else: + env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/expat.py b/products/env_scripts/expat.py new file mode 100755 index 0000000..731e73f --- /dev/null +++ b/products/env_scripts/expat.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('EXPAT_DIR', prereq_dir) + env.set('EXPAT_ROOT_DIR', prereq_dir) # update for cmake + root = env.get('EXPAT_DIR') + if platform.system() == "Windows" : + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LIB', os.path.join(prereq_dir, 'bin')) + else : + env.prepend('PATH', os.path.join(root, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + +def set_nativ_env(env): + env.set('EXPAT_ROOT_DIR', '/usr') # update for cmake + env.set('EXPAT_DIR', '/usr') diff --git a/products/env_scripts/f2c.py b/products/env_scripts/f2c.py new file mode 100644 index 0000000..660019f --- /dev/null +++ b/products/env_scripts/f2c.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('F2C_ROOT_DIR', prereq_dir) + + env.set('F2C_BIN', prereq_dir) + env.set('F2C_LIBRARIES', prereq_dir) + env.set('F2C_INCLUDE_DIR', prereq_dir) + + env.prepend('INCLUDE', prereq_dir) + env.prepend('LIB', prereq_dir) + env.prepend('PATH', prereq_dir) + +def set_nativ_env(env): + pass + + diff --git a/products/env_scripts/freeimage.py b/products/env_scripts/freeimage.py new file mode 100644 index 0000000..ac0ccae --- /dev/null +++ b/products/env_scripts/freeimage.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('FREEIMAGEDIR', prereq_dir) + env.set('FREEIMAGE_ROOT_DIR', prereq_dir) # update for cmake + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + if platform.system() == "Windows" : + env.prepend('LIBS', os.path.join(prereq_dir, 'lib')) + else: + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + # CAS KO on UB16 with this vars set because /usr/lib/x86_64-linux-gnu/libfreeimage.so is not found + #env.set('FREEIMAGE_ROOT_DIR', '/usr') # update for cmake + #env.set('FREEIMAGEDIR', '/usr') + pass diff --git a/products/env_scripts/freetype.py b/products/env_scripts/freetype.py new file mode 100755 index 0000000..90792a6 --- /dev/null +++ b/products/env_scripts/freetype.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- +import os +import platform + +def set_env(env, prereq_dir, version): + env.set('FREETYPEDIR', prereq_dir) + env.set('FREETYPE_ROOT_DIR', prereq_dir) # update for cmake + + env.set('FREETYPE_BIN', os.path.join(prereq_dir, 'bin')) + env.set('FREETYPE_LIBRARY', os.path.join(prereq_dir, 'lib')) + env.set('FREETYPE_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if platform.system() == "Windows" : + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('LIB', os.path.join(prereq_dir, 'bin')) + env.prepend('CPLUS_INCLUDE_PATH', os.path.join(prereq_dir, 'include', 'freetype')) + else: + env.prepend('PKG_CONFIG_PATH', os.path.join(prereq_dir, 'lib', 'pkgconfig')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/ftgl.py b/products/env_scripts/ftgl.py new file mode 100755 index 0000000..6930251 --- /dev/null +++ b/products/env_scripts/ftgl.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('FTGLDIR', prereq_dir) + env.set('FTGL_ROOT_DIR', prereq_dir) # update for cmake + root = env.get('FTGLDIR') + + env.prepend('PATH', os.path.join(root, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + #env.set('LD_PRELOAD', os.path.join(root, 'lib', 'libftgl.so')) + +def set_nativ_env(env): + env.set('FTGL_ROOT_DIR', '/usr') # update for cmake + env.set('FTGLDIR', '/usr') diff --git a/products/env_scripts/functools32.py b/products/env_scripts/functools32.py new file mode 100644 index 0000000..1194be1 --- /dev/null +++ b/products/env_scripts/functools32.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + env.set("FUNCTOOLS_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/gcc.py b/products/env_scripts/gcc.py new file mode 100644 index 0000000..d900c8b --- /dev/null +++ b/products/env_scripts/gcc.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + if not platform.system() == "Windows" : + env.set('CC', os.path.join(prereq_dir,'bin','gcc')) + env.set('CXX', os.path.join(prereq_dir,'bin','g++')) + env.set('FC', os.path.join(prereq_dir,'bin','gfortran')) + env.set('EBROOTGCC', version) + env.set('EBVERSIONGCC', version) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib64')) + env.prepend('LIBRARY_PATH', os.path.join(prereq_dir, 'lib64')) + env.prepend('MANPATH', os.path.join(prereq_dir, 'share','man')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('CPATH', os.path.join(prereq_dir, 'include')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/gl2ps.py b/products/env_scripts/gl2ps.py new file mode 100755 index 0000000..638ada3 --- /dev/null +++ b/products/env_scripts/gl2ps.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('GL2PSDIR', prereq_dir) + env.set('GL2PS_ROOT_DIR', prereq_dir) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/glu.py b/products/env_scripts/glu.py new file mode 100644 index 0000000..26f2686 --- /dev/null +++ b/products/env_scripts/glu.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('GLUROOT', prereq_dir) + env.set('GLU_ROOT_DIR', prereq_dir) + + #l = [] + #l.append(os.path.join(prereq_dir, 'bin')) + #l.append(os.path.join(prereq_dir, 'include', 'glu')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'include', 'glu')) + + #l = [] + #l.append(os.path.join(prereq_dir, 'lib')) + #l.append(os.path.join(prereq_dir, 'lib', 'glu')) + + if platform.system() == "Windows" : + env.prepend('LIB', os.path.join(prereq_dir, 'lib')) + env.prepend('LIB', os.path.join(prereq_dir, 'lib', 'glu')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + env.prepend('PATH', os.path.join(prereq_dir, 'lib', 'glu')) + else : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', 'glu')) + +def set_nativ_env(env): + env.set('GLUROOT', '/usr') + env.set('GLU_ROOT_DIR', '/usr') diff --git a/products/env_scripts/gmsh.py b/products/env_scripts/gmsh.py new file mode 100644 index 0000000..f75a473 --- /dev/null +++ b/products/env_scripts/gmsh.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('GMSHHOME', prereq_dir) + env.set('GMSH_ROOT_DIR', prereq_dir) + if platform.system() == "Windows" : + env.append('PATH',os.path.join(prereq_dir,'bin')) + else: + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('GMSH_ROOT_DIR', '/usr') diff --git a/products/env_scripts/graphviz.py b/products/env_scripts/graphviz.py new file mode 100644 index 0000000..54e0a9f --- /dev/null +++ b/products/env_scripts/graphviz.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('GRAPHVIZROOT', prereq_dir) + env.set('GRAPHVIZ_ROOT_DIR', prereq_dir) + + if platform.system() == "Windows" : + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LIB', os.path.join(prereq_dir, 'bin')) + env.set('DOT_PATH',os.path.join(prereq_dir, 'bin')) + else : + # OP 16/10/2018 Bug with launcher generation during sat package + # Do not set several simultaneous directories + # in variables + #l = [] + #l.append(os.path.join(prereq_dir, 'bin')) + ## OP ??? + #l.append(os.path.join(prereq_dir, 'include', 'graphviz')) + #env.prepend('PATH', l) + #l = [] + #l.append(os.path.join(prereq_dir, 'lib')) + #l.append(os.path.join(prereq_dir, 'lib', 'graphviz')) + #env.prepend('LD_LIBRARY_PATH', l) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + # OP ??? + env.prepend('PATH', os.path.join(prereq_dir, 'include', 'graphviz')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', 'graphviz')) + +def set_nativ_env(env): + env.set('GRAPHVIZROOT', '/usr') + env.set('GRAPHVIZ_ROOT_DIR', '/usr') diff --git a/products/env_scripts/hdf5.py b/products/env_scripts/hdf5.py new file mode 100644 index 0000000..c9c08ce --- /dev/null +++ b/products/env_scripts/hdf5.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set('HDF5HOME', prereq_dir) + env.set('HDF5_DIR', prereq_dir) + env.set('HDF5_ROOT', prereq_dir) + env.set('HDF5_ROOT_DIR', prereq_dir) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + env.set('HDF5_LIBRARIES', os.path.join(prereq_dir, 'lib')) + env.set('HDF5_INCLUDE_DIRS', os.path.join(prereq_dir, 'include')) + env.set('HDF5_VERSION', version) + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('HDF5HOME', '/usr') + env.set('HDF5_ROOT', '/usr') + env.set('HDF5_ROOT_DIR', '/usr') # update for cmake + diff --git a/products/env_scripts/idna.py b/products/env_scripts/idna.py new file mode 100644 index 0000000..ebd461e --- /dev/null +++ b/products/env_scripts/idna.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("IDNA_ROOT_DIR",prereq_dir) + + if not platform.system() == "Windows" : + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/imagesize.py b/products/env_scripts/imagesize.py new file mode 100644 index 0000000..418ad46 --- /dev/null +++ b/products/env_scripts/imagesize.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("IMAGESIZE_ROOT_DIR",prereq_dir) + + if not platform.system() == "Windows" : + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/ispc.py b/products/env_scripts/ispc.py new file mode 100644 index 0000000..066fffd --- /dev/null +++ b/products/env_scripts/ispc.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +import os.path + +def set_env(env, prereq_dir, version): + env.set('ISPC_ROOT_DIR', prereq_dir) # update for cmake + # access to ispc binary + env.prepend('PATH', os.path.join(prereq_dir,'bin')) + diff --git a/products/env_scripts/kiwisolver.py b/products/env_scripts/kiwisolver.py new file mode 100644 index 0000000..981661d --- /dev/null +++ b/products/env_scripts/kiwisolver.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("KIWISOLVER_ROOT_DIR",prereq_dir) + if not platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/lapack.py b/products/env_scripts/lapack.py new file mode 100644 index 0000000..688695d --- /dev/null +++ b/products/env_scripts/lapack.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('LAPACKHOME', prereq_dir) + env.set('LAPACK_ROOT_DIR', prereq_dir) + env.set('LAPACK_SRC', os.path.join(prereq_dir,'SRC')) + env.set('BLAS_SRC', os.path.join(prereq_dir,'BLAS','SRC')) + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + # FOR NUMPY AND SCIPY + env.set('BLAS', os.path.join(prereq_dir, 'lib')) + env.set('LAPACK', os.path.join(prereq_dir, 'lib')) + env.set('ATLAS', os.path.join(prereq_dir, 'lib')) + else: + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('LAPACKHOME', '/usr') + diff --git a/products/env_scripts/lata.py b/products/env_scripts/lata.py new file mode 100644 index 0000000..9ce8653 --- /dev/null +++ b/products/env_scripts/lata.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.prepend('PV_PLUGIN_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/libjpeg.py b/products/env_scripts/libjpeg.py new file mode 100644 index 0000000..9813f30 --- /dev/null +++ b/products/env_scripts/libjpeg.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + # this prerequisites is only used on windows platform + if platform.system()=="Windows" : + env.set('LIBJPEG_DIR', prereq_dir) + env.set('LIBJPEG_BINDIR', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('LIB', os.path.join(prereq_dir, 'bin')) + else: + pass + +def set_nativ_env(env): + pass + + diff --git a/products/env_scripts/libpng.py b/products/env_scripts/libpng.py new file mode 100755 index 0000000..2258bfe --- /dev/null +++ b/products/env_scripts/libpng.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + # this prerequisites is only used on windows platform + if platform.system()=="Windows" : + env.set('LIBPNG_DIR', prereq_dir) + env.set('LIBPNG_BINDIR', os.path.join(prereq_dir, 'bin')) + env.set('LIBPNG_LIBRARY', os.path.join(prereq_dir, 'bin')) + env.set('LIBPNG_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + env.set('PNG_LIBRARIES', os.path.join(prereq_dir, 'bin')) + env.set('PNG_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('LIB', os.path.join(prereq_dir, 'bin')) + else: + pass + +def set_nativ_env(env): + pass + + diff --git a/products/env_scripts/libxml2.py b/products/env_scripts/libxml2.py new file mode 100644 index 0000000..ccef495 --- /dev/null +++ b/products/env_scripts/libxml2.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('LIBXML_DIR', prereq_dir) + env.set('LIBXML2_ROOT_DIR', prereq_dir) + + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/llvm.py b/products/env_scripts/llvm.py new file mode 100644 index 0000000..9a2c22d --- /dev/null +++ b/products/env_scripts/llvm.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('LLVMROOT', prereq_dir) + env.set('LLVM_HOME', prereq_dir) + env.set('LLVM_ROOT_DIR', prereq_dir) + if platform.system() == "Windows" : + env.prepend('LIB', os.path.join(prereq_dir, 'lib')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + else : + # OP ??? + env.prepend('PATH', os.path.join(prereq_dir, 'include', 'llvm')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('LLVMROOT', '/usr') + env.set('LLVM_ROOT_DIR', '/usr') diff --git a/products/env_scripts/markupsafe.py b/products/env_scripts/markupsafe.py new file mode 100644 index 0000000..90a4b5a --- /dev/null +++ b/products/env_scripts/markupsafe.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("MARKUPSAFE_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/matplotlib.py b/products/env_scripts/matplotlib.py new file mode 100644 index 0000000..cca2425 --- /dev/null +++ b/products/env_scripts/matplotlib.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform +def set_env(env, prereq_dir, version): + env.set('MATPLOTLIB_ROOT_DIR', prereq_dir) + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + + # FOR THE FILE CONFIG MATPLOTLIBRC + env.set('MPLCONFIGDIR', prereq_dir) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/med.py b/products/env_scripts/med.py new file mode 100644 index 0000000..7a2da79 --- /dev/null +++ b/products/env_scripts/med.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set('MED3HOME', prereq_dir) + env.set('MED2HOME', prereq_dir) + env.set('MEDFILE_ROOT_DIR', prereq_dir) # update for cmake + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + else : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('MEDFILE_ROOT_DIR', '/usr') # update for cmake + env.set('MED3HOME', '/usr') + env.set('MED2HOME', '/usr') diff --git a/products/env_scripts/mesa.py b/products/env_scripts/mesa.py new file mode 100644 index 0000000..e02f75e --- /dev/null +++ b/products/env_scripts/mesa.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('MESAROOT', prereq_dir) + env.set('MESA_ROOT_DIR', prereq_dir) + env.set('XLIB_SKIP_ARGB_VISUALS', '1') + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'x64')) + env.prepend('PATH', os.path.join(prereq_dir, 'x64','osmesa-gallium')) + else: + env.prepend('PATH', os.path.join(prereq_dir, 'include', 'GL')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + if version.startswith('19'): + env.set('MESA_GL_VERSION_OVERRIDE','4.5') + +def set_nativ_env(env): + env.set('MESAROOT', '/usr') + env.set('MESA_ROOT_DIR', '/usr') + env.set('XLIB_SKIP_ARGB_VISUALS', '1') diff --git a/products/env_scripts/metis.py b/products/env_scripts/metis.py new file mode 100755 index 0000000..09f763b --- /dev/null +++ b/products/env_scripts/metis.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('METISDIR', prereq_dir) + env.set('METIS_ROOT_DIR', prereq_dir) # update for cmake + + env.set('METIS_BIN', os.path.join(prereq_dir, 'bin')) + env.set('METIS_LIBRARY', os.path.join(prereq_dir, 'lib')) + env.set('METIS_LIBRARIES', os.path.join(prereq_dir, 'lib')) + env.set('METIS_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('METISDIR', '/usr') + env.set('METIS_ROOT_DIR', '/usr') # update for cmake diff --git a/products/env_scripts/msvc.py b/products/env_scripts/msvc.py new file mode 100644 index 0000000..217e9aa --- /dev/null +++ b/products/env_scripts/msvc.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('MSVC_ROOT_DIR', prereq_dir) + env.prepend('PATH', prereq_dir) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/netgen.py b/products/env_scripts/netgen.py new file mode 100755 index 0000000..44c5955 --- /dev/null +++ b/products/env_scripts/netgen.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('NETGENHOME', prereq_dir) + env.set('NETGEN_ROOT_DIR', prereq_dir) + + env.set('NETGEN_BIN', os.path.join(prereq_dir, 'bin')) + env.set('NETGEN_LIBRARY', os.path.join(prereq_dir, 'lib')) + env.set('NETGEN_LIBRARIES', os.path.join(prereq_dir, 'lib')) + env.set('NETGEN_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + env.set('NETGEN_INCLUDE_DIRS', os.path.join(prereq_dir, 'include')) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if platform.system() == "Windows" : + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('LIB', os.path.join(prereq_dir, 'lib')) + else : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('NETGEN_ROOT_DIR', '/usr') # update for cmake + env.set('NETGENHOME', '/usr') diff --git a/products/env_scripts/nlopt.py b/products/env_scripts/nlopt.py new file mode 100644 index 0000000..fc95c33 --- /dev/null +++ b/products/env_scripts/nlopt.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("NLOPT_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + if platform.system() == "Windows" : + env.prepend('PATH',os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + else : + env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/numpy.py b/products/env_scripts/numpy.py new file mode 100644 index 0000000..a4e1be5 --- /dev/null +++ b/products/env_scripts/numpy.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.set('NUMPY_INCLUDE_DIR',os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.set('NUMPY_INCLUDE_DIR2',os.path.join(prereq_dir, 'lib', pyver, 'site-packages','numpy','core','include')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/omniNotify.py b/products/env_scripts/omniNotify.py new file mode 100755 index 0000000..d94ab79 --- /dev/null +++ b/products/env_scripts/omniNotify.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +def set_env(env, prereq_dir, version): + pass + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/omniORB.py b/products/env_scripts/omniORB.py new file mode 100644 index 0000000..78356b6 --- /dev/null +++ b/products/env_scripts/omniORB.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('OMNIORB_ROOT_DIR', prereq_dir) # update for cmake + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'bin', 'x86_win32')) + env.prepend('PATH',os.path.join(prereq_dir, 'lib', 'x86_win32')) + env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib', 'python')) + env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib', 'x86_win32')) + env.set("OMNIORB_USER_PATH", "%APPDATA%") + else: + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib')) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib64', pyver, 'site-packages')) + env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) + env.set("OMNIORB_USER_PATH", "/tmp") + +def set_nativ_env(env): + env.set('OMNIORB_ROOT_DIR', "/usr") # update for cmake diff --git a/products/env_scripts/omniORBpy.py b/products/env_scripts/omniORBpy.py new file mode 100644 index 0000000..811f56c --- /dev/null +++ b/products/env_scripts/omniORBpy.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +def set_env(env, prereq_dir, version): + omniorb_root_dir = env.get('OMNIORB_ROOT_DIR') + env.set('OMNIORBPY_ROOT_DIR', omniorb_root_dir) + +def set_nativ_env(env): + env.set('OMNIORBPY_ROOT_DIR',"/usr") + + diff --git a/products/env_scripts/openblas.py b/products/env_scripts/openblas.py new file mode 100644 index 0000000..94c0a77 --- /dev/null +++ b/products/env_scripts/openblas.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('OPENBLASHOME', prereq_dir) + env.set('OPENBLAS_ROOT_DIR', prereq_dir) + env.set('OPENBLAS_SRC', os.path.join(prereq_dir,'SRC')) + env.set('BLAS_SRC', os.path.join(prereq_dir,'BLAS','SRC')) + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + # FOR NUMPY AND SCIPY + env.set('BLAS', os.path.join(prereq_dir, 'lib')) + env.set('OPENBLAS', os.path.join(prereq_dir, 'lib')) + else: + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('OPENBLASHOME', '/usr') + diff --git a/products/env_scripts/opencv.py b/products/env_scripts/opencv.py new file mode 100755 index 0000000..546660c --- /dev/null +++ b/products/env_scripts/opencv.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('OPENCV_ROOT_DIR', prereq_dir) + env.set('OPENCV_HOME', prereq_dir) + env.set('OPENCV_DIR', prereq_dir) + env.set('OpenCV_DIR', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + else: + env.prepend('PATH', os.path.join(prereq_dir, 'x64','vc15','bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'x64','vc15','lib')) + env.set('OpenCV_INCLUDE_DIRS', os.path.join(prereq_dir, 'include') + ';' + os.path.join(prereq_dir, 'include','opencv') + ';' + os.path.join(prereq_dir, 'include','opencv2')) + +def set_nativ_env(env): + env.set('OPENCV_ROOT_DIR', '/usr') + env.set('OPENCV_HOME', '/usr') diff --git a/products/env_scripts/openmpi.py b/products/env_scripts/openmpi.py new file mode 100644 index 0000000..38872b1 --- /dev/null +++ b/products/env_scripts/openmpi.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('OPENMPIDIR', prereq_dir) + env.set('OPAL_PREFIX', prereq_dir) # be able to move openmpi install (packages) + env.set('MPI_ROOT_DIR', prereq_dir) # update for cmake + env.set('MPI_ROOT', prereq_dir) + root = env.get('OPENMPIDIR') + + env.prepend('PATH', os.path.join(root, 'bin')) + env.prepend('PATH', os.path.join(root, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + env.prepend('C_INCLUDE_PATH', os.path.join(root, 'include')) # needed for parallel h5py + +def set_nativ_env(env): + env.set('MPI_ROOT_DIR', "/usr") # update for cmake + env.set('OPENMPIDIR', "/usr") + env.set('MPI_ROOT', "/usr") + + diff --git a/products/env_scripts/ospray.py b/products/env_scripts/ospray.py new file mode 100644 index 0000000..f346251 --- /dev/null +++ b/products/env_scripts/ospray.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('OSPRAY_ROOT_DIR', prereq_dir) + ospray_version = 'ospray-' + version + env.set('ospray_DIR', os.path.join(prereq_dir,'lib','cmake',ospray_version)) + env.set('OSPRAY_VERSION', version) + if platform.system() == "Windows": + env.prepend('PATH',os.path.join(prereq_dir, 'bin')) + else: + env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/packaging.py b/products/env_scripts/packaging.py new file mode 100644 index 0000000..5bec2cd --- /dev/null +++ b/products/env_scripts/packaging.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("PACKAGING_ROOT_DIR",prereq_dir) + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/perl.py b/products/env_scripts/perl.py new file mode 100644 index 0000000..4669d88 --- /dev/null +++ b/products/env_scripts/perl.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('PERLROOT', prereq_dir) + + env.set('PERL_ROOT_DIR', prereq_dir) + + env.prepend('PATH', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/petsc.py b/products/env_scripts/petsc.py new file mode 100644 index 0000000..8cf89b0 --- /dev/null +++ b/products/env_scripts/petsc.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('PETSCDIR', prereq_dir) + env.set('PETSC_ROOT_DIR', prereq_dir) + + env.set('PETSC_DIR', prereq_dir) + env.set('PETSC_ARCH', 'arch-linux2-c-debug') + + root = env.get('PETSCDIR') + + env.prepend('PATH', os.path.join(root, 'include')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + #env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'arch-linux2-c-debug', 'lib')) + + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/planegcs.py b/products/env_scripts/planegcs.py new file mode 100644 index 0000000..4a074a1 --- /dev/null +++ b/products/env_scripts/planegcs.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('PLANEGCS_ROOT_DIR', prereq_dir) # update for cmake + root = env.get('PLANEGCS_ROOT_DIR') + if platform.system() == "Windows" : + env.prepend('PATH',os.path.join(root, 'lib')) + else: + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/pockets.py b/products/env_scripts/pockets.py new file mode 100644 index 0000000..f60fefa --- /dev/null +++ b/products/env_scripts/pockets.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("POCKETS_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/pthreads.py b/products/env_scripts/pthreads.py new file mode 100755 index 0000000..db88ad5 --- /dev/null +++ b/products/env_scripts/pthreads.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): +# this prerequisites is only used on windows platform + env.set('PTHREAD_ROOT_DIR', prereq_dir) + + env.set('PTHREAD_LIBRARY', os.path.join(prereq_dir, 'lib')) + env.set('PTHREAD_LIBRARIES', os.path.join(prereq_dir, 'lib')) + env.set('PTHREAD_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('LIB', os.path.join(prereq_dir, 'lib')) + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + + if not platform.system() == "Windows" : + env.set('PTHREAD_BINDIR', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/pyparsing.py b/products/env_scripts/pyparsing.py new file mode 100644 index 0000000..067d84f --- /dev/null +++ b/products/env_scripts/pyparsing.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + #env.set('PYPARSING_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) + env.set('PYPARSING_ROOT_DIR', prereq_dir) + + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/pyreadline.py b/products/env_scripts/pyreadline.py new file mode 100755 index 0000000..568c51b --- /dev/null +++ b/products/env_scripts/pyreadline.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + if platform.system() == "Windows" : + env.set('PYREADLINE_ROOT_DIR', prereq_dir) + else: + env.set('PYREADLINE_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) + +def set_nativ_env(env): + env.set('PYREADLINE_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) diff --git a/products/env_scripts/pytz.py b/products/env_scripts/pytz.py new file mode 100755 index 0000000..e8a1cdc --- /dev/null +++ b/products/env_scripts/pytz.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('PYTZ_ROOT_DIR', prereq_dir) + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/qt.py b/products/env_scripts/qt.py new file mode 100644 index 0000000..8d42bb3 --- /dev/null +++ b/products/env_scripts/qt.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('QTDIR', prereq_dir) + + version_table = version.split('.') + if version_table[0] == '5': + env.set('QT5_ROOT_DIR', prereq_dir) + env.prepend('QT_PLUGIN_PATH', os.path.join(prereq_dir, 'plugins')) + env.prepend('QT_QPA_PLATFORM_PLUGIN_PATH', os.path.join(prereq_dir, 'plugins')) + else: + env.set('QT4_ROOT_DIR', prereq_dir) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if platform.system() == "Windows" : + env.prepend('LIB', os.path.join(prereq_dir, 'lib')) + else : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('QT5_ROOT_DIR', '/usr') + env.set('Qt5Core_DIR', '/usr/lib64/cmake/Qt5Core') + env.set('Qt5Gui_DIR', '/usr/lib64/cmake/Qt5Gui') + env.set('Qt5Widgets_DIR', '/usr/lib64/cmake/Qt5Widgets') + env.set('Qt5Network_DIR', '/usr/lib64/cmake/Qt5Network') + env.set('Qt5Xml_DIR', '/usr/lib64/cmake/Qt5Xml') + env.set('Qt5OpenGL_DIR', '/usr/lib64/cmake/Qt5OpenGL') + env.set('Qt5PrintSupport_DIR', '/usr/lib64/cmake/Qt5PrintSupport') + env.set('Qt5Help_DIR', '/usr/lib64/cmake/Qt5Help') + env.set('Qt5Test_DIR', '/usr/lib64/cmake/Qt5Test') + env.set('Qt5X11Extras_DIR', '/usr/lib64/cmake/Qt5X11Extras') diff --git a/products/env_scripts/qwt.py b/products/env_scripts/qwt.py new file mode 100755 index 0000000..1632ab1 --- /dev/null +++ b/products/env_scripts/qwt.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('QWTHOME', prereq_dir) + env.set('QWT_ROOT_DIR', prereq_dir) + + if platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'lib')) + else: + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('QWTHOME', '/usr') + env.set('QWT_ROOT_DIR', '/usr') + pass diff --git a/products/env_scripts/requests.py b/products/env_scripts/requests.py new file mode 100644 index 0000000..f3e3644 --- /dev/null +++ b/products/env_scripts/requests.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("REQUESTS_ROOT_DIR",prereq_dir) + if not platform.system() == "Windows" : + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/root.py b/products/env_scripts/root.py new file mode 100644 index 0000000..0503f86 --- /dev/null +++ b/products/env_scripts/root.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('ROOTSYS', prereq_dir) + if platform.system() == "Windows": + env.prepend('PATH',os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + else: + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib')) + env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) + env.prepend('DYLD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) + env.prepend('SHLIB_PATH',os.path.join(prereq_dir, 'lib')) + env.prepend('LIBPATH',os.path.join(prereq_dir, 'lib')) + env.prepend('PATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/ruby.py b/products/env_scripts/ruby.py new file mode 100644 index 0000000..dd1ced4 --- /dev/null +++ b/products/env_scripts/ruby.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + + env.set('RUBY_ROOT_DIR', prereq_dir) + env.prepend('PATH', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/scipy.py b/products/env_scripts/scipy.py new file mode 100644 index 0000000..8d98f9f --- /dev/null +++ b/products/env_scripts/scipy.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("SCIPY_ROOT_DIR", prereq_dir) + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/scons.py b/products/env_scripts/scons.py new file mode 100644 index 0000000..f4219ea --- /dev/null +++ b/products/env_scripts/scons.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set("SCONS_ROOT_DIR",prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'scons' + version)) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/scotch.py b/products/env_scripts/scotch.py new file mode 100755 index 0000000..edf7a94 --- /dev/null +++ b/products/env_scripts/scotch.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +def set_env(env, prereq_dir, version): + env.set('SCOTCHDIR', prereq_dir) + env.set('SCOTCH_ROOT_DIR', prereq_dir) # update for cmake + +def set_nativ_env(env): + env.set('SCOTCH_ROOT_DIR', '/usr') # update for cmake + env.set('SCOTCHDIR', '/usr') + diff --git a/products/env_scripts/setuptools.py b/products/env_scripts/setuptools.py new file mode 100644 index 0000000..3ee5a86 --- /dev/null +++ b/products/env_scripts/setuptools.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('SETUPTOOLDIR', prereq_dir) + env.set('SETUPTOOLS_ROOT_DIR', prereq_dir) # update for cmake + + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('SETUPTOOLS_ROOT_DIR', '/usr') # update for cmake + env.set('SETUPTOOLDIR', '/usr') + pass diff --git a/products/env_scripts/sip.py b/products/env_scripts/sip.py new file mode 100644 index 0000000..eae92bf --- /dev/null +++ b/products/env_scripts/sip.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + pyver = 'python' + env.get('PYTHON_VERSION') + + pyqt = env.get('PYQTDIR') + env.set('PYQT_SIPS_DIR', pyqt) + env.set('SIPDIR', prereq_dir) + env.set('SIP_ROOT_DIR', prereq_dir) + + if not platform.system() == "Windows" : + # [CMake GUI] Nouveau nom pour SIPDIR = SIP_ROOT_DIR 22/03/2013 + env.set('SIPDIR', prereq_dir) + env.set('SIP_ROOT_DIR', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('CPLUS_INCLUDE_PATH', os.path.join(prereq_dir, 'include', pyver)) + else: +# env.set('SIPDIR', os.path.join(env.get('PYTHON_ROOT_DIR'),'site-packages')) +# env.set('SIP_ROOT_DIR', os.path.join(env.get('PYTHON_ROOT_DIR'),'site-packages')) +# env.prepend('CPLUS_INCLUDE_PATH', os.path.join( env.get('PYTHON_INCLUDE_PATH'), pyver)) + env.prepend('CPLUS_INCLUDE_PATH', os.path.join(prereq_dir, 'include', pyver)) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + env.set('SIPDIR', '/usr') + env.set('SIP_ROOT_DIR','/usr') + diff --git a/products/env_scripts/six.py b/products/env_scripts/six.py new file mode 100644 index 0000000..abb5edd --- /dev/null +++ b/products/env_scripts/six.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + #env.set('SIX_ROOT_DIR', env.get('PYTHON_ROOT_DIR')) + env.set('SIX_ROOT_DIR', prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/snowballstemmer.py b/products/env_scripts/snowballstemmer.py new file mode 100644 index 0000000..c510714 --- /dev/null +++ b/products/env_scripts/snowballstemmer.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("SNOWBALLSTEMMER_ROOT_DIR",prereq_dir) + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/solvespace.py b/products/env_scripts/solvespace.py new file mode 100644 index 0000000..b5b3a6c --- /dev/null +++ b/products/env_scripts/solvespace.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path + +def set_env(env, prereq_dir, version): + env.set('SOLVESPACE_ROOT_DIR', prereq_dir) + root = env.get('SOLVESPACE_ROOT_DIR') + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinx_rtd_theme.py b/products/env_scripts/sphinx_rtd_theme.py new file mode 100644 index 0000000..f029bd4 --- /dev/null +++ b/products/env_scripts/sphinx_rtd_theme.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set("SPHINX_RTD_THEME_ROOT_DIR",prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + + if platform.system() == "Windows" : + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', 'site-packages')) + else : + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib.py b/products/env_scripts/sphinxcontrib.py new file mode 100644 index 0000000..7838423 --- /dev/null +++ b/products/env_scripts/sphinxcontrib.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + env.set("SPHINXCONTRIB_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages/sphinxcontrib_napoleon-0.6.1-py2.7.egg/sphinxcontrib')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages/sphinxcontrib_napoleon-0.6.1-py2.7.egg/sphinxcontrib/napoleon')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_applehelp.py b/products/env_scripts/sphinxcontrib_applehelp.py new file mode 100644 index 0000000..1fcaa44 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_applehelp.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pass +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_devhelp.py b/products/env_scripts/sphinxcontrib_devhelp.py new file mode 100644 index 0000000..1fcaa44 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_devhelp.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pass +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_htmlhelp.py b/products/env_scripts/sphinxcontrib_htmlhelp.py new file mode 100644 index 0000000..1fcaa44 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_htmlhelp.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pass +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_jsmath.py b/products/env_scripts/sphinxcontrib_jsmath.py new file mode 100644 index 0000000..1fcaa44 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_jsmath.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pass +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_napoleon.py b/products/env_scripts/sphinxcontrib_napoleon.py new file mode 100644 index 0000000..d48c662 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_napoleon.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("SPHINXCONTRIB_NAPOLEON_ROOT_DIR",prereq_dir) + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_qthelp.py b/products/env_scripts/sphinxcontrib_qthelp.py new file mode 100644 index 0000000..1fcaa44 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_qthelp.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pass +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_serializinghtml.py b/products/env_scripts/sphinxcontrib_serializinghtml.py new file mode 100644 index 0000000..1fcaa44 --- /dev/null +++ b/products/env_scripts/sphinxcontrib_serializinghtml.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pass +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxcontrib_websupport.py b/products/env_scripts/sphinxcontrib_websupport.py new file mode 100644 index 0000000..0cbb3cc --- /dev/null +++ b/products/env_scripts/sphinxcontrib_websupport.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform +def set_env(env, prereq_dir, version): + env.set("SPHINXCONTRIB_WEBSUPPORT_ROOT_DIR",prereq_dir) + versionPython = env.get('PYTHON_VERSION') + if not platform.system() == "Windows" : + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/sphinxintl.py b/products/env_scripts/sphinxintl.py new file mode 100644 index 0000000..60c993c --- /dev/null +++ b/products/env_scripts/sphinxintl.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + env.set("SPHINXINTL_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + if platform.system() == "Windows" : + env.set('SPHINXINTL_EXECUTABLE',os.path.join(prereq_dir, 'Scripts','sphinx-build.exe')) + else: + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/subprocess32.py b/products/env_scripts/subprocess32.py new file mode 100644 index 0000000..ed3413a --- /dev/null +++ b/products/env_scripts/subprocess32.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + env.set("SUBPROCESS_ROOT_DIR",prereq_dir) + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/swig.py b/products/env_scripts/swig.py new file mode 100644 index 0000000..3605811 --- /dev/null +++ b/products/env_scripts/swig.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('SWIG_ROOT', prereq_dir) + env.set('SWIG_ROOT_DIR', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + if platform.system() == "Windows" : + env.set('SWIG_LIB', os.path.join( prereq_dir, "Lib")) + else : + env.set('SWIG_LIB', os.path.join( prereq_dir, "share", "swig", version)) + +def set_nativ_env(env): + env.set('SWIG_ROOT_DIR', '/usr') + env.set('SWIG_ROOT', '/usr') diff --git a/products/env_scripts/tbb.py b/products/env_scripts/tbb.py new file mode 100644 index 0000000..792c9e9 --- /dev/null +++ b/products/env_scripts/tbb.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version): + env.set('TBB_ROOT_DIR', prereq_dir) + if platform.system()=="Windows" : + # this prerequisites is only used on windows platform + arch = 'intel64' + vs = '14_uwp' # target is Visual studio 2017 + env.set('TBB_DIR', prereq_dir) + env.set('TBB_TARGET_ARCH',arch) + env.set('TBB_TARGET_VS',vs) + env.prepend('PATH', os.path.join(prereq_dir,'bin')) + else: + env.set('TBB_ROOT', prereq_dir) + env.set('TBBROOT', prereq_dir) + env.set('TBB_INSTALL_DIR', prereq_dir) + env.set('TBB_INCLUDE_DIR', os.path.join(prereq_dir,'include')) + env.set('TBB_LIBRARY_DIR', os.path.join(prereq_dir,'lib')) + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir,'lib')) + +def set_nativ_env(env): + pass + diff --git a/products/env_scripts/tcl.py b/products/env_scripts/tcl.py new file mode 100644 index 0000000..4432a88 --- /dev/null +++ b/products/env_scripts/tcl.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('TCL_ROOT_DIR', prereq_dir) # update for cmake + env.set('TCLHOME', prereq_dir) + + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.set('TCL_SHORT_VERSION', version[:version.rfind('.')]) + + l = [] + l.append(os.path.join(prereq_dir, 'lib')) + l.append(os.path.join(prereq_dir, 'lib', 'tcl', env.get('TCL_SHORT_VERSION'))) + #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm + #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows. + env.prepend('TCLLIBPATH', l, sep=" ") + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('TCL_ROOT_DIR', '/usr') # update for cmake + env.set('TCLHOME', '/usr') diff --git a/products/env_scripts/tcltk.py b/products/env_scripts/tcltk.py new file mode 100644 index 0000000..18069de --- /dev/null +++ b/products/env_scripts/tcltk.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('TCL_ROOT_DIR', prereq_dir) + env.set('TCLHOME', prereq_dir) + env.set('TK_ROOT_DIR', prereq_dir) + env.set('TKHOME', prereq_dir) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.set('TCL_SHORT_VERSION', version[:version.rfind('.')]) + env.set('TK_SHORT_VERSION', version[:version.rfind('.')]) + + l = [] + l.append(os.path.join(prereq_dir, 'lib')) + l.append(os.path.join(prereq_dir, 'lib', 'tcl', env.get('TCL_SHORT_VERSION'))) + #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm + #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows. + env.prepend('TCLLIBPATH',l, sep=" ") + l = [] + l.append(os.path.join(prereq_dir, 'lib')) + l.append(os.path.join(prereq_dir, 'lib', 'tk', env.get('TCL_SHORT_VERSION'))) + env.prepend('TKLIBPATH', l, sep=" ") + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib')) + +def set_nativ_env(env): + env.set('TCL_ROOT_DIR', '/usr') # update for cmake + env.set('TCLHOME', '/usr') + env.set('TK_ROOT_DIR', '/usr') # update for cmake + env.set('TKHOME', '/usr') diff --git a/products/env_scripts/tk.py b/products/env_scripts/tk.py new file mode 100755 index 0000000..4f90200 --- /dev/null +++ b/products/env_scripts/tk.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + # OP TEST + #env.set('TK_ROOT_DIR', prereq_dir) # update for cmake + #env.set('TKHOME', prereq_dir) + env.set('TK_ROOT_DIR', env.get('TCL_ROOT_DIR')) + env.set('TKHOME', env.get('TCL_ROOT_DIR')) + root = env.get('TKHOME') + + env.prepend('PATH', os.path.join(root, 'bin')) + + l = [] + l.append(os.path.join(root, 'lib')) + l.append(os.path.join(root, 'lib', 'tk', env.get('TCL_SHORT_VERSION'))) + #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm + #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows. + env.prepend('TKLIBPATH', l, sep=" ") + + if not platform.system() == "Windows" : + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + + +def set_nativ_env(env): + env.set('TK_ROOT_DIR', '/usr') # update for cmake + env.set('TKHOME', '/usr') diff --git a/products/env_scripts/typing.py b/products/env_scripts/typing.py new file mode 100644 index 0000000..2f7ddbb --- /dev/null +++ b/products/env_scripts/typing.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('TYPING_ROOT_DIR', prereq_dir) + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/uranie_win.py b/products/env_scripts/uranie_win.py new file mode 100755 index 0000000..fb8dae1 --- /dev/null +++ b/products/env_scripts/uranie_win.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path, platform + +def set_env(env, prereq_dir, version, forBuild=None): + version = '.'.join(version.replace('-', '.').split('.')[:2]) + env.set('URANIE_VERSION', version) + + if platform.system()=="Windows" : + # URANIE + uranie_root = os.path.join(prereq_dir, 'uranie-3.9.0') + env.set('URANIE_ROOT_DIR', uranie_root) + env.set('URANIESYS', uranie_root) + env.prepend('PATH', os.path.join(uranie_root, 'bin')) + env.prepend('PATH', os.path.join(uranie_root, 'lib')) + + # ROOT + root_dir = os.path.join(prereq_dir, 'root5.34.14') + env.set('ROOT_ROOT_DIR', root_dir) + env.set('ROOTSYS', root_dir) + env.set('ROOTSYSLIB', os.path.join(root_dir, 'lib')) + env.prepend('PATH', os.path.join(root_dir, 'bin')) + + env.prepend('PATH', os.path.join(prereq_dir, 'zlib-1.2.5', 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'libxml2-2.7.8.win32', 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'libxml2-2.7.8.win32', 'lib')) + env.prepend('PATH', os.path.join(prereq_dir, 'iconv-1.9.2.win32', 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'libxslt-1.1.26.win32', 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'fftw-3.3.3-dll32')) + env.prepend('PATH', os.path.join(prereq_dir, 'nlopt-2.4.2-dll32')) + env.prepend('PATH', os.path.join(prereq_dir, 'pcl-1.10-modified', 'debug')) + env.prepend('PATH', os.path.join(prereq_dir, 'optpp-2.4', 'lib')) + env.prepend('PATH', os.path.join(prereq_dir, 'pthread-win32', 'Pre-built.2', 'dll', 'x86')) + else : + env.set('URANIE_ROOT_DIR', prereq_dir) + uranie = env.get('URANIE_ROOT_DIR') + + ### + # FORMAT URANIE + + # URANIE PATH + env.set('URANIESYS', prereq_dir) + + # PYTHON PATH + env.prepend('PYTHONPATH', os.path.join(uranie, 'lib', 'python')) + + # LD LIBRARY PATH + env.prepend('LD_LIBRARY_PATH', os.path.join(uranie, 'lib')) + + # ROOT PATH + root_env = env.get('ROOT_ROOT_DIR') + env.set('ROOTSYS', root_env) + + root_lib_env = os.path.join(root_env,'lib','root') + if os.path.isdir(root_lib_env): + env.prepend('ROOTSYSLIB', root_lib_env) + else: + env.prepend('ROOTSYSLIB', os.path.join(root_env,'lib')) + + # PATH + env.prepend('PATH', os.path.join(uranie,'bin')) + env.prepend('PATH', os.path.join(root_env,'bin')) + + # OPT + opt_env = os.path.join(uranie, 'OPT++','optpp-2.4','lib') + env.prepend('LD_LIBRARY_PATH', opt_env) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/urllib3.py b/products/env_scripts/urllib3.py new file mode 100644 index 0000000..b50165c --- /dev/null +++ b/products/env_scripts/urllib3.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os +import platform + +def set_env(env, prereq_dir, version): + if not platform.system() == "Windows" : + versionPython = env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages')) + env.set("URLLIB3_ROOT_DIR",prereq_dir) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/vtk.py b/products/env_scripts/vtk.py new file mode 100644 index 0000000..6f73441 --- /dev/null +++ b/products/env_scripts/vtk.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +def set_env(env, prereq_dir, version): + env.set('VTK_ROOT_DIR', prereq_dir) # update for cmake + env.set('VTKHOME', prereq_dir) + root = env.get('VTKHOME') + pyver = 'python' + env.get('PYTHON_VERSION') + + env.prepend('PATH', os.path.join(root, 'bin')) + env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib')) + env.prepend('PYTHONPATH', os.path.join(root, 'lib', pyver, 'site-packages')) + #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm + #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows. + env.prepend('TCLLIBPATH', os.path.join(root, 'lib', 'vtk-5.0', 'tcl'), sep=" ") + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/zlib.py b/products/env_scripts/zlib.py new file mode 100755 index 0000000..742b975 --- /dev/null +++ b/products/env_scripts/zlib.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + # this prerequisites is only used on windows platform + env.set('ZLIB_ROOT_DIR', prereq_dir) + if platform.system() == "Windows" : + env.set('ZLIB_DIR', prereq_dir) + env.set('ZLIB_BIN', os.path.join(prereq_dir, 'bin')) + env.set('ZLIB_LIBRARY', os.path.join(prereq_dir, 'bin')) + env.set('ZLIB_LIBRARIES', os.path.join(prereq_dir, 'bin')) + env.set('ZLIB_INCLUDE_DIR', os.path.join(prereq_dir, 'include')) + env.prepend('INCLUDE', os.path.join(prereq_dir, 'include')) + env.prepend('LIB', os.path.join(prereq_dir, 'bin')) + env.prepend('PATH', os.path.join(prereq_dir, 'bin')) + else: + pass + +def set_nativ_env(env): + pass + + diff --git a/products/expat.pyconf b/products/expat.pyconf new file mode 100644 index 0000000..b3f14c9 --- /dev/null +++ b/products/expat.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "expat" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ ] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +default_win : +{ + archive_info : {archive_name : "expat-" + $APPLICATION.products.expat + "_windows.tar.gz"} + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/f2c.pyconf b/products/f2c.pyconf new file mode 100644 index 0000000..8a33612 --- /dev/null +++ b/products/f2c.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "f2c" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + compile_time : "yes" + incremental : "yes" + } +} diff --git a/products/ffmpeg.pyconf b/products/ffmpeg.pyconf new file mode 100644 index 0000000..7a8dad0 --- /dev/null +++ b/products/ffmpeg.pyconf @@ -0,0 +1,14 @@ +# Only used as a native product for dedicated opencv compilation +default : +{ + name : "ffmpeg" + get_source : "system" + depend : [] + system_info : + { + rpm : ["ffmpeg"] + rpm_dev : ["ffmpeg-devel"] + apt : ["ffmpeg"] + apt_dev : [] + } +} diff --git a/products/freeimage.pyconf b/products/freeimage.pyconf new file mode 100644 index 0000000..5f993e6 --- /dev/null +++ b/products/freeimage.pyconf @@ -0,0 +1,51 @@ +default : +{ + name : "freeimage" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["freeimage"] + rpm_dev : ["freeimage-devel"] + apt : ["libfreeimage"] + apt_dev : ["libfreeimage-dev"] + } + patches : [] + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "freeimage-" + $APPLICATION.products.freeimage + "_windows.tar.gz"} +} + +version_3_16_0 : +{ + compil_script : "freeimage-3.16.0.sh" + patches : ["freeimage-3.16.0_gcc6.patch"] +} + +# NOTE: do not delete this section, it was added in order to be able to overload it for Windows +version_3_18_0: +{ + patches : [] +} + +version_3_18_0_win: +{ + patches : ['freeimage-3.18.0_windows.patch'] +} + diff --git a/products/freetype.pyconf b/products/freetype.pyconf new file mode 100755 index 0000000..a245ca4 --- /dev/null +++ b/products/freetype.pyconf @@ -0,0 +1,67 @@ +default : +{ + name : "freetype" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["freetype"] + rpm_dev : ["freetype-devel"] + apt : ["libfreetype"] + apt_dev : ["libfreetype6-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + check_install : ["lib/pkgconfig/freetype2.pc"] + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +default_win : +{ + build_source : "script" + archive_info : {archive_name : "freetype-" + $APPLICATION.products.freetype + "_windows.tar.gz"} + depend : [] + check_install : [] + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + + +# needed in order to screen with windows version - see below +version_2_9_1 : +{ + patches : [] +} + +version_2_9_1_win : +{ + patches : ["freetype-2.9.1_windows.patch"] +} + + +version_2_4_11 : +{ + compil_script : "freetype-2.3" + $VARS.scriptExtension + patches : [ "freetype-2.4.11_ft_export_FD20.patch" ] +} + +version_2_3_7 : +{ + compil_script : "freetype-2.3" + $VARS.scriptExtension +} diff --git a/products/ftgl.pyconf b/products/ftgl.pyconf new file mode 100644 index 0000000..8f3ce52 --- /dev/null +++ b/products/ftgl.pyconf @@ -0,0 +1,17 @@ +version_2_1_3_rc5 : +{ + name : "ftgl" + build_source : "script" + compil_script : "ftgl_2.1.3.sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ "freetype"] + patches : [ "ftgl-2.1.3_no_doc.patch"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" +} + diff --git a/products/functools32.pyconf b/products/functools32.pyconf new file mode 100644 index 0000000..42be36a --- /dev/null +++ b/products/functools32.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "functools32" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + archive_info: + { + archive_name : $name + "-3.2.3-2.tar.gz" + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python']#, 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} diff --git a/products/gcc.pyconf b/products/gcc.pyconf new file mode 100644 index 0000000..376bc91 --- /dev/null +++ b/products/gcc.pyconf @@ -0,0 +1,20 @@ +default : +{ + name : "gcc" + build_source : "script" + compil_script : $name + "-" + $APPLICATION.products.gcc + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + patches : [] + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} diff --git a/products/gl2ps.pyconf b/products/gl2ps.pyconf new file mode 100755 index 0000000..85754ed --- /dev/null +++ b/products/gl2ps.pyconf @@ -0,0 +1,87 @@ +default : +{ + name : "gl2ps" + build_source : "cmake" + # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch + # to disable link with GLUT library and suppress '-DGLUT_FOUND=OFF' option + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_PNG=ON -DENABLE_ZLIB=ON -DENABLE_GLUT=OFF" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +default_win : +{ + depend : ["zlib","libpng"] + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} + +version_1_3_5 : +{ + # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch + # to disable link with GLUT library + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_ZLIB=OFF -DENABLE_PNG=OFF -DENABLE_GLUT=OFF" + archive_info: + { + archive_name : "gl2ps-1.3.5.tar.gz" + } + patches : ["gl2ps-1.3.5-GLUT.patch"] +} + +version_1_3_8 : +{ + # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch + # to disable link with GLUT library + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_ZLIB=OFF -DENABLE_PNG=OFF -DENABLE_GLUT=OFF" + archive_info: + { + archive_name : "gl2ps-1.3.8.tar.gz" + } + patches : ["gl2ps-1.3.8-GLUT.patch"] +} + +version_1_3_9p1 : +{ + # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch + # to disable link with GLUT library and suppress '-DGLUT_FOUND=OFF' option + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_PNG=ON -DENABLE_ZLIB=ON -DENABLE_GLUT=OFF" + archive_info: + { + archive_name : "gl2ps-1.3.9p1.tar.gz" + } + patches : ["gl2ps-1.3.9p1-GLUT.patch"] +} + +version_1_4_0_4037312 : +{ + # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch + # to disable link with GLUT library and suppress '-DGLUT_FOUND=OFF' option + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_PNG=ON -DENABLE_ZLIB=ON -DENABLE_GLUT=OFF" + archive_info: + { + archive_name : "gl2ps-1.4.0_4037312.tar.gz" + } + patches : ["gl2ps-1.4.0-GLUT.patch"] +} + +version_1_4_0_4037312_win : +{ + build_source : "script" + compil_script : "gl2ps.bat" +} diff --git a/products/glu.pyconf b/products/glu.pyconf new file mode 100644 index 0000000..eca00a8 --- /dev/null +++ b/products/glu.pyconf @@ -0,0 +1,15 @@ +default : +{ + name : "glu" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + #install_dir : 'base' +} diff --git a/products/gmsh.pyconf b/products/gmsh.pyconf new file mode 100644 index 0000000..c75f8f7 --- /dev/null +++ b/products/gmsh.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "gmsh" + build_source : "script" + compil_script : "gmsh" + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ["CAS","lapack"] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" + properties: + { + incremental : "yes" + } +} diff --git a/products/graphviz.pyconf b/products/graphviz.pyconf new file mode 100755 index 0000000..3ecf1c8 --- /dev/null +++ b/products/graphviz.pyconf @@ -0,0 +1,68 @@ +default : +{ + name : "graphviz" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["graphviz"] + rpm_dev : ["graphviz-devel"] + apt : ["graphviz"] + apt_dev : ["graphviz-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + compile_and_runtime : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "graphviz-" + $APPLICATION.products.graphviz + "_windows.tar.gz"} + depend : ['expat','zlib','libpng','libxml2', 'libjpeg'] + properties : + { + incremental : "yes" + single_install_dir : "yes" + compile_and_runtime : "no" + } +} + +version_2_44_1 : +{ +} + +version_2_44_1_win : +{ + compil_script : "graphviz-2.44.1" + $VARS.scriptExtension + depend : ['expat','zlib','libpng','libxml2', 'libjpeg','cmake'] +} + +version_2_38_0 : +{ + compil_script : "graphviz-2.38.0" + $VARS.scriptExtension + depend : ["swig"] +} + +version_2_38_0_win : +{ + compil_script : "graphviz-2.38.0" + $VARS.scriptExtension + depend : ['expat','zlib','libpng','libxml2', 'libjpeg'] +} + +version_2_28_0 : +{ + compil_script : "graphviz.sh" + depend : ["tcl", "tk", "expat"] +} diff --git a/products/hdf5.pyconf b/products/hdf5.pyconf new file mode 100755 index 0000000..f341792 --- /dev/null +++ b/products/hdf5.pyconf @@ -0,0 +1,54 @@ +default : +{ + name : "hdf5" + build_source : "script" + compil_script : $name + "CMake.sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + patches : [] + depend : [] + opt_depend : [ 'openmpi'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +default_Autotools : +{ + compil_script : "hdf5Autotools.sh" + depend : [] + build_depend : [] +} + +default_win : +{ + archive_info : {archive_name : "hdf5-" + $APPLICATION.products.hdf5 + "_windows.tar.gz"} +} + +version_1_10_3 : +{ + compil_script : "hdf5-1.10.3.sh" + patches : [ "hdf5-1.10.3.patch" ] +} + +version_1_10_3_win : +{ + compil_script : "hdf5CMake.bat" + patches : ['hdf5-1.10.3.patch', 'hdf5-1.10.3.win_unicode_new.patch' ] +} + +version_1_8_8 : +{ + compil_script : "hdf5_cxx.sh" + depend : [] + patches : [ "hdf5_188_remove_c++_comment.patch" ] +} diff --git a/products/homard_bin.pyconf b/products/homard_bin.pyconf new file mode 100644 index 0000000..413548f --- /dev/null +++ b/products/homard_bin.pyconf @@ -0,0 +1,31 @@ +default : +{ + name : "homard_bin" + build_source : "script" + compil_script : "Homard-SALOME9.sh" # this script do the install in install_dir/homard + get_source : "archive" + environ : + { + env_script : "Homard.py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + +version_6_6_0_to_8_5_0 : +{ + name : "homard_bin" + build_source : "script" + compil_script : "Homard.sh" + get_source : "archive" + environ : + { + env_script : "Homard.py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} diff --git a/products/homard_pre_windows.pyconf b/products/homard_pre_windows.pyconf new file mode 100644 index 0000000..3e3e7f5 --- /dev/null +++ b/products/homard_pre_windows.pyconf @@ -0,0 +1,15 @@ +default : +{ + name : "Homard" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} diff --git a/products/idna.pyconf b/products/idna.pyconf new file mode 100755 index 0000000..b196ff1 --- /dev/null +++ b/products/idna.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "idna" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-idna"] + rpm_dev : [] + apt : ["python3-idna"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "idna-" + $APPLICATION.products.idna + "_windows.tar.gz"} + depend : ['Python', 'setuptools','chardet'] +} diff --git a/products/imagesize.pyconf b/products/imagesize.pyconf new file mode 100755 index 0000000..cf40b3e --- /dev/null +++ b/products/imagesize.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "imagesize" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-imagesize"] + rpm_dev : [] + apt : ["python3-imagesize"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "imagesize-" + $APPLICATION.products.imagesize + "_windows.tar.gz"} +} diff --git a/products/ispc.pyconf b/products/ispc.pyconf new file mode 100644 index 0000000..b76d966 --- /dev/null +++ b/products/ispc.pyconf @@ -0,0 +1,51 @@ +default : +{ + name : "ispc" + build_source : "cmake" + cmake_options : "-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python " + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['llvm'] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win : +{ + build_source : "script" + compil_script : "ispc.bat" + properties: + { + incremental : "yes" + single_install_dir : "yes" + } + depend : ['Python'] +} + +version_1_9_2 : +{ + build_source : "script" + compil_script : "ispc-1.9.2.sh" + archive_info : {archive_name : "ispc-1.9.2-x86_64.tar.gz"} + patches : [] + depend : [] +} + +version_1_9_2_src : +{ + build_source : "script" + compil_script : "ispc-1.9.2.sh" + archive_info : {archive_name : "ispc-1.9.2.tar.gz"} + patches : ['ispc-makefile_WERROR.patch'] + depend : ['llvm'] +} diff --git a/products/kiwisolver.pyconf b/products/kiwisolver.pyconf new file mode 100755 index 0000000..662832d --- /dev/null +++ b/products/kiwisolver.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "kiwisolver" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-kiwisolver"] + rpm_dev : [] + apt : ["python3-kiwisolver"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "kiwisolver-" + $APPLICATION.products.kiwisolver + "_windows.tar.gz"} +} diff --git a/products/lapack.pyconf b/products/lapack.pyconf new file mode 100644 index 0000000..2320460 --- /dev/null +++ b/products/lapack.pyconf @@ -0,0 +1,55 @@ +default : +{ + name : "lapack" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["lapack"] + rpm_dev : ["lapack-devel"] + apt : ["liblapack3"] + apt_dev : ["liblapack-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +# needed in order to screen with windows version +version_3_8_0 : +{ + patches : [] +} + +version_3_8_0_win: +{ + patches : ['lapack-3.8.0_windows.patch'] + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} + +version_3_6_1 : +{ + build_source : "cmake" + cmake_options : "-DUSE_OPTIMIZED_BLAS=OFF -DCBLAS=ON -DLAPACKE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib" +} + +version_3_7_0 : +{ + build_source : "cmake" + cmake_options : "-DUSE_OPTIMIZED_BLAS=OFF -DCBLAS=ON -DLAPACKE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_LIBDIR=lib" +} diff --git a/products/lata.pyconf b/products/lata.pyconf new file mode 100644 index 0000000..055b3e3 --- /dev/null +++ b/products/lata.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "lata" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ["ParaView"] + build_depend : ["cmake"] + patches : ['lata-plugin_visit.patch'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} diff --git a/products/libjpeg.pyconf b/products/libjpeg.pyconf new file mode 100644 index 0000000..1601c24 --- /dev/null +++ b/products/libjpeg.pyconf @@ -0,0 +1,30 @@ +default : +{ + name : "libjpeg" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['zlib'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "libjpeg-" + $APPLICATION.products.libjpeg + "_windows.tar.gz"} + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/libpng.pyconf b/products/libpng.pyconf new file mode 100755 index 0000000..3158537 --- /dev/null +++ b/products/libpng.pyconf @@ -0,0 +1,30 @@ +default : +{ + name : "libpng" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ 'zlib' ] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "libpng-" + $APPLICATION.products.libpng + "_windows.tar.gz"} + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/libxml2.pyconf b/products/libxml2.pyconf new file mode 100644 index 0000000..20d27bb --- /dev/null +++ b/products/libxml2.pyconf @@ -0,0 +1,48 @@ +default : +{ + name : "libxml2" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["libxml2"] + rpm_dev : ["libxml2-devel"] + apt : ["libxml2"] + apt_dev : ["libxml2-dev"] + } + archive_info: + { + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python' ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win : +{ + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} +# needed in order to screen with windows version - see below +version_2_9_1 : +{ + patches : [] +} + +version_2_9_1_win : +{ + patches : ["libxml2-2.9.1.patch"] +} diff --git a/products/llvm.pyconf b/products/llvm.pyconf new file mode 100644 index 0000000..d125f9d --- /dev/null +++ b/products/llvm.pyconf @@ -0,0 +1,50 @@ +default : +{ + name : "llvm" + build_source : "cmake" + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$LLVM_ROOT_DIR -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_INSTALL_UTILS=ON -DLLVM_TARGETS_TO_BUILD:STRING=X86 -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python" + get_source : "archive" + system_info : + { + rpm : ["llvm-toolset"] + rpm_dev : [] + apt : [] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : [ 'Python' ] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + is_mesa : "yes" + not_in_package : "no" + incremental : "yes" + } + patches : [] +} + +version_8_0_1_clang : +{ + cmake_options : "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$LLVM_ROOT_DIR -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_INSTALL_UTILS=ON -DLLVM_TARGETS_TO_BUILD:STRING=X86 -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DLLVM_ENABLE_DUMP=ON " +} + +version_8_0_1_clang_win : +{ + cmake_options : ' -DCMAKE_INSTALL_PREFIX=%LLVM_ROOT_DIR% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DPYTHON_EXECUTABLE:STRING=%PYTHON_ROOT_DIR:\=/%/python.exe -DLLVM_INSTALL_UTILS:BOOL=ON -DLLVM_ENABLE_DUMP:BOOL=ON -Thost=x64' + depend : [ 'Python' ] + archive_info: + { + archive_name : "llvm-8.0.1-clang.tar.gz" + } + properties: + { + incremental : "yes" + compile_time : "yes" + } +} diff --git a/products/markupsafe.pyconf b/products/markupsafe.pyconf new file mode 100644 index 0000000..2b26e0d --- /dev/null +++ b/products/markupsafe.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "MarkupSafe" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-markupsafe"] + rpm_dev : [] + apt : ["python3-markupsafe"] + apt_dev : [] + } + environ : + { + env_script : "markupsafe.py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "markupsafe-" + $APPLICATION.products.markupsafe + "_windows.tar.gz"} +} diff --git a/products/matplotlib.pyconf b/products/matplotlib.pyconf new file mode 100755 index 0000000..37ab373 --- /dev/null +++ b/products/matplotlib.pyconf @@ -0,0 +1,65 @@ +default : +{ + name : "matplotlib" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-matplotlib"] + rpm_dev : [] + apt : ["python3-matplotlib"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + # OP distribute is not useful anymore + depend : ['Python', 'setuptools', 'PyQt', 'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'cycler', 'kiwisolver'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + pip : "no" # whl prerequisites do not correspond! backports.functools_lru_cache-1.5 and subprocess32-3.5.4 are missing + incremental : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "matplotlib-" + $APPLICATION.products.matplotlib + "_windows.tar.gz"} + depend : ['Python', 'PyQt', 'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'setuptools', 'cycler', 'kiwisolver'] + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} + +version_2_0_2 : +{ + depend : ['Python', 'PyQt', 'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'setuptools', 'cycler'] +} + +version_1_4_3 : +{ + name : "matplotlib" + depend : ['Python', 'PyQt', 'numpy', 'freetype', 'six', 'pytz', 'distribute', 'pyparsing', 'dateutil', 'setuptools'] + patches : [ + $name + "_1_4_3_patch_freetype_detection_for_SAT.patch" + $name + "-1.4.3_no_auto_download.patch" + $name + "-1.4.3_fix_Cannot_connect_NavigationToolbar2QT.patch" + ] +} + +version_1_4_2 : +{ + name : "matplotlib" + depend : ['Python', 'numpy', 'freetype'] + patches : [ + $name + "_1_4_2_patch_freetype_detection_for_SAT.patch" + ] +} diff --git a/products/med_pre_windows.pyconf b/products/med_pre_windows.pyconf new file mode 100755 index 0000000..fa2d2e8 --- /dev/null +++ b/products/med_pre_windows.pyconf @@ -0,0 +1,22 @@ +default : +{ + name : "med" + build_source : "script" + compil_script : "medCMake" + ".sh" + test_build : "make check" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ "hdf5"] + opt_depend : ["openmpi"] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + has_unit_tests + } +} diff --git a/products/medfile.pyconf b/products/medfile.pyconf new file mode 100644 index 0000000..0d3ae84 --- /dev/null +++ b/products/medfile.pyconf @@ -0,0 +1,65 @@ +default : +{ + name : "medfile" + build_source : "script" + compil_script : "medCMake" + $VARS.scriptExtension + test_build : "make test" + get_source : "archive" + archive_info : {archive_prefix : "med"} + environ : + { + env_script : "med.py" + } + depend : ["hdf5", "Python"] + opt_depend : ["openmpi"] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + has_unit_tests : "yes" + } +} + +default_Autotools : +{ + compil_script : "med.sh" + test_build : "make check" + build_depend : [] +} + +# needed in order to screen with windows version - see below +version_4_1_0 : +{ + patches : [] +} + +version_4_1_0_win : +{ + patches : ['med-4.1.0_win_3x_files_support.patch'] +} + +# needed in order to screen with windows version - see below +version_4_0_0 : +{ + patches : [] +} + +version_4_0_0_win : +{ + patches : ['med-4.0.0_unicode.patch', 'medfile-4.0.0.patch'] +} + +version_4_0_0alpha3 : +{ + patches : [ "med-4.0.0alpha3.patch" ] +} + +version_3_0_6 : +{ + compil_script : "med.sh" + depend : ["hdf5"] +} diff --git a/products/mesa.pyconf b/products/mesa.pyconf new file mode 100644 index 0000000..a0cc7ef --- /dev/null +++ b/products/mesa.pyconf @@ -0,0 +1,40 @@ +default : +{ + name : "mesa" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["mesa-libGL"] + rpm_dev : ["mesa-libGL-devel", "mesa-libGLU-devel"] + apt : [] + apt_dev : ["mesa-common-dev", "libglu1-mesa-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ['llvm'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + is_mesa : "yes" + not_in_package : "no" + incremental : "yes" + } +} + +default_win: +{ + archive_info : {archive_name : "mesa-" + $APPLICATION.products.mesa + "_windows.tar.gz"} + depend : [] +} + +version_19_0_8: +{ + patches: [] +} diff --git a/products/metis.pyconf b/products/metis.pyconf new file mode 100644 index 0000000..1993c51 --- /dev/null +++ b/products/metis.pyconf @@ -0,0 +1,47 @@ +default : +{ + name : "metis" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["metis-devel"] + apt : [] + apt_dev : ["libmetis-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +version_5_1_0 : +{ + compil_script : "metis-5.1.0" + $VARS.scriptExtension + patches : [ "metis-use_cat_not_more.patch" ] +} + +version_5_1_0_win : +{ + patches: [ 'metis-use_cat_not_more.patch','metis-5.1.0_windows.patch'] +} + +version_5_0_2 : +{ + name : "metis" + build_source : "script" + compil_script : "metis_5_0_2.sh" + patches : [ "metis-use_cat_not_more.patch" ] +} diff --git a/products/msvc.pyconf b/products/msvc.pyconf new file mode 100644 index 0000000..d3c3aec --- /dev/null +++ b/products/msvc.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "msvc" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + single_install_dir : "yes" # aimed to solve sat #18914 + } +} diff --git a/products/netgen.pyconf b/products/netgen.pyconf new file mode 100755 index 0000000..1d8a2ba --- /dev/null +++ b/products/netgen.pyconf @@ -0,0 +1,79 @@ +default : +{ + name : "netgen" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['CAS', 'tcl', 'tk'] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win: +{ + depend : ['CAS','zlib','tcltk'] +} + +version_5_3_1_with_CAS_7_2 : +{ + archive_info : {archive_name : "netgen-5.3.1.tar.gz"} + compil_script : 'netgen_5_3_1' + $VARS.scriptExtension + patches : ["netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch"] +} + +version_5_3_1_with_CAS_7_2_win : +{ + compil_script : 'netgen.bat' + patches : ['netgen53ForSalomeOCCT730.patch','netgen53ForWindows.patch','netgen53ForSalomeVisualStudio2017.patch'] + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +version_5_3_1 : +{ + compil_script : "netgen_5_3_1.sh" + archive_info: {archive_name : "netgen-5.3.1.tar.gz"} + patches : [ "netgen53ForSalome.patch"] +} + +version_4_9_13 : +{ + archive_info: + { + archive_name : "netgen-4.9.13.tar.gz" + } + depend : ['CAS', 'tcl', 'tk', "freetype"] + patches : [ + "netgen49ForSalome.patch" + "netgen-4.9.13_without_togl.patch" + ] +} + +version_4_9_13_with_CAS7 : +{ + compil_script : "netgen_CAS7.sh" + archive_info: + { + archive_name : "netgen-4.9.13.tar.gz" + } + depend : ['CAS', 'tcl', 'tk', "freetype"] + patches : [ + "netgen-4.9.13_without_togl.patch", + "netgen-4.9.13-for-SALOME_v2.patch", + "netgen-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch", + "netgen-4.9.13-for-OCCT7.0.0-includes.patch" + ] +} diff --git a/products/nlopt.pyconf b/products/nlopt.pyconf new file mode 100644 index 0000000..336664a --- /dev/null +++ b/products/nlopt.pyconf @@ -0,0 +1,32 @@ +default : +{ + name : "nlopt" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + build_depend : ["cmake", "swig"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +default_win: +{ + depend : ['Python'] + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/numpy.pyconf b/products/numpy.pyconf new file mode 100755 index 0000000..6ba91c6 --- /dev/null +++ b/products/numpy.pyconf @@ -0,0 +1,69 @@ +default : +{ + name : "numpy" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-numpy"] + rpm_dev : [] + apt : ["python3-numpy"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : [ 'Python', 'setuptools', 'Cython', 'lapack' ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info: + { + archive_name : "numpy-" + $APPLICATION.products.numpy + "_windows.tar.gz" + } + depend : [ 'Python', 'setuptools', 'Cython'] +} + +version_1_16_4_win_dbg: +{ + name : "numpy" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + archive_info: + { + archive_name : "numpy-1.16.4_windows.tar.gz" + } + depend : [ 'Python', 'setuptools', 'Cython'] + environ : + { + env_script : $name + ".py" + } + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + properties: + { + incremental : "yes" + pip : "no" + } +} + +version_1_5_1_to_1_9_2 : +{ + name : "numpy" + compil_script : $name + $VARS.scriptExtension + depend : [ 'Python'] +} diff --git a/products/omniNotify.pyconf b/products/omniNotify.pyconf new file mode 100644 index 0000000..85a6a17 --- /dev/null +++ b/products/omniNotify.pyconf @@ -0,0 +1,19 @@ +version_2_1 : +{ + name : "omniNotify" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ "omniORB", "Python" ] + patches : [ + "omniNotify-2.1.patch" + "omniNotify-2.1-lib64.patch" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : "base" +} diff --git a/products/omniORB.pyconf b/products/omniORB.pyconf new file mode 100644 index 0000000..babe49e --- /dev/null +++ b/products/omniORB.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "omniORB" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} diff --git a/products/omniORBpy.pyconf b/products/omniORBpy.pyconf new file mode 100644 index 0000000..48a2d7f --- /dev/null +++ b/products/omniORBpy.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "omniORBpy" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['omniORB', 'Python' ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} \ No newline at end of file diff --git a/products/openblas.pyconf b/products/openblas.pyconf new file mode 100644 index 0000000..7b74a0c --- /dev/null +++ b/products/openblas.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "openblas" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +default_win: +{ + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/opencv.pyconf b/products/opencv.pyconf new file mode 100644 index 0000000..898abb6 --- /dev/null +++ b/products/opencv.pyconf @@ -0,0 +1,61 @@ +default : +{ + name : "opencv" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["opencv"] + rpm_dev : ["opencv-devel"] + apt : ["libopencv"] + apt_dev : ["libopencv-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ["Python", "Sphinx", "numpy"] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win: +{ + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +version_3_2_0 : +{ + patches : ["opencv-3.2.0-ccache.patch"] +} + +version_3_2_0_win : +{ + patches : ["opencv-3.2.0-ccache.patch","opencv-3.2.0_windows.patch"] +} + +version_3_2_0_with_ffmpeg : +{ + archive_info : {archive_name : "opencv-3.2.0.tar.gz"} + compil_script : "opencv-3.2.0-with-ffmpeg" + $VARS.scriptExtension + patches : ["opencv-3.2.0-ccache.patch", "opencv-with-ffmpeg.patch"] + depend : ["Python", "Sphinx", "numpy", "ffmpeg", "lapack"] +} + + +version_2_4_6_1 : +{ + patches : ["opencv-2.4.6.1-gcc6.patch"] +} diff --git a/products/openmpi.pyconf b/products/openmpi.pyconf new file mode 100644 index 0000000..cfc6ac4 --- /dev/null +++ b/products/openmpi.pyconf @@ -0,0 +1,17 @@ +default : +{ + name : "openmpi" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ ] + opt_depend : [ ] + patches : [ ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} \ No newline at end of file diff --git a/products/openssl.pyconf b/products/openssl.pyconf new file mode 100644 index 0000000..364c0ba --- /dev/null +++ b/products/openssl.pyconf @@ -0,0 +1,17 @@ +default : +{ + name : "openssl" + get_source : "native" + system_info : + { + rpm : [] + rpm_dev : ["openssl-devel"] + apt : [] + apt_dev : ["openssl-dev"] + } + depend : [] + properties : + { + incremental : "yes" + } +} diff --git a/products/ospray.pyconf b/products/ospray.pyconf new file mode 100644 index 0000000..ffe64c9 --- /dev/null +++ b/products/ospray.pyconf @@ -0,0 +1,36 @@ +default : +{ + name : "ospray" + build_source : "cmake" + cmake_options : "-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DEMBREE_ISPC_SUPPORT=ON -DEMBREE_TUTORIALS=OFF -Dembree_DIR=${embree_DIR} -DOSPRAY_ENABLE_APPS=OFF -DOSPRAY_ENABLE_TUTORIALS=OFF -DCMAKE_INSTALL_LIBDIR=lib" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['embree'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win : +{ + cmake_options : ' -Dembree_DIR=%embree_DIR:\=/% -DTBB_ROOT=%TBB_DIR:\=/% -DOSPRAY_TASKING_SYSTEM=TBB -DOSPRAY_ENABLE_APPS=OFF -DOSPRAY_ENABLE_TUTORIALS=OFF ' + depend : ['embree'] + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +version_1_7_3 : +{ + # OSPRAY_ENABLE_APPS not needed here, otherwise compilation issues on several Fedora nodes. + cmake_options : "-DEMBREE_TUTORIALS=OFF -Dembree_DIR=${embree_DIR} -DOSPRAY_ENABLE_TUTORIALS=OFF -DOSPRAY_ENABLE_APPS=OFF -DCMAKE_INSTALL_LIBDIR=lib" +} diff --git a/products/packaging.pyconf b/products/packaging.pyconf new file mode 100755 index 0000000..fd39a56 --- /dev/null +++ b/products/packaging.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "packaging" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-packaging"] + rpm_dev : [] + apt : ["python3-packaging"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools', 'six', 'pyparsing'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "packaging-" + $APPLICATION.products.packaging + "_windows.tar.gz"} +} diff --git a/products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch b/products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch new file mode 100644 index 0000000..28c2a5e --- /dev/null +++ b/products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch @@ -0,0 +1,647 @@ +From 853a0a438422d61cf1b9756d6949e04e5270d495 Mon Sep 17 00:00:00 2001 +From: azv +Date: Thu, 2 Aug 2018 11:32:16 +0300 +Subject: [PATCH] Update PlaneGCS solver for SHAPER needs + +* Add possibility to compile PlaneGCS as a shared library +* Possibility to avoid memory clearance inside the solver (make possible external memory management) +--- + src/Mod/Sketcher/App/planegcs/Constraints.h | 48 ++++++++--------- + src/Mod/Sketcher/App/planegcs/GCS.cpp | 81 +++++++++++++++++++++++------ + src/Mod/Sketcher/App/planegcs/GCS.h | 8 +-- + src/Mod/Sketcher/App/planegcs/Geo.h | 34 ++++++------ + src/Mod/Sketcher/App/planegcs/Util.h | 10 ++++ + 5 files changed, 123 insertions(+), 58 deletions(-) + +diff --git a/src/Mod/Sketcher/App/planegcs/Constraints.h b/src/Mod/Sketcher/App/planegcs/Constraints.h +index 559f3a2..76e4763 100644 +--- a/src/Mod/Sketcher/App/planegcs/Constraints.h ++++ b/src/Mod/Sketcher/App/planegcs/Constraints.h +@@ -91,7 +91,7 @@ namespace GCS + HyperbolaNegativeMinorY = 17 + }; + +- class Constraint ++ class PLANEGCS_EXPORT Constraint + { + _PROTECTED_UNLESS_EXTRACT_MODE_: + VEC_pD origpvec; // is used only as a reference for redirecting and reverting pvec +@@ -128,7 +128,7 @@ namespace GCS + }; + + // Equal +- class ConstraintEqual : public Constraint ++ class PLANEGCS_EXPORT ConstraintEqual : public Constraint + { + private: + inline double* param1() { return pvec[0]; } +@@ -142,7 +142,7 @@ namespace GCS + }; + + // Difference +- class ConstraintDifference : public Constraint ++ class PLANEGCS_EXPORT ConstraintDifference : public Constraint + { + private: + inline double* param1() { return pvec[0]; } +@@ -157,7 +157,7 @@ namespace GCS + }; + + // P2PDistance +- class ConstraintP2PDistance : public Constraint ++ class PLANEGCS_EXPORT ConstraintP2PDistance : public Constraint + { + private: + inline double* p1x() { return pvec[0]; } +@@ -178,7 +178,7 @@ namespace GCS + }; + + // P2PAngle +- class ConstraintP2PAngle : public Constraint ++ class PLANEGCS_EXPORT ConstraintP2PAngle : public Constraint + { + private: + inline double* p1x() { return pvec[0]; } +@@ -200,7 +200,7 @@ namespace GCS + }; + + // P2LDistance +- class ConstraintP2LDistance : public Constraint ++ class PLANEGCS_EXPORT ConstraintP2LDistance : public Constraint + { + private: + inline double* p0x() { return pvec[0]; } +@@ -224,7 +224,7 @@ namespace GCS + }; + + // PointOnLine +- class ConstraintPointOnLine : public Constraint ++ class PLANEGCS_EXPORT ConstraintPointOnLine : public Constraint + { + private: + inline double* p0x() { return pvec[0]; } +@@ -246,7 +246,7 @@ namespace GCS + }; + + // PointOnPerpBisector +- class ConstraintPointOnPerpBisector : public Constraint ++ class PLANEGCS_EXPORT ConstraintPointOnPerpBisector : public Constraint + { + private: + inline double* p0x() { return pvec[0]; } +@@ -268,7 +268,7 @@ namespace GCS + }; + + // Parallel +- class ConstraintParallel : public Constraint ++ class PLANEGCS_EXPORT ConstraintParallel : public Constraint + { + private: + inline double* l1p1x() { return pvec[0]; } +@@ -291,7 +291,7 @@ namespace GCS + }; + + // Perpendicular +- class ConstraintPerpendicular : public Constraint ++ class PLANEGCS_EXPORT ConstraintPerpendicular : public Constraint + { + private: + inline double* l1p1x() { return pvec[0]; } +@@ -315,7 +315,7 @@ namespace GCS + }; + + // L2LAngle +- class ConstraintL2LAngle : public Constraint ++ class PLANEGCS_EXPORT ConstraintL2LAngle : public Constraint + { + private: + inline double* l1p1x() { return pvec[0]; } +@@ -342,7 +342,7 @@ namespace GCS + }; + + // MidpointOnLine +- class ConstraintMidpointOnLine : public Constraint ++ class PLANEGCS_EXPORT ConstraintMidpointOnLine : public Constraint + { + private: + inline double* l1p1x() { return pvec[0]; } +@@ -366,7 +366,7 @@ namespace GCS + }; + + // TangentCircumf +- class ConstraintTangentCircumf : public Constraint ++ class PLANEGCS_EXPORT ConstraintTangentCircumf : public Constraint + { + private: + inline double* c1x() { return pvec[0]; } +@@ -389,7 +389,7 @@ namespace GCS + virtual double grad(double *); + }; + // PointOnEllipse +- class ConstraintPointOnEllipse : public Constraint ++ class PLANEGCS_EXPORT ConstraintPointOnEllipse : public Constraint + { + private: + inline double* p1x() { return pvec[0]; } +@@ -411,7 +411,7 @@ namespace GCS + virtual double grad(double *); + }; + +- class ConstraintEllipseTangentLine : public Constraint ++ class PLANEGCS_EXPORT ConstraintEllipseTangentLine : public Constraint + { + private: + Line l; +@@ -426,7 +426,7 @@ namespace GCS + virtual double grad(double *); + }; + +- class ConstraintInternalAlignmentPoint2Ellipse : public Constraint ++ class PLANEGCS_EXPORT ConstraintInternalAlignmentPoint2Ellipse : public Constraint + { + public: + ConstraintInternalAlignmentPoint2Ellipse(Ellipse &e, Point &p1, InternalAlignmentType alignmentType); +@@ -442,7 +442,7 @@ namespace GCS + InternalAlignmentType AlignmentType; + }; + +- class ConstraintInternalAlignmentPoint2Hyperbola : public Constraint ++ class PLANEGCS_EXPORT ConstraintInternalAlignmentPoint2Hyperbola : public Constraint + { + public: + ConstraintInternalAlignmentPoint2Hyperbola(Hyperbola &e, Point &p1, InternalAlignmentType alignmentType); +@@ -458,7 +458,7 @@ namespace GCS + InternalAlignmentType AlignmentType; + }; + +- class ConstraintEqualMajorAxesConic : public Constraint ++ class PLANEGCS_EXPORT ConstraintEqualMajorAxesConic : public Constraint + { + private: + MajorRadiusConic * e1; +@@ -473,7 +473,7 @@ namespace GCS + virtual double grad(double *); + }; + +- class ConstraintEqualFocalDistance : public Constraint ++ class PLANEGCS_EXPORT ConstraintEqualFocalDistance : public Constraint + { + private: + ArcOfParabola * e1; +@@ -488,7 +488,7 @@ namespace GCS + virtual double grad(double *); + }; + +- class ConstraintCurveValue : public Constraint ++ class PLANEGCS_EXPORT ConstraintCurveValue : public Constraint + { + private: + inline double* pcoord() { return pvec[2]; } //defines, which coordinate of point is being constrained by this constraint +@@ -515,7 +515,7 @@ namespace GCS + }; + + // PointOnHyperbola +- class ConstraintPointOnHyperbola : public Constraint ++ class PLANEGCS_EXPORT ConstraintPointOnHyperbola : public Constraint + { + private: + inline double* p1x() { return pvec[0]; } +@@ -538,7 +538,7 @@ namespace GCS + }; + + // PointOnParabola +- class ConstraintPointOnParabola : public Constraint ++ class PLANEGCS_EXPORT ConstraintPointOnParabola : public Constraint + { + private: + void errorgrad(double* err, double* grad, double *param); //error and gradient combined. Values are returned through pointers. +@@ -558,7 +558,7 @@ namespace GCS + virtual double grad(double *); + }; + +- class ConstraintAngleViaPoint : public Constraint ++ class PLANEGCS_EXPORT ConstraintAngleViaPoint : public Constraint + { + private: + inline double* angle() { return pvec[0]; }; +@@ -583,7 +583,7 @@ namespace GCS + virtual double grad(double *); + }; + +- class ConstraintSnell : public Constraint //snell's law angles constrainer. Point needs to lie on all three curves to be constraied. ++ class PLANEGCS_EXPORT ConstraintSnell : public Constraint //snell's law angles constrainer. Point needs to lie on all three curves to be constraied. + { + private: + inline double* n1() { return pvec[0]; }; +diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp +index 474024a..9103653 100644 +--- a/src/Mod/Sketcher/App/planegcs/GCS.cpp ++++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp +@@ -101,11 +101,56 @@ + #endif + + #include ++#ifndef _GCS_USE_STL_OUTPUT + #include ++#endif + + #include + #include + ++namespace GCS ++{ ++ void Log(const char* message) ++ { ++#ifdef _GCS_USE_STL_OUTPUT ++ std::cout << message << std::endl; ++#else ++ Base::Console().Log(message); ++#endif ++ } ++ ++ void Log(const char* format, const char* param) ++ { ++#ifdef _GCS_USE_STL_OUTPUT ++ static char message[4096]; ++ sprintf(message, format, param); ++ std::cout << message << std::endl; ++#else ++ Base::Console().Log(format, param); ++#endif ++ } ++ ++ void Log(const char* format, const size_t param) ++ { ++#ifdef _GCS_USE_STL_OUTPUT ++ static char message[4096]; ++ sprintf(message, format, param); ++ std::cout << message << std::endl; ++#else ++ Base::Console().Log(format, param); ++#endif ++} ++ ++ void Warning(const char* message) ++ { ++#ifdef _GCS_USE_STL_OUTPUT ++ std::cout << "Warning: " << message << std::endl; ++#else ++ Base::Console().Warning(message); ++#endif ++ } ++} ++ + typedef Eigen::FullPivHouseholderQR::IntDiagSizeVectorType MatrixIndexType; + + #ifdef _GCS_DEBUG +@@ -130,7 +175,7 @@ void LogMatrix(std::string str, Eigen::MatrixXd matrix ) + #else + const std::string tmp = stream.str(); + +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + #endif + } + +@@ -155,7 +200,7 @@ void LogMatrix(std::string str, MatrixIndexType matrix ) + #else + const std::string tmp = stream.str(); + +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + #endif + } + #endif +@@ -178,7 +223,7 @@ void LogString(std::string str) + #else + const std::string tmp = stream.str(); + +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + #endif + } + +@@ -429,7 +474,11 @@ void System::clear() + + reference.clear(); + clearSubSystems(); ++#ifdef _GCS_DO_NOT_FREE_CONSTRAINTS_MEMORY ++ clist.clear(); ++#else + free(clist); ++#endif + c2p.clear(); + p2c.clear(); + } +@@ -486,9 +535,11 @@ void System::removeConstraint(Constraint *constr) + } + c2p.erase(constr); + ++#ifndef _GCS_DO_NOT_FREE_CONSTRAINTS_MEMORY + std::vector constrvec; + constrvec.push_back(constr); + free(constrvec); ++#endif + } + + // basic constraints +@@ -1477,7 +1528,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi + << ", maxIter: " << maxIterNumber << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + + double divergingLim = 1e6*err + 1e12; +@@ -1493,7 +1544,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi + << ", h_norm: " << h_norm << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + break; + } +@@ -1505,7 +1556,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi + << ", divergingLim: " << divergingLim << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + break; + } +@@ -1542,7 +1593,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi + << ", h_norm: " << h_norm << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + } + +@@ -1598,7 +1649,7 @@ int System::solve_LM(SubSystem* subsys, bool isRedundantsolving) + << ", maxIter: " << maxIterNumber << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + + double nu=2, mu=0; +@@ -1712,7 +1763,7 @@ int System::solve_LM(SubSystem* subsys, bool isRedundantsolving) + << ", h_norm: " << h_norm << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + } + +@@ -1757,7 +1808,7 @@ int System::solve_DL(SubSystem* subsys, bool isRedundantsolving) + << ", maxIter: " << maxIterNumber << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + + Eigen::VectorXd x(xsize), x_new(xsize); +@@ -1912,7 +1963,7 @@ int System::solve_DL(SubSystem* subsys, bool isRedundantsolving) + << ", err(divergingLim): " << err << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + + // count this iteration and start again +@@ -1926,7 +1977,7 @@ int System::solve_DL(SubSystem* subsys, bool isRedundantsolving) + stream << "DL: stopcode: " << stop << ((stop == 1) ? ", Success" : ", Failed") << "\n"; + + const std::string tmp = stream.str(); +- Base::Console().Log(tmp.c_str()); ++ GCS::Log(tmp.c_str()); + } + + return (stop == 1) ? Success : Failed; +@@ -3721,7 +3772,7 @@ int System::diagnose(Algorithm alg) + Eigen::SparseQR, Eigen::COLAMDOrdering > SqrJT; + #else + if(qrAlgorithm==EigenSparseQR){ +- Base::Console().Warning("SparseQR not supported by you current version of Eigen. It requires Eigen 3.2.2 or higher. Falling back to Dense QR\n"); ++ GCS::Warning("SparseQR not supported by you current version of Eigen. It requires Eigen 3.2.2 or higher. Falling back to Dense QR\n"); + qrAlgorithm=EigenDenseQR; + } + #endif +@@ -4074,7 +4125,7 @@ int System::diagnose(Algorithm alg) + break; + } + +- Base::Console().Log("Sketcher::RedundantSolving-%s-\n",solvername.c_str()); ++ GCS::Log("Sketcher::RedundantSolving-%s-\n",solvername.c_str()); + } + + if (res == Success) { +@@ -4088,7 +4139,7 @@ int System::diagnose(Algorithm alg) + resetToReference(); + + if(debugMode==Minimal || debugMode==IterationLevel) { +- Base::Console().Log("Sketcher Redundant solving: %d redundants\n",redundant.size()); ++ GCS::Log("Sketcher Redundant solving: %d redundants\n",redundant.size()); + } + + std::vector< std::vector > conflictGroupsOrig=conflictGroups; +diff --git a/src/Mod/Sketcher/App/planegcs/GCS.h b/src/Mod/Sketcher/App/planegcs/GCS.h +index 17d57c8..ecc5b04 100644 +--- a/src/Mod/Sketcher/App/planegcs/GCS.h ++++ b/src/Mod/Sketcher/App/planegcs/GCS.h +@@ -69,7 +69,7 @@ namespace GCS + IterationLevel = 2 + }; + +- class System ++ class PLANEGCS_EXPORT System + { + // This is the main class. It holds all constraints and information + // about partitioning into subsystems and solution strategies +@@ -283,9 +283,9 @@ namespace GCS + // Helper elements + /////////////////////////////////////// + +- void free(VEC_pD &doublevec); +- void free(std::vector &constrvec); +- void free(std::vector &subsysvec); ++ PLANEGCS_EXPORT void free(VEC_pD &doublevec); ++ PLANEGCS_EXPORT void free(std::vector &constrvec); ++ PLANEGCS_EXPORT void free(std::vector &subsysvec); + + } //namespace GCS + +diff --git a/src/Mod/Sketcher/App/planegcs/Geo.h b/src/Mod/Sketcher/App/planegcs/Geo.h +index 1cdb983..6246f3b 100644 +--- a/src/Mod/Sketcher/App/planegcs/Geo.h ++++ b/src/Mod/Sketcher/App/planegcs/Geo.h +@@ -26,16 +26,20 @@ + #include + #include "Util.h" + ++#ifdef _MSC_VER ++#pragma warning(disable : 4251) ++#endif ++ + namespace GCS + { +- class DependentParameters ++ class PLANEGCS_EXPORT DependentParameters + { + public: + DependentParameters():hasDependentParameters(false) {} + bool hasDependentParameters; + }; + +- class Point : public DependentParameters ++ class PLANEGCS_EXPORT Point : public DependentParameters + { + public: + Point(){x = 0; y = 0;} +@@ -55,7 +59,7 @@ namespace GCS + ///manually as well. The class also provides a bunch of methods to do math + ///on it (and derivatives are calculated implicitly). + /// +- class DeriVector2 ++ class PLANEGCS_EXPORT DeriVector2 + { + public: + DeriVector2(){x=0; y=0; dx=0; dy=0;} +@@ -95,7 +99,7 @@ namespace GCS + // Geometries + /////////////////////////////////////// + +- class Curve: public DependentParameters //a base class for all curve-based objects (line, circle/arc, ellipse/arc) ++ class PLANEGCS_EXPORT Curve: public DependentParameters //a base class for all curve-based objects (line, circle/arc, ellipse/arc) + { + public: + virtual ~Curve(){} +@@ -125,7 +129,7 @@ namespace GCS + virtual Curve* Copy() = 0; //DeepSOIC: I haven't found a way to simply copy a curve object provided pointer to a curve object. + }; + +- class Line: public Curve ++ class PLANEGCS_EXPORT Line: public Curve + { + public: + Line(){} +@@ -139,7 +143,7 @@ namespace GCS + virtual Line* Copy(); + }; + +- class Circle: public Curve ++ class PLANEGCS_EXPORT Circle: public Curve + { + public: + Circle(){rad = 0;} +@@ -153,7 +157,7 @@ namespace GCS + virtual Circle* Copy(); + }; + +- class Arc: public Circle ++ class PLANEGCS_EXPORT Arc: public Circle + { + public: + Arc(){startAngle=0;endAngle=0;rad=0;} +@@ -169,7 +173,7 @@ namespace GCS + virtual Arc* Copy(); + }; + +- class MajorRadiusConic: public Curve ++ class PLANEGCS_EXPORT MajorRadiusConic: public Curve + { + public: + virtual ~MajorRadiusConic(){} +@@ -179,7 +183,7 @@ namespace GCS + DeriVector2 CalculateNormal(Point &p, double* derivparam = 0) = 0; + }; + +- class Ellipse: public MajorRadiusConic ++ class PLANEGCS_EXPORT Ellipse: public MajorRadiusConic + { + public: + Ellipse(){ radmin = 0;} +@@ -197,7 +201,7 @@ namespace GCS + virtual Ellipse* Copy(); + }; + +- class ArcOfEllipse: public Ellipse ++ class PLANEGCS_EXPORT ArcOfEllipse: public Ellipse + { + public: + ArcOfEllipse(){startAngle=0;endAngle=0;radmin = 0;} +@@ -215,7 +219,7 @@ namespace GCS + virtual ArcOfEllipse* Copy(); + }; + +- class Hyperbola: public MajorRadiusConic ++ class PLANEGCS_EXPORT Hyperbola: public MajorRadiusConic + { + public: + Hyperbola(){ radmin = 0;} +@@ -233,7 +237,7 @@ namespace GCS + virtual Hyperbola* Copy(); + }; + +- class ArcOfHyperbola: public Hyperbola ++ class PLANEGCS_EXPORT ArcOfHyperbola: public Hyperbola + { + public: + ArcOfHyperbola(){startAngle=0;endAngle=0;radmin = 0;} +@@ -249,7 +253,7 @@ namespace GCS + virtual ArcOfHyperbola* Copy(); + }; + +- class Parabola: public Curve ++ class PLANEGCS_EXPORT Parabola: public Curve + { + public: + Parabola(){ } +@@ -263,7 +267,7 @@ namespace GCS + virtual Parabola* Copy(); + }; + +- class ArcOfParabola: public Parabola ++ class PLANEGCS_EXPORT ArcOfParabola: public Parabola + { + public: + ArcOfParabola(){startAngle=0;endAngle=0;} +@@ -279,7 +283,7 @@ namespace GCS + virtual ArcOfParabola* Copy(); + }; + +- class BSpline: public Curve ++ class PLANEGCS_EXPORT BSpline: public Curve + { + public: + BSpline(){periodic=false;degree=2;} +diff --git a/src/Mod/Sketcher/App/planegcs/Util.h b/src/Mod/Sketcher/App/planegcs/Util.h +index 8a759ba..7baafaa 100644 +--- a/src/Mod/Sketcher/App/planegcs/Util.h ++++ b/src/Mod/Sketcher/App/planegcs/Util.h +@@ -44,4 +44,14 @@ namespace GCS + + } //namespace GCS + ++#if defined WIN32 ++# if defined PLANEGCS_EXPORTS ++# define PLANEGCS_EXPORT __declspec(dllexport) ++# else ++# define PLANEGCS_EXPORT __declspec(dllimport) ++# endif ++#else ++# define PLANEGCS_EXPORT ++#endif ++ + #endif // PLANEGCS_UTIL_H +-- +2.9.0.windows.1 + diff --git a/products/patches/BLSURFPLUGIN_8_4_0.patch b/products/patches/BLSURFPLUGIN_8_4_0.patch new file mode 100644 index 0000000..e9b5bf2 --- /dev/null +++ b/products/patches/BLSURFPLUGIN_8_4_0.patch @@ -0,0 +1,12 @@ +diff -ru BLSURFPLUGIN_orig/tests/tests.set BLSURFPLUGIN_new/tests/tests.set +--- BLSURFPLUGIN_orig/tests/tests.set 2018-01-17 18:22:04.712283026 +0100 ++++ BLSURFPLUGIN_new/tests/tests.set 2018-01-17 18:25:29.130048705 +0100 +@@ -23,7 +23,7 @@ + attractor_point_outside_face + enforced_internal_vertex + enforced_vertex +- multithread ++ #multithread # commented due to conflict between BLSURFPLUGIN and SAMPLES + periodicity_2D_prepro + #periodicity_prepro # already tested in examples + periodicity_reflexion_2D_prepro diff --git a/products/patches/CAS-6.5.4.patch b/products/patches/CAS-6.5.4.patch new file mode 100755 index 0000000..0c7f9a0 --- /dev/null +++ b/products/patches/CAS-6.5.4.patch @@ -0,0 +1,24 @@ +diff -pruN CAS-6.5.4_orig/configure.ac CAS-6.5.4/configure.ac +--- CAS-6.5.4_orig/configure.ac 2012-11-12 11:53:15.000000000 +0100 ++++ CAS-6.5.4/configure.ac 2013-02-27 10:58:49.000000000 +0100 +@@ -24,7 +24,7 @@ dnl Checks for programs. + AM_PROG_LIBTOOL + AC_PROG_CXX + AC_PROG_CC_C_O +-AM_C_PROTOTYPES ++# AM_C_PROTOTYPES # obsolete macro in automake 1.13 + + AC_PROG_AWK + AC_PROG_INSTALL +diff -pruN CAS-6.5.4_orig/src/STEPControl/STEPControl_Reader.cxx CAS-6.5.4/src/STEPControl/STEPControl_Reader.cxx +--- CAS-6.5.4_orig/src/STEPControl/STEPControl_Reader.cxx 2012-11-12 11:42:38.000000000 +0100 ++++ CAS-6.5.4/src/STEPControl/STEPControl_Reader.cxx 2013-02-27 10:57:31.000000000 +0100 +@@ -540,7 +540,7 @@ Standard_Boolean STEPControl_Reader::fin + continue; + anUnitFact = (!aSiUnit->HasPrefix() ? + 1. : STEPConstruct_UnitContext::ConvertSiPrefix(aSiUnit->Prefix())); +- aName = getSiName(aSiUnit->Name(), aSiUnit->Prefix()); ++ aName = getSiName(aSiUnit->Name(), aSiUnit->HasPrefix() ? aSiUnit->Prefix() : StepBasic_SiPrefix(-1)); + + + } diff --git a/products/patches/CAS_autotools_macros.patch b/products/patches/CAS_autotools_macros.patch new file mode 100755 index 0000000..ab4b4c4 --- /dev/null +++ b/products/patches/CAS_autotools_macros.patch @@ -0,0 +1,12 @@ +diff -pruN CAS-6.7.1-orig/configure.ac CAS-6.7.1/configure.ac +--- CAS-6.7.1-orig/configure.ac 2014-05-13 17:19:43.692323453 +0200 ++++ CAS-6.7.1/configure.ac 2014-05-13 17:20:38.807993144 +0200 +@@ -10,7 +10,7 @@ CXXFLAGS="$CXXFLAGS" + + AC_PROG_CC + +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + + dnl AM_MAINTAINER_MODE + diff --git a/products/patches/CONFIGURATION-FC29.patch b/products/patches/CONFIGURATION-FC29.patch new file mode 100644 index 0000000..7239b10 --- /dev/null +++ b/products/patches/CONFIGURATION-FC29.patch @@ -0,0 +1,23 @@ +diff --git a/cmake/FindXDR.cmake b/cmake/FindXDR.cmake +index e8e8625..a47508f 100644 +--- a/cmake/FindXDR.cmake ++++ b/cmake/FindXDR.cmake +@@ -21,8 +21,16 @@ MESSAGE(STATUS "Check for XDR ...") + + FIND_PATH(XDR_INCLUDE_DIRS rpc/xdr.h) + IF(XDR_INCLUDE_DIRS) +- SET(XDR_DEFINITIONS "-DHAS_XDR") +-ENDIF() ++ SET(XDR_DEFINITIONS "-DHAS_XDR") ++ELSE(XDR_INCLUDE_DIRS) ++ IF(EXISTS "/usr/include/tirpc/rpc/xdr.h") ++ MESSAGE(STATUS "XDR was found in /usr/include/tirpc ...") ++ include_directories(/usr/include/tirpc) ++ SET(XDR_DEFINITIONS "-DHAS_XDR") ++ SET(XDR_INCLUDE_DIRS "/usr/include/tirpc") ++ FIND_LIBRARY(XDR_LIBRARIES tirpc) ++ ENDIF() ++ENDIF(XDR_INCLUDE_DIRS) + + IF(WIN32) + FIND_LIBRARY(XDR_LIBRARIES xdr) # To get the .lib file from XDR diff --git a/products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch b/products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch new file mode 100755 index 0000000..e9b9ae3 --- /dev/null +++ b/products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch @@ -0,0 +1,11 @@ +diff -pruN COREFLOWS_PROFILE_orig/CMakeLists.txt COREFLOWS_PROFILE/CMakeLists.txt +--- COREFLOWS_PROFILE_orig/CMakeLists.txt 2016-09-02 16:42:26.275969934 +0200 ++++ COREFLOWS_PROFILE/CMakeLists.txt 2016-09-02 16:46:41.643533006 +0200 +@@ -117,5 +117,6 @@ SALOME_INSTALL_SCRIPTS("${_salome_contex + SET(_salome_context_BASHRC + ${KERNEL_ROOT_DIR}/bin/salome/appliskel/.bashrc + ) +-FILE(TO_CMAKE_PATH $ENV{COREFLOWS_PROFILE_ROOT_DIR} _COREFLOWS_PROFILE_ROOT_DIR) ++ ++FILE(TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX} _COREFLOWS_PROFILE_ROOT_DIR) + SALOME_INSTALL_SCRIPTS("${_salome_context_BASHRC}" ${_COREFLOWS_PROFILE_ROOT_DIR}) diff --git a/products/patches/GUI_GLdispatch.patch b/products/patches/GUI_GLdispatch.patch new file mode 100644 index 0000000..59e7d13 --- /dev/null +++ b/products/patches/GUI_GLdispatch.patch @@ -0,0 +1,32 @@ +diff --git a/src/SUITApp/CMakeLists.txt b/src/SUITApp/CMakeLists.txt +index 7668604..5f4e828 100755 +--- a/src/SUITApp/CMakeLists.txt ++++ b/src/SUITApp/CMakeLists.txt +@@ -41,6 +41,11 @@ IF(SALOME_USE_PYCONSOLE) + LIST(APPEND _link_LIBRARIES ${PYTHON_LIBRARIES}) + ENDIF() + ++FIND_LIBRARY(GLAPI_DISPATCH_LIBRARY libGLdispatch.so) ++IF(GLAPI_DISPATCH_LIBRARY) ++ LIST(APPEND _link_LIBRARIES GLdispatch) ++ENDIF() ++ + # --- headers --- + + # header files / to be processed by moc +diff --git a/src/TOOLSGUI/CMakeLists.txt b/src/TOOLSGUI/CMakeLists.txt +index e60ddda..1339b2c 100755 +--- a/src/TOOLSGUI/CMakeLists.txt ++++ b/src/TOOLSGUI/CMakeLists.txt +@@ -52,6 +52,11 @@ SET(_link_LIBRARIES + qtx suit + ) + ++FIND_LIBRARY(GLAPI_DISPATCH_LIBRARY libGLdispatch.so) ++IF(GLAPI_DISPATCH_LIBRARY) ++ LIST(APPEND _link_LIBRARIES GLdispatch) ++ENDIF() ++ + # --- headers --- + + # header files / to be processed by moc diff --git a/products/patches/GUI_Python_async.patch b/products/patches/GUI_Python_async.patch new file mode 100644 index 0000000..9434217 --- /dev/null +++ b/products/patches/GUI_Python_async.patch @@ -0,0 +1,12 @@ +diff -rupN GUI/src/PyInterp/PyInterp_Request.h GUI_DEV/src/PyInterp/PyInterp_Request.h +--- GUI/src/PyInterp/PyInterp_Request.h 2017-03-07 12:09:01.000000000 +0100 ++++ GUI_DEV/src/PyInterp/PyInterp_Request.h 2017-11-17 15:50:09.204857698 +0100 +@@ -52,7 +52,7 @@ protected: + public: + // Constructor + PyInterp_Request( QObject* listener, bool sync = true ) +- : myIsSync( sync ), myListener( listener ) {}; ++ : myIsSync( sync ), myListener( listener ) { myIsSync = false; }; + + // Deletes a request + static void Destroy( PyInterp_Request* ); diff --git a/products/patches/KERNEL-FC29.patch b/products/patches/KERNEL-FC29.patch new file mode 100644 index 0000000..56ea512 --- /dev/null +++ b/products/patches/KERNEL-FC29.patch @@ -0,0 +1,24 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0a3a3fc6..d90c555b 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -92,6 +92,7 @@ FIND_PACKAGE(SalomeSWIG REQUIRED) + FIND_PACKAGE(SalomeLibXml2 REQUIRED) + FIND_PACKAGE(SalomeHDF5 REQUIRED COMPONENTS C) + FIND_PACKAGE(SalomeBoost REQUIRED) ++FIND_PACKAGE(SalomeXDR REQUIRED) + + # Optional prerequisites + # ====================== +diff --git a/src/Communication/CMakeLists.txt b/src/Communication/CMakeLists.txt +index 643dd6f4..c6656db3 100755 +--- a/src/Communication/CMakeLists.txt ++++ b/src/Communication/CMakeLists.txt +@@ -18,6 +18,7 @@ + # + + INCLUDE_DIRECTORIES( ++ ${XDR_INCLUDE_DIR} + ${OMNIORB_INCLUDE_DIR} + ${PTHREAD_INCLUDE_DIR} + ${MPI_CXX_INCLUDE_PATH} diff --git a/products/patches/KERNEL_libLauncher_Temporary.patch b/products/patches/KERNEL_libLauncher_Temporary.patch new file mode 100644 index 0000000..013bc8d --- /dev/null +++ b/products/patches/KERNEL_libLauncher_Temporary.patch @@ -0,0 +1,17 @@ +diff -Naur kernel_ori/src/Launcher/CMakeLists.txt kernel_new/src/Launcher/CMakeLists.txt +--- kernel_ori/src/Launcher/CMakeLists.txt 2018-04-03 16:05:11.248706967 +0200 ++++ kernel_new/src/Launcher/CMakeLists.txt 2018-04-03 16:14:49.988153390 +0200 +@@ -79,7 +79,12 @@ + ) + + ADD_LIBRARY(Launcher ${Launcher_SOURCES}) +-TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS}) ++ ++# OP 03/04/2018 add the dependency to ${Boost_SYSTEM_LIBRARY} ++#TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS}) ++TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS} ${Boost_SYSTEM_LIBRARY}) ++# END OP ++ + INSTALL(TARGETS Launcher EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) + + SET(TestLauncher_LIBS diff --git a/products/patches/MEDCOUPLING-FC29.patch b/products/patches/MEDCOUPLING-FC29.patch new file mode 100644 index 0000000..86df091 --- /dev/null +++ b/products/patches/MEDCOUPLING-FC29.patch @@ -0,0 +1,16 @@ +diff --git a/src/MEDLoader/CMakeLists.txt b/src/MEDLoader/CMakeLists.txt +index b54b36b5..5305c7b7 100644 +--- a/src/MEDLoader/CMakeLists.txt ++++ b/src/MEDLoader/CMakeLists.txt +@@ -39,9 +39,11 @@ IF(WIN32) + ENDIF(MEDCOUPLING_MEDLOADER_USE_XDR) + ELSE(WIN32) + SET(MEDLOADER_XDR_INCLUDE_DIRS ${XDR_INCLUDE_DIRS}) ++ SET(MEDLOADER_XDR_LIBRARIES ${XDR_LIBRARIES}) + ENDIF(WIN32) + + INCLUDE_DIRECTORIES( ++ ${XDR_INCLUDE_DIR} + ${MEDFILE_INCLUDE_DIRS} + ${HDF5_INCLUDE_DIRS} + ${MEDLOADER_XDR_INCLUDE_DIRS} diff --git a/products/patches/OCCT-7.1.0_transfrom_pers.patch b/products/patches/OCCT-7.1.0_transfrom_pers.patch new file mode 100644 index 0000000..baed517 --- /dev/null +++ b/products/patches/OCCT-7.1.0_transfrom_pers.patch @@ -0,0 +1,14 @@ +diff -Naur OCCT-7.1.0_SRC_orig/src/Graphic3d/Graphic3d_TransformPers.hxx OCCT-7.1.0_SRC_modif/src/Graphic3d/Graphic3d_TransformPers.hxx +--- OCCT-7.1.0_SRC_orig/src/Graphic3d/Graphic3d_TransformPers.hxx 2016-12-22 12:32:39.000000000 +0300 ++++ OCCT-7.1.0_SRC_modif/src/Graphic3d/Graphic3d_TransformPers.hxx 2017-01-20 16:22:16.000000000 +0300 +@@ -510,8 +510,8 @@ + { + typename BVH_Box::BVH_VecNt& aCorner = anArrayOfCorners[anIt]; + aCorner = aTPers * aCorner; +- aCorner /= aCorner.w(); +- theBoundingBox.Add (aCorner.xyz()); ++ aCorner = aCorner / aCorner.w(); ++ theBoundingBox.Add (typename BVH_Box::BVH_VecNt (aCorner.x(), aCorner.y(), aCorner.z())); + } + } + diff --git a/products/patches/PARAVIS-MEDReader-CMakeLists.patch b/products/patches/PARAVIS-MEDReader-CMakeLists.patch new file mode 100644 index 0000000..e742b1b --- /dev/null +++ b/products/patches/PARAVIS-MEDReader-CMakeLists.patch @@ -0,0 +1,15 @@ +diff --git a/src/Plugins/MEDReader/CMakeLists.txt b/src/Plugins/MEDReader/CMakeLists.txt +index 99d2cac..9fa9d4b 100644 +--- a/src/Plugins/MEDReader/CMakeLists.txt ++++ b/src/Plugins/MEDReader/CMakeLists.txt +@@ -22,6 +22,10 @@ project(MEDReader) + + find_package(ParaView REQUIRED) + ++IF(SALOME_USE_MPI) ++ ADD_DEFINITIONS(-DMEDREADER_USE_MPI) ++ENDIF(SALOME_USE_MPI) ++ + option(BUILD_SHARED_LIBS "Build shared libraries" ON) + enable_testing() + diff --git a/products/patches/ParaView-3.14.0.patch b/products/patches/ParaView-3.14.0.patch new file mode 100755 index 0000000..2dbd477 --- /dev/null +++ b/products/patches/ParaView-3.14.0.patch @@ -0,0 +1,57 @@ +diff -pruN ParaView-3.14.0_ori/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h ParaView-3.14.0_new/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h +--- ParaView-3.14.0_ori/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h 2012-02-20 15:48:20.000000000 +0100 ++++ ParaView-3.14.0_new/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h 2013-03-07 15:58:49.107887795 +0100 +@@ -6,6 +6,7 @@ + #include + #include + #include "DebugStream.h" ++#include "stringutil.h" + + namespace rclib { + using namespace std; +diff -pruN ParaView-3.14.0_ori/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx ParaView-3.14.0_new/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx +--- ParaView-3.14.0_ori/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx 2012-02-20 15:48:26.000000000 +0100 ++++ ParaView-3.14.0_new/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx 2013-03-11 14:59:58.629495196 +0100 +@@ -21,6 +21,7 @@ + //files around for inspection. Otherwise it deletes the temporary files it + //creates and returns success. + ++#include + #include "vtkXdmfWriter.h" + + #include "vtkCellData.h" +diff -pruN ParaView-3.14.0_ori/VTK/CMakeLists.txt ParaView-3.14.0_new/VTK/CMakeLists.txt +--- ParaView-3.14.0_ori/VTK/CMakeLists.txt 2012-02-20 15:49:50.000000000 +0100 ++++ ParaView-3.14.0_new/VTK/CMakeLists.txt 2013-03-07 16:02:10.698126978 +0100 +@@ -758,7 +758,7 @@ VTK_DEPENDENT_OPTION(VTK_USE_MPI + VTK_DEPENDENT_OPTION(VTK_USE_MATROX_IMAGING + "Use Matrox Imaging Library for video input." OFF + "VTK_USE_RENDERING;WIN32" OFF) +-VTK_DEPENDENT_OPTION(VTK_USE_GL2PS "Build VTK with gl2ps support." OFF ++VTK_DEPENDENT_OPTION(VTK_USE_GL2PS "Build VTK with gl2ps support." ON + "VTK_USE_RENDERING" ON) + VTK_DEPENDENT_OPTION(VTK_USE_PARALLEL_BGL + "Use the Parallel Boost Graph Library" +diff -pruN ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeTools.cxx ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeTools.cxx +--- ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeTools.cxx 2012-02-20 15:49:51.000000000 +0100 ++++ ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeTools.cxx 2013-03-07 15:58:49.108887791 +0100 +@@ -31,6 +31,8 @@ + // The embedded fonts + #include "fonts/vtkEmbeddedFonts.h" + ++#include ++ + #ifdef FTGL_USE_NAMESPACE + using namespace ftgl; + #endif +diff -pruN ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeUtilities.cxx ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeUtilities.cxx +--- ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeUtilities.cxx 2012-02-20 15:49:51.000000000 +0100 ++++ ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeUtilities.cxx 2013-03-07 15:58:49.109887787 +0100 +@@ -31,6 +31,7 @@ + #include "fonts/vtkEmbeddedFonts.h" + + #include ++#include + + #ifdef FTGL_USE_NAMESPACE + using namespace ftgl; diff --git a/products/patches/ParaView-4.2.0.patch b/products/patches/ParaView-4.2.0.patch new file mode 100644 index 0000000..843a068 --- /dev/null +++ b/products/patches/ParaView-4.2.0.patch @@ -0,0 +1,1373 @@ +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/CMakeLists.txt ParaView-4.2.0_SRC.new/CMakeLists.txt +--- ParaView-4.2.0_SRC/CMakeLists.txt 2014-09-23 18:46:43.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/CMakeLists.txt 2014-12-19 15:39:41.000000000 +0300 +@@ -543,8 +543,8 @@ + + #---------------------------------------------------------------------------------- + # Set some flags that affect VTK's modules. +- set (VTK_NO_PYTHON_THREADS 1 CACHE INTERNAL +- "Disable Python Threads support" FORCE) ++ set (VTK_NO_PYTHON_THREADS ON CACHE BOOL ++ "Disable Python Threads support") + set(VTK_WRAP_PYTHON ${PARAVIEW_ENABLE_PYTHON} + CACHE INTERNAL "Should VTK Python wrapping be built?" FORCE) + +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx +--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -100,7 +100,9 @@ + namespace { + bool hasModule(const char *module) + { ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject mod(PyImport_ImportModule(module)); ++ VTK_PY_GIL_RELEASE + bool result = mod; + return result; + } +@@ -108,11 +110,13 @@ + // Returns empty string on error. + std::string getModuleAttrAsString(const char *module, const char *attribute) + { ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject mod(PyImport_ImportModule(module)); + if (!mod) + { + std::ostringstream result; + result << "(module '" << module << "' not found)"; ++ VTK_PY_GIL_RELEASE + return result.str(); + } + +@@ -122,11 +126,13 @@ + std::ostringstream result; + result << "('" << module << "' module found, missing '" << attribute + << "' attribute)"; ++ VTK_PY_GIL_RELEASE + return result.str(); + } + + std::string result = PyBytes_AsString(attr); + ++ VTK_PY_GIL_RELEASE + return result; + } + +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkSession.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkSession.cxx +--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkSession.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkSession.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -30,13 +30,15 @@ + //---------------------------------------------------------------------------- + void vtkSession::Activate() + { +- vtkProcessModule::GetProcessModule()->PushActiveSession(this); ++ if(vtkProcessModule::GetProcessModule()) ++ vtkProcessModule::GetProcessModule()->PushActiveSession(this); + } + + //---------------------------------------------------------------------------- + void vtkSession::DeActivate() + { +- vtkProcessModule::GetProcessModule()->PopActiveSession(this); ++ if(vtkProcessModule::GetProcessModule()) ++ vtkProcessModule::GetProcessModule()->PopActiveSession(this); + } + + //---------------------------------------------------------------------------- +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx +--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -172,6 +172,7 @@ + if (geomFilter) + { + geomFilter->SetUseOutline(0); ++ geomFilter->SetTriangulate(0); + geomFilter->SetNonlinearSubdivisionLevel(1); + geomFilter->SetPassThroughCellIds(1); + geomFilter->SetPassThroughPointIds(1); +@@ -236,7 +237,7 @@ + vtkPVRenderView::MarkAsRedistributable(inInfo, this); + + // Tell the view if this representation needs ordered compositing. We need +- // ordered compositing when rendering translucent geometry. ++ // ordered compositing when rendering translucent geometry. + if (this->Actor->HasTranslucentPolygonalGeometry()) + { + // We need to extend this condition to consider translucent LUTs once we +@@ -270,7 +271,7 @@ + this->LODOutlineFilter->Update(); + // Pass along the LOD geometry to the view so that it can deliver it to + // the rendering node as and when needed. +- vtkPVRenderView::SetPieceLOD(inInfo, this, ++ vtkPVRenderView::SetPieceLOD(inInfo, this, + this->LODOutlineFilter->GetOutputDataObject(0)); + } + else +@@ -290,7 +291,7 @@ + + // Pass along the LOD geometry to the view so that it can deliver it to + // the rendering node as and when needed. +- vtkPVRenderView::SetPieceLOD(inInfo, this, ++ vtkPVRenderView::SetPieceLOD(inInfo, this, + this->Decimator->GetOutputDataObject(0)); + } + } +@@ -780,6 +781,19 @@ + } + + //---------------------------------------------------------------------------- ++void vtkGeometryRepresentation::SetTriangulate(int val) ++{ ++ if (vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)) ++ { ++ vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)->SetTriangulate(val); ++ } ++ ++ // since geometry filter needs to execute, we need to mark the representation ++ // modified. ++ this->MarkModified(); ++} ++ ++//---------------------------------------------------------------------------- + void vtkGeometryRepresentation::SetNonlinearSubdivisionLevel(int val) + { + if (vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)) +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h +--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h 2014-12-19 15:39:41.000000000 +0300 +@@ -19,7 +19,7 @@ + // It handles non-polygonal datasets by extracting external surfaces. One can + // use this representation to show surface/wireframe/points/surface-with-edges. + // .SECTION Thanks +-// The addition of a transformation matrix was supported by CEA/DIF ++// The addition of a transformation matrix was supported by CEA/DIF + // Commissariat a l'Energie Atomique, Centre DAM Ile-De-France, Arpajon, France. + + #ifndef __vtkGeometryRepresentation_h +@@ -109,7 +109,7 @@ + // Description: + // Returns true if this class would like to get ghost-cells if available for + // the connection whose information object is passed as the argument. +- static bool DoRequestGhostCells(vtkInformation* information); ++ static bool DoRequestGhostCells(vtkInformation* information); + + // Description: + // Representations that use geometry representation as the internal +@@ -122,6 +122,7 @@ + //*************************************************************************** + // Forwarded to vtkPVGeometryFilter + virtual void SetUseOutline(int); ++ void SetTriangulate(int); + void SetNonlinearSubdivisionLevel(int); + + //*************************************************************************** +@@ -145,7 +146,7 @@ + virtual void SetPosition(double, double, double); + virtual void SetScale(double, double, double); + virtual void SetTexture(vtkTexture*); +- virtual void SetUserTransform(const double[16]); ++ virtual void SetUserTransform(const double[16]); + + //*************************************************************************** + // Forwarded to Mapper and LODMapper. +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx +--- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -69,6 +69,7 @@ + #ifdef PARAVIEW_ENABLE_PYTHON + // ensure Python interpreter is initialized. + vtkPythonInterpreter::Initialize(); ++ VTK_PY_GIL_ENSURE + this->Internals->TraceModule.TakeReference(PyImport_ImportModule("paraview.smtrace")); + if (!this->Internals->TraceModule) + { +@@ -92,6 +93,7 @@ + this->Internals->CreateItemFunction.TakeReference(NULL); + } + } ++ VTK_PY_GIL_RELEASE + #endif + } + +@@ -115,12 +117,15 @@ + + #ifdef PARAVIEW_ENABLE_PYTHON + vtkPythonInterpreter::Initialize(); ++ VTK_PY_GIL_ENSURE + try + { ++ + vtkSmartPyObject module(PyImport_ImportModule("paraview.smstate")); + if (!module || PyErr_Occurred()) + { + vtkGenericWarningMacro("Failed to import paraview.smstate module."); ++ VTK_PY_GIL_RELEASE + throw 1; + } + +@@ -132,9 +137,12 @@ + if (!result || PyErr_Occurred()) + { + vtkGenericWarningMacro("Failed to generate state."); ++ VTK_PY_GIL_RELEASE + throw 1; + } +- return vtkStdString(PyString_AsString(result)); ++ vtkStdString s(PyString_AsString(result)); ++ VTK_PY_GIL_RELEASE ++ return s; + } + catch (int) + { +@@ -144,6 +152,7 @@ + PyErr_Clear(); + } + } ++ VTK_PY_GIL_RELEASE + #endif + (void)propertiesToTraceOnCreate; + (void)skipHiddenRepresentations; +@@ -164,9 +173,11 @@ + } + else + { ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject _start_trace_internal( + PyObject_CallMethod(vtkSMTrace::ActiveTracer->GetTraceModule(), + const_cast("_start_trace_internal"), NULL)); ++ VTK_PY_GIL_RELEASE + vtkSMTrace::ActiveTracer->CheckForError(); + } + #endif +@@ -192,6 +203,7 @@ + vtkSMTrace::ActiveTracer = NULL; + + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject _stop_trace_internal( + PyObject_CallMethod(active->GetTraceModule(), const_cast("_stop_trace_internal"), NULL)); + if (active->CheckForError() == false) +@@ -199,14 +211,18 @@ + // no error. + if (Py_None != _stop_trace_internal.GetPointer() && _stop_trace_internal.GetPointer() != NULL) + { +- return vtkStdString(PyString_AsString(_stop_trace_internal)); ++ vtkStdString s(PyString_AsString(_stop_trace_internal)); ++ VTK_PY_GIL_RELEASE ++ return s; + } + else + { + vtkGenericWarningMacro("Empty trace returned!!!"); ++ VTK_PY_GIL_RELEASE + return vtkStdString(); + } + } ++ VTK_PY_GIL_RELEASE + #endif + return vtkStdString(); + } +@@ -223,13 +239,17 @@ + + #ifdef PARAVIEW_ENABLE_PYTHON + vtkSMTrace* active = vtkSMTrace::ActiveTracer; ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject get_current_trace_output( + PyObject_CallMethod(active->GetTraceModule(), const_cast("get_current_trace_output"), NULL)); + if (active->CheckForError() == false && get_current_trace_output) + { + // no error. +- return vtkStdString(PyString_AsString(get_current_trace_output)); ++ vtkStdString s(PyString_AsString(get_current_trace_output)); ++ VTK_PY_GIL_RELEASE ++ return s; + } ++ VTK_PY_GIL_RELEASE + #endif + return vtkStdString(); + } +@@ -256,6 +276,7 @@ + bool vtkSMTrace::CheckForError() + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + PyObject *exception = PyErr_Occurred(); + if (exception) + { +@@ -264,12 +285,15 @@ + // catch Untraceable exceptions. We can log them when debugging is + // enabled. + PyErr_Clear(); ++ VTK_PY_GIL_RELEASE + return false; + } + PyErr_Print(); + PyErr_Clear(); ++ VTK_PY_GIL_RELEASE + return true; + } ++ VTK_PY_GIL_RELEASE + #endif + return false; + } +@@ -336,6 +360,7 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject keyObj(PyString_FromString(key)); + vtkSmartPyObject valObj(vtkPythonUtil::GetObjectFromPointer(val)); + assert(valObj && keyObj); +@@ -343,6 +368,7 @@ + int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)key; +@@ -358,6 +384,7 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject keyObj(PyString_FromString(key)); + vtkSmartPyObject valObj; + if (val == NULL) +@@ -374,6 +401,7 @@ + int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)key; +@@ -389,6 +417,7 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject keyObj(PyString_FromString(key)); + vtkSmartPyObject valObj(PyInt_FromLong(val)); + assert(keyObj && valObj); +@@ -396,6 +425,7 @@ + int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)key; +@@ -411,6 +441,7 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject keyObj(PyString_FromString(key)); + vtkSmartPyObject valObj(PyFloat_FromDouble(val)); + assert(keyObj && valObj); +@@ -418,6 +449,7 @@ + int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)key; +@@ -432,6 +464,7 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject keyObj(PyString_FromString(key)); + vtkSmartPyObject valObj(PyBool_FromLong(val? 1 : 0)); + assert(keyObj && valObj); +@@ -439,6 +472,7 @@ + int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)key; +@@ -452,11 +486,13 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject valObj(vtkPythonUtil::GetObjectFromPointer(val)); + assert(valObj); + int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)val; +@@ -470,11 +506,13 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject valObj(PyString_FromString(val)); + assert(valObj); + int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)val; +@@ -487,11 +525,13 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject valObj(PyInt_FromLong(val)); + assert(valObj); + int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)val; +@@ -504,11 +544,13 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject valObj(PyFloat_FromDouble(val)); + assert(valObj); + int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)val; +@@ -521,11 +563,13 @@ + if (vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject valObj(PyBool_FromLong(val? 1 : 0)); + assert(valObj); + int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj); + (void)ret; + assert(ret == 0); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)val; +@@ -557,9 +601,11 @@ + vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer(); + if (tracer && this->Internals->PyItem) + { ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject reply( + PyObject_CallMethod(this->Internals->PyItem, + const_cast("finalize"), NULL)); ++ VTK_PY_GIL_RELEASE + tracer->CheckForError(); + tracer->InvokeEvent(vtkCommand::UpdateEvent); + } +@@ -583,6 +629,7 @@ + if (vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer()) + { + #ifdef PARAVIEW_ENABLE_PYTHON ++ VTK_PY_GIL_ENSURE + assert(tracer->GetTraceModule()); + assert(tracer->GetCreateItemFunction()); + +@@ -613,6 +660,7 @@ + this->Internals->PyItem.TakeReference( + PyObject_Call(tracer->GetCreateItemFunction(), args, NULL)); + tracer->CheckForError(); ++ VTK_PY_GIL_RELEASE + #endif + } + (void)arguments; +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx +--- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -276,7 +276,7 @@ + { + if (!info) + { +- vtkWarningMacro("Could not determine array range."); ++ // vtkWarningMacro("Could not determine array range."); + return false; + } + +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml +--- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml 2014-12-19 15:39:41.000000000 +0300 +@@ -2044,16 +2044,14 @@ + ++ number_of_elements="1"> + + + ++ number_of_elements="1"> + + +@@ -3139,6 +3137,8 @@ + panel_visibility="advanced" /> + ++ + + --> + + ++ ++ ++ Triangulate the geometry internally to avoid rendering ++ issues of non-convex polygons. This feature has a processing and memory ++ cost, it should be enabled only when needed. ++ + + #include + +-#define VTK_CREATE(type, name) \ +- vtkSmartPointer name = vtkSmartPointer::New() + + vtkStandardNewMacro(vtkPVGeometryFilter); + vtkCxxSetObjectMacro(vtkPVGeometryFilter, Controller, vtkMultiProcessController); +@@ -149,6 +148,7 @@ + this->UseOutline = 1; + this->UseStrips = 0; + this->GenerateCellNormals = 1; ++ this->Triangulate = false; + this->NonlinearSubdivisionLevel = 1; + + this->DataSetSurfaceFilter = vtkDataSetSurfaceFilter::New(); +@@ -1348,8 +1348,8 @@ + { + this->OutlineFlag = 0; + +- bool handleSubdivision = false; +- if (this->NonlinearSubdivisionLevel > 0) ++ bool handleSubdivision = (this->Triangulate != 0); ++ if (!handleSubdivision && (this->NonlinearSubdivisionLevel > 0)) + { + // Check to see if the data actually has nonlinear cells. Handling + // nonlinear cells adds unnecessary work if we only have linear cells. +@@ -1445,6 +1445,16 @@ + this->DataSetSurfaceFilter->UnstructuredGridExecute(input, output, updateghostlevel); + } + ++ if (this->Triangulate && (output->GetNumberOfPolys() > 0)) ++ { ++ // Triangulate the polygonal mesh if requested to avoid rendering ++ // issues of non-convex polygons. ++ vtkNew triangleFilter; ++ triangleFilter->SetInputData(output); ++ triangleFilter->Update(); ++ output->ShallowCopy(triangleFilter->GetOutput()); ++ } ++ + if (handleSubdivision) + { + // Restore state of DataSetSurfaceFilter. +@@ -1456,9 +1466,9 @@ + + // Now use vtkPVRecoverGeometryWireframe to create an edge flag attribute + // that will cause the wireframe to be rendered correctly. +- VTK_CREATE(vtkPolyData, nextStageInput); ++ vtkNew nextStageInput; + nextStageInput->ShallowCopy(output); // Yes output is correct. +- this->RecoverWireframeFilter->SetInputData(nextStageInput); ++ this->RecoverWireframeFilter->SetInputData(nextStageInput.Get()); + + // Observe the progress of the internal filter. + // TODO: Make the consecutive internal filter execution have monotonically +@@ -1489,7 +1499,7 @@ + return; + } + vtkIdType numPts = polyPtIds2FacePtIds->GetNumberOfTuples(); +- VTK_CREATE(vtkIdTypeArray, polyPtIds2OriginalPtIds); ++ vtkNew polyPtIds2OriginalPtIds; + polyPtIds2OriginalPtIds->SetName("vtkOriginalPointIds"); + polyPtIds2OriginalPtIds->SetNumberOfComponents(1); + polyPtIds2OriginalPtIds->SetNumberOfTuples(numPts); +@@ -1503,7 +1513,7 @@ + } + polyPtIds2OriginalPtIds->SetValue(polyPtId, originalPtId); + } +- output->GetPointData()->AddArray(polyPtIds2OriginalPtIds); ++ output->GetPointData()->AddArray(polyPtIds2OriginalPtIds.Get()); + } + } + +@@ -1518,7 +1528,7 @@ + + //---------------------------------------------------------------------------- + void vtkPVGeometryFilter::PolyDataExecute( +- vtkPolyData* input, vtkPolyData* out, int doCommunicate) ++ vtkPolyData* input, vtkPolyData* output, int doCommunicate) + { + if (!this->UseOutline) + { +@@ -1533,54 +1543,90 @@ + inCopy->RemoveGhostCells(1); + stripper->SetInputData(inCopy); + stripper->Update(); +- out->CopyStructure(stripper->GetOutput()); +- out->GetPointData()->ShallowCopy(stripper->GetOutput()->GetPointData()); +- out->GetCellData()->ShallowCopy(stripper->GetOutput()->GetCellData()); ++ output->CopyStructure(stripper->GetOutput()); ++ output->GetPointData()->ShallowCopy(stripper->GetOutput()->GetPointData()); ++ output->GetCellData()->ShallowCopy(stripper->GetOutput()->GetCellData()); + inCopy->Delete(); + stripper->Delete(); + } + else + { +- out->ShallowCopy(input); ++ output->ShallowCopy(input); + if (this->PassThroughCellIds) + { +- vtkIdTypeArray *originalCellIds = vtkIdTypeArray::New(); ++ vtkNew originalCellIds; + originalCellIds->SetName("vtkOriginalCellIds"); + originalCellIds->SetNumberOfComponents(1); +- vtkCellData *outputCD = out->GetCellData(); +- outputCD->AddArray(originalCellIds); +- vtkIdType numTup = out->GetNumberOfCells(); ++ vtkNew originalFaceIds; ++ originalFaceIds->SetName(vtkPVRecoverGeometryWireframe::ORIGINAL_FACE_IDS()); ++ originalFaceIds->SetNumberOfComponents(1); ++ vtkCellData *outputCD = output->GetCellData(); ++ outputCD->AddArray(originalCellIds.Get()); ++ if (this->Triangulate) ++ { ++ outputCD->AddArray(originalFaceIds.Get()); ++ } ++ vtkIdType numTup = output->GetNumberOfCells(); + originalCellIds->SetNumberOfValues(numTup); ++ originalFaceIds->SetNumberOfValues(numTup); + for (vtkIdType cId = 0; cId < numTup; cId++) + { + originalCellIds->SetValue(cId, cId); ++ originalFaceIds->SetValue(cId, cId); + } +- originalCellIds->Delete(); +- originalCellIds = NULL; + } + if (this->PassThroughPointIds) + { +- vtkIdTypeArray *originalPointIds = vtkIdTypeArray::New(); ++ vtkNew originalPointIds; + originalPointIds->SetName("vtkOriginalPointIds"); + originalPointIds->SetNumberOfComponents(1); +- vtkPointData *outputPD = out->GetPointData(); +- outputPD->AddArray(originalPointIds); +- vtkIdType numTup = out->GetNumberOfPoints(); ++ vtkPointData *outputPD = output->GetPointData(); ++ outputPD->AddArray(originalPointIds.Get()); ++ vtkIdType numTup = output->GetNumberOfPoints(); + originalPointIds->SetNumberOfValues(numTup); + for (vtkIdType pId = 0; pId < numTup; pId++) + { + originalPointIds->SetValue(pId, pId); + } +- originalPointIds->Delete(); +- originalPointIds = NULL; + } +- out->RemoveGhostCells(1); ++ ++ output->RemoveGhostCells(1); ++ ++ if (this->Triangulate) ++ { ++ // Triangulate the polygonal mesh. ++ vtkNew triangleFilter; ++ triangleFilter->SetInputData(output); ++ triangleFilter->Update(); ++ ++ // Now use vtkPVRecoverGeometryWireframe to create an edge flag attribute ++ // that will cause the wireframe to be rendered correctly. ++ this->RecoverWireframeFilter->SetInputData(triangleFilter->GetOutput()); ++ ++ // Observe the progress of the internal filter. ++ // TODO: Make the consecutive internal filter execution have monotonically ++ // increasing progress rather than restarting for every internal filter. ++ this->RecoverWireframeFilter->AddObserver( ++ vtkCommand::ProgressEvent, ++ this->InternalProgressObserver); ++ this->RecoverWireframeFilter->Update(); ++ // The internal filter finished. Remove the observer. ++ this->RecoverWireframeFilter->RemoveObserver( ++ this->InternalProgressObserver); ++ ++ this->RecoverWireframeFilter->SetInputData(NULL); ++ ++ // Get what should be the final output. ++ output->ShallowCopy(this->RecoverWireframeFilter->GetOutput()); ++ ++ output->GetCellData()->RemoveArray(vtkPVRecoverGeometryWireframe::ORIGINAL_FACE_IDS()); ++ } + } + return; + } + + this->OutlineFlag = 1; +- this->DataSetExecute(input, out, doCommunicate); ++ this->DataSetExecute(input, output, doCommunicate); + } + + //---------------------------------------------------------------------------- +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h +--- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h 2014-12-19 15:39:41.000000000 +0300 +@@ -85,6 +85,13 @@ + vtkBooleanMacro(GenerateCellNormals, int); + + // Description: ++ // Whether to triangulate mesh for rendering. This parameter avoid ++ // rendering issues of non-convex polygons. ++ vtkSetMacro(Triangulate, int); ++ vtkGetMacro(Triangulate, int); ++ vtkBooleanMacro(Triangulate, int); ++ ++ // Description: + // Nonlinear faces are approximated with flat polygons. This parameter + // controls how many times to subdivide nonlinear surface cells. Higher + // subdivisions generate closer approximations but take more memory and +@@ -101,8 +108,7 @@ + // Description: + // If on, the output polygonal dataset will have a celldata array that + // holds the cell index of the original 3D cell that produced each output +- // cell. This is useful for picking. The default is off to conserve +- // memory. ++ // cell. This is useful for picking but it takes memory. The default is on. + void SetPassThroughCellIds(int); + vtkGetMacro(PassThroughCellIds,int); + vtkBooleanMacro(PassThroughCellIds,int); +@@ -110,8 +116,7 @@ + // Description: + // If on, the output polygonal dataset will have a pointdata array that + // holds the point index of the original vertex that produced each output +- // vertex. This is useful for picking. The default is off to conserve +- // memory. ++ // vertex. This is useful for picking but it takes memory. The default is on. + void SetPassThroughPointIds(int); + vtkGetMacro(PassThroughPointIds,int); + vtkBooleanMacro(PassThroughPointIds,int); +@@ -176,7 +181,7 @@ + virtual vtkExecutive* CreateDefaultExecutive(); + + // Description: +- // Produce geometry for a block in the dataset. ++ // Produce geometry for a block in the dataset. + // This does not handle producing outlines. Call only when this->UseOutline == + // 0; \c extractface mask it is used to determine external faces. + void ExecuteAMRBlock(vtkUniformGrid* input, +@@ -250,6 +255,7 @@ + int UseOutline; + int UseStrips; + int GenerateCellNormals; ++ int Triangulate; + int NonlinearSubdivisionLevel; + + vtkMultiProcessController* Controller; +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Components/pqPropertiesPanel.cxx ParaView-4.2.0_SRC.new/Qt/Components/pqPropertiesPanel.cxx +--- ParaView-4.2.0_SRC/Qt/Components/pqPropertiesPanel.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/Qt/Components/pqPropertiesPanel.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -383,6 +383,14 @@ + this->Internals->Ui.DisplayButton->setVisible(has_multiples_types && has_display); + this->Internals->Ui.ViewButton->setVisible(has_multiples_types && has_view); + ++ // added to avoid unwanted save restore buttons ++ this->Internals->Ui.PropertiesSaveAsDefaults->setVisible(has_source); ++ this->Internals->Ui.PropertiesRestoreDefaults->setVisible(has_source); ++ this->Internals->Ui.DisplaySaveAsDefaults->setVisible(has_display); ++ this->Internals->Ui.DisplayRestoreDefaults->setVisible(has_display); ++ this->Internals->Ui.ViewSaveAsDefaults->setVisible(has_view); ++ this->Internals->Ui.ViewRestoreDefaults->setVisible(has_view); ++ + this->updatePanel(); + } + +@@ -593,14 +601,15 @@ + } + + //----------------------------------------------------------------------------- +-void pqPropertiesPanel::updateViewPanel (pqView* _view) ++void pqPropertiesPanel::updateViewPanel (pqView* argView) + { ++ pqView* _view = argView; + if ( (this->PanelMode & pqPropertiesPanel::VIEW_PROPERTIES) == 0) + { + _view = NULL; + } + +- if (this->Internals->View != _view) ++ if (this->Internals->View != argView) + { + // The view has changed. + if (this->Internals->View) +@@ -611,8 +620,8 @@ + delete this->Internals->ViewWidgets; + } + } +- this->Internals->View = _view; +- emit this->viewChanged(_view); ++ this->Internals->View = argView; ++ emit this->viewChanged(argView); + if (_view) + { + // create the widgets for this view +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Python/pqPythonShell.cxx ParaView-4.2.0_SRC.new/Qt/Python/pqPythonShell.cxx +--- ParaView-4.2.0_SRC/Qt/Python/pqPythonShell.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/Qt/Python/pqPythonShell.cxx 2014-12-19 15:40:01.000000000 +0300 +@@ -118,6 +118,7 @@ + /// string list. + QStringList getPythonAttributes(const QString& pythonObjectName) + { ++ VTK_PY_GIL_ENSURE + if (this->Interpreter == NULL || + this->Interpreter->GetInteractiveConsoleLocalsPyObject() == NULL) + { +@@ -191,7 +192,7 @@ + } + Py_DECREF(object); + } +- ++ VTK_PY_GIL_RELEASE + return results; + } + }; +diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Python/pqPythonSyntaxHighlighter.cxx ParaView-4.2.0_SRC.new/Qt/Python/pqPythonSyntaxHighlighter.cxx +--- ParaView-4.2.0_SRC/Qt/Python/pqPythonSyntaxHighlighter.cxx 2014-09-23 18:46:44.000000000 +0400 ++++ ParaView-4.2.0_SRC.new/Qt/Python/pqPythonSyntaxHighlighter.cxx 2014-12-19 15:39:41.000000000 +0300 +@@ -65,6 +65,7 @@ + this->Internals->TextEdit = textEdit; + this->Internals->TextEdit->installEventFilter(this); + vtkPythonInterpreter::Initialize(); ++ VTK_PY_GIL_ENSURE + this->Internals->PygmentsModule.TakeReference(PyImport_ImportModule("pygments")); + if (this->Internals->PygmentsModule && this->Internals->TextEdit != NULL) + { +@@ -99,6 +100,7 @@ + this->connect(this->Internals->TextEdit.data(), SIGNAL(textChanged()), + this, SLOT(rehighlightSyntax())); + } ++ VTK_PY_GIL_RELEASE + this->Internals->IsSyntaxHighlighting = false; + // Replace tabs with 4 spaces + this->Internals->ReplaceTabs = true; +@@ -175,10 +177,12 @@ + } + QString leadingWhitespace = text.left(leadingWhiteSpaceLength); + QString trailingWhitespace = text.right(trailingWhiteSpaceLength); ++ VTK_PY_GIL_ENSURE + vtkSmartPyObject args(Py_BuildValue("sOO",text.trimmed().toStdString().c_str(), + this->Internals->PythonLexer.GetPointer(),this->Internals->HtmlFormatter.GetPointer())); + vtkSmartPyObject resultingText(PyObject_Call(this->Internals->HighlightFunction,args,NULL)); + const char *resultingTextAsCString = PyString_AsString(resultingText); ++ VTK_PY_GIL_RELEASE + QString pygmentsOutput(resultingTextAsCString); + // the first span tag always should follow the pre tag like this;
",pygmentsOutput.indexOf("
+ #include 
+ 
+@@ -16,7 +16,6 @@
+ #endif
+ 
+ #include 
+-
+ #include 
+ 
+ #include 
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsFilter.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsFilter.C
+--- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsFilter.C	2014-09-23 18:46:46.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsFilter.C	2014-12-19 15:39:41.000000000 +0300
+@@ -1,3 +1,7 @@
++#define H5Gopen_vers 2
++#define H5Dopen_vers 2
++#define H5Eset_auto_vers 2
++#define H5Aiterate_vers 2
+ #include 
+ #include 
+ #if HDF5_VERSION_GE(1,8,1)
+@@ -146,11 +150,7 @@
+       
+       // Get info of the linked object.
+       H5O_info_t objinfo;
+-#ifndef H5_USE_16_API
+       hid_t obj_id = H5Oopen(locId, name, H5P_DEFAULT);
+-#else
+-      hid_t obj_id = H5Oopen(locId, name);        
+-#endif
+       
+       if (obj_id < 0) {
+         VsLog::errorLog() <<"VsFilter::visitLinks() - unable to get id for external object " < 0 )
+     return (double) VERDICT_MIN( aspect_ratio, VERDICT_DBL_MAX );
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/Python/vtkPython.h ParaView-4.2.0_SRC.new/VTK/Utilities/Python/vtkPython.h
+--- ParaView-4.2.0_SRC/VTK/Utilities/Python/vtkPython.h	2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Utilities/Python/vtkPython.h	2014-12-19 15:39:41.000000000 +0300
+@@ -87,4 +87,14 @@
+ #error "Python.h is different version from what VTK was configured with!!"
+ #endif
+ 
++#ifdef VTK_NO_PYTHON_THREADS
++#  define VTK_PY_GIL_ENSURE
++#  define VTK_PY_GIL_RELEASE
++#else
++#  define VTK_PY_GIL_ENSURE  PyGILState_STATE _gstate_avoid_clash = PyGILState_Ensure();
++#  define VTK_PY_GIL_RELEASE PyGILState_Release(_gstate_avoid_clash);
++#
++#endif
++
++
+ #endif
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx
+--- ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx	2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx	2014-12-19 15:39:41.000000000 +0300
+@@ -45,6 +45,7 @@
+ 
+   void CleanupPythonObjects()
+     {
++    VTK_PY_GIL_ENSURE
+     Py_XDECREF(this->InteractiveConsoleLocals);
+     Py_XDECREF(this->InteractiveConsole);
+     this->InteractiveConsole = NULL;
+@@ -54,6 +55,7 @@
+       const char* code = "import gc; gc.collect()\n";
+       vtkPythonInterpreter::RunSimpleString(code);
+       }
++    VTK_PY_GIL_RELEASE
+     }
+ 
+   PyObject* GetInteractiveConsole()
+@@ -65,6 +67,7 @@
+ 
+     vtkPythonInterpreter::Initialize();
+ 
++    VTK_PY_GIL_ENSURE
+     // set up the code.InteractiveConsole instance that we'll use.
+     const char* code = "import code\n"
+       "__vtkConsoleLocals={'__name__':'__vtkconsole__','__doc__':None}\n"
+@@ -83,6 +86,7 @@
+       {
+       vtkGenericWarningMacro(
+         "Failed to locate the InteractiveConsole/InteractiveConsoleLocals object.");
++      VTK_PY_GIL_RELEASE
+       return NULL;
+       }
+     Py_INCREF(this->InteractiveConsole);
+@@ -105,7 +109,7 @@
+       PySys_SetObject(const_cast("ps2"), ps2 = PyString_FromString("... "));
+       Py_XDECREF(ps2);
+       }
+-
++    VTK_PY_GIL_RELEASE
+     return this->InteractiveConsole;
+     }
+ };
+@@ -167,6 +171,7 @@
+     i++;
+     }
+ 
++  VTK_PY_GIL_ENSURE
+   bool ret_value = false;
+   PyObject *res = PyObject_CallMethod(console,
+     const_cast("push"), const_cast("z"), buffer.c_str());
+@@ -179,6 +184,7 @@
+       }
+     Py_DECREF(res);
+     }
++  VTK_PY_GIL_RELEASE
+   return ret_value;
+ }
+ 
+@@ -190,12 +196,14 @@
+ 
+   this->Internals->GetInteractiveConsole(); //ensure the console is initialized
+ 
++  VTK_PY_GIL_ENSURE
+   PyObject* context = this->Internals->GetInteractiveConsoleLocalsPyObject();
+   PyObject* result = PyRun_String(const_cast(script), Py_file_input, context, context);
+ 
+   if (result == NULL)
+     {
+     PyErr_Print();
++    VTK_PY_GIL_RELEASE
+     return -1;
+     }
+ 
+@@ -204,6 +212,7 @@
+     {
+     PyErr_Clear();
+     }
++  VTK_PY_GIL_RELEASE
+   return 0;
+ }
+ 
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx
+--- ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx	2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx	2014-12-19 15:39:54.000000000 +0300
+@@ -60,10 +60,12 @@
+ 
+   inline void vtkPrependPythonPath(const char* pathtoadd)
+     {
++    VTK_PY_GIL_ENSURE
+     PyObject* path = PySys_GetObject(const_cast("path"));
+     PyObject* newpath = PyString_FromString(pathtoadd);
+     PyList_Insert(path, 0, newpath);
+     Py_DECREF(newpath);
++    VTK_PY_GIL_RELEASE
+     }
+ }
+ 
+@@ -107,7 +109,6 @@
+ //----------------------------------------------------------------------------
+ bool vtkPythonInterpreter::Initialize(int initsigs /*=0*/)
+ {
+-  vtkPythonInterpreter::InitializedOnce = true;
+   if (Py_IsInitialized() == 0)
+     {
+ #if (VTK_PYTHON_MAJOR_VERSION > 2) ||\
+@@ -117,11 +118,26 @@
+     (void)initsigs;
+     Py_Initialize();
+ #endif
+-
+ #ifdef SIGINT
+     // Put default SIGINT handler back after Py_Initialize/Py_InitializeEx.
+     signal(SIGINT, SIG_DFL);
+ #endif
++    }
++
++  if (! vtkPythonInterpreter::InitializedOnce)
++    {
++#ifndef VTK_NO_PYTHON_THREADS
++    int threadInit = PyEval_ThreadsInitialized();
++    PyEval_InitThreads(); // safe to call this multiple time
++#endif
++    // At this point we have GIL, or we are mono-thread.
++    // Access to the static below is safe:
++    vtkPythonInterpreter::InitializedOnce = true;
++
++#ifndef VTK_NO_PYTHON_THREADS
++    if(!threadInit)
++      PyEval_SaveThread(); // release GIL
++#endif
+     // HACK: Calling PyRun_SimpleString for the first time for some reason results in
+     // a "\n" message being generated which is causing the error dialog to
+     // popup. So we flush that message out of the system before setting up the
+@@ -134,15 +150,17 @@
+     vtkPythonStdStreamCaptureHelper* wrapperErr =
+       NewPythonStdStreamCaptureHelper(true);
+ 
+-    // Redirect Python's stdout and stderr and stdin
+-    PySys_SetObject(const_cast("stdout"),
++    // Redirect Python's stdout and stderr and stdin - GIL protected operation
++    VTK_PY_GIL_ENSURE
++    int ret1 = PySys_SetObject(const_cast("stdout"),
+       reinterpret_cast(wrapperOut));
+-    PySys_SetObject(const_cast("stderr"),
++    int ret2 = PySys_SetObject(const_cast("stderr"),
+       reinterpret_cast(wrapperErr));
+-    PySys_SetObject(const_cast("stdin"),
++    int ret3 = PySys_SetObject(const_cast("stdin"),
+       reinterpret_cast(wrapperOut));
+     Py_DECREF(wrapperOut);
+     Py_DECREF(wrapperErr);
++    VTK_PY_GIL_RELEASE
+ 
+     for (size_t cc=0; cc < PythonPaths.size(); cc++)
+       {
+@@ -162,6 +180,7 @@
+   if (Py_IsInitialized() != 0)
+     {
+     NotifyInterpreters(vtkCommand::ExitEvent);
++    VTK_PY_GIL_ENSURE
+     Py_Finalize();
+     }
+ }
+@@ -221,7 +240,9 @@
+     vtkPythonInterpreter::SetProgramName(argv[0]);
+     }
+   vtkPythonInterpreter::Initialize(1);
++  VTK_PY_GIL_ENSURE
+   return Py_Main(argc, argv);
++  // Py_Main already does a finalize etc ...
+ }
+ 
+ //----------------------------------------------------------------------------
+@@ -235,7 +256,9 @@
+   buffer.erase(std::remove(buffer.begin(), buffer.end(), '\r'), buffer.end());
+ 
+   // The cast is necessary because PyRun_SimpleString() hasn't always been const-correct
++  VTK_PY_GIL_ENSURE
+   PyRun_SimpleString(const_cast(buffer.c_str()));
++  VTK_PY_GIL_RELEASE
+ }
+ 
+ //----------------------------------------------------------------------------
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx
+--- ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx	2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx	2014-12-19 15:39:41.000000000 +0300
+@@ -30,14 +30,18 @@
+   vtkPythonUtil::UnRegisterPythonCommand(this);
+   if (this->obj && Py_IsInitialized())
+     {
++    VTK_PY_GIL_ENSURE
+     Py_DECREF(this->obj);
++    VTK_PY_GIL_RELEASE
+     }
+   this->obj = NULL;
+ }
+ 
+ void vtkPythonCommand::SetObject(PyObject *o)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_INCREF(o);
++  VTK_PY_GIL_RELEASE
+   this->obj = o;
+ }
+ 
+@@ -92,11 +96,11 @@
+   // If a threadstate has been set using vtkPythonCommand::SetThreadState,
+   // then swap it in here.  See the email to vtk-developers@vtk.org from
+   // June 18, 2009 with subject "Py_NewInterpreter and vtkPythonCallback issue"
+-  PyThreadState* prevThreadState = NULL;
+-  if (this->ThreadState)
+-    {
+-    prevThreadState = PyThreadState_Swap(this->ThreadState);
+-    }
++//  PyThreadState* prevThreadState = NULL;
++//  if (this->ThreadState)
++//    {
++//    prevThreadState = PyThreadState_Swap(this->ThreadState);
++//    }
+ 
+   PyObject * obj2 = NULL;
+   if (ptr && ptr->GetReferenceCount() > 0)
+@@ -237,10 +241,10 @@
+     }
+ 
+   // If we did the swap near the top of this function then swap back now.
+-  if (this->ThreadState)
+-    {
+-    PyThreadState_Swap(prevThreadState);
+-    }
++//  if (this->ThreadState)
++//    {
++//    PyThreadState_Swap(prevThreadState);
++//    }
+ 
+ #ifndef VTK_NO_PYTHON_THREADS
+ #if (PY_MAJOR_VERSION > 2) || \
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx
+--- ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx	2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx	2014-12-19 15:39:41.000000000 +0300
+@@ -30,37 +30,52 @@
+ vtkSmartPyObject::vtkSmartPyObject(const vtkSmartPyObject &other) :
+   Object(other.Object)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+ }
+ 
+ //--------------------------------------------------------------------
+ vtkSmartPyObject::~vtkSmartPyObject()
+ {
+-  Py_XDECREF(this->Object);
++  if (Py_IsInitialized())
++    {
++    VTK_PY_GIL_ENSURE
++    Py_XDECREF(this->Object);
++    VTK_PY_GIL_RELEASE
++    }
++  else
++    Py_XDECREF(this->Object);
+ }
+ 
+ //--------------------------------------------------------------------
+ vtkSmartPyObject &vtkSmartPyObject::operator=(const vtkSmartPyObject &other)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XDECREF(this->Object);
+   this->Object = other.Object;
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   return *this;
+ }
+ 
+ //--------------------------------------------------------------------
+ vtkSmartPyObject &vtkSmartPyObject::operator=(PyObject *obj)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XDECREF(this->Object);
+   this->Object = obj;
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   return *this;
+ }
+ 
+ //--------------------------------------------------------------------
+ void vtkSmartPyObject::TakeReference(PyObject *obj)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XDECREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   this->Object = obj;
+ }
+ 
+@@ -99,6 +114,8 @@
+ //--------------------------------------------------------------------
+ PyObject *vtkSmartPyObject::GetAndIncreaseReferenceCount()
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   return this->Object;
+ }
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Wrapping/Python/paraview/servermanager.py ParaView-4.2.0_SRC.new/Wrapping/Python/paraview/servermanager.py
+--- ParaView-4.2.0_SRC/Wrapping/Python/paraview/servermanager.py	2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Wrapping/Python/paraview/servermanager.py	2014-12-19 15:39:41.000000000 +0300
+@@ -1092,7 +1092,7 @@
+         property = self.SMProperty
+         nElems = property.GetNumberOfElements()
+         if nElems%2 != 0:
+-            raise ValueError, "The SMProperty with XML label '%s' has a size that is not a multiple of 2." % property.GetXMLLabel()
++            nElems -= 1
+         self.__arrays = []
+         for i in range(0, nElems, 2):
+             if self.GetElement(i+1) != '0':
diff --git a/products/patches/ParaView-5.1.2-win.patch b/products/patches/ParaView-5.1.2-win.patch
new file mode 100755
index 0000000..19e5a25
--- /dev/null
+++ b/products/patches/ParaView-5.1.2-win.patch
@@ -0,0 +1,34 @@
+diff -rupN ParaView/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h ParaView_new/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h
+--- ParaView/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h	Mon Nov  7 08:53:30 2016
++++ ParaView_new/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h	Wed May 31 14:29:46 2017
+@@ -25,6 +25,13 @@
+ #include "vtkPVServerManagerRenderingModule.h" // needed for export macro
+ #include "vtkSMProxy.h"
+ 
++#ifndef nextafter_definition_h
++#define nextafter_definition_h
++#if _MSC_VER < 1800
++inline double nextafter(double x, double y) { return _nextafter(x, y); }
++#endif
++#endif
++
+ namespace Json
+ {
+   class Value;
+diff -rupN ParaView/Qt/Components/pqProxyWidget.h ParaView_new/Qt/Components/pqProxyWidget.h
+--- ParaView/Qt/Components/pqProxyWidget.h	Mon Nov  7 08:53:30 2016
++++ ParaView_new/Qt/Components/pqProxyWidget.h	Wed May 31 14:29:56 2017
+@@ -35,6 +35,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include "pqComponentsModule.h"
+ #include 
+ 
++#ifndef nextafter_definition_h
++#define nextafter_definition_h
++#if _MSC_VER < 1800
++inline double nextafter(double x, double y) { return _nextafter(x, y); }
++#endif
++#endif
++
+ class pqPropertyWidget;
+ class pqView;
+ class vtkSMProperty;
diff --git a/products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch b/products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch
new file mode 100644
index 0000000..2830ed5
--- /dev/null
+++ b/products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch
@@ -0,0 +1,11 @@
+--- a/VTK/CMake/vtkModuleTop.cmake	2015-12-16 20:17:55.000000000 +0300
++++ b/VTK/CMake/vtkModuleTop.cmake	2016-02-08 16:12:02.000000000 +0300
+@@ -503,6 +503,7 @@
+   get_property(VTK_TARGETS GLOBAL PROPERTY VTK_TARGETS)
+   if(VTK_TARGETS)
+     install(EXPORT ${VTK_INSTALL_EXPORT_NAME}  DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE ${VTK_INSTALL_EXPORT_NAME}.cmake)
++    install(EXPORT ${VTK_INSTALL_EXPORT_NAME}  DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE VTKTargets.cmake)
+   else()
+     set(CMAKE_CONFIGURABLE_FILE_CONTENT "# No targets!")
+     configure_file(${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in
+
diff --git a/products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch b/products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch
new file mode 100644
index 0000000..5240a41
--- /dev/null
+++ b/products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch
@@ -0,0 +1,28 @@
+--- orig/ParaView-5.4.0-463c0633_SRC/VTK/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx	2017-09-13 10:51:02.000000000 +0300
++++ ParaView-5.4.0-463c0633_SRC/VTK/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx	2017-11-14 16:15:29.312760666 +0300
+@@ -402,10 +402,13 @@
+   }
+ }
+ 
++static bool ctxErrorOccurred = false;
++
+ extern "C"
+ {
+   int vtkXOGLContextCreationErrorHandler(Display*, XErrorEvent*)
+   {
++    ctxErrorOccurred = true;
+     return 1;
+   }
+ }
+@@ -584,6 +587,11 @@
+             GL_TRUE, context_attribs );
+         // Sync to ensure any errors generated are processed.
+         XSync( this->DisplayId, False );
++        if(ctxErrorOccurred)
++        {
++          this->Internal->ContextId = nullptr;
++          ctxErrorOccurred = false;
++        }
+       }
+       XSetErrorHandler(previousHandler);
+       if ( this->Internal->ContextId )
diff --git a/products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch b/products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch
new file mode 100644
index 0000000..e236015
--- /dev/null
+++ b/products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch
@@ -0,0 +1,11 @@
+diff -Naur ParaView-5.4.0-b5c4c893_SRC_orig/CoProcessing/PythonCatalyst/module.cmake ParaView-5.4.0-b5c4c893_SRC_modif/CoProcessing/PythonCatalyst/module.cmake
+--- ParaView-5.4.0-b5c4c893_SRC_orig/CoProcessing/PythonCatalyst/module.cmake	2018-01-10 15:41:20.000000000 +0300
++++ ParaView-5.4.0-b5c4c893_SRC_modif/CoProcessing/PythonCatalyst/module.cmake	2018-01-11 18:52:49.000000000 +0300
+@@ -6,6 +6,7 @@
+     vtkIOImage
+     vtkTestingRendering
+     vtkPVCatalystTestDriver
++  EXCLUDE_FROM_WRAPPING
+   TEST_LABELS
+     PARAVIEW CATALYST
+ )
diff --git a/products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch b/products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch
new file mode 100644
index 0000000..fda2995
--- /dev/null
+++ b/products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch
@@ -0,0 +1,140 @@
+diff -Naur ParaView_ori/CMakeLists.txt ParaView_new/CMakeLists.txt
+--- ParaView_ori/CMakeLists.txt	2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/CMakeLists.txt	2018-04-13 13:30:54.503629695 +0200
+@@ -213,6 +213,9 @@
+ option(PARAVIEW_USE_VISITBRIDGE "Build ParaView with VisIt readers." OFF)
+ option(PARAVIEW_USE_OPENTURNS "Build ParaView with OpenTURNS filters and density maps" OFF)
+ 
++# AC - OP spns 7810 Add option to disable 3D Glyphs representation
++option(PARAVIEW_USE_3DGLYPH "Build ParaView with 3D Glyph presentation" ON)
++
+ # NvPipe requires an NVIDIA GPU.
+ option(PARAVIEW_ENABLE_NVPIPE
+        "Build ParaView with NvPipe remoting. Requires CUDA and an NVIDIA GPU" OFF)
+diff -Naur ParaView_ori/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx ParaView_new/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx
+--- ParaView_ori/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx	2018-01-11 09:32:03.000000000 +0100
++++ ParaView_new/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx	2018-04-13 13:34:01.726070038 +0200
+@@ -9,7 +9,12 @@
+ #include "vtkDataLabelRepresentation.h"
+ #include "vtkGeometryRepresentation.h"
+ #include "vtkGeometryRepresentationWithFaces.h"
++
++// AC - OP spns 7810 Disable 3D Glyphs representation
++#ifdef PARAVIEW_USE_3DGLYPH
+ #include "vtkGlyph3DRepresentation.h"
++#endif
++
+ #include "vtkImageSliceMapper.h"
+ #include "vtkImageSliceRepresentation.h"
+ #include "vtkImageVolumeRepresentation.h"
+@@ -111,7 +116,12 @@
+   PRINT_SELF(vtkDataLabelRepresentation);
+   PRINT_SELF(vtkGeometryRepresentation);
+   PRINT_SELF(vtkGeometryRepresentationWithFaces);
++
++  // AC - OP spns 7810 Disable 3D Glyphs representation
++#ifdef PARAVIEW_USE_3DGLYPH
+   PRINT_SELF(vtkGlyph3DRepresentation);
++#endif
++  
+   PRINT_SELF(vtkImageSliceMapper);
+   PRINT_SELF(vtkImageSliceRepresentation);
+   PRINT_SELF(vtkImageVolumeRepresentation);
+diff -Naur ParaView_ori/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt ParaView_new/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt
+--- ParaView_ori/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt	2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt	2018-04-13 13:39:53.538166496 +0200
+@@ -28,6 +28,8 @@
+ #  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #
+ #==========================================================================
++
++# AC - OP spns #7810 Disable 3D Glyphs representation
+ set (Module_SRCS
+   vtk3DWidgetRepresentation.cxx
+   vtkAMROutlineRepresentation.cxx
+@@ -44,7 +46,6 @@
+   vtkGeometryRepresentation.cxx
+   vtkGeometryRepresentationWithFaces.cxx
+   vtkGeometrySliceRepresentation.cxx
+-  vtkGlyph3DRepresentation.cxx
+   vtkImageSliceRepresentation.cxx
+   vtkImageVolumeRepresentation.cxx
+   vtkMoleculeRepresentation.cxx
+@@ -104,7 +105,13 @@
+   vtkThreeSliceFilter.cxx
+   vtkUnstructuredGridVolumeRepresentation.cxx
+   vtkXYChartRepresentation.cxx
+-)
++  )
++
++if (PARAVIEW_USE_3DGLYPH)
++  list(APPEND Module_SRCS
++    vtkGlyph3DRepresentation.cxx)
++endif()
++    
+ 
+ list(APPEND Module_SRCS
+   vtkPointGaussianRepresentation.cxx)
+diff -Naur ParaView_ori/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml ParaView_new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml
+--- ParaView_ori/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml	2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml	2018-04-13 13:47:59.330840906 +0200
+@@ -3608,9 +3608,12 @@
+       
++      
++#ifdef PARAVIEW_USE_3DGLYPH
+       
++#endif
+       
+         
+       
++      
++#ifdef PARAVIEW_USE_3DGLYPH
+       
+         
+         
+       
++ #endif
+       
+@@ -4792,6 +4798,8 @@
+       
+     
+     
++    
++#ifdef PARAVIEW_USE_3DGLYPH
+     
+       
+     
++#endif
+     
+     
+ #include 
++#include 
+ 
+-#ifndef NDEBUG // a debug implementation
++// uncomment the folowing line to add in state debugging information
++//#define USE_STATE_DEBUGGING 1
++#ifdef USE_STATE_DEBUGGING
+ 
+ class VTKRENDERINGOPENGL2_EXPORT vtkStateStorage
+ {
+@@ -120,7 +123,7 @@
+   this->Storage.insert(this->Storage.end(), start, start + sizeof(T));
+ }
+ 
+-#else // release implementation
++#else // normal implementation
+ 
+ class VTKRENDERINGOPENGL2_EXPORT vtkStateStorage
+ {
+@@ -157,7 +160,7 @@
+   this->Storage.insert(this->Storage.end(), start, start + sizeof(T));
+ }
+ 
+-#endif // Release implementation
++#endif // normal implementation
+ 
+ #endif // vtkStateStorage_h
+ 
diff --git a/products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch b/products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch
new file mode 100644
index 0000000..b9c7631
--- /dev/null
+++ b/products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch
@@ -0,0 +1,12 @@
+diff -Naur ParaView-5.6.0-bfaf7b82_SRC/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt ParaView-5.6.0-bfaf7b82_SRC_new/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt
+--- ParaView-5.6.0-bfaf7b82_SRC/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt	2019-06-27 14:45:18.725749100 +0300
++++ ParaView-5.6.0-bfaf7b82_SRC_new/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt	2019-06-27 14:18:34.571736200 +0300
+@@ -86,7 +86,7 @@
+ #1. vtkm_declare_headers will do a flat install into the current respective
+ #   build directory
+ vtkm_get_kit_name(name dir_prefix)
+-vtkm_add_header_build_test(${name} ${dir_prefix} FALSE ${extra_headers})
++#vtkm_add_header_build_test(${name} ${dir_prefix} FALSE ${extra_headers})
+ vtkm_install_headers("${dir_prefix}/freudenthal_2D" freudenthal_2D/Types.h)
+ vtkm_install_headers("${dir_prefix}/freudenthal_3D" freudenthal_3D/Types.h)
+ vtkm_install_headers("${dir_prefix}/marchingcubes_3D" marchingcubes_3D/Types.h)
diff --git a/products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch b/products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch
new file mode 100644
index 0000000..33059a2
--- /dev/null
+++ b/products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch
@@ -0,0 +1,17 @@
+diff -ruN ParaView/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx ParaView_new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx
+--- ParaView/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx	2019-05-28 08:19:55.673481437 +0200
++++ ParaView_new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx	2019-05-28 08:08:21.000000000 +0200
+@@ -260,8 +260,11 @@
+     vtkPythonInterpreter::InitializedOnce = true;
+ 
+ #ifdef VTK_PYTHON_FULL_THREADSAFE
+-    PyEval_InitThreads(); // safe to call this multiple time
+-    PyEval_SaveThread(); // release GIL
++    if(PyEval_ThreadsInitialized() == 0)
++    {
++      PyEval_InitThreads(); // safe to call this multiple time
++      PyEval_SaveThread(); // release GIL
++    }
+ #endif
+ 
+     // HACK: Calling PyRun_SimpleString for the first time for some reason results in
diff --git a/products/patches/PyQt-4.9.1.patch b/products/patches/PyQt-4.9.1.patch
new file mode 100755
index 0000000..c023e1e
--- /dev/null
+++ b/products/patches/PyQt-4.9.1.patch
@@ -0,0 +1,51 @@
+diff -pruN PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbuspendingreply.sip PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbuspendingreply.sip
+--- PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbuspendingreply.sip	2012-02-10 11:35:14.000000000 +0100
++++ PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbuspendingreply.sip	2012-04-12 14:04:48.000000000 +0200
+@@ -23,6 +23,8 @@
+ // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ 
+ 
++%If (Qt_4_7_0 -)
++
+ class QPyDBusPendingReply : QDBusPendingCall /PyName=QDBusPendingReply/
+ {
+ %TypeHeaderCode
+@@ -47,3 +49,5 @@ public:
+ 
+     SIP_PYOBJECT value(SIP_PYOBJECT type /DocValue="None"/ = 0) const /HoldGIL/;
+ };
++
++%End
+diff -pruN PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbusreply.sip PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbusreply.sip
+--- PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbusreply.sip	2012-02-10 11:35:14.000000000 +0100
++++ PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbusreply.sip	2012-04-12 14:04:48.000000000 +0200
+@@ -23,6 +23,8 @@
+ // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ 
+ 
++%If (Qt_4_7_0 -)
++
+ class QPyDBusReply /PyName=QDBusReply/
+ {
+ %TypeHeaderCode
+@@ -241,3 +243,5 @@ template
+     return 0;
+ %End
+ };
++
++%End
+
+diff -pruN PyQt-x11-gpl-4.9.1_old/configure.py PyQt-x11-gpl-4.9.1_new/configure.py
+--- PyQt-x11-gpl-4.9.1_old/configure.py	2013-07-22 15:50:59.000000000 +0200
++++ PyQt-x11-gpl-4.9.1_new/configure.py	2013-07-22 15:42:12.000000000 +0200
+@@ -375,8 +375,8 @@ class ConfigurePyQt4:
+         check_module("QtWebKit", "qwebpage.h", "new QWebPage()")
+         check_module("QtXml", "qdom.h", "new QDomDocument()")
+         check_module("QtXmlPatterns", "qxmlname.h", "new QXmlName()")
+-        check_module("phonon", "phonon/videowidget.h",
+-                "new Phonon::VideoWidget()")
++        #check_module("phonon", "phonon/videowidget.h",
++        #        "new Phonon::VideoWidget()")
+         check_module("QtAssistant", "qassistantclient.h",
+                 "new QAssistantClient(\"foo\")", extra_lib_dirs=ass_lib_dirs,
+                 extra_libs=ass_libs)
diff --git a/products/patches/PyQt-GLdispatch.patch b/products/patches/PyQt-GLdispatch.patch
new file mode 100644
index 0000000..8c796e6
--- /dev/null
+++ b/products/patches/PyQt-GLdispatch.patch
@@ -0,0 +1,21 @@
+--- PyQt_ref/configure.py	2019-06-17 13:05:36.317488870 +0200
++++ PyQt/configure.py	2019-06-18 10:04:22.726188342 +0200
+@@ -1901,6 +1901,18 @@
+ 
+         return False
+ 
++    ldout=get_command_output("ldconfig -p| grep 'libGLdispatch.so$'")
++    gld= ldout.read().strip().decode("utf-8") 
++    if not gld:
++      print("INFO: fine no need to link against libGLdispatch.so")
++    else:
++      print("INFO: adding libGLdispatch.so to the list of libraries...")
++      with open(mf, 'r') as f :
++        d = f.read()
++      d = d.replace('-lGL', '-lGL -lGLdispatch')
++      with open(mf, 'w') as f:
++        f.write(d)
++
+     # Restore the current directory.
+     if cwd is not None:
+         os.chdir(cwd)
diff --git a/products/patches/Python-3.6.5_windows.patch b/products/patches/Python-3.6.5_windows.patch
new file mode 100644
index 0000000..d9ad237
--- /dev/null
+++ b/products/patches/Python-3.6.5_windows.patch
@@ -0,0 +1,979 @@
+--- Python_ref/Modules/_io/_iomodule.c
++++ Python/Modules/_io/_iomodule.c
+@@ -21,7 +21,8 @@
+ #endif /* HAVE_SYS_STAT_H */
+ 
+ #ifdef MS_WINDOWS
+-#include 
++#include 
++ #include 
+ #endif
+ 
+ /* Various interned strings */
+--- Python_ref/PCbuild/_asyncio.vcxproj
++++ Python/PCbuild/_asyncio.vcxproj
+@@ -38,6 +38,7 @@
+     {384C224A-7474-476E-A01B-750EA7DE918C}
+     _asyncio
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+@@ -74,4 +75,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_bz2.vcxproj
++++ Python/PCbuild/_bz2.vcxproj
+@@ -38,6 +38,7 @@
+     {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}
+     bz2
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_bz2.vcxproj.filters
++++ Python/PCbuild/_bz2.vcxproj.filters
+@@ -45,4 +45,7 @@
+       bzip2 1.0.6 Header Files
+     
+   
+-
++  
++    
++  
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_ctypes.vcxproj
++++ Python/PCbuild/_ctypes.vcxproj
+@@ -38,6 +38,7 @@
+     {0E9791DB-593A-465F-98BC-681011311618}
+     _ctypes
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_ctypes.vcxproj.filters
++++ Python/PCbuild/_ctypes.vcxproj.filters
+@@ -62,4 +62,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_ctypes_test.vcxproj
++++ Python/PCbuild/_ctypes_test.vcxproj
+@@ -39,6 +39,7 @@
+     _ctypes_test
+     Win32Proj
+     false
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_ctypes_test.vcxproj.filters
++++ Python/PCbuild/_ctypes_test.vcxproj.filters
+@@ -18,4 +18,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_decimal.vcxproj
++++ Python/PCbuild/_decimal.vcxproj
+@@ -38,6 +38,7 @@
+     {0E9791DB-593A-465F-98BC-681011311617}
+     _decimal
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_decimal.vcxproj.filters
++++ Python/PCbuild/_decimal.vcxproj.filters
+@@ -113,4 +113,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_distutils_findvs.vcxproj
++++ Python/PCbuild/_distutils_findvs.vcxproj
+@@ -38,6 +38,7 @@
+     {41ADEDF9-11D8-474E-B4D7-BB82332C878E}
+     _distutils_findvs
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+@@ -80,4 +81,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_elementtree.vcxproj
++++ Python/PCbuild/_elementtree.vcxproj
+@@ -38,6 +38,7 @@
+     {17E1E049-C309-4D79-843F-AE483C264AEA}
+     _elementtree
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+@@ -104,4 +105,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_elementtree.vcxproj.filters
++++ Python/PCbuild/_elementtree.vcxproj.filters
+@@ -33,9 +33,6 @@
+     
+       Header Files
+     
+-    
+-      Header Files
+-    
+     
+       Header Files
+     
+@@ -71,5 +68,9 @@
+     
+       Source Files
+     
++    
+   
+-
++  
++    
++  
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_freeze_importlib.vcxproj
++++ Python/PCbuild/_freeze_importlib.vcxproj
+@@ -39,6 +39,7 @@
+     Win32Proj
+     _freeze_importlib
+     false
++    10.0.17134.0
+   
+   
+   
+@@ -89,26 +90,21 @@
+   
+   
+   
+-    
+-    
++    
+     
+-      <_OldContent Condition="Exists($(OutTargetPath))">
+-      <_NewContent Condition="Exists($(IntTargetPath))">$([System.IO.File]::ReadAllText($(IntTargetPath)).Replace(`
`, `
`))
++      <_OldContent Condition="Exists($(OutTargetPath))">
++      
++      <_NewContent Condition="Exists($(IntTargetPath))">$([System.IO.File]::ReadAllText($(IntTargetPath)).Replace(`
++`, `
++`))
+     
+-    
+-    
++    
+       
+     
+-    
+-    
+-    
++    
++    
+   
+-  
++  
+   
+   
+     
+@@ -116,4 +112,4 @@
+       
+     
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_freeze_importlib.vcxproj.filters
++++ Python/PCbuild/_freeze_importlib.vcxproj.filters
+@@ -23,5 +23,6 @@
+     
+       Source Files
+     
++    
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_hashlib.vcxproj
++++ Python/PCbuild/_hashlib.vcxproj
+@@ -38,6 +38,7 @@
+     {447F05A8-F581-4CAC-A466-5AC7936E207E}
+     _hashlib
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+@@ -90,4 +91,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_hashlib.vcxproj.filters
++++ Python/PCbuild/_hashlib.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_lzma.vcxproj
++++ Python/PCbuild/_lzma.vcxproj
+@@ -38,6 +38,7 @@
+     {F9D71780-F393-11E0-BE50-0800200C9A66}
+     lzma
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+@@ -87,4 +88,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_lzma.vcxproj.filters
++++ Python/PCbuild/_lzma.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_msi.vcxproj
++++ Python/PCbuild/_msi.vcxproj
+@@ -38,6 +38,7 @@
+     {31FFC478-7B4A-43E8-9954-8D03E2187E9C}
+     _msi
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_msi.vcxproj.filters
++++ Python/PCbuild/_msi.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_multiprocessing.vcxproj
++++ Python/PCbuild/_multiprocessing.vcxproj
+@@ -38,6 +38,7 @@
+     {9E48B300-37D1-11DD-8C41-005056C00008}
+     _multiprocessing
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_multiprocessing.vcxproj.filters
++++ Python/PCbuild/_multiprocessing.vcxproj.filters
+@@ -21,4 +21,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_overlapped.vcxproj
++++ Python/PCbuild/_overlapped.vcxproj
+@@ -38,6 +38,7 @@
+     {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}
+     _overlapped
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_overlapped.vcxproj.filters
++++ Python/PCbuild/_overlapped.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_socket.vcxproj
++++ Python/PCbuild/_socket.vcxproj
+@@ -38,6 +38,7 @@
+     {86937F53-C189-40EF-8CE8-8759D8E7D480}
+     _socket
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_socket.vcxproj.filters
++++ Python/PCbuild/_socket.vcxproj.filters
+@@ -18,4 +18,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_sqlite3.vcxproj
++++ Python/PCbuild/_sqlite3.vcxproj
+@@ -38,6 +38,7 @@
+     {13CECB97-4119-4316-9D42-8534019A5A44}
+     _sqlite3
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_sqlite3.vcxproj.filters
++++ Python/PCbuild/_sqlite3.vcxproj.filters
+@@ -66,4 +66,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_ssl.vcxproj
++++ Python/PCbuild/_ssl.vcxproj
+@@ -38,6 +38,7 @@
+     {C6E20F84-3247-4AD6-B051-B073268F73BA}
+     _ssl
+     Win32Proj
++    10.0.17134.0
+   
+   
+   
+@@ -94,4 +95,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_ssl.vcxproj.filters
++++ Python/PCbuild/_ssl.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_testbuffer.vcxproj
++++ Python/PCbuild/_testbuffer.vcxproj
+@@ -39,6 +39,7 @@
+     _testbuffer
+     Win32Proj
+     false
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_testbuffer.vcxproj.filters
++++ Python/PCbuild/_testbuffer.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_testcapi.vcxproj
++++ Python/PCbuild/_testcapi.vcxproj
+@@ -39,6 +39,7 @@
+     _testcapi
+     Win32Proj
+     false
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_testcapi.vcxproj.filters
++++ Python/PCbuild/_testcapi.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
++  
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_testconsole.vcxproj
++++ Python/PCbuild/_testconsole.vcxproj
+@@ -39,6 +39,7 @@
+     Win32Proj
+     _testconsole
+     false
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_testconsole.vcxproj.filters
++++ Python/PCbuild/_testconsole.vcxproj.filters
+@@ -15,8 +15,13 @@
+     
+   
+   
+-    
++    
+       Source Files
+     
++  
++  
++    
++      Resource Files
++    
+   
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_testembed.vcxproj
++++ Python/PCbuild/_testembed.vcxproj
+@@ -39,6 +39,7 @@
+     Win32Proj
+     _testembed
+     false
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_testembed.vcxproj.filters
++++ Python/PCbuild/_testembed.vcxproj.filters
+@@ -19,4 +19,9 @@
+       Source Files
+     
+   
++  
++    
++      Resource Files
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/_testimportmultiple.vcxproj
++++ Python/PCbuild/_testimportmultiple.vcxproj
+@@ -39,6 +39,7 @@
+     _testimportmultiple
+     Win32Proj
+     false
++    10.0.17134.0
+   
+   
+   
+@@ -80,4 +81,4 @@
+   
+   
+   
+-
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_testimportmultiple.vcxproj.filters
++++ Python/PCbuild/_testimportmultiple.vcxproj.filters
+@@ -10,4 +10,7 @@
+       Source Files
+     
+   
+-
++  
++    
++  
++
+\ No newline at end of file
+--- Python_ref/PCbuild/_testmultiphase.vcxproj
++++ Python/PCbuild/_testmultiphase.vcxproj
+@@ -39,6 +39,7 @@
+     Win32Proj
+     _testmultiphase
+     false
++    10.0.17134.0
+   
+   
+   
+--- Python_ref/PCbuild/_testmultiphase.vcxproj.filters
++++ Python/PCbuild/_testmultiphase.vcxproj.filters
+@@ -19,4 +19,9 @@
+       Source Files
+     
+   
++  
++    
++      Resource Files
++    
++  
+ 
+\ No newline at end of file
+--- Python_ref/PCbuild/env.bat
++++ Python/PCbuild/env.bat
+@@ -9,7 +9,8 @@
+ 
+ echo Build environments: x86, amd64, x86_amd64
+ echo.
+-set VSTOOLS=%VS140COMNTOOLS%
++set VSTOOLS=%VS150COMNTOOLS%
++if "%VSTOOLS%"=="" set VSTOOLS=%VS140COMNTOOLS%
+ if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS%
+ if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS%
+ if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS%
+--- Python_ref/PCbuild/libeay.vcxproj
++++ Python/PCbuild/libeay.vcxproj
+@@ -37,18 +37,15 @@
+   
+     {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}
+     libeay
++    10.0.17134.0
+   
+-
+   
+   
+-
+   
+     StaticLibrary
+   
+-   
+   
+   
+-
+   
+     
+       <_DATEValue>#define DATE "$([System.DateTime]::Now.ToString(`ddd MMM dd HH':'mm':'ss yyyy`))"
+@@ -56,25 +53,17 @@
+       <_PLATFORMValue Condition="$(Platform)=='Win32'">#define PLATFORM "VC-WIN32"
+       <_PLATFORMValue Condition="$(Platform)=='x64'">#define PLATFORM "VC-WIN64A"
+     
+-    
+-    
++    
++    
+   
+-
+   
+     
+   
+-
+   
+     
+       $(IntDir);%(AdditionalIncludeDirectories)
+     
+   
+-  
+   
+      setting to 1e-3" << endl;
+-                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << endl;
+-                  mindist = 1e-3;
+-               }
+-
+-               mesh.RestrictLocalHLine(line.p0, line.p1, mindist);
+-            }
+-         }
+-
+-         multithread.task = savetask;
+-
+-      }
+-
+-      // Philippose - 09/03/2009
+-      // Added the capability to load the mesh size from a 
+-      // file also for OpenCascade Geometry
+-      // Note: 
+-      // ** If the "uselocalh" option is ticked in 
+-      // the "mesh options...insider" menu, the mesh 
+-      // size will be further modified by the topology 
+-      // analysis routines.
+-      // ** To use the mesh size file as the sole source 
+-      // for defining the mesh size, uncheck the "uselocalh"
+-      // option.
+-      mesh.LoadLocalMeshSize (mparam.meshsizefilename);
+-   }
+-
+-
+-
+-  int OCCGenerateMesh (OCCGeometry & geom, Mesh *& mesh, MeshingParameters & mparam,
+-		       int perfstepsstart, int perfstepsend)
+-   {
+-      multithread.percent = 0;
+-
+-      if (perfstepsstart <= MESHCONST_ANALYSE)
+-      {
+-         delete mesh;
+-         mesh = new Mesh();
+-         mesh->geomtype = Mesh::GEOM_OCC;
+-
+-         OCCSetLocalMeshSize(geom,*mesh);
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_ANALYSE)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_MESHEDGES)
+-      {
+-         OCCFindEdges (geom, *mesh);
+-
+-         /*
+-         cout << "Removing redundant points" << endl;
+-
+-         int i, j;
+-         int np = mesh->GetNP();
+-         Array equalto;
+-
+-         equalto.SetSize (np);
+-         equalto = 0;
+-
+-         for (i = 1; i <= np; i++)
+-         {
+-         for (j = i+1; j <= np; j++)
+-         {
+-         if (!equalto[j-1] && (Dist2 (mesh->Point(i), mesh->Point(j)) < 1e-12))
+-         equalto[j-1] = i;
+-         }
+-         }
+-
+-         for (i = 1; i <= np; i++)
+-         if (equalto[i-1])
+-         {
+-         cout << "Point " << i << " is equal to Point " << equalto[i-1] << endl;
+-         for (j = 1; j <= mesh->GetNSeg(); j++)
+-         {
+-         Segment & seg = mesh->LineSegment(j);
+-         if (seg[0] == i) seg[0] = equalto[i-1];
+-         if (seg[1] == i) seg[1] = equalto[i-1];
+-         }
+-         }
+-
+-         cout << "Removing degenerated segments" << endl;
+-         for (j = 1; j <= mesh->GetNSeg(); j++)
+-         {
+-         Segment & seg = mesh->LineSegment(j);
+-         if (seg[0] == seg[1])
+-         {
+-         mesh->DeleteSegment(j);
+-         cout << "Deleting Segment " << j << endl;
+-         }
+-         }
+-
+-         mesh->Compress();
+-         */
+-
+-         /*
+-         for (int i = 1; i <= geom.fmap.Extent(); i++)
+-         {
+-         Handle(Geom_Surface) hf1 =
+-         BRep_Tool::Surface(TopoDS::Face(geom.fmap(i)));
+-         for (int j = i+1; j <= geom.fmap.Extent(); j++)
+-         {
+-         Handle(Geom_Surface) hf2 =
+-         BRep_Tool::Surface(TopoDS::Face(geom.fmap(j)));
+-         if (hf1 == hf2) cout << "face " << i << " and face " << j << " lie on same surface" << endl;
+-         }
+-         }
+-         */
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Edges meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_MESHEDGES)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_MESHSURFACE)
+-      {
+-         OCCMeshSurface (geom, *mesh, perfstepsend);
+-         if (multithread.terminate) return TCL_OK;
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Surfaces meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-
+-#ifdef STAT_STREAM
+-         (*statout) << mesh->GetNSeg() << " & "
+-            << mesh->GetNSE() << " & - &"
+-            << GetTime() << " & " << endl;
+-#endif
+-
+-         //      MeshQuality2d (*mesh);
+-         mesh->CalcSurfacesOfNode();
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_OPTSURFACE)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_MESHVOLUME)
+-      {
+-         multithread.task = "Volume meshing";
+-
+-         MESHING3_RESULT res = MeshVolume (mparam, *mesh);
+-
+-/*
+-         ofstream problemfile("occmesh.rep",ios_base::app);
+-
+-         problemfile << "VOLUMEMESHING" << endl << endl;
+-         if(res != MESHING3_OK)
+-            problemfile << "ERROR" << endl << endl;
+-         else
+-            problemfile << "OK" << endl
+-            << mesh->GetNE() << " elements" << endl << endl;
+-
+-         problemfile.close();
+-*/
+-
+-         if (res != MESHING3_OK) return TCL_ERROR;
+-
+-         if (multithread.terminate) return TCL_OK;
+-
+-         RemoveIllegalElements (*mesh);
+-         if (multithread.terminate) return TCL_OK;
+-
+-         MeshQuality3d (*mesh);
+-
+-#ifdef STAT_STREAM
+-         (*statout) << GetTime() << " & ";
+-#endif
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Volume meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_MESHVOLUME)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_OPTVOLUME)
+-      {
+-         multithread.task = "Volume optimization";
+-
+-         OptimizeVolume (mparam, *mesh);
+-         if (multithread.terminate) return TCL_OK;
+-
+-#ifdef STAT_STREAM
+-         (*statout) << GetTime() << " & "
+-            << mesh->GetNE() << " & "
+-            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << endl;
+-#endif
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Volume optimized" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-
+-         // cout << "Optimization complete" << endl;
+-
+-      }
+-
+-      (*testout) << "NP: " << mesh->GetNP() << endl;
+-      for (int i = 1; i <= mesh->GetNP(); i++)
+-         (*testout) << mesh->Point(i) << endl;
+-
+-      (*testout) << endl << "NSegments: " << mesh->GetNSeg() << endl;
+-      for (int i = 1; i <= mesh->GetNSeg(); i++)
+-         (*testout) << mesh->LineSegment(i) << endl;
+-
+-      return TCL_OK;
+-   }
+-}
+-
+-#endif
++#ifdef OCCGEOMETRY
++
++#include 
++#include 
++#include 
++
++
++namespace netgen
++{
++
++#include "occmeshsurf.hpp"
++
++#define TCL_OK 0
++#define TCL_ERROR 1
++
++#define DIVIDEEDGESECTIONS 1000
++#define IGNORECURVELENGTH 1e-4
++#define VSMALL 1e-10
++
++
++   DLL_HEADER bool merge_solids = 1;
++
++
++  // can you please explain what you intend to compute here (JS) !!!
++   double Line :: Dist (Line l)
++   {
++      Vec<3> n = p1-p0;
++      Vec<3> q = l.p1-l.p0;
++      double nq = n*q;
++
++      Point<3> p = p0 + 0.5*n;
++      double lambda = (p-l.p0)*n / (nq + VSMALL);
++
++      if (lambda >= 0 && lambda <= 1)
++      {
++         double d = (p-l.p0-lambda*q).Length();
++         //        if (d < 1e-3) d = 1e99;
++         return d;
++      }
++      else
++         return 1e99;
++   }
++
++
++
++   double Line :: Length ()
++   {
++      return (p1-p0).Length();
++   }
++
++
++
++   inline Point<3> occ2ng (const gp_Pnt & p)
++   {
++      return  Point<3> (p.X(), p.Y(), p.Z());
++   }
++
++
++
++   double ComputeH (double kappa)
++   {
++      double hret;
++      kappa *= mparam.curvaturesafety;
++
++      if (mparam.maxh * kappa < 1)
++         hret = mparam.maxh;
++      else
++         hret = 1 / (kappa + VSMALL);
++
++      if (mparam.maxh < hret)
++         hret = mparam.maxh;
++
++      return (hret);
++   }
++
++
++
++
++   void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
++                           BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
++   {
++      int ls = -1;
++
++      gp_Pnt pnt0,pnt1,pnt2;
++
++      prop->SetParameters (par0.X(), par0.Y());
++      pnt0 = prop->Value();
++
++      prop->SetParameters (par1.X(), par1.Y());
++      pnt1 = prop->Value();
++
++      prop->SetParameters (par2.X(), par2.Y());
++      pnt2 = prop->Value();
++
++      double aux;
++      double maxside = pnt0.Distance(pnt1);
++      ls = 2;
++      aux = pnt1.Distance(pnt2);
++      if(aux > maxside)
++      {
++         maxside = aux;
++         ls = 0;
++      }
++      aux = pnt2.Distance(pnt0);
++      if(aux > maxside)
++      {
++         maxside = aux;
++         ls = 1;
++      }
++
++
++
++      gp_Pnt2d parmid;
++
++      parmid.SetX( (par0.X()+par1.X()+par2.X()) / 3 );
++      parmid.SetY( (par0.Y()+par1.Y()+par2.Y()) / 3 );
++
++      if (depth%3 == 0)
++      {
++         double curvature = 0;
++
++         prop->SetParameters (parmid.X(), parmid.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature()));
++
++         prop->SetParameters (par0.X(), par0.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(curvature,max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature())));
++
++         prop->SetParameters (par1.X(), par1.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(curvature,max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature())));
++
++         prop->SetParameters (par2.X(), par2.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(curvature,max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature())));
++
++         //(*testout) << "curvature " << curvature << std::endl;
++
++         if (curvature < 1e-3)
++         {
++            //(*testout) << "curvature too small (" << curvature << ")!" << std::endl;
++            return;
++            // return war bis 10.2.05 auskommentiert
++         }
++
++
++
++         h = ComputeH (curvature+1e-10);
++
++         if(h < 1e-4*maxside)
++            return;
++
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
++      }
++
++      if (h < maxside && depth < 10)
++      {
++         //std::cout << "\r h " << h << flush;
++         gp_Pnt2d pm;
++
++         //std::cout << "h " << h << " maxside " << maxside << " depth " << depth << std::endl;
++         //std::cout << "par0 " << par0.X() << " " << par0.Y()
++         //<< " par1 " << par1.X() << " " << par1.Y()
++         //   << " par2 " << par2.X() << " " << par2.Y()<< std::endl;
++
++         if(ls == 0)
++         {
++            pm.SetX(0.5*(par1.X()+par2.X())); pm.SetY(0.5*(par1.Y()+par2.Y()));
++            RestrictHTriangle(pm, par2, par0, prop, mesh, depth+1, h);
++            RestrictHTriangle(pm, par0, par1, prop, mesh, depth+1, h);
++         }
++         else if(ls == 1)
++         {
++            pm.SetX(0.5*(par0.X()+par2.X())); pm.SetY(0.5*(par0.Y()+par2.Y()));
++            RestrictHTriangle(pm, par1, par2, prop, mesh, depth+1, h);
++            RestrictHTriangle(pm, par0, par1, prop, mesh, depth+1, h);
++         }
++         else if(ls == 2)
++         {
++            pm.SetX(0.5*(par0.X()+par1.X())); pm.SetY(0.5*(par0.Y()+par1.Y()));
++            RestrictHTriangle(pm, par1, par2, prop, mesh, depth+1, h);
++            RestrictHTriangle(pm, par2, par0, prop, mesh, depth+1, h);
++         }
++
++      }
++      else
++      {
++         gp_Pnt pnt;
++         Point3d p3d;
++
++         prop->SetParameters (parmid.X(), parmid.Y());
++         pnt = prop->Value();
++         p3d = Point3d(pnt.X(), pnt.Y(), pnt.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         p3d = Point3d(pnt0.X(), pnt0.Y(), pnt0.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         p3d = Point3d(pnt1.X(), pnt1.Y(), pnt1.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         p3d = Point3d(pnt2.X(), pnt2.Y(), pnt2.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << std::endl;
++
++      }
++   }
++
++
++
++   void DivideEdge (TopoDS_Edge & edge, Array & ps,
++                    Array & params, Mesh & mesh)
++   {
++      double s0, s1;
++      double maxh = mparam.maxh;
++      int nsubedges = 1;
++      gp_Pnt pnt, oldpnt;
++      double svalue[DIVIDEEDGESECTIONS];
++
++      GProp_GProps system;
++      BRepGProp::LinearProperties(edge, system);
++      double L = system.Mass();
++
++      Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
++
++      double hvalue[DIVIDEEDGESECTIONS+1];
++      hvalue[0] = 0;
++      pnt = c->Value(s0);
++
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
++
++      int tmpVal = (int)(DIVIDEEDGESECTIONS);
++
++      for (int i = 1; i <= tmpVal; i++)
++      {
++         oldpnt = pnt;
++         pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per /DIVIDEEDGESECTIONS
++         hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
++            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++                pnt.Distance(oldpnt));
++
++         //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
++         //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << std::endl;
++
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
++      }
++
++      //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
++      nsubedges = max (1, int(floor(hvalue[DIVIDEEDGESECTIONS]+0.5)));
++
++      ps.SetSize(nsubedges-1);
++      params.SetSize(nsubedges+1);
++
++      int i = 1;
++      int i1 = 0;
++      do
++      {
++         if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
++         {
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            pnt = c->Value(params[i]);
++            ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
++            i++;
++         }
++         i1++;
++         if (i1 > DIVIDEEDGESECTIONS)
++         {
++            nsubedges = i;
++            ps.SetSize(nsubedges-1);
++            params.SetSize(nsubedges+1);
++            std::cout << "divide edge: local h too small" << std::endl;
++         }
++      } while (i < nsubedges);
++
++      params[0] = s0;
++      params[nsubedges] = s1;
++
++      if (params[nsubedges] <= params[nsubedges-1])
++      {
++         std::cout << "CORRECTED" << std::endl;
++         ps.SetSize (nsubedges-2);
++         params.SetSize (nsubedges);
++         params[nsubedges] = s1;
++      }
++   }
++
++
++
++
++   void OCCFindEdges (OCCGeometry & geom, Mesh & mesh)
++   {
++      const char * savetask = multithread.task;
++      multithread.task = "Edge meshing";
++
++      (*testout) << "edge meshing" << std::endl;
++
++      int nvertices = geom.vmap.Extent();
++      int nedges = geom.emap.Extent();
++
++      (*testout) << "nvertices = " << nvertices << std::endl;
++      (*testout) << "nedges = " << nedges << std::endl;
++
++      double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
++
++      for (int i = 1; i <= nvertices; i++)
++      {
++         gp_Pnt pnt = BRep_Tool::Pnt (TopoDS::Vertex(geom.vmap(i)));
++         MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++
++         bool exists = 0;
++         if (merge_solids)
++            for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
++               {
++                  exists = 1;
++                  break;
++               }
++
++               if (!exists)
++                  mesh.AddPoint (mp);
++      }
++
++      (*testout) << "different vertices = " << mesh.GetNP() << std::endl;
++
++
++      int first_ep = mesh.GetNP()+1;
++
++      Array face2solid[2];
++      for (int i = 0; i<2; i++)
++      {
++         face2solid[i].SetSize (geom.fmap.Extent());
++         face2solid[i] = 0;
++      }
++
++      int solidnr = 0;
++      for (TopExp_Explorer exp0(geom.shape, TopAbs_SOLID); exp0.More(); exp0.Next())
++      {
++         solidnr++;
++         for (TopExp_Explorer exp1(exp0.Current(), TopAbs_FACE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Face face = TopoDS::Face(exp1.Current());
++            int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
++
++            if (face2solid[0][facenr-1] == 0)
++               face2solid[0][facenr-1] = solidnr;
++            else
++               face2solid[1][facenr-1] = solidnr;
++         }
++      }
++
++
++      int total = 0;
++      for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
++         for (TopExp_Explorer exp2(geom.fmap(i3), TopAbs_WIRE); exp2.More(); exp2.Next())
++            for (TopExp_Explorer exp3(exp2.Current(), TopAbs_EDGE); exp3.More(); exp3.Next())
++               total++;
++
++
++      int facenr = 0;
++      int edgenr = 0;
++
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
++
++      (*testout) << "faces = " << geom.fmap.Extent() << std::endl;
++      int curr = 0;
++
++      for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
++      {
++         TopoDS_Face face = TopoDS::Face(geom.fmap(i3));
++         facenr = geom.fmap.FindIndex (face);       // sollte doch immer == i3 sein ??? JS
++
++         int solidnr0 = face2solid[0][i3-1];
++         int solidnr1 = face2solid[1][i3-1];
++
++         /* auskommentiert am 3.3.05 von robert
++         for (exp2.Init (geom.somap(solidnr0), TopAbs_FACE); exp2.More(); exp2.Next())
++         {
++         TopoDS_Face face2 = TopoDS::Face(exp2.Current());
++         if (geom.fmap.FindIndex(face2) == facenr)
++         {
++         //		      if (face.Orientation() != face2.Orientation()) swap (solidnr0, solidnr1);
++         }
++         }
++         */
++
++         mesh.AddFaceDescriptor (FaceDescriptor(facenr, solidnr0, solidnr1, 0));
++
++         // Philippose - 06/07/2009
++         // Add the face colour to the mesh data
++         Quantity_Color face_colour;
++
++         if(!(geom.face_colours.IsNull())
++            && (geom.face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour)))
++         {
++            mesh.GetFaceDescriptor(facenr).SetSurfColour(Vec3d(face_colour.Red(),face_colour.Green(),face_colour.Blue()));
++         }
++         else
++         {
++            mesh.GetFaceDescriptor(facenr).SetSurfColour(Vec3d(0.0,1.0,0.0));
++         }
++         // ACHTUNG! STIMMT NICHT ALLGEMEIN (RG)
++
++
++         Handle(Geom_Surface) occface = BRep_Tool::Surface(face);
++
++         for (TopExp_Explorer exp2 (face, TopAbs_WIRE); exp2.More(); exp2.Next())
++         {
++            TopoDS_Shape wire = exp2.Current();
++
++            for (TopExp_Explorer exp3 (wire, TopAbs_EDGE); exp3.More(); exp3.Next())
++            {
++               curr++;
++               (*testout) << "edge nr " << curr << std::endl;
++
++               multithread.percent = 100 * curr / double (total);
++               if (multithread.terminate) return;
++
++               TopoDS_Edge edge = TopoDS::Edge (exp3.Current());
++               if (BRep_Tool::Degenerated(edge))
++               {
++                  //(*testout) << "ignoring degenerated edge" << std::endl;
++                  continue;
++               }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
++
++               if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
++                  geom.vmap.FindIndex(TopExp::LastVertex (edge)))
++               {
++                  GProp_GProps system;
++                  BRepGProp::LinearProperties(edge, system);
++
++                  if (system.Mass() < eps)
++                  {
++                     std::cout << "ignoring edge " << geom.emap.FindIndex (edge)
++                        << ". closed edge with length < " << eps << std::endl;
++                     continue;
++                  }
++               }
++
++
++               Handle(Geom2d_Curve) cof;
++               double s0, s1;
++               cof = BRep_Tool::CurveOnSurface (edge, face, s0, s1);
++
++               int geomedgenr = geom.emap.FindIndex(edge);
++
++               Array  mp;
++               Array  params;
++
++               DivideEdge (edge, mp, params, mesh);
++ 
++               Array  pnums;
++               pnums.SetSize (mp.Size()+2);
++
++               if (!merge_solids)
++               {
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
++               }
++               else
++               {
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
++
++                  pnums[0] = -1;
++                  pnums.Last() = -1;
++                  for (PointIndex pi = 1; pi < first_ep; pi++)
++                  {
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
++                  }
++               }
++
++
++               for (int i = 1; i <= mp.Size(); i++)
++               {
++                  bool exists = 0;
++                  int j;
++                  for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
++                     if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
++                     {
++                        exists = 1;
++                        break;
++                     }
++                  }
++
++                     if (exists)
++                        pnums[i] = j;
++                     else
++                     {
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
++                        (*testout) << "add meshpoint " << mp[i-1] << std::endl;
++                        pnums[i] = mesh.GetNP();
++                     }
++               }
++               (*testout) << "NP = " << mesh.GetNP() << std::endl;
++
++               //(*testout) << pnums[pnums.Size()-1] << std::endl;
++
++               for (int i = 1; i <= mp.Size()+1; i++)
++               {
++                  edgenr++;
++                  Segment seg;
++
++                  seg[0] = pnums[i-1];
++                  seg[1] = pnums[i];
++                  seg.edgenr = edgenr;
++                  seg.si = facenr;
++                  seg.epgeominfo[0].dist = params[i-1];
++                  seg.epgeominfo[1].dist = params[i];
++                  seg.epgeominfo[0].edgenr = geomedgenr;
++                  seg.epgeominfo[1].edgenr = geomedgenr;
++
++                  gp_Pnt2d p2d;
++                  p2d = cof->Value(params[i-1]);
++                  //			if (i == 1) p2d = cof->Value(s0);
++                  seg.epgeominfo[0].u = p2d.X();
++                  seg.epgeominfo[0].v = p2d.Y();
++                  p2d = cof->Value(params[i]);
++                  //			if (i == mp.Size()+1) p2d = cof -> Value(s1);
++                  seg.epgeominfo[1].u = p2d.X();
++                  seg.epgeominfo[1].v = p2d.Y();
++
++                  /*
++                  if (occface->IsUPeriodic())
++                  {
++                  std::cout << "U Periodic" << std::endl;
++                  if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
++                  fabs(seg.epgeominfo[1].u-
++                  (seg.epgeominfo[0].u-occface->UPeriod())))
++                  seg.epgeominfo[0].u = p2d.X()+occface->UPeriod();
++
++                  if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
++                  fabs(seg.epgeominfo[1].u-
++                  (seg.epgeominfo[0].u+occface->UPeriod())))
++                  seg.epgeominfo[0].u = p2d.X()-occface->UPeriod();
++                  }
++
++                  if (occface->IsVPeriodic())
++                  {
++                  std::cout << "V Periodic" << std::endl;
++                  if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
++                  fabs(seg.epgeominfo[1].v-
++                  (seg.epgeominfo[0].v-occface->VPeriod())))
++                  seg.epgeominfo[0].v = p2d.Y()+occface->VPeriod();
++
++                  if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
++                  fabs(seg.epgeominfo[1].v-
++                  (seg.epgeominfo[0].v+occface->VPeriod())))
++                  seg.epgeominfo[0].v = p2d.Y()-occface->VPeriod();
++                  }
++                  */
++
++                  if (edge.Orientation() == TopAbs_REVERSED)
++                  {
++                     swap (seg[0], seg[1]);
++                     swap (seg.epgeominfo[0].dist, seg.epgeominfo[1].dist);
++                     swap (seg.epgeominfo[0].u, seg.epgeominfo[1].u);
++                     swap (seg.epgeominfo[0].v, seg.epgeominfo[1].v);
++                  }
++
++                  mesh.AddSegment (seg);
++
++                  //edgesegments[geomedgenr-1]->Append(mesh.GetNSeg());
++
++               }
++            }
++         }
++      }
++
++      //	for(i=1; i<=mesh.GetNSeg(); i++)
++      //		(*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
++      //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << std::endl;
++      //	exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
++
++      mesh.CalcSurfacesOfNode();
++      multithread.task = savetask;
++   }
++
++
++
++
++   void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend)
++   {
++      int i, j, k;
++      int changed;
++
++      const char * savetask = multithread.task;
++      multithread.task = "Surface meshing";
++
++      geom.facemeshstatus = 0;
++
++      int noldp = mesh.GetNP();
++
++      double starttime = GetTime();
++
++      Array glob2loc(noldp);
++
++      //int projecttype = PARAMETERSPACE;
++
++      int projecttype = PARAMETERSPACE;
++
++      int notrys = 1;
++
++      int surfmesherror = 0;
++
++      for (k = 1; k <= mesh.GetNFD(); k++)
++      {
++         if(1==0 && !geom.fvispar[k-1].IsDrawable())
++         {
++            (*testout) << "ignoring face " << k << std::endl;
++            std::cout << "ignoring face " << k << std::endl;
++            continue;
++         }
++
++         (*testout) << "mesh face " << k << std::endl;
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
++         geom.facemeshstatus[k-1] = -1;
++
++
++         /*
++         if (k != 42)
++         {
++         std::cout << "skipped" << std::endl;
++         continue;
++         }
++         */
++
++
++         FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
++
++         int oldnf = mesh.GetNSE();
++
++         Box<3> bb = geom.GetBoundingBox();
++
++         //      int projecttype = PLANESPACE;
++
++         Meshing2OCCSurfaces meshing(TopoDS::Face(geom.fmap(k)), bb, projecttype);
++
++         if (meshing.GetProjectionType() == PLANESPACE)
++            PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (plane space projection)");
++         else
++            PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (parameter space projection)");
++
++         if (surfmesherror)
++            std::cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << std::endl;
++
++         //      Meshing2OCCSurfaces meshing(f2, bb);
++         meshing.SetStartTime (starttime);
++
++         //(*testout) << "Face " << k << std::endl << std::endl;
++
++
++         if (meshing.GetProjectionType() == PLANESPACE)
++         {
++            int cntp = 0;
++            glob2loc = 0;
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++            {
++               Segment & seg = mesh.LineSegment(i);
++               if (seg.si == k)
++               {
++                  for (j = 1; j <= 2; j++)
++                  {
++                     int pi = (j == 1) ? seg[0] : seg[1];
++                     if (!glob2loc.Get(pi))
++                     {
++                        meshing.AddPoint (mesh.Point(pi), pi);
++                        cntp++;
++                        glob2loc.Elem(pi) = cntp;
++                     }
++                  }
++               }
++            }
++
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++            {
++               Segment & seg = mesh.LineSegment(i);
++               if (seg.si == k)
++               {
++                  PointGeomInfo gi0, gi1;
++                  gi0.trignum = gi1.trignum = k;
++                  gi0.u = seg.epgeominfo[0].u;
++                  gi0.v = seg.epgeominfo[0].v;
++                  gi1.u = seg.epgeominfo[1].u;
++                  gi1.v = seg.epgeominfo[1].v;
++
++                  meshing.AddBoundaryElement (glob2loc.Get(seg[0]), glob2loc.Get(seg[1]), gi0, gi1);
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
++               }
++            }
++         }
++         else
++         {
++            int cntp = 0;
++
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++               if (mesh.LineSegment(i).si == k)
++                  cntp+=2;
++
++
++            Array< PointGeomInfo > gis;
++
++            gis.SetAllocSize (cntp);
++            gis.SetSize (0);
++
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++            {
++               Segment & seg = mesh.LineSegment(i);
++               if (seg.si == k)
++               {
++                  PointGeomInfo gi0, gi1;
++                  gi0.trignum = gi1.trignum = k;
++                  gi0.u = seg.epgeominfo[0].u;
++                  gi0.v = seg.epgeominfo[0].v;
++                  gi1.u = seg.epgeominfo[1].u;
++                  gi1.v = seg.epgeominfo[1].v;
++
++                  int locpnum[2] = {0, 0};
++
++                  for (j = 0; j < 2; j++)
++                  {
++                     PointGeomInfo gi = (j == 0) ? gi0 : gi1;
++
++                     int l;
++                     for (l = 0; l < gis.Size() && locpnum[j] == 0; l++)
++                     {
++                        double dist = sqr (gis[l].u-gi.u)+sqr(gis[l].v-gi.v);
++
++                        if (dist < 1e-10)
++                           locpnum[j] = l+1;
++                     }
++
++                     if (locpnum[j] == 0)
++                     {
++                        int pi = (j == 0) ? seg[0] : seg[1];
++                        meshing.AddPoint (mesh.Point(pi), pi);
++
++                        gis.SetSize (gis.Size()+1);
++                        gis[l] = gi;
++                        locpnum[j] = l+1;
++                     }
++                  }
++
++                  meshing.AddBoundaryElement (locpnum[0], locpnum[1], gi0, gi1);
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
++
++               }
++            }
++         }
++
++
++
++
++
++         // Philippose - 15/01/2009
++         double maxh = geom.face_maxh[k-1];
++         //double maxh = mparam.maxh;
++         mparam.checkoverlap = 0;
++         //      int noldpoints = mesh->GetNP();
++         int noldsurfel = mesh.GetNSE();
++
++         GProp_GProps sprops;
++         BRepGProp::SurfaceProperties(TopoDS::Face(geom.fmap(k)),sprops);
++         meshing.SetMaxArea(2.*sprops.Mass());
++
++         MESHING2_RESULT res;
++
++         try {
++	   res = meshing.GenerateMesh (mesh, mparam, maxh, k);
++         }
++
++         catch (SingularMatrixException)
++         {
++            (*myerr) << "Singular Matrix" << std::endl;
++            res = MESHING2_GIVEUP;
++         }
++
++         catch (UVBoundsException)
++         {
++            (*myerr) << "UV bounds exceeded" << std::endl;
++            res = MESHING2_GIVEUP;
++         }
++
++         projecttype = PARAMETERSPACE;
++
++         if (res != MESHING2_OK)
++         {
++            if (notrys == 1)
++            {
++               for (int i = noldsurfel+1; i <= mesh.GetNSE(); i++)
++                  mesh.DeleteSurfaceElement (i);
++
++               mesh.Compress();
++
++               std::cout << "retry Surface " << k << std::endl;
++
++               k--;
++               projecttype*=-1;
++               notrys++;
++               continue;
++            }
++            else
++            {
++               geom.facemeshstatus[k-1] = -1;
++               PrintError ("Problem in Surface mesh generation");
++               surfmesherror++;
++               //	      throw NgException ("Problem in Surface mesh generation");
++            }
++         }
++         else
++         {
++            geom.facemeshstatus[k-1] = 1;
++         }
++
++         notrys = 1;
++
++         for (i = oldnf+1; i <= mesh.GetNSE(); i++)
++            mesh.SurfaceElement(i).SetIndex (k);
++
++      }
++
++//      ofstream problemfile("occmesh.rep");
++
++//      problemfile << "SURFACEMESHING" << std::endl << std::endl;
++
++      if (surfmesherror)
++      {
++         std::cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << std::endl;
++         std::cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << std::endl;
++         for (int i = 1; i <= geom.fmap.Extent(); i++)
++            if (geom.facemeshstatus[i-1] == -1)
++            {
++               std::cout << "Face " << i << std::endl;
++//               problemfile << "problem with face " << i << std::endl;
++//               problemfile << "vertices: " << std::endl;
++               TopExp_Explorer exp0,exp1,exp2;
++               for ( exp0.Init(TopoDS::Face (geom.fmap(i)), TopAbs_WIRE); exp0.More(); exp0.Next() )
++               {
++                  TopoDS_Wire wire = TopoDS::Wire(exp0.Current());
++                  for ( exp1.Init(wire,TopAbs_EDGE); exp1.More(); exp1.Next() )
++                  {
++                     TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++                     for ( exp2.Init(edge,TopAbs_VERTEX); exp2.More(); exp2.Next() )
++                     {
++                        TopoDS_Vertex vertex = TopoDS::Vertex(exp2.Current());
++                        gp_Pnt point = BRep_Tool::Pnt(vertex);
++//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << std::endl;
++                     }
++                  }
++               }
++//               problemfile << std::endl;
++
++            }
++            std::cout << std::endl << std::endl;
++            std::cout << "for more information open IGES/STEP Topology Explorer" << std::endl;
++//            problemfile.close();
++            throw NgException ("Problem in Surface mesh generation");
++      }
++      else
++      {
++//         problemfile << "OK" << std::endl << std::endl;
++//         problemfile.close();
++      }
++
++
++
++
++      if (multithread.terminate || perfstepsend < MESHCONST_OPTSURFACE)
++         return;
++
++      multithread.task = "Optimizing surface";
++
++      static int timer_opt2d = NgProfiler::CreateTimer ("Optimization 2D");
++      NgProfiler::StartTimer (timer_opt2d);
++
++      for (k = 1; k <= mesh.GetNFD(); k++)
++      {
++         //      if (k != 42) continue;
++         //      if (k != 36) continue;
++
++         //      (*testout) << "optimize face " << k << std::endl;
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
++
++         FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
++
++         PrintMessage (1, "Optimize Surface ", k);
++         for (i = 1; i <= mparam.optsteps2d; i++)
++         {
++            //	  (*testout) << "optstep " << i << std::endl;
++            if (multithread.terminate) return;
++
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetWriteStatus (0);
++
++               //	    (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << std::endl;
++               meshopt.EdgeSwapping (mesh, (i > mparam.optsteps2d/2));
++            }
++
++            if (multithread.terminate) return;
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               meshopt.SetWriteStatus (0);
++
++               //	    (*testout) << "ImproveMesh (mesh)" << std::endl;
++               meshopt.ImproveMesh (mesh, mparam);
++            }
++
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               meshopt.SetWriteStatus (0);
++
++               //	    (*testout) << "CombineImprove (mesh)" << std::endl;
++               meshopt.CombineImprove (mesh);
++            }
++
++            if (multithread.terminate) return;
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               meshopt.SetWriteStatus (0);
++
++               //	    (*testout) << "ImproveMesh (mesh)" << std::endl;
++               meshopt.ImproveMesh (mesh, mparam);
++            }
++         }
++
++      }
++
++
++      mesh.CalcSurfacesOfNode();
++      mesh.Compress();
++
++      NgProfiler::StopTimer (timer_opt2d);
++
++      multithread.task = savetask;
++   }
++
++
++
++   void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh)
++   {
++      mesh.SetGlobalH (mparam.maxh);
++      mesh.SetMinimalH (mparam.minh);
++
++      Array maxhdom;
++      maxhdom.SetSize (geom.NrSolids());
++      maxhdom = mparam.maxh;
++
++      mesh.SetMaxHDomain (maxhdom);
++
++      Box<3> bb = geom.GetBoundingBox();
++      bb.Increase (bb.Diam()/10);
++
++      mesh.SetLocalH (bb.PMin(), bb.PMax(), 0.5);
++
++      if (mparam.uselocalh)
++      {
++         const char * savetask = multithread.task;
++         multithread.percent = 0;
++
++         mesh.SetLocalH (bb.PMin(), bb.PMax(), mparam.grading);
++
++         int nedges = geom.emap.Extent();
++
++		 double mincurvelength = IGNORECURVELENGTH;
++         double maxedgelen = 0;
++         double minedgelen = 1e99;
++
++		 if(occparam.resthminedgelenenable) 
++		 {
++			mincurvelength = occparam.resthminedgelen;
++			if(mincurvelength < IGNORECURVELENGTH) mincurvelength = IGNORECURVELENGTH;
++		 }
++
++         multithread.task = "Setting local mesh size (elements per edge)";
++
++         // setting elements per edge
++
++         for (int i = 1; i <= nedges && !multithread.terminate; i++)
++         {
++            TopoDS_Edge e = TopoDS::Edge (geom.emap(i));
++            multithread.percent = 100 * (i-1)/double(nedges);
++            if (BRep_Tool::Degenerated(e)) continue;
++
++            GProp_GProps system;
++            BRepGProp::LinearProperties(e, system);
++            double len = system.Mass();
++
++            if (len < mincurvelength)
++            {
++               (*testout) << "ignored" << std::endl;
++               continue;
++            }
++
++            double localh = len/mparam.segmentsperedge;
++            double s0, s1;
++
++            // Philippose - 23/01/2009
++            // Find all the parent faces of a given edge
++            // and limit the mesh size of the edge based on the
++            // mesh size limit of the face
++            TopTools_IndexedDataMapOfShapeListOfShape edge_face_map;
++            edge_face_map.Clear();
++
++            TopExp::MapShapesAndAncestors(geom.shape, TopAbs_EDGE, TopAbs_FACE, edge_face_map);
++            const TopTools_ListOfShape& parent_faces = edge_face_map.FindFromKey(e);
++
++            TopTools_ListIteratorOfListOfShape parent_face_list;
++
++            for(parent_face_list.Initialize(parent_faces); parent_face_list.More(); parent_face_list.Next())
++            {
++               TopoDS_Face parent_face = TopoDS::Face(parent_face_list.Value());
++
++               int face_index = geom.fmap.FindIndex(parent_face);
++
++               if(face_index >= 1) localh = min(localh,geom.face_maxh[face_index - 1]);
++            }
++
++            Handle(Geom_Curve) c = BRep_Tool::Curve(e, s0, s1);
++
++            maxedgelen = max (maxedgelen, len);
++            minedgelen = min (minedgelen, len);
++
++            // Philippose - 23/01/2009
++            // Modified the calculation of maxj, because the
++            // method used so far always results in maxj = 2,
++            // which causes the localh to be set only at the
++            // starting, mid and end of the edge.
++            // Old Algorithm:
++            // int maxj = 2 * (int) ceil (localh/len);
++            int maxj = max((int) ceil(len/localh), 2);
++
++            for (int j = 0; j <= maxj; j++)
++            {
++               gp_Pnt pnt = c->Value (s0+double(j)/maxj*(s1-s0));
++               mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), localh);
++            }
++         }
++
++         multithread.task = "Setting local mesh size (edge curvature)";
++
++         // setting edge curvature
++
++         int nsections = 20;
++
++         for (int i = 1; i <= nedges && !multithread.terminate; i++)
++         {
++            double maxcur = 0;
++            multithread.percent = 100 * (i-1)/double(nedges);
++            TopoDS_Edge edge = TopoDS::Edge (geom.emap(i));
++            if (BRep_Tool::Degenerated(edge)) continue;
++            double s0, s1;
++            Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
++            BRepAdaptor_Curve brepc(edge);
++            BRepLProp_CLProps prop(brepc, 2, 1e-5);
++
++            for (int j = 1; j <= nsections; j++)
++            {
++               double s = s0 + j/(double) nsections * (s1-s0);
++               prop.SetParameter (s);
++               double curvature = prop.Curvature();
++               if(curvature> maxcur) maxcur = curvature;
++
++               if (curvature >= 1e99)
++                  continue;
++
++               gp_Pnt pnt = c->Value (s);
++
++               mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), ComputeH (fabs(curvature)));
++            }
++            // (*testout) << "edge " << i << " max. curvature: " << maxcur << std::endl;
++         }
++
++         multithread.task = "Setting local mesh size (face curvature)";
++
++         // setting face curvature
++
++         int nfaces = geom.fmap.Extent();
++
++         for (int i = 1; i <= nfaces && !multithread.terminate; i++)
++         {
++            multithread.percent = 100 * (i-1)/double(nfaces);
++            TopoDS_Face face = TopoDS::Face(geom.fmap(i));
++            TopLoc_Location loc;
++            Handle(Geom_Surface) surf = BRep_Tool::Surface (face);
++            Handle(Poly_Triangulation) triangulation = BRep_Tool::Triangulation (face, loc);
++
++            if (triangulation.IsNull()) continue;
++
++            BRepAdaptor_Surface sf(face, Standard_True);
++            BRepLProp_SLProps prop(sf, 2, 1e-5);
++
++            int ntriangles = triangulation -> NbTriangles();
++            for (int j = 1; j <= ntriangles; j++)
++            {
++               gp_Pnt p[3];
++               gp_Pnt2d par[3];
++
++               for (int k = 1; k <=3; k++)
++               {
++                  int n = triangulation->Triangles()(j)(k);
++                  p[k-1] = triangulation->Nodes()(n).Transformed(loc);
++                  par[k-1] = triangulation->UVNodes()(n);
++               }
++
++               //double maxside = 0;
++               //maxside = max (maxside, p[0].Distance(p[1]));
++               //maxside = max (maxside, p[0].Distance(p[2]));
++               //maxside = max (maxside, p[1].Distance(p[2]));
++               //std::cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
++
++               RestrictHTriangle (par[0], par[1], par[2], &prop, mesh, 0);
++               //std::cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
++            }
++         }
++
++         // setting close edges
++
++         if (occparam.resthcloseedgeenable)
++         {
++            multithread.task = "Setting local mesh size (close edges)";
++
++            int sections = 100;
++
++            Array lines(sections*nedges);
++
++            Box3dTree* searchtree =
++               new Box3dTree (bb.PMin(), bb.PMax());
++
++            int nlines = 0;
++            for (int i = 1; i <= nedges && !multithread.terminate; i++)
++            {
++               TopoDS_Edge edge = TopoDS::Edge (geom.emap(i));
++               if (BRep_Tool::Degenerated(edge)) continue;
++
++               double s0, s1;
++               Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
++               BRepAdaptor_Curve brepc(edge);
++               BRepLProp_CLProps prop(brepc, 1, 1e-5);
++               prop.SetParameter (s0);
++
++               gp_Vec d0 = prop.D1().Normalized();
++               double s_start = s0;
++               int count = 0;
++               for (int j = 1; j <= sections; j++)
++               {
++                  double s = s0 + (s1-s0)*(double)j/(double)sections;
++                  prop.SetParameter (s);
++                  gp_Vec d1 = prop.D1().Normalized();
++                  double cosalpha = fabs(d0*d1);
++                  if ((j == sections) || (cosalpha < cos(10.0/180.0*M_PI)))
++                  {
++                     count++;
++                     gp_Pnt p0 = c->Value (s_start);
++                     gp_Pnt p1 = c->Value (s);
++                     lines[nlines].p0 = Point<3> (p0.X(), p0.Y(), p0.Z());
++                     lines[nlines].p1 = Point<3> (p1.X(), p1.Y(), p1.Z());
++
++                     Box3d box;
++                     box.SetPoint (Point3d(lines[nlines].p0));
++                     box.AddPoint (Point3d(lines[nlines].p1));
++
++                     searchtree->Insert (box.PMin(), box.PMax(), nlines+1);
++                     nlines++;
++
++                     s_start = s;
++                     d0 = d1;
++                  }
++               }
++            }
++
++            Array linenums;
++
++            for (int i = 0; i < nlines; i++)
++            {
++               multithread.percent = (100*i)/double(nlines);
++               Line & line = lines[i];
++
++               Box3d box;
++               box.SetPoint (Point3d(line.p0));
++               box.AddPoint (Point3d(line.p1));
++               double maxhline = max (mesh.GetH(box.PMin()),
++                  mesh.GetH(box.PMax()));
++               box.Increase(maxhline);
++
++               double mindist = 1e99;
++               linenums.SetSize(0);
++               searchtree->GetIntersecting(box.PMin(),box.PMax(),linenums);
++
++               for (int j = 0; j < linenums.Size(); j++)
++               {
++                  int num = linenums[j]-1;
++                  if (i == num) continue;
++                  if ((line.p0-lines[num].p0).Length2() < 1e-15) continue;
++                  if ((line.p0-lines[num].p1).Length2() < 1e-15) continue;
++                  if ((line.p1-lines[num].p0).Length2() < 1e-15) continue;
++                  if ((line.p1-lines[num].p1).Length2() < 1e-15) continue;
++                  mindist = min (mindist, line.Dist(lines[num]));
++               }
++
++               mindist /= (occparam.resthcloseedgefac + VSMALL);
++
++               if (mindist < 1e-3)
++               {
++                  (*testout) << "extremely small local h: " << mindist
++                     << " --> setting to 1e-3" << std::endl;
++                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << std::endl;
++                  mindist = 1e-3;
++               }
++
++               mesh.RestrictLocalHLine(line.p0, line.p1, mindist);
++            }
++         }
++
++         multithread.task = savetask;
++
++      }
++
++      // Philippose - 09/03/2009
++      // Added the capability to load the mesh size from a 
++      // file also for OpenCascade Geometry
++      // Note: 
++      // ** If the "uselocalh" option is ticked in 
++      // the "mesh options...insider" menu, the mesh 
++      // size will be further modified by the topology 
++      // analysis routines.
++      // ** To use the mesh size file as the sole source 
++      // for defining the mesh size, uncheck the "uselocalh"
++      // option.
++      mesh.LoadLocalMeshSize (mparam.meshsizefilename);
++   }
++
++
++
++  int OCCGenerateMesh (OCCGeometry & geom, Mesh *& mesh, MeshingParameters & mparam,
++		       int perfstepsstart, int perfstepsend)
++   {
++      multithread.percent = 0;
++
++      if (perfstepsstart <= MESHCONST_ANALYSE)
++      {
++         delete mesh;
++         mesh = new Mesh();
++         mesh->geomtype = Mesh::GEOM_OCC;
++
++         OCCSetLocalMeshSize(geom,*mesh);
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_ANALYSE)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_MESHEDGES)
++      {
++         OCCFindEdges (geom, *mesh);
++
++         /*
++         std::cout << "Removing redundant points" << std::endl;
++
++         int i, j;
++         int np = mesh->GetNP();
++         Array equalto;
++
++         equalto.SetSize (np);
++         equalto = 0;
++
++         for (i = 1; i <= np; i++)
++         {
++         for (j = i+1; j <= np; j++)
++         {
++         if (!equalto[j-1] && (Dist2 (mesh->Point(i), mesh->Point(j)) < 1e-12))
++         equalto[j-1] = i;
++         }
++         }
++
++         for (i = 1; i <= np; i++)
++         if (equalto[i-1])
++         {
++         std::cout << "Point " << i << " is equal to Point " << equalto[i-1] << std::endl;
++         for (j = 1; j <= mesh->GetNSeg(); j++)
++         {
++         Segment & seg = mesh->LineSegment(j);
++         if (seg[0] == i) seg[0] = equalto[i-1];
++         if (seg[1] == i) seg[1] = equalto[i-1];
++         }
++         }
++
++         std::cout << "Removing degenerated segments" << std::endl;
++         for (j = 1; j <= mesh->GetNSeg(); j++)
++         {
++         Segment & seg = mesh->LineSegment(j);
++         if (seg[0] == seg[1])
++         {
++         mesh->DeleteSegment(j);
++         std::cout << "Deleting Segment " << j << std::endl;
++         }
++         }
++
++         mesh->Compress();
++         */
++
++         /*
++         for (int i = 1; i <= geom.fmap.Extent(); i++)
++         {
++         Handle(Geom_Surface) hf1 =
++         BRep_Tool::Surface(TopoDS::Face(geom.fmap(i)));
++         for (int j = i+1; j <= geom.fmap.Extent(); j++)
++         {
++         Handle(Geom_Surface) hf2 =
++         BRep_Tool::Surface(TopoDS::Face(geom.fmap(j)));
++         if (hf1 == hf2) std::cout << "face " << i << " and face " << j << " lie on same surface" << std::endl;
++         }
++         }
++         */
++
++#ifdef LOG_STREAM
++         (*logout) << "Edges meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_MESHEDGES)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_MESHSURFACE)
++      {
++         OCCMeshSurface (geom, *mesh, perfstepsend);
++         if (multithread.terminate) return TCL_OK;
++
++#ifdef LOG_STREAM
++         (*logout) << "Surfaces meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++
++#ifdef STAT_STREAM
++         (*statout) << mesh->GetNSeg() << " & "
++            << mesh->GetNSE() << " & - &"
++            << GetTime() << " & " << std::endl;
++#endif
++
++         //      MeshQuality2d (*mesh);
++         mesh->CalcSurfacesOfNode();
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_OPTSURFACE)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_MESHVOLUME)
++      {
++         multithread.task = "Volume meshing";
++
++         MESHING3_RESULT res = MeshVolume (mparam, *mesh);
++
++/*
++         ofstream problemfile("occmesh.rep",ios_base::app);
++
++         problemfile << "VOLUMEMESHING" << std::endl << std::endl;
++         if(res != MESHING3_OK)
++            problemfile << "ERROR" << std::endl << std::endl;
++         else
++            problemfile << "OK" << std::endl
++            << mesh->GetNE() << " elements" << std::endl << std::endl;
++
++         problemfile.close();
++*/
++
++         if (res != MESHING3_OK) return TCL_ERROR;
++
++         if (multithread.terminate) return TCL_OK;
++
++         RemoveIllegalElements (*mesh);
++         if (multithread.terminate) return TCL_OK;
++
++         MeshQuality3d (*mesh);
++
++#ifdef STAT_STREAM
++         (*statout) << GetTime() << " & ";
++#endif
++
++#ifdef LOG_STREAM
++         (*logout) << "Volume meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_MESHVOLUME)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_OPTVOLUME)
++      {
++         multithread.task = "Volume optimization";
++
++         OptimizeVolume (mparam, *mesh);
++         if (multithread.terminate) return TCL_OK;
++
++#ifdef STAT_STREAM
++         (*statout) << GetTime() << " & "
++            << mesh->GetNE() << " & "
++            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << std::endl;
++#endif
++
++#ifdef LOG_STREAM
++         (*logout) << "Volume optimized" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++
++         // std::cout << "Optimization complete" << std::endl;
++
++      }
++
++      (*testout) << "NP: " << mesh->GetNP() << std::endl;
++      for (int i = 1; i <= mesh->GetNP(); i++)
++         (*testout) << mesh->Point(i) << std::endl;
++
++      (*testout) << std::endl << "NSegments: " << mesh->GetNSeg() << std::endl;
++      for (int i = 1; i <= mesh->GetNSeg(); i++)
++         (*testout) << mesh->LineSegment(i) << std::endl;
++
++      return TCL_OK;
++   }
++}
++
++#endif
+--- netgen_ref/libsrc/occ/occgeom.cpp
++++ netgen/libsrc/occ/occgeom.cpp
+@@ -1,1612 +1,1669 @@
+-
+-#ifdef OCCGEOMETRY
+-
+-#include 
+-#include 
+-#include "ShapeAnalysis_ShapeTolerance.hxx"
+-#include "ShapeAnalysis_ShapeContents.hxx"
+-#include "ShapeAnalysis_CheckSmallFace.hxx"
+-#include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+-#include "ShapeAnalysis_Surface.hxx"
+-#include "BRepAlgoAPI_Fuse.hxx"
+-#include "BRepCheck_Analyzer.hxx"
+-#include "BRepLib.hxx"
+-#include "ShapeBuild_ReShape.hxx"
+-#include "ShapeFix.hxx"
+-#include "ShapeFix_FixSmallFace.hxx"
+-#include "Partition_Spliter.hxx"
+-
+-
+-namespace netgen
+-{
+-   void OCCGeometry :: PrintNrShapes ()
+-   {
+-      TopExp_Explorer e;
+-      int count = 0;
+-      for (e.Init(shape, TopAbs_COMPSOLID); e.More(); e.Next()) count++;
+-      cout << "CompSolids: " << count << endl;
+-
+-      cout << "Solids    : " << somap.Extent() << endl;
+-      cout << "Shells    : " << shmap.Extent() << endl;
+-      cout << "Faces     : " << fmap.Extent() << endl;
+-      cout << "Edges     : " << emap.Extent() << endl;
+-      cout << "Vertices  : " << vmap.Extent() << endl;
+-   }
+-
+-
+-
+-
+-   void PrintContents (OCCGeometry * geom)
+-   {
+-      ShapeAnalysis_ShapeContents cont;
+-      cont.Clear();
+-      cont.Perform(geom->shape);
+-
+-      (*testout) << "OCC CONTENTS" << endl;
+-      (*testout) << "============" << endl;
+-      (*testout) << "SOLIDS   : " << cont.NbSolids() << endl;
+-      (*testout) << "SHELLS   : " << cont.NbShells() << endl;
+-      (*testout) << "FACES    : " << cont.NbFaces() << endl;
+-      (*testout) << "WIRES    : " << cont.NbWires() << endl;
+-      (*testout) << "EDGES    : " << cont.NbEdges() << endl;
+-      (*testout) << "VERTICES : " << cont.NbVertices() << endl;
+-
+-      TopExp_Explorer e;
+-      int count = 0;
+-      for (e.Init(geom->shape, TopAbs_COMPOUND); e.More(); e.Next())
+-         count++;
+-      (*testout) << "Compounds: " << count << endl;
+-
+-      count = 0;
+-      for (e.Init(geom->shape, TopAbs_COMPSOLID); e.More(); e.Next())
+-         count++;
+-      (*testout) << "CompSolids: " << count << endl;
+-
+-      (*testout) << endl;
+-
+-      cout << "Highest entry in topology hierarchy: " << endl;
+-      if (count)
+-         cout << count << " composite solid(s)" << endl;
+-      else
+-         if (geom->somap.Extent())
+-            cout << geom->somap.Extent() << " solid(s)" << endl;
+-         else
+-            if (geom->shmap.Extent())
+-               cout << geom->shmap.Extent() << " shells(s)" << endl;
+-            else
+-               if (geom->fmap.Extent())
+-                  cout << geom->fmap.Extent() << " face(s)" << endl;
+-               else
+-                  if (geom->wmap.Extent())
+-                     cout << geom->wmap.Extent() << " wire(s)" << endl;
+-                  else
+-                     if (geom->emap.Extent())
+-                        cout << geom->emap.Extent() << " edge(s)" << endl;
+-                     else
+-                        if (geom->vmap.Extent())
+-                           cout << geom->vmap.Extent() << " vertices(s)" << endl;
+-                        else
+-                           cout << "no entities" << endl;
+-
+-   }
+-
+-
+-
+-   void OCCGeometry :: HealGeometry ()
+-   {
+-      int nrc = 0, nrcs = 0,
+-         nrso = somap.Extent(),
+-         nrsh = shmap.Extent(),
+-         nrf = fmap.Extent(),
+-         nrw = wmap.Extent(),
+-         nre = emap.Extent(),
+-         nrv = vmap.Extent();
+-
+-      TopExp_Explorer exp0;
+-      TopExp_Explorer exp1;
+-
+-
+-      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nrc++;
+-      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nrcs++;
+-
+-      double surfacecont = 0;
+-
+-      {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-      BuildFMap();
+-
+-
+-      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Face face = TopoDS::Face(exp0.Current());
+-
+-         GProp_GProps system;
+-         BRepGProp::SurfaceProperties(face, system);
+-         surfacecont += system.Mass();
+-      }
+-
+-
+-      cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << endl
+-         << "-----------------------------------" << endl;
+-
+-      {
+-         cout << endl << "- repairing faces" << endl;
+-
+-         Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-
+-
+-         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-         {
+-            // Variable to hold the colour (if there exists one) of 
+-            // the current face being processed
+-            Quantity_Color face_colour;
+-
+-            TopoDS_Face face = TopoDS::Face (exp0.Current());
+-
+-            if(face_colours.IsNull()
+-               || (!(face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour))))
+-            {
+-               // Set the default face colour to green (Netgen Standard)
+-               // if no colour has been defined for the face
+-               face_colour = Quantity_Color(0.0,1.0,0.0,Quantity_TOC_RGB);
+-            }
+-
+-            sff = new ShapeFix_Face (face);
+-            sff->FixAddNaturalBoundMode() = Standard_True;
+-            sff->FixSmallAreaWireMode() = Standard_True;
+-            sff->Perform();
+-
+-            if(sff->Status(ShapeExtend_DONE1) ||
+-               sff->Status(ShapeExtend_DONE2) ||
+-               sff->Status(ShapeExtend_DONE3) ||
+-               sff->Status(ShapeExtend_DONE4) ||
+-               sff->Status(ShapeExtend_DONE5))
+-            {
+-               cout << "repaired face " << fmap.FindIndex(face) << " ";
+-               if(sff->Status(ShapeExtend_DONE1))
+-                  cout << "(some wires are fixed)" <Status(ShapeExtend_DONE2))
+-                  cout << "(orientation of wires fixed)" <Status(ShapeExtend_DONE3))
+-                  cout << "(missing seam added)" <Status(ShapeExtend_DONE4))
+-                  cout << "(small area wire removed)" <Status(ShapeExtend_DONE5))
+-                  cout << "(natural bounds added)" <Face();
+-
+-               rebuild->Replace(face, newface, Standard_False);
+-            }
+-
+-            // Set the original colour of the face to the newly created 
+-            // face (after the healing process)
+-            face = TopoDS::Face (exp0.Current());
+-            face_colours->SetColor(face,face_colour,XCAFDoc_ColorSurf);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-
+-      {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-
+-      if (fixsmalledges)
+-      {
+-         cout << endl << "- fixing small edges" << endl;
+-
+-         Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-
+-
+-         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-         {
+-            TopoDS_Face face = TopoDS::Face(exp0.Current());
+-
+-            for (exp1.Init (face, TopAbs_WIRE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Wire oldwire = TopoDS::Wire(exp1.Current());
+-               sfw = new ShapeFix_Wire (oldwire, face ,tolerance);
+-               sfw->ModifyTopologyMode() = Standard_True;
+-
+-               sfw->ClosedWireMode() = Standard_True;
+-
+-               bool replace = false;
+-
+-               replace = sfw->FixReorder() || replace;
+-
+-               replace = sfw->FixConnected() || replace;
+-
+-
+-
+-               if (sfw->FixSmall (Standard_False, tolerance) && ! (sfw->StatusSmall(ShapeExtend_FAIL1) ||
+-                  sfw->StatusSmall(ShapeExtend_FAIL2) ||
+-                  sfw->StatusSmall(ShapeExtend_FAIL3)))
+-               {
+-                  cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << endl;
+-                  replace = true;
+-
+-               }
+-               else if (sfw->StatusSmall(ShapeExtend_FAIL1))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge cannot be checked (no 3d curve and no pcurve)" << endl;
+-               else if (sfw->StatusSmall(ShapeExtend_FAIL2))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << endl;
+-               else if (sfw->StatusSmall(ShapeExtend_FAIL3))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", CheckConnected has failed" << endl;
+-
+-               replace = sfw->FixEdgeCurves() || replace;
+-
+-               replace = sfw->FixDegenerated() || replace;
+-
+-               replace = sfw->FixSelfIntersection() || replace;
+-
+-               replace = sfw->FixLacking(Standard_True) || replace;
+-
+-               if(replace)
+-               {
+-                  TopoDS_Wire newwire = sfw->Wire();
+-                  rebuild->Replace(oldwire, newwire, Standard_False);
+-               }
+-
+-               //delete sfw; sfw = NULL;
+-
+-            }
+-         }
+-
+-         shape = rebuild->Apply(shape);
+-
+-
+-
+-         {
+-            BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Apply(shape);
+-
+-            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-               if (vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+-                  vmap.FindIndex(TopExp::LastVertex (edge)))
+-               {
+-                  GProp_GProps system;
+-                  BRepGProp::LinearProperties(edge, system);
+-                  if (system.Mass() < tolerance)
+-                  {
+-                     cout << "removing degenerated edge " << emap.FindIndex(edge)
+-                        << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
+-                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;
+-                     rebuild->Remove(edge, false);
+-                  }
+-               }
+-            }
+-            shape = rebuild->Apply(shape);
+-
+-            //delete rebuild; rebuild = NULL;
+-         }
+-
+-
+-
+-         {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Apply(shape);
+-            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-               if ( BRep_Tool::Degenerated(edge) )
+-                  rebuild->Remove(edge, false);
+-            }
+-            shape = rebuild->Apply(shape);
+-         }
+-
+-
+-
+-
+-         Handle(ShapeFix_Wireframe) sfwf = new ShapeFix_Wireframe;
+-         sfwf->SetPrecision(tolerance);
+-         sfwf->Load (shape);
+-         sfwf->ModeDropSmallEdges() = Standard_True;
+-
+-         sfwf->SetPrecision(boundingbox.Diam());
+-
+-         if (sfwf->FixWireGaps())
+-         {
+-            cout << endl << "- fixing wire gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_OK)) cout << "no gaps found" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) cout << "some 2D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) cout << "some 3D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) cout << "failed to fix some 2D gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) cout << "failed to fix some 3D gaps" << endl;
+-         }
+-
+-         sfwf->SetPrecision(tolerance);
+-
+-
+-         {
+-            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-               if ( BRep_Tool::Degenerated(edge) )
+-                  cout << "degenerated edge at position 4" << endl;
+-            }
+-         }
+-
+-
+-
+-         if (sfwf->FixSmallEdges())
+-         {
+-            cout << endl << "- fixing wire frames" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) cout << "no small edges found" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) cout << "some small edges fixed" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) cout << "failed to fix some small edges" << endl;
+-         }
+-
+-
+-
+-         shape = sfwf->Shape();
+-
+-         //delete sfwf; sfwf = NULL;
+-         //delete rebuild; rebuild = NULL;
+-
+-      }
+-
+-
+-
+-
+-
+-      {
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 5" << endl;
+-         }
+-      }
+-
+-
+-
+-
+-      if (fixspotstripfaces)
+-      {
+-
+-         cout << endl << "- fixing spot and strip faces" << endl;
+-         Handle(ShapeFix_FixSmallFace) sffsm = new ShapeFix_FixSmallFace();
+-         sffsm -> Init (shape);
+-         sffsm -> SetPrecision (tolerance);
+-         sffsm -> Perform();
+-
+-         shape = sffsm -> FixShape();
+-         //delete sffsm; sffsm = NULL;
+-      }
+-
+-
+-      {
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 6" << endl;
+-         }
+-      }
+-
+-
+-
+-      if (sewfaces)
+-      {
+-         cout << endl << "- sewing faces" << endl;
+-
+-         BRepOffsetAPI_Sewing sewedObj(tolerance);
+-
+-         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-         {
+-            TopoDS_Face face = TopoDS::Face (exp0.Current());
+-            sewedObj.Add (face);
+-         }
+-
+-         sewedObj.Perform();
+-
+-         if (!sewedObj.SewedShape().IsNull())
+-            shape = sewedObj.SewedShape();
+-         else
+-            cout << " not possible";
+-      }
+-
+-
+-
+-      {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-
+-      if (makesolids)
+-      {
+-         cout << endl << "- making solids" << endl;
+-
+-         BRepBuilderAPI_MakeSolid ms;
+-         int count = 0;
+-         for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
+-         {
+-            count++;
+-            ms.Add (TopoDS::Shell(exp0.Current()));
+-         }
+-
+-         if (!count)
+-         {
+-            cout << " not possible (no shells)" << endl;
+-         }
+-         else
+-         {
+-            BRepCheck_Analyzer ba(ms);
+-            if (ba.IsValid ())
+-            {
+-               Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
+-               sfs->Init (ms);
+-               sfs->SetPrecision(tolerance);
+-               sfs->SetMaxTolerance(tolerance);
+-               sfs->Perform();
+-               shape = sfs->Shape();
+-
+-               for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
+-               {
+-                  TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+-                  TopoDS_Solid newsolid = solid;
+-                  BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-                  //		  rebuild->Apply(shape);
+-                  rebuild->Replace(solid, newsolid, Standard_False);
+-                  TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+-                  //		  TopoDS_Shape newshape = rebuild->Apply(shape);
+-                  shape = newshape;
+-               }
+-
+-               //delete sfs; sfs = NULL;
+-            }
+-            else
+-               cout << " not possible" << endl;
+-         }
+-      }
+-
+-
+-
+-      if (splitpartitions)
+-      {
+-         cout << "- running SALOME partition splitter" << endl;
+-
+-         TopExp_Explorer e2;
+-         Partition_Spliter ps;
+-         int count = 0;
+-
+-         for (e2.Init (shape, TopAbs_SOLID);
+-            e2.More(); e2.Next())
+-         {
+-            count++;
+-            ps.AddShape (e2.Current());
+-         }
+-
+-         ps.Compute();
+-         shape = ps.Shape();
+-
+-         cout << " before: " << count << " solids" << endl;
+-
+-         count = 0;
+-         for (e2.Init (shape, TopAbs_SOLID);
+-            e2.More(); e2.Next()) count++;
+-
+-            cout << " after : " << count << " solids" << endl;
+-      }
+-
+-      BuildFMap();
+-
+-
+-
+-      {
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 8" << endl;
+-         }
+-      }
+-
+-
+-      double newsurfacecont = 0;
+-
+-
+-      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Face face = TopoDS::Face(exp0.Current());
+-         GProp_GProps system;
+-         BRepGProp::SurfaceProperties(face, system);
+-         newsurfacecont += system.Mass();
+-      }
+-
+-
+-      int nnrc = 0, nnrcs = 0,
+-         nnrso = somap.Extent(),
+-         nnrsh = shmap.Extent(),
+-         nnrf = fmap.Extent(),
+-         nnrw = wmap.Extent(),
+-         nnre = emap.Extent(),
+-         nnrv = vmap.Extent();
+-
+-      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nnrc++;
+-      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nnrcs++;
+-
+-      cout << "-----------------------------------" << endl;
+-      cout << "Compounds       : " << nnrc << " (" << nrc << ")" << endl;
+-      cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << endl;
+-      cout << "Solids          : " << nnrso << " (" << nrso << ")" << endl;
+-      cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << endl;
+-      cout << "Wires           : " << nnrw << " (" << nrw << ")" << endl;
+-      cout << "Faces           : " << nnrf << " (" << nrf << ")" << endl;
+-      cout << "Edges           : " << nnre << " (" << nre << ")" << endl;
+-      cout << "Vertices        : " << nnrv << " (" << nrv << ")" << endl;
+-      cout << endl;
+-      cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << endl;
+-      cout << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: BuildFMap()
+-   {
+-      somap.Clear();
+-      shmap.Clear();
+-      fmap.Clear();
+-      wmap.Clear();
+-      emap.Clear();
+-      vmap.Clear();
+-
+-      TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5;
+-
+-      for (exp0.Init(shape, TopAbs_COMPOUND);
+-         exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Compound compound = TopoDS::Compound (exp0.Current());
+-         (*testout) << "compound" << endl;
+-         int i = 0;
+-         for (exp1.Init(compound, TopAbs_SHELL);
+-            exp1.More(); exp1.Next())
+-         {
+-            (*testout) << "shell " << ++i << endl;
+-         }
+-      }
+-
+-      for (exp0.Init(shape, TopAbs_SOLID);
+-         exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Solid solid = TopoDS::Solid (exp0.Current());
+-
+-         if (somap.FindIndex(solid) < 1)
+-         {
+-            somap.Add (solid);
+-
+-            for (exp1.Init(solid, TopAbs_SHELL);
+-               exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Shell shell = TopoDS::Shell (exp1.Current());
+-               if (shmap.FindIndex(shell) < 1)
+-               {
+-                  shmap.Add (shell);
+-
+-                  for (exp2.Init(shell, TopAbs_FACE);
+-                     exp2.More(); exp2.Next())
+-                  {
+-                     TopoDS_Face face = TopoDS::Face(exp2.Current());
+-                     if (fmap.FindIndex(face) < 1)
+-                     {
+-                        fmap.Add (face);
+-                        (*testout) << "face " << fmap.FindIndex(face) << " ";
+-                        (*testout) << ((face.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
+-                        for (exp3.Init(exp2.Current(), TopAbs_WIRE);
+-                           exp3.More(); exp3.Next())
+-                        {
+-                           TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-                           if (wmap.FindIndex(wire) < 1)
+-                           {
+-                              wmap.Add (wire);
+-
+-                              for (exp4.Init(exp3.Current(), TopAbs_EDGE);
+-                                 exp4.More(); exp4.Next())
+-                              {
+-                                 TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-                                 if (emap.FindIndex(edge) < 1)
+-                                 {
+-                                    emap.Add (edge);
+-                                    for (exp5.Init(exp4.Current(), TopAbs_VERTEX);
+-                                       exp5.More(); exp5.Next())
+-                                    {
+-                                       TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                                       if (vmap.FindIndex(vertex) < 1)
+-                                          vmap.Add (vertex);
+-                                    }
+-                                 }
+-                              }
+-                           }
+-                        }
+-                     }
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-      // Free Shells
+-      for (exp1.Init(shape, TopAbs_SHELL, TopAbs_SOLID); exp1.More(); exp1.Next())
+-      {
+-         TopoDS_Shell shell = TopoDS::Shell(exp1.Current());
+-         if (shmap.FindIndex(shell) < 1)
+-         {
+-            shmap.Add (shell);
+-
+-            (*testout) << "shell " << shmap.FindIndex(shell) << " ";
+-            (*testout) << ((shell.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
+-
+-            for (exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next())
+-            {
+-               TopoDS_Face face = TopoDS::Face(exp2.Current());
+-               if (fmap.FindIndex(face) < 1)
+-               {
+-                  fmap.Add (face);
+-
+-                  for (exp3.Init(face, TopAbs_WIRE); exp3.More(); exp3.Next())
+-                  {
+-                     TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-                     if (wmap.FindIndex(wire) < 1)
+-                     {
+-                        wmap.Add (wire);
+-
+-                        for (exp4.Init(wire, TopAbs_EDGE); exp4.More(); exp4.Next())
+-                        {
+-                           TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-                           if (emap.FindIndex(edge) < 1)
+-                           {
+-                              emap.Add (edge);
+-                              for (exp5.Init(edge, TopAbs_VERTEX); exp5.More(); exp5.Next())
+-                              {
+-                                 TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                                 if (vmap.FindIndex(vertex) < 1)
+-                                    vmap.Add (vertex);
+-                              }
+-                           }
+-                        }
+-                     }
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-
+-      // Free Faces
+-
+-      for (exp2.Init(shape, TopAbs_FACE, TopAbs_SHELL); exp2.More(); exp2.Next())
+-      {
+-         TopoDS_Face face = TopoDS::Face(exp2.Current());
+-         if (fmap.FindIndex(face) < 1)
+-         {
+-            fmap.Add (face);
+-
+-            for (exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next())
+-            {
+-               TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-               if (wmap.FindIndex(wire) < 1)
+-               {
+-                  wmap.Add (wire);
+-
+-                  for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
+-                  {
+-                     TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-                     if (emap.FindIndex(edge) < 1)
+-                     {
+-                        emap.Add (edge);
+-                        for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
+-                        {
+-                           TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                           if (vmap.FindIndex(vertex) < 1)
+-                              vmap.Add (vertex);
+-                        }
+-                     }
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-
+-      // Free Wires
+-
+-      for (exp3.Init(shape, TopAbs_WIRE, TopAbs_FACE); exp3.More(); exp3.Next())
+-      {
+-         TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-         if (wmap.FindIndex(wire) < 1)
+-         {
+-            wmap.Add (wire);
+-
+-            for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-               if (emap.FindIndex(edge) < 1)
+-               {
+-                  emap.Add (edge);
+-                  for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
+-                  {
+-                     TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                     if (vmap.FindIndex(vertex) < 1)
+-                        vmap.Add (vertex);
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-
+-      // Free Edges
+-
+-      for (exp4.Init(shape, TopAbs_EDGE, TopAbs_WIRE); exp4.More(); exp4.Next())
+-      {
+-         TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-         if (emap.FindIndex(edge) < 1)
+-         {
+-            emap.Add (edge);
+-            for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
+-            {
+-               TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-               if (vmap.FindIndex(vertex) < 1)
+-                  vmap.Add (vertex);
+-            }
+-         }
+-      }
+-
+-
+-      // Free Vertices
+-
+-      for (exp5.Init(shape, TopAbs_VERTEX, TopAbs_EDGE); exp5.More(); exp5.Next())
+-      {
+-         TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-         if (vmap.FindIndex(vertex) < 1)
+-            vmap.Add (vertex);
+-      }
+-
+-
+-
+-
+-      facemeshstatus.DeleteAll();
+-      facemeshstatus.SetSize (fmap.Extent());
+-      facemeshstatus = 0;
+-
+-      // Philippose - 15/01/2009
+-      face_maxh.DeleteAll();
+-      face_maxh.SetSize (fmap.Extent());
+-      face_maxh = mparam.maxh;
+-
+-      // Philippose - 15/01/2010      
+-      face_maxh_modified.DeleteAll();      
+-      face_maxh_modified.SetSize(fmap.Extent());      
+-      face_maxh_modified = 0;
+-      
+-
+-      // Philippose - 17/01/2009
+-      face_sel_status.DeleteAll();
+-      face_sel_status.SetSize (fmap.Extent());
+-      face_sel_status = 0;
+-
+-      fvispar.SetSize (fmap.Extent());
+-      evispar.SetSize (emap.Extent());
+-      vvispar.SetSize (vmap.Extent());
+-
+-      fsingular.SetSize (fmap.Extent());
+-      esingular.SetSize (emap.Extent());
+-      vsingular.SetSize (vmap.Extent());
+-
+-      fsingular = esingular = vsingular = false;
+-   }
+-
+-
+-
+-   void OCCGeometry :: SewFaces ()
+-   {
+-      (*testout) << "Trying to sew faces ..." << endl;
+-      cout << "Trying to sew faces ..." << flush;
+-
+-      BRepOffsetAPI_Sewing sewedObj(1);
+- 
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-      {
+-         TopoDS_Face face = TopoDS::Face (fmap(i));
+-         sewedObj.Add (face);
+-      }
+-
+-      sewedObj.Perform();
+-
+-      if (!sewedObj.SewedShape().IsNull())
+-      {
+-         shape = sewedObj.SewedShape();
+-         cout << " done" << endl;
+-      }
+-      else
+-         cout << " not possible";
+-   }
+-
+-
+-
+-
+-
+-   void OCCGeometry :: MakeSolid ()
+-   {
+-      TopExp_Explorer exp0;
+-
+-      (*testout) << "Trying to build solids ..." << endl;
+-      cout << "Trying to build solids ..." << flush;
+-
+-      BRepBuilderAPI_MakeSolid ms;
+-      int count = 0;
+-      for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
+-      {
+-         count++;
+-         ms.Add (TopoDS::Shell(exp0.Current()));
+-      }
+-
+-      if (!count)
+-      {
+-         cout << " not possible (no shells)" << endl;
+-         return;
+-      }
+-
+-      BRepCheck_Analyzer ba(ms);
+-      if (ba.IsValid ())
+-      {
+-         Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
+-         sfs->Init (ms);
+-
+-         sfs->SetPrecision(1e-5);
+-         sfs->SetMaxTolerance(1e-5);
+-
+-         sfs->Perform();
+-
+-         shape = sfs->Shape();
+-
+-         for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
+-         {
+-            TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+-            TopoDS_Solid newsolid = solid;
+-            BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Replace(solid, newsolid, Standard_False);
+-
+-            TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+-            shape = newshape;
+-         }
+-
+-         cout << " done" << endl;
+-      }
+-      else
+-         cout << " not possible" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: BuildVisualizationMesh (double deflection)
+-   {
+-      cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
+-
+-      BRepTools::Clean (shape);
+-      // BRepMesh_IncrementalMesh::
+-      BRepMesh_IncrementalMesh (shape, deflection, true);
+-      cout << "done" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: CalcBoundingBox ()
+-   {
+-      Bnd_Box bb;
+-      BRepBndLib::Add (shape, bb);
+-
+-      double x1,y1,z1,x2,y2,z2;
+-      bb.Get (x1,y1,z1,x2,y2,z2);
+-      Point<3> p1 = Point<3> (x1,y1,z1);
+-      Point<3> p2 = Point<3> (x2,y2,z2);
+-
+-      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << endl;
+-      boundingbox = Box<3> (p1,p2);
+-      SetCenter();
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
+-   {
+-      static int cnt = 0;
+-      if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+-
+-      gp_Pnt pnt(p(0), p(1), p(2));
+-
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
+-
+-      p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+-
+-   }
+-
+-
+-
+-
+-   bool OCCGeometry :: FastProject (int surfi, Point<3> & ap, double& u, double& v) const
+-   {
+-      gp_Pnt p(ap(0), ap(1), ap(2));
+-
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
+-
+-      return true;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: WriteOCC_STL(char * filename)
+-   {
+-      cout << "writing stl..."; cout.flush();
+-      StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
+-
+-      writer.SetDeflection(0.02);
+-      writer.Write(shape,filename);
+-
+-      cout << "done" << endl;
+-   }
+-
+-
+-
+-   // Philippose - 23/02/2009
+-   /* Special IGES File load function including the ability
+-   to extract individual surface colours via the extended
+-   OpenCascade XDE and XCAF Feature set.
+-   */
+-   OCCGeometry *LoadOCC_IGES(const char *filename)
+-   {
+-      OCCGeometry *occgeo;
+-      occgeo = new OCCGeometry;
+-
+-      // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
+-
+-      // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
+-
+-      // Check if a IGES File is already open under this handle, if so, close it to prevent
+-      // Segmentation Faults when trying to create a new document
+-      if(dummy_app->NbDocuments() > 0)
+-      {
+-         dummy_app->GetDocument(1,iges_doc);
+-         dummy_app->Close(iges_doc);
+-      }
+-      dummy_app->NewDocument ("IGES-XCAF",iges_doc);
+-
+-      IGESCAFControl_Reader reader;
+-
+-      Standard_Integer stat = reader.ReadFile((char*)filename);
+-
+-      if(stat != IFSelect_RetDone)
+-      {
+-         delete occgeo;
+-         return NULL;
+-      }
+-
+-      // Enable transfer of colours
+-      reader.SetColorMode(Standard_True);
+-
+-      reader.Transfer(iges_doc);
+-
+-      // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+-
+-      TDF_LabelSequence iges_shapes;
+-      iges_shape_contents->GetShapes(iges_shapes);
+-
+-      // List out the available colours in the IGES File as Colour Names
+-      TDF_LabelSequence all_colours;
+-      iges_colour_contents->GetColors(all_colours);
+-      PrintMessage(1,"Number of colours in IGES File: ",all_colours.Length());
+-      for(int i = 1; i <= all_colours.Length(); i++)
+-      {
+-         Quantity_Color col;
+-         stringstream col_rgb;
+-         iges_colour_contents->GetColor(all_colours.Value(i),col);
+-         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
+-         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
+-      }
+-
+-
+-      // For the IGES Reader, all the shapes can be exported as one compund shape 
+-      // using the "OneShape" member
+-      occgeo->shape = reader.OneShape();
+-      occgeo->face_colours = iges_colour_contents;
+-      occgeo->changed = 1;
+-      occgeo->BuildFMap();
+-
+-      occgeo->CalcBoundingBox();
+-      PrintContents (occgeo);
+-
+-      return occgeo;
+-   }
+-
+-
+-
+-
+-
+-   // Philippose - 29/01/2009
+-   /* Special STEP File load function including the ability
+-   to extract individual surface colours via the extended
+-   OpenCascade XDE and XCAF Feature set.
+-   */
+-   OCCGeometry * LoadOCC_STEP (const char * filename)
+-   {
+-      OCCGeometry * occgeo;
+-      occgeo = new OCCGeometry;
+-
+-      // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
+-
+-      // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
+-
+-      // Check if a STEP File is already open under this handle, if so, close it to prevent
+-      // Segmentation Faults when trying to create a new document
+-      if(dummy_app->NbDocuments() > 0)
+-      {
+-         dummy_app->GetDocument(1,step_doc);
+-         dummy_app->Close(step_doc);
+-      }
+-      dummy_app->NewDocument ("STEP-XCAF",step_doc);
+-
+-      STEPCAFControl_Reader reader;
+-
+-      // Enable transfer of colours
+-      reader.SetColorMode(Standard_True);
+-
+-      Standard_Integer stat = reader.ReadFile((char*)filename);
+-
+-      if(stat != IFSelect_RetDone)
+-      {
+-         delete occgeo;
+-         return NULL;
+-      }
+-
+-      reader.Transfer(step_doc);
+-
+-      // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+-
+-      TDF_LabelSequence step_shapes;
+-      step_shape_contents->GetShapes(step_shapes);
+-
+-      // List out the available colours in the STEP File as Colour Names
+-      TDF_LabelSequence all_colours;
+-      step_colour_contents->GetColors(all_colours);
+-      PrintMessage(1,"Number of colours in STEP File: ",all_colours.Length());
+-      for(int i = 1; i <= all_colours.Length(); i++)
+-      {
+-         Quantity_Color col;
+-         stringstream col_rgb;
+-         step_colour_contents->GetColor(all_colours.Value(i),col);
+-         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
+-         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
+-      }
+-
+-
+-      // For the STEP File Reader in OCC, the 1st Shape contains the entire 
+-      // compound geometry as one shape
+-      occgeo->shape = step_shape_contents->GetShape(step_shapes.Value(1));
+-      occgeo->face_colours = step_colour_contents;
+-      occgeo->changed = 1;
+-      occgeo->BuildFMap();
+-
+-      occgeo->CalcBoundingBox();
+-      PrintContents (occgeo);
+-
+-      return occgeo;
+-   }
+-
+-
+-
+-
+-   OCCGeometry *LoadOCC_BREP (const char *filename)
+-   {
+-      OCCGeometry * occgeo;
+-      occgeo = new OCCGeometry;
+-
+-      BRep_Builder aBuilder;
+-      Standard_Boolean result = BRepTools::Read(occgeo->shape, const_cast (filename),aBuilder);
+-
+-      if(!result)
+-      {
+-         delete occgeo;
+-         return NULL;
+-      }
+-
+-      // Philippose - 23/02/2009
+-      // Fixed a bug in the OpenCascade XDE Colour handling when 
+-      // opening BREP Files, since BREP Files have no colour data.
+-      // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
+-      occgeo->face_colours.Nullify();
+-      occgeo->changed = 1;
+-      occgeo->BuildFMap();
+-
+-      occgeo->CalcBoundingBox();
+-      PrintContents (occgeo);
+-
+-      return occgeo;
+-   }
+-
+-
+-  void OCCGeometry :: Save (string sfilename) const
+-  {
+-    const char * filename = sfilename.c_str();
+-    if (strlen(filename) < 4) 
+-      throw NgException ("illegal filename");
+-    
+-    if (strcmp (&filename[strlen(filename)-3], "igs") == 0)
+-      {
+-	IGESControl_Writer writer("millimeters", 1);
+-	writer.AddShape (shape);
+-	writer.Write (filename);
+-      }
+-    else if (strcmp (&filename[strlen(filename)-3], "stp") == 0)
+-      {
+-	STEPControl_Writer writer;
+-	writer.Transfer (shape, STEPControl_AsIs);
+-	writer.Write (filename);
+-      }
+-    else if (strcmp (&filename[strlen(filename)-3], "stl") == 0)
+-      {
+-	StlAPI_Writer writer;
+-	writer.ASCIIMode() = Standard_True;
+-	writer.Write (shape, filename);
+-      }
+-    else if (strcmp (&filename[strlen(filename)-4], "stlb") == 0)
+-      {
+-	StlAPI_Writer writer;
+-	writer.ASCIIMode() = Standard_False;
+-	writer.Write (shape, filename);
+-      }
+-  }
+-
+-
+-
+-  const char * shapesname[] =
+-   {" ", "CompSolids", "Solids", "Shells",
+-
+-   "Faces", "Wires", "Edges", "Vertices"};
+-
+-  const char * shapename[] =
+-   {" ", "CompSolid", "Solid", "Shell",
+-   "Face", "Wire", "Edge", "Vertex"};
+-
+-  const char * orientationstring[] =
+-     {"+", "-"};
+-
+-
+-
+-
+-   void OCCGeometry :: RecursiveTopologyTree (const TopoDS_Shape & sh,
+-      stringstream & str,
+-      TopAbs_ShapeEnum l,
+-      bool isfree,
+-      const char * lname)
+-   {
+-      if (l > TopAbs_VERTEX) return;
+-
+-      TopExp_Explorer e;
+-      int count = 0;
+-      int count2 = 0;
+-
+-      if (isfree)
+-         e.Init(sh, l, TopAbs_ShapeEnum(l-1));
+-      else
+-         e.Init(sh, l);
+-
+-      for (; e.More(); e.Next())
+-      {
+-         count++;
+-
+-         stringstream lname2;
+-         lname2 << lname << "/" << shapename[l] << count;
+-         str << lname2.str() << " ";
+-
+-         switch (e.Current().ShapeType())
+-	   {
+-	   case TopAbs_SOLID:
+-	     count2 = somap.FindIndex(TopoDS::Solid(e.Current())); break;
+-	   case TopAbs_SHELL:
+-	     count2 = shmap.FindIndex(TopoDS::Shell(e.Current())); break;
+-	   case TopAbs_FACE:
+-	     count2 = fmap.FindIndex(TopoDS::Face(e.Current())); break;
+-	   case TopAbs_WIRE:
+-	     count2 = wmap.FindIndex(TopoDS::Wire(e.Current())); break;
+-	   case TopAbs_EDGE:
+-	     count2 = emap.FindIndex(TopoDS::Edge(e.Current())); break;
+-	   case TopAbs_VERTEX:
+-	     count2 = vmap.FindIndex(TopoDS::Vertex(e.Current())); break;
+-	   default:
+-	     cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << endl;
+-         }
+-
+-         int nrsubshapes = 0;
+-
+-         if (l <= TopAbs_WIRE)
+-         {
+-            TopExp_Explorer e2;
+-            for (e2.Init (e.Current(), TopAbs_ShapeEnum (l+1));
+-               e2.More(); e2.Next())
+-               nrsubshapes++;
+-         }
+-
+-         str << "{" << shapename[l] << " " << count2;
+-
+-         if (l <= TopAbs_EDGE)
+-         {
+-            str << " (" << orientationstring[e.Current().Orientation()];
+-            if (nrsubshapes != 0) str << ", " << nrsubshapes;
+-            str << ") } ";
+-         }
+-         else
+-            str << " } ";
+-
+-         RecursiveTopologyTree (e.Current(), str, TopAbs_ShapeEnum (l+1),
+-            false, (char*)lname2.str().c_str());
+-
+-      }
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: GetTopologyTree (stringstream & str)
+-   {
+-      cout << "Building topology tree ... " << flush;
+-      RecursiveTopologyTree (shape, str, TopAbs_COMPSOLID, false, "CompSolids");
+-      RecursiveTopologyTree (shape, str, TopAbs_SOLID, true, "FreeSolids");
+-      RecursiveTopologyTree (shape, str, TopAbs_SHELL, true, "FreeShells");
+-      RecursiveTopologyTree (shape, str, TopAbs_FACE, true, "FreeFaces");
+-      RecursiveTopologyTree (shape, str, TopAbs_WIRE, true, "FreeWires");
+-      RecursiveTopologyTree (shape, str, TopAbs_EDGE, true, "FreeEdges");
+-      RecursiveTopologyTree (shape, str, TopAbs_VERTEX, true, "FreeVertices");
+-      str << flush;
+-      //  cout << "done" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: CheckIrregularEntities(stringstream & str)
+-   {
+-      ShapeAnalysis_CheckSmallFace csm;
+-
+-      csm.SetTolerance (1e-6);
+-
+-      TopTools_DataMapOfShapeListOfShape mapEdges;
+-      ShapeAnalysis_DataMapOfShapeListOfReal mapParam;
+-      TopoDS_Compound theAllVert;
+-
+-      int spotfaces = 0;
+-      int stripsupportfaces = 0;
+-      int singlestripfaces = 0;
+-      int stripfaces = 0;
+-      int facessplitbyvertices = 0;
+-      int stretchedpinfaces = 0;
+-      int smoothpinfaces = 0;
+-      int twistedfaces = 0;
+-      // int edgessamebutnotidentified = 0;
+-
+-      cout << "checking faces ... " << flush;
+-
+-      int i;
+-      for (i = 1; i <= fmap.Extent(); i++)
+-      {
+-         TopoDS_Face face = TopoDS::Face (fmap(i));
+-         TopoDS_Edge e1, e2;
+-
+-         if (csm.CheckSpotFace (face))
+-         {
+-            if (!spotfaces++)
+-               str << "SpotFace {Spot face} ";
+-
+-            (*testout) << "Face " << i << " is a spot face" << endl;
+-            str << "SpotFace/Face" << i << " ";
+-            str << "{Face " << i << " } ";
+-         }
+-
+-         if (csm.IsStripSupport (face))
+-         {
+-            if (!stripsupportfaces++)
+-               str << "StripSupportFace {Strip support face} ";
+-
+-            (*testout) << "Face " << i << " has strip support" << endl;
+-            str << "StripSupportFace/Face" << i << " ";
+-            str << "{Face " << i << " } ";
+-         }
+-
+-         if (csm.CheckSingleStrip(face, e1, e2))
+-         {
+-            if (!singlestripfaces++)
+-               str << "SingleStripFace {Single strip face} ";
+-
+-            (*testout) << "Face " << i << " is a single strip (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)" << endl;
+-            str << "SingleStripFace/Face" << i << " ";
+-            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+-         }
+-
+-         if (csm.CheckStripFace(face, e1, e2))
+-         {
+-            if (!stripfaces++)
+-               str << "StripFace {Strip face} ";
+-
+-            (*testout) << "Face " << i << " is a strip (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2)
+-               << " are identical)" << endl;
+-            str << "StripFace/Face" << i << " ";
+-            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+-         }
+-
+-         if (int count = csm.CheckSplittingVertices(face, mapEdges, mapParam, theAllVert))
+-         {
+-            if (!facessplitbyvertices++)
+-               str << "FaceSplitByVertices {Face split by vertices} ";
+-
+-            (*testout) << "Face " << i << " is split by " << count
+-               << " vertex/vertices " << endl;
+-            str << "FaceSplitByVertices/Face" << i << " ";
+-            str << "{Face " << i << " (split by " << count << "vertex/vertices)} ";
+-         }
+-
+-         int whatrow, sens;
+-         if (int type = csm.CheckPin (face, whatrow, sens))
+-         {
+-            if (type == 1)
+-            {
+-               if (!smoothpinfaces++)
+-                  str << "SmoothPinFace {Smooth pin face} ";
+-
+-               (*testout) << "Face " << i << " is a smooth pin" << endl;
+-               str << "SmoothPinFace/Face" << i << " ";
+-               str << "{Face " << i << " } ";
+-            }
+-            else
+-            {
+-               if (!stretchedpinfaces++)
+-                  str << "StretchedPinFace {Stretched pin face} ";
+-
+-               (*testout) << "Face " << i << " is a streched pin" << endl;
+-               str << "StretchedPinFace/Face" << i << " ";
+-               str << "{Face " << i << " } ";
+-            }
+-         }
+-
+-         double paramu, paramv;
+-         if (csm.CheckTwisted (face, paramu, paramv))
+-         {
+-            if (!twistedfaces++)
+-               str << "TwistedFace {Twisted face} ";
+-
+-            (*testout) << "Face " << i << " is twisted" << endl;
+-            str << "TwistedFace/Face" << i << " ";
+-            str << "{Face " << i << " } ";
+-         }
+-      }
+-
+-      cout << "done" << endl;
+-      cout << "checking edges ... " << flush;
+-
+-      // double dmax;
+-      // int cnt = 0;
+-      Array  edgeLengths;
+-      Array  order;
+-      edgeLengths.SetSize (emap.Extent());
+-      order.SetSize (emap.Extent());
+-
+-      for (i = 1; i <= emap.Extent(); i++)
+-      {
+-         TopoDS_Edge edge1 = TopoDS::Edge (emap(i));
+-         GProp_GProps system;
+-         BRepGProp::LinearProperties(edge1, system);
+-         edgeLengths[i-1] = system.Mass();
+-      }
+-
+-      Sort (edgeLengths, order);
+-
+-      str << "ShortestEdges {Shortest edges} ";
+-      for (i = 1; i <= min(20, emap.Extent()); i++)
+-      {
+-         str << "ShortestEdges/Edge" << i;
+-         str << " {Edge " << order[i-1] << " (L=" << edgeLengths[order[i-1]-1] << ")} ";
+-      }
+-
+-      str << flush;
+-
+-      cout << "done" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: GetUnmeshedFaceInfo (stringstream & str)
+-   {
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-      {
+-         if (facemeshstatus[i-1] == -1)
+-            str << "Face" << i << " {Face " << i << " } ";
+-      }
+-      str << flush;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: GetNotDrawableFaces (stringstream & str)
+-   {
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-      {
+-         if (!fvispar[i-1].IsDrawable())
+-            str << "Face" << i << " {Face " << i << " } ";
+-      }
+-      str << flush;
+-   }
+-
+-
+-
+-
+-   bool OCCGeometry :: ErrorInSurfaceMeshing ()
+-   {
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-         if (facemeshstatus[i-1] == -1)
+-            return true;
+-
+-      return false;
+-   }
+-
+-
+-
+-
+-  int OCCGeometry :: GenerateMesh (Mesh*& mesh, MeshingParameters & mparam,
+-      int perfstepsstart, int perfstepsend)
+-   {
+-     return OCCGenerateMesh (*this, mesh, mparam, perfstepsstart, perfstepsend);
+-   }
+-
+-
+-
+-
+-   const Refinement & OCCGeometry :: GetRefinement () const
+-   {
+-      return * new OCCRefinementSurfaces (*this);
+-   }
+-
+-
+-
+-
+-   OCCParameters :: OCCParameters()
+-   {
+-      resthcloseedgefac = 1;
+-      resthcloseedgeenable = 1;
+-	  resthminedgelen = 0.001;
+-	  resthminedgelenenable = 1;
+-   }
+-
+-
+-
+-
+-   void OCCParameters :: Print(ostream & ost) const
+-   {
+-      ost << "OCC Parameters:" << endl
+-         << "close edges: " << resthcloseedgeenable
+-         << ", fac = " << resthcloseedgefac << endl
+-		 << "minimum edge length: " << resthminedgelenenable
+-		 << ", min len = " << resthminedgelen << endl;
+-   }
+-
+-
+-
+-
+-   OCCParameters occparam;
+-
+-}
+-
+-
+-#endif
++
++#ifdef OCCGEOMETRY
++
++#include 
++#include 
++#include "ShapeAnalysis_ShapeTolerance.hxx"
++#include "ShapeAnalysis_ShapeContents.hxx"
++#include "ShapeAnalysis_CheckSmallFace.hxx"
++#include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
++#include "ShapeAnalysis_Surface.hxx"
++#include  // -- to optimize Project() and FastProject()
++#include 
++#include "BRepAlgoAPI_Fuse.hxx"
++#include "BRepCheck_Analyzer.hxx"
++#include "BRepLib.hxx"
++#include "ShapeBuild_ReShape.hxx"
++#include "ShapeFix.hxx"
++#include "ShapeFix_FixSmallFace.hxx"
++#include "Partition_Spliter.hxx"
++
++namespace netgen
++{
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
++   void OCCGeometry :: PrintNrShapes ()
++   {
++      TopExp_Explorer e;
++      int count = 0;
++      for (e.Init(shape, TopAbs_COMPSOLID); e.More(); e.Next()) count++;
++      std::cout << "CompSolids: " << count << std::endl;
++
++      std::cout << "Solids    : " << somap.Extent() << std::endl;
++      std::cout << "Shells    : " << shmap.Extent() << std::endl;
++      std::cout << "Faces     : " << fmap.Extent() << std::endl;
++      std::cout << "Edges     : " << emap.Extent() << std::endl;
++      std::cout << "Vertices  : " << vmap.Extent() << std::endl;
++   }
++
++
++
++
++   void PrintContents (OCCGeometry * geom)
++   {
++      ShapeAnalysis_ShapeContents cont;
++      cont.Clear();
++      cont.Perform(geom->shape);
++
++      (*testout) << "OCC CONTENTS" << std::endl;
++      (*testout) << "============" << std::endl;
++      (*testout) << "SOLIDS   : " << cont.NbSolids() << std::endl;
++      (*testout) << "SHELLS   : " << cont.NbShells() << std::endl;
++      (*testout) << "FACES    : " << cont.NbFaces() << std::endl;
++      (*testout) << "WIRES    : " << cont.NbWires() << std::endl;
++      (*testout) << "EDGES    : " << cont.NbEdges() << std::endl;
++      (*testout) << "VERTICES : " << cont.NbVertices() << std::endl;
++
++      TopExp_Explorer e;
++      int count = 0;
++      for (e.Init(geom->shape, TopAbs_COMPOUND); e.More(); e.Next())
++         count++;
++      (*testout) << "Compounds: " << count << std::endl;
++
++      count = 0;
++      for (e.Init(geom->shape, TopAbs_COMPSOLID); e.More(); e.Next())
++         count++;
++      (*testout) << "CompSolids: " << count << std::endl;
++
++      (*testout) << std::endl;
++
++      std::cout << "Highest entry in topology hierarchy: " << std::endl;
++      if (count)
++         std::cout << count << " composite solid(s)" << std::endl;
++      else
++         if (geom->somap.Extent())
++            std::cout << geom->somap.Extent() << " solid(s)" << std::endl;
++         else
++            if (geom->shmap.Extent())
++               std::cout << geom->shmap.Extent() << " shells(s)" << std::endl;
++            else
++               if (geom->fmap.Extent())
++                  std::cout << geom->fmap.Extent() << " face(s)" << std::endl;
++               else
++                  if (geom->wmap.Extent())
++                     std::cout << geom->wmap.Extent() << " wire(s)" << std::endl;
++                  else
++                     if (geom->emap.Extent())
++                        std::cout << geom->emap.Extent() << " edge(s)" << std::endl;
++                     else
++                        if (geom->vmap.Extent())
++                           std::cout << geom->vmap.Extent() << " vertices(s)" << std::endl;
++                        else
++                           std::cout << "no entities" << std::endl;
++
++   }
++
++
++
++   void OCCGeometry :: HealGeometry ()
++   {
++      int nrc = 0, nrcs = 0,
++         nrso = somap.Extent(),
++         nrsh = shmap.Extent(),
++         nrf = fmap.Extent(),
++         nrw = wmap.Extent(),
++         nre = emap.Extent(),
++         nrv = vmap.Extent();
++
++      TopExp_Explorer exp0;
++      TopExp_Explorer exp1;
++
++
++      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nrc++;
++      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nrcs++;
++
++      double surfacecont = 0;
++
++      {
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               rebuild->Remove(edge);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++      BuildFMap();
++
++
++      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++      {
++         TopoDS_Face face = TopoDS::Face(exp0.Current());
++
++         GProp_GProps system;
++         BRepGProp::SurfaceProperties(face, system);
++         surfacecont += system.Mass();
++      }
++
++
++      std::cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << std::endl
++         << "-----------------------------------" << std::endl;
++
++      {
++         std::cout << std::endl << "- repairing faces" << std::endl;
++
++         Handle(ShapeFix_Face) sff;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++
++
++         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++         {
++            // Variable to hold the colour (if there exists one) of 
++            // the current face being processed
++            Quantity_Color face_colour;
++
++            TopoDS_Face face = TopoDS::Face (exp0.Current());
++
++            if(face_colours.IsNull()
++               || (!(face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour))))
++            {
++               // Set the default face colour to green (Netgen Standard)
++               // if no colour has been defined for the face
++               face_colour = Quantity_Color(0.0,1.0,0.0,Quantity_TOC_RGB);
++            }
++
++            sff = new ShapeFix_Face (face);
++            sff->FixAddNaturalBoundMode() = Standard_True;
++            sff->FixSmallAreaWireMode() = Standard_True;
++            sff->Perform();
++
++            if(sff->Status(ShapeExtend_DONE1) ||
++               sff->Status(ShapeExtend_DONE2) ||
++               sff->Status(ShapeExtend_DONE3) ||
++               sff->Status(ShapeExtend_DONE4) ||
++               sff->Status(ShapeExtend_DONE5))
++            {
++               std::cout << "repaired face " << fmap.FindIndex(face) << " ";
++               if(sff->Status(ShapeExtend_DONE1))
++                  std::cout << "(some wires are fixed)" <Status(ShapeExtend_DONE2))
++                  std::cout << "(orientation of wires fixed)" <Status(ShapeExtend_DONE3))
++                  std::cout << "(missing seam added)" <Status(ShapeExtend_DONE4))
++                  std::cout << "(small area wire removed)" <Status(ShapeExtend_DONE5))
++                  std::cout << "(natural bounds added)" <Face();
++
++               rebuild->Replace(face, newface);
++            }
++
++            // Set the original colour of the face to the newly created 
++            // face (after the healing process)
++            face = TopoDS::Face (exp0.Current());
++            face_colours->SetColor(face,face_colour,XCAFDoc_ColorSurf);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++
++      {
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               rebuild->Remove(edge);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++
++      if (fixsmalledges)
++      {
++         std::cout << std::endl << "- fixing small edges" << std::endl;
++
++         Handle(ShapeFix_Wire) sfw;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++
++
++         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++         {
++            TopoDS_Face face = TopoDS::Face(exp0.Current());
++
++            for (exp1.Init (face, TopAbs_WIRE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Wire oldwire = TopoDS::Wire(exp1.Current());
++               sfw = new ShapeFix_Wire (oldwire, face ,tolerance);
++               sfw->ModifyTopologyMode() = Standard_True;
++
++               sfw->ClosedWireMode() = Standard_True;
++
++               bool replace = false;
++
++               replace = sfw->FixReorder() || replace;
++
++               replace = sfw->FixConnected() || replace;
++
++
++
++               if (sfw->FixSmall (Standard_False, tolerance) && ! (sfw->StatusSmall(ShapeExtend_FAIL1) ||
++                  sfw->StatusSmall(ShapeExtend_FAIL2) ||
++                  sfw->StatusSmall(ShapeExtend_FAIL3)))
++               {
++                  std::cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << std::endl;
++                  replace = true;
++
++               }
++               else if (sfw->StatusSmall(ShapeExtend_FAIL1))
++                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge cannot be checked (no 3d curve and no pcurve)" << std::endl;
++               else if (sfw->StatusSmall(ShapeExtend_FAIL2))
++                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << std::endl;
++               else if (sfw->StatusSmall(ShapeExtend_FAIL3))
++                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", CdheckConnected has failed" << std::endl;
++
++               replace = sfw->FixEdgeCurves() || replace;
++
++               replace = sfw->FixDegenerated() || replace;
++
++               replace = sfw->FixSelfIntersection() || replace;
++
++               replace = sfw->FixLacking(Standard_True) || replace;
++
++               if(replace)
++               {
++                  TopoDS_Wire newwire = sfw->Wire();
++                  rebuild->Replace(oldwire, newwire);
++               }
++
++               //delete sfw; sfw = NULL;
++
++            }
++         }
++
++         shape = rebuild->Apply(shape);
++
++
++
++         {
++            BuildFMap();
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Apply(shape);
++
++            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++               if (vmap.FindIndex(TopExp::FirstVertex (edge)) ==
++                  vmap.FindIndex(TopExp::LastVertex (edge)))
++               {
++                  GProp_GProps system;
++                  BRepGProp::LinearProperties(edge, system);
++                  if (system.Mass() < tolerance)
++                  {
++                     std::cout << "removing degenerated edge " << emap.FindIndex(edge)
++                        << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
++                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << std::endl;
++                     rebuild->Remove(edge);
++                  }
++               }
++            }
++            shape = rebuild->Apply(shape);
++
++            //delete rebuild; rebuild = NULL;
++         }
++
++
++
++         {
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Apply(shape);
++            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++               if ( BRep_Tool::Degenerated(edge) )
++                  rebuild->Remove(edge);
++            }
++            shape = rebuild->Apply(shape);
++         }
++
++
++
++
++         Handle(ShapeFix_Wireframe) sfwf = new ShapeFix_Wireframe;
++         sfwf->SetPrecision(tolerance);
++         sfwf->Load (shape);
++         sfwf->ModeDropSmallEdges() = Standard_True;
++
++         sfwf->SetPrecision(boundingbox.Diam());
++
++         if (sfwf->FixWireGaps())
++         {
++            std::cout << std::endl << "- fixing wire gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_OK)) std::cout << "no gaps found" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) std::cout << "some 2D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) std::cout << "some 3D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) std::cout << "failed to fix some 2D gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) std::cout << "failed to fix some 3D gaps" << std::endl;
++         }
++
++         sfwf->SetPrecision(tolerance);
++
++
++         {
++            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++               if ( BRep_Tool::Degenerated(edge) )
++                  std::cout << "degenerated edge at position 4" << std::endl;
++            }
++         }
++
++
++
++         if (sfwf->FixSmallEdges())
++         {
++            std::cout << std::endl << "- fixing wire frames" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) std::cout << "no small edges found" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) std::cout << "some small edges fixed" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) std::cout << "failed to fix some small edges" << std::endl;
++         }
++
++
++
++         shape = sfwf->Shape();
++
++         //delete sfwf; sfwf = NULL;
++         //delete rebuild; rebuild = NULL;
++
++      }
++
++
++
++
++
++      {
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               std::cout << "degenerated edge at position 5" << std::endl;
++         }
++      }
++
++
++
++
++      if (fixspotstripfaces)
++      {
++
++         std::cout << std::endl << "- fixing spot and strip faces" << std::endl;
++         Handle(ShapeFix_FixSmallFace) sffsm = new ShapeFix_FixSmallFace();
++         sffsm -> Init (shape);
++         sffsm -> SetPrecision (tolerance);
++         sffsm -> Perform();
++
++         shape = sffsm -> FixShape();
++         //delete sffsm; sffsm = NULL;
++      }
++
++
++      {
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               std::cout << "degenerated edge at position 6" << std::endl;
++         }
++      }
++
++
++
++      if (sewfaces)
++      {
++         std::cout << std::endl << "- sewing faces" << std::endl;
++
++         BRepOffsetAPI_Sewing sewedObj(tolerance);
++
++         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++         {
++            TopoDS_Face face = TopoDS::Face (exp0.Current());
++            sewedObj.Add (face);
++         }
++
++         sewedObj.Perform();
++
++         if (!sewedObj.SewedShape().IsNull())
++            shape = sewedObj.SewedShape();
++         else
++            std::cout << " not possible";
++      }
++
++
++
++      {
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               rebuild->Remove(edge);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++
++      if (makesolids)
++      {
++         std::cout << std::endl << "- making solids" << std::endl;
++
++         BRepBuilderAPI_MakeSolid ms;
++         int count = 0;
++         for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
++         {
++            count++;
++            ms.Add (TopoDS::Shell(exp0.Current()));
++         }
++
++         if (!count)
++         {
++            std::cout << " not possible (no shells)" << std::endl;
++         }
++         else
++         {
++            BRepCheck_Analyzer ba(ms);
++            if (ba.IsValid ())
++            {
++               Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
++               sfs->Init (ms);
++               sfs->SetPrecision(tolerance);
++               sfs->SetMaxTolerance(tolerance);
++               sfs->Perform();
++               shape = sfs->Shape();
++
++               for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
++               {
++                  TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
++                  TopoDS_Solid newsolid = solid;
++                  BRepLib::OrientClosedSolid (newsolid);
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++                  //		  rebuild->Apply(shape);
++                  rebuild->Replace(solid, newsolid);
++                  TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
++                  //		  TopoDS_Shape newshape = rebuild->Apply(shape);
++                  shape = newshape;
++               }
++
++               //delete sfs; sfs = NULL;
++            }
++            else
++               std::cout << " not possible" << std::endl;
++         }
++      }
++
++
++
++      if (splitpartitions)
++      {
++         std::cout << "- running SALOME partition splitter" << std::endl;
++
++         TopExp_Explorer e2;
++         Partition_Spliter ps;
++         int count = 0;
++
++         for (e2.Init (shape, TopAbs_SOLID);
++            e2.More(); e2.Next())
++         {
++            count++;
++            ps.AddShape (e2.Current());
++         }
++
++         ps.Compute();
++         shape = ps.Shape();
++
++         std::cout << " before: " << count << " solids" << std::endl;
++
++         count = 0;
++         for (e2.Init (shape, TopAbs_SOLID);
++            e2.More(); e2.Next()) count++;
++
++            std::cout << " after : " << count << " solids" << std::endl;
++      }
++
++      BuildFMap();
++
++
++
++      {
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               std::cout << "degenerated edge at position 8" << std::endl;
++         }
++      }
++
++
++      double newsurfacecont = 0;
++
++
++      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++      {
++         TopoDS_Face face = TopoDS::Face(exp0.Current());
++         GProp_GProps system;
++         BRepGProp::SurfaceProperties(face, system);
++         newsurfacecont += system.Mass();
++      }
++
++
++      int nnrc = 0, nnrcs = 0,
++         nnrso = somap.Extent(),
++         nnrsh = shmap.Extent(),
++         nnrf = fmap.Extent(),
++         nnrw = wmap.Extent(),
++         nnre = emap.Extent(),
++         nnrv = vmap.Extent();
++
++      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nnrc++;
++      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nnrcs++;
++
++      std::cout << "-----------------------------------" << std::endl;
++      std::cout << "Compounds       : " << nnrc << " (" << nrc << ")" << std::endl;
++      std::cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << std::endl;
++      std::cout << "Solids          : " << nnrso << " (" << nrso << ")" << std::endl;
++      std::cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << std::endl;
++      std::cout << "Wires           : " << nnrw << " (" << nrw << ")" << std::endl;
++      std::cout << "Faces           : " << nnrf << " (" << nrf << ")" << std::endl;
++      std::cout << "Edges           : " << nnre << " (" << nre << ")" << std::endl;
++      std::cout << "Vertices        : " << nnrv << " (" << nrv << ")" << std::endl;
++      std::cout << std::endl;
++      std::cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << std::endl;
++      std::cout << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: BuildFMap()
++   {
++      somap.Clear();
++      shmap.Clear();
++      fmap.Clear();
++      wmap.Clear();
++      emap.Clear();
++      vmap.Clear();
++
++      TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5;
++
++      for (exp0.Init(shape, TopAbs_COMPOUND);
++         exp0.More(); exp0.Next())
++      {
++         TopoDS_Compound compound = TopoDS::Compound (exp0.Current());
++         (*testout) << "compound" << std::endl;
++         int i = 0;
++         for (exp1.Init(compound, TopAbs_SHELL);
++            exp1.More(); exp1.Next())
++         {
++            (*testout) << "shell " << ++i << std::endl;
++         }
++      }
++
++      for (exp0.Init(shape, TopAbs_SOLID);
++         exp0.More(); exp0.Next())
++      {
++         TopoDS_Solid solid = TopoDS::Solid (exp0.Current());
++
++         if (somap.FindIndex(solid) < 1)
++         {
++            somap.Add (solid);
++
++            for (exp1.Init(solid, TopAbs_SHELL);
++               exp1.More(); exp1.Next())
++            {
++               TopoDS_Shell shell = TopoDS::Shell (exp1.Current());
++               if (shmap.FindIndex(shell) < 1)
++               {
++                  shmap.Add (shell);
++
++                  for (exp2.Init(shell, TopAbs_FACE);
++                     exp2.More(); exp2.Next())
++                  {
++                     TopoDS_Face face = TopoDS::Face(exp2.Current());
++                     if (fmap.FindIndex(face) < 1)
++                     {
++                        fmap.Add (face);
++                        (*testout) << "face " << fmap.FindIndex(face) << " ";
++                        (*testout) << ((face.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
++                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
++                        for (exp3.Init(exp2.Current(), TopAbs_WIRE);
++                           exp3.More(); exp3.Next())
++                        {
++                           TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++                           if (wmap.FindIndex(wire) < 1)
++                           {
++                              wmap.Add (wire);
++
++                              for (exp4.Init(exp3.Current(), TopAbs_EDGE);
++                                 exp4.More(); exp4.Next())
++                              {
++                                 TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++                                 if (emap.FindIndex(edge) < 1)
++                                 {
++                                    emap.Add (edge);
++                                    for (exp5.Init(exp4.Current(), TopAbs_VERTEX);
++                                       exp5.More(); exp5.Next())
++                                    {
++                                       TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                                       if (vmap.FindIndex(vertex) < 1)
++                                          vmap.Add (vertex);
++                                    }
++                                 }
++                              }
++                           }
++                        }
++                     }
++                  }
++               }
++            }
++         }
++      }
++
++      // Free Shells
++      for (exp1.Init(shape, TopAbs_SHELL, TopAbs_SOLID); exp1.More(); exp1.Next())
++      {
++         TopoDS_Shell shell = TopoDS::Shell(exp1.Current());
++         if (shmap.FindIndex(shell) < 1)
++         {
++            shmap.Add (shell);
++
++            (*testout) << "shell " << shmap.FindIndex(shell) << " ";
++            (*testout) << ((shell.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
++            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
++
++            for (exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next())
++            {
++               TopoDS_Face face = TopoDS::Face(exp2.Current());
++               if (fmap.FindIndex(face) < 1)
++               {
++                  fmap.Add (face);
++
++                  for (exp3.Init(face, TopAbs_WIRE); exp3.More(); exp3.Next())
++                  {
++                     TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++                     if (wmap.FindIndex(wire) < 1)
++                     {
++                        wmap.Add (wire);
++
++                        for (exp4.Init(wire, TopAbs_EDGE); exp4.More(); exp4.Next())
++                        {
++                           TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++                           if (emap.FindIndex(edge) < 1)
++                           {
++                              emap.Add (edge);
++                              for (exp5.Init(edge, TopAbs_VERTEX); exp5.More(); exp5.Next())
++                              {
++                                 TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                                 if (vmap.FindIndex(vertex) < 1)
++                                    vmap.Add (vertex);
++                              }
++                           }
++                        }
++                     }
++                  }
++               }
++            }
++         }
++      }
++
++
++      // Free Faces
++
++      for (exp2.Init(shape, TopAbs_FACE, TopAbs_SHELL); exp2.More(); exp2.Next())
++      {
++         TopoDS_Face face = TopoDS::Face(exp2.Current());
++         if (fmap.FindIndex(face) < 1)
++         {
++            fmap.Add (face);
++
++            for (exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next())
++            {
++               TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++               if (wmap.FindIndex(wire) < 1)
++               {
++                  wmap.Add (wire);
++
++                  for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
++                  {
++                     TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++                     if (emap.FindIndex(edge) < 1)
++                     {
++                        emap.Add (edge);
++                        for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
++                        {
++                           TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                           if (vmap.FindIndex(vertex) < 1)
++                              vmap.Add (vertex);
++                        }
++                     }
++                  }
++               }
++            }
++         }
++      }
++
++
++      // Free Wires
++
++      for (exp3.Init(shape, TopAbs_WIRE, TopAbs_FACE); exp3.More(); exp3.Next())
++      {
++         TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++         if (wmap.FindIndex(wire) < 1)
++         {
++            wmap.Add (wire);
++
++            for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++               if (emap.FindIndex(edge) < 1)
++               {
++                  emap.Add (edge);
++                  for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
++                  {
++                     TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                     if (vmap.FindIndex(vertex) < 1)
++                        vmap.Add (vertex);
++                  }
++               }
++            }
++         }
++      }
++
++
++      // Free Edges
++
++      for (exp4.Init(shape, TopAbs_EDGE, TopAbs_WIRE); exp4.More(); exp4.Next())
++      {
++         TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++         if (emap.FindIndex(edge) < 1)
++         {
++            emap.Add (edge);
++            for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
++            {
++               TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++               if (vmap.FindIndex(vertex) < 1)
++                  vmap.Add (vertex);
++            }
++         }
++      }
++
++
++      // Free Vertices
++
++      for (exp5.Init(shape, TopAbs_VERTEX, TopAbs_EDGE); exp5.More(); exp5.Next())
++      {
++         TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++         if (vmap.FindIndex(vertex) < 1)
++            vmap.Add (vertex);
++      }
++
++
++
++
++      facemeshstatus.DeleteAll();
++      facemeshstatus.SetSize (fmap.Extent());
++      facemeshstatus = 0;
++
++      // Philippose - 15/01/2009
++      face_maxh.DeleteAll();
++      face_maxh.SetSize (fmap.Extent());
++      face_maxh = mparam.maxh;
++
++      // Philippose - 15/01/2010      
++      face_maxh_modified.DeleteAll();      
++      face_maxh_modified.SetSize(fmap.Extent());      
++      face_maxh_modified = 0;
++      
++
++      // Philippose - 17/01/2009
++      face_sel_status.DeleteAll();
++      face_sel_status.SetSize (fmap.Extent());
++      face_sel_status = 0;
++
++      fvispar.SetSize (fmap.Extent());
++      evispar.SetSize (emap.Extent());
++      vvispar.SetSize (vmap.Extent());
++
++      fsingular.SetSize (fmap.Extent());
++      esingular.SetSize (emap.Extent());
++      vsingular.SetSize (vmap.Extent());
++
++      fsingular = esingular = vsingular = false;
++   }
++
++
++
++   void OCCGeometry :: SewFaces ()
++   {
++      (*testout) << "Trying to sew faces ..." << std::endl;
++      std::cout << "Trying to sew faces ..." << flush;
++
++      BRepOffsetAPI_Sewing sewedObj(1);
++ 
++      for (int i = 1; i <= fmap.Extent(); i++)
++      {
++         TopoDS_Face face = TopoDS::Face (fmap(i));
++         sewedObj.Add (face);
++      }
++
++      sewedObj.Perform();
++
++      if (!sewedObj.SewedShape().IsNull())
++      {
++         shape = sewedObj.SewedShape();
++         std::cout << " done" << std::endl;
++      }
++      else
++         std::cout << " not possible";
++   }
++
++
++
++
++
++   void OCCGeometry :: MakeSolid ()
++   {
++      TopExp_Explorer exp0;
++
++      (*testout) << "Trying to build solids ..." << std::endl;
++      std::cout << "Trying to build solids ..." << flush;
++
++      BRepBuilderAPI_MakeSolid ms;
++      int count = 0;
++      for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
++      {
++         count++;
++         ms.Add (TopoDS::Shell(exp0.Current()));
++      }
++
++      if (!count)
++      {
++         std::cout << " not possible (no shells)" << std::endl;
++         return;
++      }
++
++      BRepCheck_Analyzer ba(ms);
++      if (ba.IsValid ())
++      {
++         Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
++         sfs->Init (ms);
++
++         sfs->SetPrecision(1e-5);
++         sfs->SetMaxTolerance(1e-5);
++
++         sfs->Perform();
++
++         shape = sfs->Shape();
++
++         for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
++         {
++            TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
++            TopoDS_Solid newsolid = solid;
++            BRepLib::OrientClosedSolid (newsolid);
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Replace(solid, newsolid);
++
++            TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
++            shape = newshape;
++         }
++
++         std::cout << " done" << std::endl;
++      }
++      else
++         std::cout << " not possible" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: BuildVisualizationMesh (double deflection)
++   {
++      std::cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
++
++      BRepTools::Clean (shape);
++      // BRepMesh_IncrementalMesh::
++      BRepMesh_IncrementalMesh (shape, deflection, true);
++      std::cout << "done" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: CalcBoundingBox ()
++   {
++      Bnd_Box bb;
++      BRepBndLib::Add (shape, bb);
++
++      double x1,y1,z1,x2,y2,z2;
++      bb.Get (x1,y1,z1,x2,y2,z2);
++      Point<3> p1 = Point<3> (x1,y1,z1);
++      Point<3> p2 = Point<3> (x2,y2,z2);
++
++      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << std::endl;
++      boundingbox = Box<3> (p1,p2);
++      SetCenter();
++   }
++
++
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
++
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
++   {
++      static int cnt = 0;
++      if (++cnt % 1000 == 0) std::cout << "Project cnt = " << cnt << std::endl;
++
++      gp_Pnt pnt(p(0), p(1), p(2));
++
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
++
++      p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
++
++      return true;
++   }
++
++
++
++
++   bool OCCGeometry :: FastProject (int surfi, Point<3> & ap, double& u, double& v) const
++   {
++      gp_Pnt p(ap(0), ap(1), ap(2));
++
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << std::endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //std::cout << "Projection fails" << std::endl;
++        return false;
++      }
++
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
++
++      return true;
++   }
++
++
++
++
++   void OCCGeometry :: WriteOCC_STL(char * filename)
++   {
++      std::cout << "writing stl..."; std::cout.flush();
++      StlAPI_Writer writer;
++      //writer.RelativeMode() = Standard_False;
++
++      //writer.SetDeflection(0.02);
++      writer.Write(shape,filename);
++
++      std::cout << "done" << std::endl;
++   }
++
++
++
++   // Philippose - 23/02/2009
++   /* Special IGES File load function including the ability
++   to extract individual surface colours via the extended
++   OpenCascade XDE and XCAF Feature set.
++   */
++   OCCGeometry *LoadOCC_IGES(const char *filename)
++   {
++      OCCGeometry *occgeo;
++      occgeo = new OCCGeometry;
++
++      // Initiate a dummy XCAF Application to handle the IGES XCAF Document
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
++
++      // Create an XCAF Document to contain the IGES file itself
++      Handle(TDocStd_Document) iges_doc;
++
++      // Check if a IGES File is already open under this handle, if so, close it to prevent
++      // Segmentation Faults when trying to create a new document
++      if(dummy_app->NbDocuments() > 0)
++      {
++         dummy_app->GetDocument(1,iges_doc);
++         dummy_app->Close(iges_doc);
++      }
++      dummy_app->NewDocument ("IGES-XCAF",iges_doc);
++
++      IGESCAFControl_Reader reader;
++
++      Standard_Integer stat = reader.ReadFile((char*)filename);
++
++      if(stat != IFSelect_RetDone)
++      {
++         delete occgeo;
++         return NULL;
++      }
++
++      // Enable transfer of colours
++      reader.SetColorMode(Standard_True);
++
++      reader.Transfer(iges_doc);
++
++      // Read in the shape(s) and the colours present in the IGES File
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++
++      TDF_LabelSequence iges_shapes;
++      iges_shape_contents->GetShapes(iges_shapes);
++
++      // List out the available colours in the IGES File as Colour Names
++      TDF_LabelSequence all_colours;
++      iges_colour_contents->GetColors(all_colours);
++      PrintMessage(1,"Number of colours in IGES File: ",all_colours.Length());
++      for(int i = 1; i <= all_colours.Length(); i++)
++      {
++         Quantity_Color col;
++         stringstream col_rgb;
++         iges_colour_contents->GetColor(all_colours.Value(i),col);
++         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
++         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
++      }
++
++
++      // For the IGES Reader, all the shapes can be exported as one compund shape 
++      // using the "OneShape" member
++      occgeo->shape = reader.OneShape();
++      occgeo->face_colours = iges_colour_contents;
++      occgeo->changed = 1;
++      occgeo->BuildFMap();
++
++      occgeo->CalcBoundingBox();
++      PrintContents (occgeo);
++
++      return occgeo;
++   }
++
++
++
++
++
++   // Philippose - 29/01/2009
++   /* Special STEP File load function including the ability
++   to extract individual surface colours via the extended
++   OpenCascade XDE and XCAF Feature set.
++   */
++   OCCGeometry * LoadOCC_STEP (const char * filename)
++   {
++      OCCGeometry * occgeo;
++      occgeo = new OCCGeometry;
++
++      // Initiate a dummy XCAF Application to handle the STEP XCAF Document
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
++
++      // Create an XCAF Document to contain the STEP file itself
++      Handle(TDocStd_Document) step_doc;
++
++      // Check if a STEP File is already open under this handle, if so, close it to prevent
++      // Segmentation Faults when trying to create a new document
++      if(dummy_app->NbDocuments() > 0)
++      {
++         dummy_app->GetDocument(1,step_doc);
++         dummy_app->Close(step_doc);
++      }
++      dummy_app->NewDocument ("STEP-XCAF",step_doc);
++
++      STEPCAFControl_Reader reader;
++
++      // Enable transfer of colours
++      reader.SetColorMode(Standard_True);
++
++      Standard_Integer stat = reader.ReadFile((char*)filename);
++
++      if(stat != IFSelect_RetDone)
++      {
++         delete occgeo;
++         return NULL;
++      }
++
++      reader.Transfer(step_doc);
++
++      // Read in the shape(s) and the colours present in the STEP File
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++
++      TDF_LabelSequence step_shapes;
++      step_shape_contents->GetShapes(step_shapes);
++
++      // List out the available colours in the STEP File as Colour Names
++      TDF_LabelSequence all_colours;
++      step_colour_contents->GetColors(all_colours);
++      PrintMessage(1,"Number of colours in STEP File: ",all_colours.Length());
++      for(int i = 1; i <= all_colours.Length(); i++)
++      {
++         Quantity_Color col;
++         stringstream col_rgb;
++         step_colour_contents->GetColor(all_colours.Value(i),col);
++         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
++         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
++      }
++
++
++      // For the STEP File Reader in OCC, the 1st Shape contains the entire 
++      // compound geometry as one shape
++      occgeo->shape = step_shape_contents->GetShape(step_shapes.Value(1));
++      occgeo->face_colours = step_colour_contents;
++      occgeo->changed = 1;
++      occgeo->BuildFMap();
++
++      occgeo->CalcBoundingBox();
++      PrintContents (occgeo);
++
++      return occgeo;
++   }
++
++
++
++
++   OCCGeometry *LoadOCC_BREP (const char *filename)
++   {
++      OCCGeometry * occgeo;
++      occgeo = new OCCGeometry;
++
++      BRep_Builder aBuilder;
++      Standard_Boolean result = BRepTools::Read(occgeo->shape, const_cast (filename),aBuilder);
++
++      if(!result)
++      {
++         delete occgeo;
++         return NULL;
++      }
++
++      // Philippose - 23/02/2009
++      // Fixed a bug in the OpenCascade XDE Colour handling when 
++      // opening BREP Files, since BREP Files have no colour data.
++      // Hence, the face_colours Handle needs to be created as a NULL handle.
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
++      occgeo->face_colours.Nullify();
++      occgeo->changed = 1;
++      occgeo->BuildFMap();
++
++      occgeo->CalcBoundingBox();
++      PrintContents (occgeo);
++
++      return occgeo;
++   }
++
++
++  void OCCGeometry :: Save (string sfilename) const
++  {
++    const char * filename = sfilename.c_str();
++    if (strlen(filename) < 4) 
++      throw NgException ("illegal filename");
++    
++    if (strcmp (&filename[strlen(filename)-3], "igs") == 0)
++      {
++	IGESControl_Writer writer("millimeters", 1);
++	writer.AddShape (shape);
++	writer.Write (filename);
++      }
++    else if (strcmp (&filename[strlen(filename)-3], "stp") == 0)
++      {
++	STEPControl_Writer writer;
++	writer.Transfer (shape, STEPControl_AsIs);
++	writer.Write (filename);
++      }
++    else if (strcmp (&filename[strlen(filename)-3], "stl") == 0)
++      {
++	StlAPI_Writer writer;
++	writer.ASCIIMode() = Standard_True;
++	writer.Write (shape, filename);
++      }
++    else if (strcmp (&filename[strlen(filename)-4], "stlb") == 0)
++      {
++	StlAPI_Writer writer;
++	writer.ASCIIMode() = Standard_False;
++	writer.Write (shape, filename);
++      }
++  }
++
++
++
++  const char * shapesname[] =
++   {" ", "CompSolids", "Solids", "Shells",
++
++   "Faces", "Wires", "Edges", "Vertices"};
++
++  const char * shapename[] =
++   {" ", "CompSolid", "Solid", "Shell",
++   "Face", "Wire", "Edge", "Vertex"};
++
++  const char * orientationstring[] =
++     {"+", "-"};
++
++
++
++
++   void OCCGeometry :: RecursiveTopologyTree (const TopoDS_Shape & sh,
++      stringstream & str,
++      TopAbs_ShapeEnum l,
++      bool isfree,
++      const char * lname)
++   {
++      if (l > TopAbs_VERTEX) return;
++
++      TopExp_Explorer e;
++      int count = 0;
++      int count2 = 0;
++
++      if (isfree)
++         e.Init(sh, l, TopAbs_ShapeEnum(l-1));
++      else
++         e.Init(sh, l);
++
++      for (; e.More(); e.Next())
++      {
++         count++;
++
++         stringstream lname2;
++         lname2 << lname << "/" << shapename[l] << count;
++         str << lname2.str() << " ";
++
++         switch (e.Current().ShapeType())
++	   {
++	   case TopAbs_SOLID:
++	     count2 = somap.FindIndex(TopoDS::Solid(e.Current())); break;
++	   case TopAbs_SHELL:
++	     count2 = shmap.FindIndex(TopoDS::Shell(e.Current())); break;
++	   case TopAbs_FACE:
++	     count2 = fmap.FindIndex(TopoDS::Face(e.Current())); break;
++	   case TopAbs_WIRE:
++	     count2 = wmap.FindIndex(TopoDS::Wire(e.Current())); break;
++	   case TopAbs_EDGE:
++	     count2 = emap.FindIndex(TopoDS::Edge(e.Current())); break;
++	   case TopAbs_VERTEX:
++	     count2 = vmap.FindIndex(TopoDS::Vertex(e.Current())); break;
++	   default:
++	     std::cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << std::endl;
++         }
++
++         int nrsubshapes = 0;
++
++         if (l <= TopAbs_WIRE)
++         {
++            TopExp_Explorer e2;
++            for (e2.Init (e.Current(), TopAbs_ShapeEnum (l+1));
++               e2.More(); e2.Next())
++               nrsubshapes++;
++         }
++
++         str << "{" << shapename[l] << " " << count2;
++
++         if (l <= TopAbs_EDGE)
++         {
++            str << " (" << orientationstring[e.Current().Orientation()];
++            if (nrsubshapes != 0) str << ", " << nrsubshapes;
++            str << ") } ";
++         }
++         else
++            str << " } ";
++
++         RecursiveTopologyTree (e.Current(), str, TopAbs_ShapeEnum (l+1),
++            false, (char*)lname2.str().c_str());
++
++      }
++   }
++
++
++
++
++   void OCCGeometry :: GetTopologyTree (stringstream & str)
++   {
++      std::cout << "Building topology tree ... " << flush;
++      RecursiveTopologyTree (shape, str, TopAbs_COMPSOLID, false, "CompSolids");
++      RecursiveTopologyTree (shape, str, TopAbs_SOLID, true, "FreeSolids");
++      RecursiveTopologyTree (shape, str, TopAbs_SHELL, true, "FreeShells");
++      RecursiveTopologyTree (shape, str, TopAbs_FACE, true, "FreeFaces");
++      RecursiveTopologyTree (shape, str, TopAbs_WIRE, true, "FreeWires");
++      RecursiveTopologyTree (shape, str, TopAbs_EDGE, true, "FreeEdges");
++      RecursiveTopologyTree (shape, str, TopAbs_VERTEX, true, "FreeVertices");
++      str << flush;
++      //  std::cout << "done" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: CheckIrregularEntities(stringstream & str)
++   {
++      ShapeAnalysis_CheckSmallFace csm;
++
++      csm.SetTolerance (1e-6);
++
++      TopTools_DataMapOfShapeListOfShape mapEdges;
++      ShapeAnalysis_DataMapOfShapeListOfReal mapParam;
++      TopoDS_Compound theAllVert;
++
++      int spotfaces = 0;
++      int stripsupportfaces = 0;
++      int singlestripfaces = 0;
++      int stripfaces = 0;
++      int facessplitbyvertices = 0;
++      int stretchedpinfaces = 0;
++      int smoothpinfaces = 0;
++      int twistedfaces = 0;
++      // int edgessamebutnotidentified = 0;
++
++      std::cout << "checking faces ... " << flush;
++
++      int i;
++      for (i = 1; i <= fmap.Extent(); i++)
++      {
++         TopoDS_Face face = TopoDS::Face (fmap(i));
++         TopoDS_Edge e1, e2;
++
++         if (csm.CheckSpotFace (face))
++         {
++            if (!spotfaces++)
++               str << "SpotFace {Spot face} ";
++
++            (*testout) << "Face " << i << " is a spot face" << std::endl;
++            str << "SpotFace/Face" << i << " ";
++            str << "{Face " << i << " } ";
++         }
++
++         if (csm.IsStripSupport (face))
++         {
++            if (!stripsupportfaces++)
++               str << "StripSupportFace {Strip support face} ";
++
++            (*testout) << "Face " << i << " has strip support" << std::endl;
++            str << "StripSupportFace/Face" << i << " ";
++            str << "{Face " << i << " } ";
++         }
++
++         if (csm.CheckSingleStrip(face, e1, e2))
++         {
++            if (!singlestripfaces++)
++               str << "SingleStripFace {Single strip face} ";
++
++            (*testout) << "Face " << i << " is a single strip (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2) << " are identical)" << std::endl;
++            str << "SingleStripFace/Face" << i << " ";
++            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
++         }
++
++         if (csm.CheckStripFace(face, e1, e2))
++         {
++            if (!stripfaces++)
++               str << "StripFace {Strip face} ";
++
++            (*testout) << "Face " << i << " is a strip (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2)
++               << " are identical)" << std::endl;
++            str << "StripFace/Face" << i << " ";
++            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
++         }
++
++         if (int count = csm.CheckSplittingVertices(face, mapEdges, mapParam, theAllVert))
++         {
++            if (!facessplitbyvertices++)
++               str << "FaceSplitByVertices {Face split by vertices} ";
++
++            (*testout) << "Face " << i << " is split by " << count
++               << " vertex/vertices " << std::endl;
++            str << "FaceSplitByVertices/Face" << i << " ";
++            str << "{Face " << i << " (split by " << count << "vertex/vertices)} ";
++         }
++
++         int whatrow, sens;
++         if (int type = csm.CheckPin (face, whatrow, sens))
++         {
++            if (type == 1)
++            {
++               if (!smoothpinfaces++)
++                  str << "SmoothPinFace {Smooth pin face} ";
++
++               (*testout) << "Face " << i << " is a smooth pin" << std::endl;
++               str << "SmoothPinFace/Face" << i << " ";
++               str << "{Face " << i << " } ";
++            }
++            else
++            {
++               if (!stretchedpinfaces++)
++                  str << "StretchedPinFace {Stretched pin face} ";
++
++               (*testout) << "Face " << i << " is a streched pin" << std::endl;
++               str << "StretchedPinFace/Face" << i << " ";
++               str << "{Face " << i << " } ";
++            }
++         }
++
++         double paramu, paramv;
++         if (csm.CheckTwisted (face, paramu, paramv))
++         {
++            if (!twistedfaces++)
++               str << "TwistedFace {Twisted face} ";
++
++            (*testout) << "Face " << i << " is twisted" << std::endl;
++            str << "TwistedFace/Face" << i << " ";
++            str << "{Face " << i << " } ";
++         }
++      }
++
++      std::cout << "done" << std::endl;
++      std::cout << "checking edges ... " << flush;
++
++      // double dmax;
++      // int cnt = 0;
++      Array  edgeLengths;
++      Array  order;
++      edgeLengths.SetSize (emap.Extent());
++      order.SetSize (emap.Extent());
++
++      for (i = 1; i <= emap.Extent(); i++)
++      {
++         TopoDS_Edge edge1 = TopoDS::Edge (emap(i));
++         GProp_GProps system;
++         BRepGProp::LinearProperties(edge1, system);
++         edgeLengths[i-1] = system.Mass();
++      }
++
++      Sort (edgeLengths, order);
++
++      str << "ShortestEdges {Shortest edges} ";
++      for (i = 1; i <= min(20, emap.Extent()); i++)
++      {
++         str << "ShortestEdges/Edge" << i;
++         str << " {Edge " << order[i-1] << " (L=" << edgeLengths[order[i-1]-1] << ")} ";
++      }
++
++      str << flush;
++
++      std::cout << "done" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: GetUnmeshedFaceInfo (stringstream & str)
++   {
++      for (int i = 1; i <= fmap.Extent(); i++)
++      {
++         if (facemeshstatus[i-1] == -1)
++            str << "Face" << i << " {Face " << i << " } ";
++      }
++      str << flush;
++   }
++
++
++
++
++   void OCCGeometry :: GetNotDrawableFaces (stringstream & str)
++   {
++      for (int i = 1; i <= fmap.Extent(); i++)
++      {
++         if (!fvispar[i-1].IsDrawable())
++            str << "Face" << i << " {Face " << i << " } ";
++      }
++      str << flush;
++   }
++
++
++
++
++   bool OCCGeometry :: ErrorInSurfaceMeshing ()
++   {
++      for (int i = 1; i <= fmap.Extent(); i++)
++         if (facemeshstatus[i-1] == -1)
++            return true;
++
++      return false;
++   }
++
++
++
++
++  int OCCGeometry :: GenerateMesh (Mesh*& mesh, MeshingParameters & mparam,
++      int perfstepsstart, int perfstepsend)
++   {
++     return OCCGenerateMesh (*this, mesh, mparam, perfstepsstart, perfstepsend);
++   }
++
++
++
++
++   const Refinement & OCCGeometry :: GetRefinement () const
++   {
++      return * new OCCRefinementSurfaces (*this);
++   }
++
++
++
++
++   OCCParameters :: OCCParameters()
++   {
++      resthcloseedgefac = 1;
++      resthcloseedgeenable = 1;
++	  resthminedgelen = 0.001;
++	  resthminedgelenenable = 1;
++   }
++
++
++
++
++   void OCCParameters :: Print(ostream & ost) const
++   {
++      ost << "OCC Parameters:" << std::endl
++         << "close edges: " << resthcloseedgeenable
++         << ", fac = " << resthcloseedgefac << std::endl
++		 << "minimum edge length: " << resthminedgelenenable
++		 << ", min len = " << resthminedgelen << std::endl;
++   }
++
++
++
++
++   OCCParameters occparam;
++
++}
++
++
++#endif
+--- netgen_ref/libsrc/occ/occgeom.hpp
++++ netgen/libsrc/occ/occgeom.hpp
+@@ -1,457 +1,478 @@
+-#ifndef FILE_OCCGEOM
+-#define FILE_OCCGEOM
+-
+-/* *************************************************************************/
+-/* File:   occgeom.hpp                                                     */
+-/* Author: Robert Gaisbauer                                                */
+-/* Date:   26. May  03                                                     */
+-/* *************************************************************************/
+-
+-#ifdef OCCGEOMETRY
+-
+-#include 
+-
+-#include "BRep_Tool.hxx"
+-#include "Geom_Curve.hxx"
+-#include "Geom2d_Curve.hxx"
+-#include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
+-#include "BRepTools.hxx"
+-#include "TopExp.hxx"
+-#include "BRepBuilderAPI_MakeVertex.hxx"
+-#include "BRepBuilderAPI_MakeShell.hxx"
+-#include "BRepBuilderAPI_MakeSolid.hxx"
+-#include "BRepOffsetAPI_Sewing.hxx"
+-#include "BRepLProp_SLProps.hxx"
+-#include "BRepAdaptor_Surface.hxx"
+-#include "Poly_Triangulation.hxx"
+-#include "Poly_Array1OfTriangle.hxx"
+-#include "TColgp_Array1OfPnt2d.hxx"
+-#include "Poly_Triangle.hxx"
+-#include "GProp_GProps.hxx"
+-#include "BRepGProp.hxx"
+-#include "Geom_Surface.hxx"
+-#include "TopExp.hxx"
+-#include "gp_Pnt.hxx"
+-#include "TopoDS.hxx"
+-#include "TopoDS_Solid.hxx"
+-#include "TopExp_Explorer.hxx"
+-#include "TopTools_ListIteratorOfListOfShape.hxx"
+-#include "BRep_Tool.hxx"
+-#include "Geom_Curve.hxx"
+-#include "Geom2d_Curve.hxx"
+-#include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
+-#include "TopoDS_Wire.hxx"
+-#include "BRepTools_WireExplorer.hxx"
+-#include "BRepTools.hxx"
+-#include "TopTools_IndexedMapOfShape.hxx"
+-#include "TopExp.hxx"
+-#include "BRepBuilderAPI_MakeVertex.hxx"
+-#include "BRepBuilderAPI_MakeShell.hxx"
+-#include "BRepBuilderAPI_MakeSolid.hxx"
+-#include "BRepOffsetAPI_Sewing.hxx"
+-#include "BRepLProp_CLProps.hxx"
+-#include "BRepLProp_SLProps.hxx"
+-#include "BRepAdaptor_Surface.hxx"
+-#include "BRepAdaptor_Curve.hxx"
+-#include "Poly_Triangulation.hxx"
+-#include "Poly_Array1OfTriangle.hxx"
+-#include "TColgp_Array1OfPnt2d.hxx"
+-#include "Poly_Triangle.hxx"
+-#include "GProp_GProps.hxx"
+-#include "BRepGProp.hxx"
+-#include "TopoDS_Shape.hxx"
+-#include "TopoDS_Face.hxx"
+-#include "IGESToBRep_Reader.hxx"
+-#include "Interface_Static.hxx"
+-#include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
+-#include "Standard_Failure.hxx"
+-#include "ShapeUpgrade_ShellSewing.hxx"
+-#include "ShapeFix_Shape.hxx"
+-#include "ShapeFix_Wireframe.hxx"
+-#include "BRepMesh.hxx"
+-#include "BRepMesh_IncrementalMesh.hxx"
+-#include "BRepBndLib.hxx"
+-#include "Bnd_Box.hxx"
+-#include "ShapeAnalysis.hxx"
+-#include "ShapeBuild_ReShape.hxx"
+-
+-
+-// Philippose - 29/01/2009
+-// OpenCascade XDE Support
+-// Include support for OpenCascade XDE Features
+-#include "TDocStd_Document.hxx"
+-#include "Quantity_Color.hxx"
+-#include "XCAFApp_Application.hxx"
+-#include "XCAFDoc_ShapeTool.hxx"
+-#include "XCAFDoc_Color.hxx"
+-#include "XCAFDoc_ColorTool.hxx"
+-#include "XCAFDoc_ColorType.hxx"
+-#include "XCAFDoc_LayerTool.hxx"
+-#include "XCAFDoc_DimTolTool.hxx"
+-#include "XCAFDoc_MaterialTool.hxx"
+-#include "XCAFDoc_DocumentTool.hxx"
+-#include "TDF_Label.hxx"
+-#include "TDF_LabelSequence.hxx"
+-#include "STEPCAFControl_Reader.hxx"
+-#include "STEPCAFControl_Writer.hxx"
+-#include "IGESCAFControl_Reader.hxx"
+-#include "IGESCAFControl_Writer.hxx"
+-
+-#include "IGESControl_Reader.hxx"
+-#include "STEPControl_Reader.hxx"
+-#include "IGESControl_Writer.hxx"
+-#include "STEPControl_Writer.hxx"
+-
+-#include "StlAPI_Writer.hxx"
+-#include "STEPControl_StepModelType.hxx"
+-
+-namespace netgen
+-{
+-#include "occmeshsurf.hpp"
+-
+-  extern DLL_HEADER MeshingParameters mparam;
+-
+-#define PROJECTION_TOLERANCE 1e-10
+-
+-#define ENTITYISVISIBLE 1
+-#define ENTITYISHIGHLIGHTED 2
+-#define ENTITYISDRAWABLE 4
+-
+-#define OCCGEOMETRYVISUALIZATIONNOCHANGE   0
+-#define OCCGEOMETRYVISUALIZATIONFULLCHANGE 1  // Compute transformation matrices and redraw
+-#define OCCGEOMETRYVISUALIZATIONHALFCHANGE 2  // Redraw
+-
+-
+-
+-   class EntityVisualizationCode
+-   {
+-      int code;
+-
+-   public:
+-
+-      EntityVisualizationCode()
+-      {  code = ENTITYISVISIBLE + !ENTITYISHIGHLIGHTED + ENTITYISDRAWABLE;}
+-
+-      int IsVisible ()
+-      {  return code & ENTITYISVISIBLE;}
+-
+-      int IsHighlighted ()
+-      {  return code & ENTITYISHIGHLIGHTED;}
+-
+-      int IsDrawable ()
+-      {  return code & ENTITYISDRAWABLE;}
+-
+-      void Show ()
+-      {  code |= ENTITYISVISIBLE;}
+-
+-      void Hide ()
+-      {  code &= ~ENTITYISVISIBLE;}
+-
+-      void Highlight ()
+-      {  code |= ENTITYISHIGHLIGHTED;}
+-
+-      void Lowlight ()
+-      {  code &= ~ENTITYISHIGHLIGHTED;}
+-
+-      void SetDrawable ()
+-      {  code |= ENTITYISDRAWABLE;}
+-
+-      void SetNotDrawable ()
+-      {  code &= ~ENTITYISDRAWABLE;}
+-   };
+-
+-
+-
+-   class Line
+-   {
+-   public:
+-      Point<3> p0, p1;
+-
+-      double Dist (Line l);
+-
+-      double Length ();
+-   };
+-
+-
+-
+-   inline double Det3 (double a00, double a01, double a02,
+-      double a10, double a11, double a12,
+-      double a20, double a21, double a22)
+-   {
+-      return a00*a11*a22 + a01*a12*a20 + a10*a21*a02 - a20*a11*a02 - a10*a01*a22 - a21*a12*a00;
+-   }
+-
+-
+-
+-
+-   class OCCGeometry : public NetgenGeometry
+-   {
+-      Point<3> center;
+-
+-   public:
+-      TopoDS_Shape shape;
+-      TopTools_IndexedMapOfShape fmap, emap, vmap, somap, shmap, wmap;
+-      Array fsingular, esingular, vsingular;
+-      Box<3> boundingbox;
+-
+-      // Philippose - 29/01/2009
+-      // OpenCascade XDE Support
+-      // XCAF Handle to make the face colours available to the rest of
+-      // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
+-
+-     mutable int changed;
+-      Array facemeshstatus;
+-
+-      // Philippose - 15/01/2009
+-      // Maximum mesh size for a given face
+-      // (Used to explicitly define mesh size limits on individual faces)
+-      Array face_maxh;
+-      
+-      // Philippose - 14/01/2010
+-      // Boolean array to detect whether a face has been explicitly modified 
+-      // by the user or not
+-      Array face_maxh_modified;
+-
+-      // Philippose - 15/01/2009
+-      // Indicates which faces have been selected by the user in geometry mode
+-      // (Currently handles only selection of one face at a time, but an array would
+-      //  help to extend this to multiple faces)
+-      Array face_sel_status;
+-
+-      Array fvispar, evispar, vvispar;
+-
+-      double tolerance;
+-      bool fixsmalledges;
+-      bool fixspotstripfaces;
+-      bool sewfaces;
+-      bool makesolids;
+-      bool splitpartitions;
+-
+-      OCCGeometry()
+-      {
+-         somap.Clear();
+-         shmap.Clear();
+-         fmap.Clear();
+-         wmap.Clear();
+-         emap.Clear();
+-         vmap.Clear();
+-      }
+-
+-
+-     virtual void Save (string filename) const;
+-
+-
+-      void BuildFMap();
+-
+-      Box<3> GetBoundingBox()
+-      {  return boundingbox;}
+-
+-      int NrSolids()
+-      {  return somap.Extent();}
+-
+-      // Philippose - 17/01/2009
+-      // Total number of faces in the geometry
+-      int NrFaces()
+-      {  return fmap.Extent();}
+-
+-      void SetCenter()
+-      {  center = boundingbox.Center();}
+-
+-      Point<3> Center()
+-      {  return center;}
+-
+-      void Project (int surfi, Point<3> & p) const;
+-      bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
+-
+-      OCCSurface GetSurface (int surfi)
+-      {
+-         cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+-         return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
+-      }
+-
+-      void CalcBoundingBox ();
+-      void BuildVisualizationMesh (double deflection);
+-
+-      void RecursiveTopologyTree (const TopoDS_Shape & sh,
+-         stringstream & str,
+-         TopAbs_ShapeEnum l,
+-         bool free,
+-         const char * lname);
+-
+-      void GetTopologyTree (stringstream & str);
+-
+-      void PrintNrShapes ();
+-
+-      void CheckIrregularEntities (stringstream & str);
+-
+-      void SewFaces();
+-
+-      void MakeSolid();
+-
+-      void HealGeometry();
+-
+-      // Philippose - 15/01/2009
+-      // Sets the maximum mesh size for a given face
+-      // (Note: Local mesh size limited by the global max mesh size)
+-      void SetFaceMaxH(int facenr, double faceh)
+-      {
+-         if((facenr> 0) && (facenr <= fmap.Extent()))
+-         {
+-	   face_maxh[facenr-1] = min(mparam.maxh,faceh);
+-            
+-            // Philippose - 14/01/2010
+-            // If the face maxh is greater than or equal to the 
+-            // current global maximum, then identify the face as 
+-            // not explicitly controlled by the user any more
+-            if(faceh >= mparam.maxh)
+-            {
+-               face_maxh_modified[facenr-1] = 0;
+-            }
+-            else
+-            {
+-               face_maxh_modified[facenr-1] = 1;
+-            }
+-         }
+-      }
+-
+-      // Philippose - 15/01/2009
+-      // Returns the local mesh size of a given face
+-      double GetFaceMaxH(int facenr)
+-      {
+-         if((facenr> 0) && (facenr <= fmap.Extent()))
+-         {
+-            return face_maxh[facenr-1];
+-         }
+-         else
+-         {
+-            return 0.0;
+-         }
+-      }
+-      
+-      // Philippose - 14/01/2010
+-      // Returns the flag whether the given face 
+-      // has a mesh size controlled by the user or not
+-      bool GetFaceMaxhModified(int facenr)
+-      {
+-         return face_maxh_modified[facenr-1];
+-      }
+-      
+-      // Philippose - 17/01/2009
+-      // Returns the index of the currently selected face
+-      int SelectedFace()
+-      {
+-         int i;
+-
+-         for(i = 1; i <= fmap.Extent(); i++)
+-         {
+-            if(face_sel_status[i-1])
+-            {
+-               return i;
+-            }
+-         }
+-
+-         return 0;
+-      }
+-
+-      // Philippose - 17/01/2009
+-      // Sets the currently selected face
+-      void SetSelectedFace(int facenr)
+-      {
+-         face_sel_status = 0;
+-
+-         if((facenr >= 1) && (facenr <= fmap.Extent()))
+-         {
+-            face_sel_status[facenr-1] = 1;
+-         }
+-      }
+-
+-      void LowLightAll()
+-      {
+-         for (int i = 1; i <= fmap.Extent(); i++)
+-            fvispar[i-1].Lowlight();
+-         for (int i = 1; i <= emap.Extent(); i++)
+-            evispar[i-1].Lowlight();
+-         for (int i = 1; i <= vmap.Extent(); i++)
+-            vvispar[i-1].Lowlight();
+-      }
+-
+-      void GetUnmeshedFaceInfo (stringstream & str);
+-      void GetNotDrawableFaces (stringstream & str);
+-      bool ErrorInSurfaceMeshing ();
+-
+-     void WriteOCC_STL(char * filename);
+-
+-     virtual int GenerateMesh (Mesh*& mesh, MeshingParameters & mparam, 
+-         int perfstepsstart, int perfstepsend);
+-
+-      virtual const Refinement & GetRefinement () const;
+-   };
+-
+-
+-
+-   class OCCParameters
+-   {
+-   public:
+-
+-      /// Factor for meshing close edges 
+-      double resthcloseedgefac;
+-
+-
+-      /// Enable / Disable detection of close edges
+-      int resthcloseedgeenable;
+-
+-
+-	  /// Minimum edge length to be used for dividing edges to mesh points
+-	  double resthminedgelen;
+-
+-
+-	  /// Enable / Disable use of the minimum edge length (by default use 1e-4)
+-	  int resthminedgelenenable;
+-
+-      /*!
+-         Default Constructor for the OpenCascade
+-         Mesh generation parameter set
+-      */
+-      OCCParameters();
+-
+-
+-      /*!
+-         Dump all the OpenCascade specific meshing parameters 
+-         to console
+-      */
+-      void Print (ostream & ost) const;
+-   };
+-   
+-
+-   void PrintContents (OCCGeometry * geom);
+-
+-   OCCGeometry * LoadOCC_IGES (const char * filename);
+-   OCCGeometry * LoadOCC_STEP (const char * filename);
+-   OCCGeometry * LoadOCC_BREP (const char * filename);
+-
+-   extern OCCParameters occparam;
+-
+-
+-   // Philippose - 31.09.2009
+-   // External access to the mesh generation functions within the OCC
+-   // subsystem (Not sure if this is the best way to implement this....!!)
+-   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
+-			       MeshingParameters & mparam,
+-			       int perfstepsstart, int perfstepsend);
+-
+-  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
+-
+-   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
+-
+-   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
+-}
+-
+-#endif
+-
+-#endif
++#ifndef FILE_OCCGEOM
++#define FILE_OCCGEOM
++
++/* *************************************************************************/
++/* File:   occgeom.hpp                                                     */
++/* Author: Robert Gaisbauer                                                */
++/* Date:   26. May  03                                                     */
++/* *************************************************************************/
++
++#ifdef OCCGEOMETRY
++
++#include 
++#include 
++
++#include 
++
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "BRepTools.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "Geom_Surface.hxx"
++#include "TopExp.hxx"
++#include "gp_Pnt.hxx"
++#include "TopoDS.hxx"
++#include "TopoDS_Solid.hxx"
++#include "TopExp_Explorer.hxx"
++#include "TopTools_ListIteratorOfListOfShape.hxx"
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "TopoDS_Wire.hxx"
++#include "BRepTools_WireExplorer.hxx"
++#include "BRepTools.hxx"
++#include "TopTools_IndexedMapOfShape.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_CLProps.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "BRepAdaptor_Curve.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "TopoDS_Shape.hxx"
++#include "TopoDS_Face.hxx"
++#include "IGESToBRep_Reader.hxx"
++#include "Interface_Static.hxx"
++#include "GeomAPI_ExtremaCurveCurve.hxx"
++//#include "Standard_ErrorHandler.hxx"
++#include "Standard_Failure.hxx"
++#include "ShapeUpgrade_ShellSewing.hxx"
++#include "ShapeFix_Shape.hxx"
++#include "ShapeFix_Wireframe.hxx"
++#include 
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
++#include "BRepMesh.hxx"
++#endif
++#include "BRepMesh_IncrementalMesh.hxx"
++#include "BRepBndLib.hxx"
++#include "Bnd_Box.hxx"
++#include "ShapeAnalysis.hxx"
++#include "ShapeBuild_ReShape.hxx"
++
++// -- Optimization: to use cached projector and classifier
++#include 
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
++
++// Philippose - 29/01/2009
++// OpenCascade XDE Support
++// Include support for OpenCascade XDE Features
++#include "TDocStd_Document.hxx"
++#include "Quantity_Color.hxx"
++#include "XCAFApp_Application.hxx"
++#include "XCAFDoc_ShapeTool.hxx"
++#include "XCAFDoc_Color.hxx"
++#include "XCAFDoc_ColorTool.hxx"
++#include "XCAFDoc_ColorType.hxx"
++#include "XCAFDoc_LayerTool.hxx"
++#include "XCAFDoc_DimTolTool.hxx"
++#include "XCAFDoc_MaterialTool.hxx"
++#include "XCAFDoc_DocumentTool.hxx"
++#include "TDF_Label.hxx"
++#include "TDF_LabelSequence.hxx"
++#include "STEPCAFControl_Reader.hxx"
++#include "STEPCAFControl_Writer.hxx"
++#include "IGESCAFControl_Reader.hxx"
++#include "IGESCAFControl_Writer.hxx"
++
++#include "IGESControl_Reader.hxx"
++#include "STEPControl_Reader.hxx"
++#include "IGESControl_Writer.hxx"
++#include "STEPControl_Writer.hxx"
++
++#include "StlAPI_Writer.hxx"
++#include "STEPControl_StepModelType.hxx"
++
++namespace netgen
++{
++#include "occmeshsurf.hpp"
++
++  DLL_HEADER extern MeshingParameters mparam;
++
++#define PROJECTION_TOLERANCE 1e-10
++
++#define ENTITYISVISIBLE 1
++#define ENTITYISHIGHLIGHTED 2
++#define ENTITYISDRAWABLE 4
++
++#define OCCGEOMETRYVISUALIZATIONNOCHANGE   0
++#define OCCGEOMETRYVISUALIZATIONFULLCHANGE 1  // Compute transformation matrices and redraw
++#define OCCGEOMETRYVISUALIZATIONHALFCHANGE 2  // Redraw
++
++
++
++   class EntityVisualizationCode
++   {
++      int code;
++
++   public:
++
++      EntityVisualizationCode()
++      {  code = ENTITYISVISIBLE + !ENTITYISHIGHLIGHTED + ENTITYISDRAWABLE;}
++
++      int IsVisible ()
++      {  return code & ENTITYISVISIBLE;}
++
++      int IsHighlighted ()
++      {  return code & ENTITYISHIGHLIGHTED;}
++
++      int IsDrawable ()
++      {  return code & ENTITYISDRAWABLE;}
++
++      void Show ()
++      {  code |= ENTITYISVISIBLE;}
++
++      void Hide ()
++      {  code &= ~ENTITYISVISIBLE;}
++
++      void Highlight ()
++      {  code |= ENTITYISHIGHLIGHTED;}
++
++      void Lowlight ()
++      {  code &= ~ENTITYISHIGHLIGHTED;}
++
++      void SetDrawable ()
++      {  code |= ENTITYISDRAWABLE;}
++
++      void SetNotDrawable ()
++      {  code &= ~ENTITYISDRAWABLE;}
++   };
++
++
++
++   class Line
++   {
++   public:
++      Point<3> p0, p1;
++
++      double Dist (Line l);
++
++      double Length ();
++   };
++
++
++
++   inline double Det3 (double a00, double a01, double a02,
++      double a10, double a11, double a12,
++      double a20, double a21, double a22)
++   {
++      return a00*a11*a22 + a01*a12*a20 + a10*a21*a02 - a20*a11*a02 - a10*a01*a22 - a21*a12*a00;
++   }
++
++
++
++
++   class DLL_HEADER OCCGeometry : public NetgenGeometry
++   {
++      Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap fprjmap;
++      mutable NCollection_DataMap fclsmap;
++
++   public:
++      TopoDS_Shape shape;
++      TopTools_IndexedMapOfShape fmap, emap, vmap, somap, shmap, wmap;
++      Array fsingular, esingular, vsingular;
++      Box<3> boundingbox;
++
++      // Philippose - 29/01/2009
++      // OpenCascade XDE Support
++      // XCAF Handle to make the face colours available to the rest of
++      // the system
++      Handle(XCAFDoc_ColorTool) face_colours;
++
++     mutable int changed;
++      Array facemeshstatus;
++
++      // Philippose - 15/01/2009
++      // Maximum mesh size for a given face
++      // (Used to explicitly define mesh size limits on individual faces)
++      Array face_maxh;
++      
++      // Philippose - 14/01/2010
++      // Boolean array to detect whether a face has been explicitly modified 
++      // by the user or not
++      Array face_maxh_modified;
++
++      // Philippose - 15/01/2009
++      // Indicates which faces have been selected by the user in geometry mode
++      // (Currently handles only selection of one face at a time, but an array would
++      //  help to extend this to multiple faces)
++      Array face_sel_status;
++
++      Array fvispar, evispar, vvispar;
++
++      double tolerance;
++      bool fixsmalledges;
++      bool fixspotstripfaces;
++      bool sewfaces;
++      bool makesolids;
++      bool splitpartitions;
++
++      OCCGeometry()
++      {
++         somap.Clear();
++         shmap.Clear();
++         fmap.Clear();
++         wmap.Clear();
++         emap.Clear();
++         vmap.Clear();
++      }
++
++
++     virtual void Save (string filename) const;
++
++
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
++      void BuildFMap();
++
++      Box<3> GetBoundingBox()
++      {  return boundingbox;}
++
++      int NrSolids()
++      {  return somap.Extent();}
++
++      // Philippose - 17/01/2009
++      // Total number of faces in the geometry
++      int NrFaces()
++      {  return fmap.Extent();}
++
++      void SetCenter()
++      {  center = boundingbox.Center();}
++
++      Point<3> Center()
++      {  return center;}
++
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
++      bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
++      OCCSurface GetSurface (int surfi)
++      {
++         std::cout << "OCCGeometry::GetSurface using PLANESPACE" << std::endl;
++         return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
++      }
++
++      void CalcBoundingBox ();
++      void BuildVisualizationMesh (double deflection);
++
++      void RecursiveTopologyTree (const TopoDS_Shape & sh,
++         stringstream & str,
++         TopAbs_ShapeEnum l,
++         bool free,
++         const char * lname);
++
++      void GetTopologyTree (stringstream & str);
++
++      void PrintNrShapes ();
++
++      void CheckIrregularEntities (stringstream & str);
++
++      void SewFaces();
++
++      void MakeSolid();
++
++      void HealGeometry();
++
++      // Philippose - 15/01/2009
++      // Sets the maximum mesh size for a given face
++      // (Note: Local mesh size limited by the global max mesh size)
++      void SetFaceMaxH(int facenr, double faceh)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++	   face_maxh[facenr-1] = min(mparam.maxh,faceh);
++            
++            // Philippose - 14/01/2010
++            // If the face maxh is greater than or equal to the 
++            // current global maximum, then identify the face as 
++            // not explicitly controlled by the user any more
++            if(faceh >= mparam.maxh)
++            {
++               face_maxh_modified[facenr-1] = 0;
++            }
++            else
++            {
++               face_maxh_modified[facenr-1] = 1;
++            }
++         }
++      }
++
++      // Philippose - 15/01/2009
++      // Returns the local mesh size of a given face
++      double GetFaceMaxH(int facenr)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++            return face_maxh[facenr-1];
++         }
++         else
++         {
++            return 0.0;
++         }
++      }
++      
++      // Philippose - 14/01/2010
++      // Returns the flag whether the given face 
++      // has a mesh size controlled by the user or not
++      bool GetFaceMaxhModified(int facenr)
++      {
++         return face_maxh_modified[facenr-1];
++      }
++      
++      // Philippose - 17/01/2009
++      // Returns the index of the currently selected face
++      int SelectedFace()
++      {
++         int i;
++
++         for(i = 1; i <= fmap.Extent(); i++)
++         {
++            if(face_sel_status[i-1])
++            {
++               return i;
++            }
++         }
++
++         return 0;
++      }
++
++      // Philippose - 17/01/2009
++      // Sets the currently selected face
++      void SetSelectedFace(int facenr)
++      {
++         face_sel_status = 0;
++
++         if((facenr >= 1) && (facenr <= fmap.Extent()))
++         {
++            face_sel_status[facenr-1] = 1;
++         }
++      }
++
++      void LowLightAll()
++      {
++         for (int i = 1; i <= fmap.Extent(); i++)
++            fvispar[i-1].Lowlight();
++         for (int i = 1; i <= emap.Extent(); i++)
++            evispar[i-1].Lowlight();
++         for (int i = 1; i <= vmap.Extent(); i++)
++            vvispar[i-1].Lowlight();
++      }
++
++      void GetUnmeshedFaceInfo (stringstream & str);
++      void GetNotDrawableFaces (stringstream & str);
++      bool ErrorInSurfaceMeshing ();
++
++     void WriteOCC_STL(char * filename);
++
++     virtual int GenerateMesh (Mesh*& mesh, MeshingParameters & mparam, 
++         int perfstepsstart, int perfstepsend);
++
++      virtual const Refinement & GetRefinement () const;
++   };
++
++
++
++   class DLL_HEADER OCCParameters
++   {
++   public:
++
++      /// Factor for meshing close edges 
++      double resthcloseedgefac;
++
++
++      /// Enable / Disable detection of close edges
++      int resthcloseedgeenable;
++
++
++	  /// Minimum edge length to be used for dividing edges to mesh points
++	  double resthminedgelen;
++
++
++	  /// Enable / Disable use of the minimum edge length (by default use 1e-4)
++	  int resthminedgelenenable;
++
++      /*!
++         Default Constructor for the OpenCascade
++         Mesh generation parameter set
++      */
++      OCCParameters();
++
++
++      /*!
++         Dump all the OpenCascade specific meshing parameters 
++         to console
++      */
++      void Print (ostream & ost) const;
++   };
++   
++
++   void PrintContents (OCCGeometry * geom);
++
++   OCCGeometry * LoadOCC_IGES (const char * filename);
++   OCCGeometry * LoadOCC_STEP (const char * filename);
++   OCCGeometry * LoadOCC_BREP (const char * filename);
++
++   extern DLL_HEADER OCCParameters occparam;
++
++
++   // Philippose - 31.09.2009
++   // External access to the mesh generation functions within the OCC
++   // subsystem (Not sure if this is the best way to implement this....!!)
++   extern DLL_HEADER int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++			       MeshingParameters & mparam,
++			       int perfstepsstart, int perfstepsend);
++
++  extern DLL_HEADER void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++
++   extern DLL_HEADER void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++
++   extern DLL_HEADER void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++}
++
++#endif
++
++#endif
+--- /dev/null
++++ netgen/libsrc/occ/occgeom.hpp.orig
+@@ -0,0 +1,457 @@
++#ifndef FILE_OCCGEOM
++#define FILE_OCCGEOM
++
++/* *************************************************************************/
++/* File:   occgeom.hpp                                                     */
++/* Author: Robert Gaisbauer                                                */
++/* Date:   26. May  03                                                     */
++/* *************************************************************************/
++
++#ifdef OCCGEOMETRY
++
++#include 
++
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++#include "GeomAPI_ProjectPointOnSurf.hxx"
++#include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "BRepTools.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "Geom_Surface.hxx"
++#include "TopExp.hxx"
++#include "gp_Pnt.hxx"
++#include "TopoDS.hxx"
++#include "TopoDS_Solid.hxx"
++#include "TopExp_Explorer.hxx"
++#include "TopTools_ListIteratorOfListOfShape.hxx"
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++#include "GeomAPI_ProjectPointOnSurf.hxx"
++#include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "TopoDS_Wire.hxx"
++#include "BRepTools_WireExplorer.hxx"
++#include "BRepTools.hxx"
++#include "TopTools_IndexedMapOfShape.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_CLProps.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "BRepAdaptor_Curve.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "TopoDS_Shape.hxx"
++#include "TopoDS_Face.hxx"
++#include "IGESToBRep_Reader.hxx"
++#include "Interface_Static.hxx"
++#include "GeomAPI_ExtremaCurveCurve.hxx"
++#include "Standard_ErrorHandler.hxx"
++#include "Standard_Failure.hxx"
++#include "ShapeUpgrade_ShellSewing.hxx"
++#include "ShapeFix_Shape.hxx"
++#include "ShapeFix_Wireframe.hxx"
++#include "BRepMesh.hxx"
++#include "BRepMesh_IncrementalMesh.hxx"
++#include "BRepBndLib.hxx"
++#include "Bnd_Box.hxx"
++#include "ShapeAnalysis.hxx"
++#include "ShapeBuild_ReShape.hxx"
++
++
++// Philippose - 29/01/2009
++// OpenCascade XDE Support
++// Include support for OpenCascade XDE Features
++#include "TDocStd_Document.hxx"
++#include "Quantity_Color.hxx"
++#include "XCAFApp_Application.hxx"
++#include "XCAFDoc_ShapeTool.hxx"
++#include "XCAFDoc_Color.hxx"
++#include "XCAFDoc_ColorTool.hxx"
++#include "XCAFDoc_ColorType.hxx"
++#include "XCAFDoc_LayerTool.hxx"
++#include "XCAFDoc_DimTolTool.hxx"
++#include "XCAFDoc_MaterialTool.hxx"
++#include "XCAFDoc_DocumentTool.hxx"
++#include "TDF_Label.hxx"
++#include "TDF_LabelSequence.hxx"
++#include "STEPCAFControl_Reader.hxx"
++#include "STEPCAFControl_Writer.hxx"
++#include "IGESCAFControl_Reader.hxx"
++#include "IGESCAFControl_Writer.hxx"
++
++#include "IGESControl_Reader.hxx"
++#include "STEPControl_Reader.hxx"
++#include "IGESControl_Writer.hxx"
++#include "STEPControl_Writer.hxx"
++
++#include "StlAPI_Writer.hxx"
++#include "STEPControl_StepModelType.hxx"
++
++namespace netgen
++{
++#include "occmeshsurf.hpp"
++
++  extern DLL_HEADER MeshingParameters mparam;
++
++#define PROJECTION_TOLERANCE 1e-10
++
++#define ENTITYISVISIBLE 1
++#define ENTITYISHIGHLIGHTED 2
++#define ENTITYISDRAWABLE 4
++
++#define OCCGEOMETRYVISUALIZATIONNOCHANGE   0
++#define OCCGEOMETRYVISUALIZATIONFULLCHANGE 1  // Compute transformation matrices and redraw
++#define OCCGEOMETRYVISUALIZATIONHALFCHANGE 2  // Redraw
++
++
++
++   class EntityVisualizationCode
++   {
++      int code;
++
++   public:
++
++      EntityVisualizationCode()
++      {  code = ENTITYISVISIBLE + !ENTITYISHIGHLIGHTED + ENTITYISDRAWABLE;}
++
++      int IsVisible ()
++      {  return code & ENTITYISVISIBLE;}
++
++      int IsHighlighted ()
++      {  return code & ENTITYISHIGHLIGHTED;}
++
++      int IsDrawable ()
++      {  return code & ENTITYISDRAWABLE;}
++
++      void Show ()
++      {  code |= ENTITYISVISIBLE;}
++
++      void Hide ()
++      {  code &= ~ENTITYISVISIBLE;}
++
++      void Highlight ()
++      {  code |= ENTITYISHIGHLIGHTED;}
++
++      void Lowlight ()
++      {  code &= ~ENTITYISHIGHLIGHTED;}
++
++      void SetDrawable ()
++      {  code |= ENTITYISDRAWABLE;}
++
++      void SetNotDrawable ()
++      {  code &= ~ENTITYISDRAWABLE;}
++   };
++
++
++
++   class Line
++   {
++   public:
++      Point<3> p0, p1;
++
++      double Dist (Line l);
++
++      double Length ();
++   };
++
++
++
++   inline double Det3 (double a00, double a01, double a02,
++      double a10, double a11, double a12,
++      double a20, double a21, double a22)
++   {
++      return a00*a11*a22 + a01*a12*a20 + a10*a21*a02 - a20*a11*a02 - a10*a01*a22 - a21*a12*a00;
++   }
++
++
++
++
++   class OCCGeometry : public NetgenGeometry
++   {
++      Point<3> center;
++
++   public:
++      TopoDS_Shape shape;
++      TopTools_IndexedMapOfShape fmap, emap, vmap, somap, shmap, wmap;
++      Array fsingular, esingular, vsingular;
++      Box<3> boundingbox;
++
++      // Philippose - 29/01/2009
++      // OpenCascade XDE Support
++      // XCAF Handle to make the face colours available to the rest of
++      // the system
++      Handle_XCAFDoc_ColorTool face_colours;
++
++     mutable int changed;
++      Array facemeshstatus;
++
++      // Philippose - 15/01/2009
++      // Maximum mesh size for a given face
++      // (Used to explicitly define mesh size limits on individual faces)
++      Array face_maxh;
++      
++      // Philippose - 14/01/2010
++      // Boolean array to detect whether a face has been explicitly modified 
++      // by the user or not
++      Array face_maxh_modified;
++
++      // Philippose - 15/01/2009
++      // Indicates which faces have been selected by the user in geometry mode
++      // (Currently handles only selection of one face at a time, but an array would
++      //  help to extend this to multiple faces)
++      Array face_sel_status;
++
++      Array fvispar, evispar, vvispar;
++
++      double tolerance;
++      bool fixsmalledges;
++      bool fixspotstripfaces;
++      bool sewfaces;
++      bool makesolids;
++      bool splitpartitions;
++
++      OCCGeometry()
++      {
++         somap.Clear();
++         shmap.Clear();
++         fmap.Clear();
++         wmap.Clear();
++         emap.Clear();
++         vmap.Clear();
++      }
++
++
++     virtual void Save (string filename) const;
++
++
++      void BuildFMap();
++
++      Box<3> GetBoundingBox()
++      {  return boundingbox;}
++
++      int NrSolids()
++      {  return somap.Extent();}
++
++      // Philippose - 17/01/2009
++      // Total number of faces in the geometry
++      int NrFaces()
++      {  return fmap.Extent();}
++
++      void SetCenter()
++      {  center = boundingbox.Center();}
++
++      Point<3> Center()
++      {  return center;}
++
++      void Project (int surfi, Point<3> & p) const;
++      bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++
++      OCCSurface GetSurface (int surfi)
++      {
++         cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
++         return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
++      }
++
++      void CalcBoundingBox ();
++      void BuildVisualizationMesh (double deflection);
++
++      void RecursiveTopologyTree (const TopoDS_Shape & sh,
++         stringstream & str,
++         TopAbs_ShapeEnum l,
++         bool free,
++         const char * lname);
++
++      void GetTopologyTree (stringstream & str);
++
++      void PrintNrShapes ();
++
++      void CheckIrregularEntities (stringstream & str);
++
++      void SewFaces();
++
++      void MakeSolid();
++
++      void HealGeometry();
++
++      // Philippose - 15/01/2009
++      // Sets the maximum mesh size for a given face
++      // (Note: Local mesh size limited by the global max mesh size)
++      void SetFaceMaxH(int facenr, double faceh)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++	   face_maxh[facenr-1] = min(mparam.maxh,faceh);
++            
++            // Philippose - 14/01/2010
++            // If the face maxh is greater than or equal to the 
++            // current global maximum, then identify the face as 
++            // not explicitly controlled by the user any more
++            if(faceh >= mparam.maxh)
++            {
++               face_maxh_modified[facenr-1] = 0;
++            }
++            else
++            {
++               face_maxh_modified[facenr-1] = 1;
++            }
++         }
++      }
++
++      // Philippose - 15/01/2009
++      // Returns the local mesh size of a given face
++      double GetFaceMaxH(int facenr)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++            return face_maxh[facenr-1];
++         }
++         else
++         {
++            return 0.0;
++         }
++      }
++      
++      // Philippose - 14/01/2010
++      // Returns the flag whether the given face 
++      // has a mesh size controlled by the user or not
++      bool GetFaceMaxhModified(int facenr)
++      {
++         return face_maxh_modified[facenr-1];
++      }
++      
++      // Philippose - 17/01/2009
++      // Returns the index of the currently selected face
++      int SelectedFace()
++      {
++         int i;
++
++         for(i = 1; i <= fmap.Extent(); i++)
++         {
++            if(face_sel_status[i-1])
++            {
++               return i;
++            }
++         }
++
++         return 0;
++      }
++
++      // Philippose - 17/01/2009
++      // Sets the currently selected face
++      void SetSelectedFace(int facenr)
++      {
++         face_sel_status = 0;
++
++         if((facenr >= 1) && (facenr <= fmap.Extent()))
++         {
++            face_sel_status[facenr-1] = 1;
++         }
++      }
++
++      void LowLightAll()
++      {
++         for (int i = 1; i <= fmap.Extent(); i++)
++            fvispar[i-1].Lowlight();
++         for (int i = 1; i <= emap.Extent(); i++)
++            evispar[i-1].Lowlight();
++         for (int i = 1; i <= vmap.Extent(); i++)
++            vvispar[i-1].Lowlight();
++      }
++
++      void GetUnmeshedFaceInfo (stringstream & str);
++      void GetNotDrawableFaces (stringstream & str);
++      bool ErrorInSurfaceMeshing ();
++
++     void WriteOCC_STL(char * filename);
++
++     virtual int GenerateMesh (Mesh*& mesh, MeshingParameters & mparam, 
++         int perfstepsstart, int perfstepsend);
++
++      virtual const Refinement & GetRefinement () const;
++   };
++
++
++
++   class OCCParameters
++   {
++   public:
++
++      /// Factor for meshing close edges 
++      double resthcloseedgefac;
++
++
++      /// Enable / Disable detection of close edges
++      int resthcloseedgeenable;
++
++
++	  /// Minimum edge length to be used for dividing edges to mesh points
++	  double resthminedgelen;
++
++
++	  /// Enable / Disable use of the minimum edge length (by default use 1e-4)
++	  int resthminedgelenenable;
++
++      /*!
++         Default Constructor for the OpenCascade
++         Mesh generation parameter set
++      */
++      OCCParameters();
++
++
++      /*!
++         Dump all the OpenCascade specific meshing parameters 
++         to console
++      */
++      void Print (ostream & ost) const;
++   };
++   
++
++   void PrintContents (OCCGeometry * geom);
++
++   OCCGeometry * LoadOCC_IGES (const char * filename);
++   OCCGeometry * LoadOCC_STEP (const char * filename);
++   OCCGeometry * LoadOCC_BREP (const char * filename);
++
++   extern OCCParameters occparam;
++
++
++   // Philippose - 31.09.2009
++   // External access to the mesh generation functions within the OCC
++   // subsystem (Not sure if this is the best way to implement this....!!)
++   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++			       MeshingParameters & mparam,
++			       int perfstepsstart, int perfstepsend);
++
++  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++
++   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++
++   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++}
++
++#endif
++
++#endif
+--- netgen_ref/libsrc/occ/occmeshsurf.cpp
++++ netgen/libsrc/occ/occmeshsurf.cpp
+@@ -6,6 +6,7 @@
+ #include 
+ #include 
+ #include 
++#include  // -- moved here from occgeom.hpp
+ 
+ 
+ namespace netgen
+@@ -96,24 +97,27 @@
+ 
+ 	n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+ 	n(0)=lprop.Normal().X();
+ 	n(1)=lprop.Normal().Y();
+ 	n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+ 	(*testout) << "u " << geominfo.u << " v " << geominfo.v 
+ 		   << " du " << lprop.D1U().X() << " "<< lprop.D1U().Y() << " "<< lprop.D1U().Z()
+-		   << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << endl;
++		   << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << std::endl;
+       }
+ 
+ 
+ 
+     if (orient == TopAbs_REVERSED) n = -1*n;
+-    //  (*testout) << "GetNormalVector" << endl;
++    //  (*testout) << "GetNormalVector" << std::endl;
+   }
+ 
+ 
+@@ -126,8 +130,8 @@
+       {
+ 	p1 = ap1; p2 = ap2;
+ 
+-	//cout << "p1 = " << p1 << endl;
+-	//cout << "p2 = " << p2 << endl;
++	//std::cout << "p1 = " << p1 << std::endl;
++	//std::cout << "p2 = " << p2 << std::endl;
+       
+ 	GetNormalVector (p1, geominfo1, ez);
+       
+@@ -148,7 +152,7 @@
+ 	ez.Normalize();
+ 	ey = Cross (ez, ex);
+ 	nmid = ez;
+-	//cout << "ex " << ex << " ey " << ey << " ez " << ez << endl;
++	//std::cout << "ex " << ex << " ey " << ey << " ez " << ez << std::endl;
+       }
+     else
+       {
+@@ -178,9 +182,9 @@
+ 	D1(0,1) = dv.X(); D1(1,1) = dv.Y(); D1(2,1) = dv.Z();
+ 
+ 	/*
+-	  (*testout) << "DefineTangentialPlane" << endl
+-	  << "---------------------" << endl;
+-	  (*testout) << "D1 = " << endl << D1 << endl;
++	  (*testout) << "DefineTangentialPlane" << std::endl
++	  << "---------------------" << std::endl;
++	  (*testout) << "D1 = " << std::endl << D1 << std::endl;
+ 	*/
+ 
+ 	Transpose (D1, D1T);
+@@ -270,7 +274,7 @@
+ 	/*
+ 	  if(zone == -1)
+ 	  {
+-	  (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << endl;
++	  (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << std::endl;
+ 	  glob_testout = true;
+ 	  GetNormalVector (p3d, geominfo, n);
+ 	  glob_testout = false;
+@@ -280,7 +284,7 @@
+     else
+       {
+ 	pplane = Point<2>(geominfo.u, geominfo.v);
+-	//      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << endl;
++	//      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << std::endl;
+ 	pplane = Point<2> (1/h * (Amatinv * (pplane-psp1)));
+ 	//      pplane = Point<2> (h * (Amatinv * (pplane-psp1)));
+ 	//      pplane = Point<2> (1/h * ((pplane-psp1)));
+@@ -297,11 +301,11 @@
+   { 
+     if (projecttype == PLANESPACE)
+       {
+-	//      cout << "2d   : " << pplane << endl;
++	//      std::cout << "2d   : " << pplane << std::endl;
+ 	p3d = p1 + (h * pplane(0)) * ex + (h * pplane(1)) * ey;
+-	//      cout << "3d   : " << p3d << endl;
++	//      std::cout << "3d   : " << p3d << std::endl;
+ 	Project (p3d, gi);  
+-	//      cout << "proj : " << p3d << endl;
++	//      std::cout << "proj : " << p3d << std::endl;
+       }
+     else
+       {
+@@ -321,11 +325,11 @@
+   void OCCSurface :: Project (Point<3> & p, PointGeomInfo & gi)
+   {
+     //   static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << std::endl;
+   
+     gp_Pnt pnt(p(0), p(1), p(2));
+ 
+-    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+ 
+ 
+     /*
+@@ -333,7 +337,7 @@
+ 
+     if (!proj.NbPoints())
+       {
+-	cout << "Project Point on Surface FAIL" << endl;
++	std::cout << "Project Point on Surface FAIL" << std::endl;
+ 	throw UVBoundsException();
+       }
+     */
+@@ -343,13 +347,13 @@
+ 
+ 
+     /*
+-      cout << "NP = " << proj.NbPoints() << endl;
++      std::cout << "NP = " << proj.NbPoints() << std::endl;
+ 
+       for (int i = 1; i <= proj.NbPoints(); i++)
+       {
+       gp_Pnt pnt2 = proj.Point(i);
+       Point<3> p2 = Point<3> (pnt2.X(), pnt2.Y(), pnt2.Z());
+-      cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << endl;
++      std::cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << std::endl;
+       }
+     */
+ 
+@@ -364,7 +368,7 @@
+     suval.Coord( u, v);
+     pnt = occface->Value( u, v );
+     
+-    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+     gi.u = u;
+     gi.v = v;
+     
+@@ -434,23 +438,33 @@
+ 
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+ 
+ 
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+ 
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+ 	p = hp;
+-	return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+ 
+ 
+@@ -506,7 +520,7 @@
+   GetNormalVector(INDEX surfind, const Point<3> & p, Vec<3> & n) const
+   {
+     //  static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "GetNV cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "GetNV cnt = " << cnt << std::endl;
+     Standard_Real u,v;
+ 
+     gp_Pnt pnt(p(0), p(1), p(2));
+@@ -519,9 +533,9 @@
+ 
+     if (proj.NbPoints() < 1)
+       {
+-	cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-	     << endl;
+-	cout << p << endl;
++	std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++	     << std::endl;
++	std::cout << p << std::endl;
+ 	return;
+       }
+  
+@@ -540,7 +554,7 @@
+ 
+     /*
+       if (!occface->IsCNu (1) || !occface->IsCNv (1))
+-      (*testout) << "SurfOpt: Differentiation FAIL" << endl;
++      (*testout) << "SurfOpt: Differentiation FAIL" << std::endl;
+     */
+ 
+     n = Cross (Vec3d(du.X(), du.Y(), du.Z()),
+@@ -566,9 +580,9 @@
+ 
+     if (proj.NbPoints() < 1)
+       {
+-	cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-	     << endl;
+-	cout << p << endl;
++	std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++	     << std::endl;
++	std::cout << p << std::endl;
+ 	return 0;
+       }
+  
+@@ -679,8 +693,9 @@
+  
+ 	if (!geometry.FastProject (surfi, hnewp, u, v))
+ 	  {
+-	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	    geometry.Project (surfi, hnewp);
++	  //  std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
++	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++	    geometry.Project (surfi, hnewp, u, v);
+ 	  }
+ 
+ 	newgi.trignum = 1;
+@@ -689,7 +704,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: 
+@@ -708,24 +723,29 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+     if (surfi > 0)
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+ 	{
+-	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	  geometry.Project (surfi, p);
++	  std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
++          double u, v;
++	  geometry.Project (surfi, p, u, v);
+ 	}
+-  };
++	}
+ 
+ 
+ 
+--- netgen_ref/libsrc/occ/occmeshsurf.hpp
++++ netgen/libsrc/occ/occmeshsurf.hpp
+@@ -169,7 +169,7 @@
+ class OCCGeometry;
+ 
+ 
+-class OCCRefinementSurfaces : public Refinement
++class DLL_HEADER OCCRefinementSurfaces : public Refinement
+ {
+   const OCCGeometry & geometry;
+ 
+--- netgen_ref/libsrc/occ/occpkg.cpp
++++ netgen/libsrc/occ/occpkg.cpp
+@@ -1,1024 +1,1024 @@
+-#ifdef OCCGEOMETRY
+-
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-
+-
+-#include 
+-#include 
+-
+-#include "../meshing/bcfunctions.hpp"
+-
+-#include "vsocc.hpp"
+-
+-
+-extern "C" int Ng_occ_Init (Tcl_Interp * interp);
+-
+-
+-
+-namespace netgen
+-{
+-  extern AutoPtr ng_geometry;
+-  extern AutoPtr mesh;
+- 
+-  char * err_needsoccgeometry = (char*) "This operation needs an OCC geometry";
+-  extern char * err_needsmesh;
+-  extern char * err_jobrunning;
+-
+-
+-
+-                          
+-  class OCCGeometryRegister : public GeometryRegister
+-  {
+-  public:
+-    virtual NetgenGeometry * Load (string filename) const;
+-    virtual VisualScene * GetVisualScene (const NetgenGeometry * geom) const;
+-
+-    virtual void SetParameters (Tcl_Interp * interp) 
+-    {
+-      occparam.resthcloseedgefac =
+-	atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
+-      occparam.resthcloseedgeenable =
+-	atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
+-	  occparam.resthminedgelen = 
+-	atof (Tcl_GetVar (interp, "::stloptions.resthminedgelen", 0));
+-	  occparam.resthminedgelenenable = 
+-	atoi (Tcl_GetVar (interp, "::stloptions.resthminedgelenenable", 0));
+-    }
+-  };
+-
+-
+-
+-
+-  int Ng_SetOCCVisParameters  (ClientData clientData,
+-			       Tcl_Interp * interp,
+-			       int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-    int showvolume;
+-	OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
+-
+-    showvolume = atoi (Tcl_GetVar (interp, "::occoptions.showvolumenr", 0));
+-
+-    if (occgeometry)
+-      if (showvolume != vispar.occshowvolumenr)
+-	{
+-	  if (showvolume < 0 || showvolume > occgeometry->NrSolids())
+-	    {
+-	      char buf[20];
+-	      sprintf (buf, "%5i", vispar.occshowvolumenr);
+-	      Tcl_SetVar (interp, "::occoptions.showvolumenr", buf, 0);
+-	    }
+-	  else
+-	    {
+-	      vispar.occshowvolumenr = showvolume;
+-	      if (occgeometry)
+-		occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	    }
+-	}
+-    
+-    int temp;
+-
+-    temp = atoi (Tcl_GetVar (interp, "::occoptions.visproblemfaces", 0));
+-
+-    if ((bool) temp != vispar.occvisproblemfaces)
+-      {
+-	vispar.occvisproblemfaces = temp;
+-	if (occgeometry)
+-	  occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-      }
+-
+-    vispar.occshowsurfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
+-    vispar.occshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
+-    vispar.occzoomtohighlightedentity = atoi (Tcl_GetVar (interp, "::occoptions.zoomtohighlightedentity", 0));
+-    vispar.occdeflection = pow(10.0,-1-atof (Tcl_GetVar (interp, "::occoptions.deflection", 0)));
+-
+-#endif
+-
+-
+-
+-
+-
+-#ifdef ACIS
+-    vispar.ACISshowfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
+-    vispar.ACISshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
+-    vispar.ACISshowsolidnr = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr", 0));
+-    vispar.ACISshowsolidnr2 = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr2", 0));
+-
+-#endif
+-
+-
+-
+-    return TCL_OK;
+-  }  
+-
+-
+-
+-
+-  int Ng_GetOCCData (ClientData clientData,
+-		     Tcl_Interp * interp,
+-		     int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-    OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
+-
+-    static char buf[1000];
+-    buf[0] = 0;
+-    stringstream str;
+-
+-    if (argc >= 2)
+-      {
+-	if (strcmp (argv[1], "getentities") == 0)
+-	  {
+-	    if (occgeometry)
+-	      {
+-		occgeometry->GetTopologyTree(str);
+-	      }
+-	  }
+-      }
+-
+-    Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-
+-#endif
+-    return TCL_OK;
+-  }
+-
+-  
+-
+-  int Ng_OCCCommand (ClientData clientData,
+-		     Tcl_Interp * interp,
+-		     int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-    OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
+-
+-    stringstream str;
+-    if (argc >= 2)
+-      {
+-	if (strcmp (argv[1], "isoccgeometryloaded") == 0)
+-	  {
+-	    if (occgeometry)
+-	      str << "1 " << flush;
+-	    else str << "0 " << flush;
+-
+-	    Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-	  }
+-	if (occgeometry)
+-	  {
+-	    if (strcmp (argv[1], "buildvisualizationmesh") == 0)
+-	      {
+-		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	      }
+-	    if (strcmp (argv[1], "mesherror") == 0)
+-	      {
+-		if (occgeometry->ErrorInSurfaceMeshing())
+-		  str << 1;
+-		else
+-		  str << 0;
+-	      }
+-	    if (strcmp (argv[1], "sewfaces") == 0)
+-	      {
+-		cout << "Before operation:" << endl;
+-		occgeometry->PrintNrShapes();
+-		occgeometry->SewFaces();
+-		occgeometry->BuildFMap();
+-		cout << endl << "After operation:" << endl;
+-		occgeometry->PrintNrShapes();
+-		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	      }
+-	    if (strcmp (argv[1], "makesolid") == 0)
+-	      {
+-		cout << "Before operation:" << endl;
+-		occgeometry->PrintNrShapes();
+-		occgeometry->MakeSolid();
+-		occgeometry->BuildFMap();
+-		cout << endl << "After operation:" << endl;
+-		occgeometry->PrintNrShapes();
+-		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	      }
+-	    if (strcmp (argv[1], "upgradetopology") == 0)
+-	      {
+-		cout << "Before operation:" << endl;
+-		occgeometry->PrintNrShapes();
+-		occgeometry->SewFaces();
+-		occgeometry->MakeSolid();
+-		occgeometry->BuildFMap();
+-		cout << endl << "After operation:" << endl;
+-		occgeometry->PrintNrShapes();
+-		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	      }
+-	    if (strcmp (argv[1], "shapehealing") == 0)
+-	      {
+-		occgeometry->tolerance =
+-		  atof (Tcl_GetVar (interp, "::occoptions.tolerance", 0));
+-		occgeometry->fixsmalledges =
+-		  atoi (Tcl_GetVar (interp, "::occoptions.fixsmalledges", 0));
+-		occgeometry->fixspotstripfaces =
+-		  atoi (Tcl_GetVar (interp, "::occoptions.fixspotstripfaces", 0));
+-		occgeometry->sewfaces =
+-		  atoi (Tcl_GetVar (interp, "::occoptions.sewfaces", 0));
+-		occgeometry->makesolids =
+-		  atoi (Tcl_GetVar (interp, "::occoptions.makesolids", 0));
+-		occgeometry->splitpartitions =
+-		  atoi (Tcl_GetVar (interp, "::occoptions.splitpartitions", 0));
+-
+-		//	      cout << "Before operation:" << endl;
+-		//	      occgeometry->PrintNrShapes();
+-		occgeometry->HealGeometry();
+-		occgeometry->BuildFMap();
+-		//	      cout << endl << "After operation:" << endl;
+-		//	      occgeometry->PrintNrShapes();
+-		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	      }
+-
+-
+-	    if (strcmp (argv[1], "highlightentity") == 0)
+-	      {
+-		if (strcmp (argv[2], "Face") == 0)
+-		  {
+-		    int nr = atoi (argv[3]);
+-		    occgeometry->LowLightAll();
+-
+-		    occgeometry->fvispar[nr-1].Highlight();
+-		    if (vispar.occzoomtohighlightedentity)
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-		    else
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-		if (strcmp (argv[2], "Shell") == 0)
+-		  {
+-		    int nr = atoi (argv[3]);
+-		    occgeometry->LowLightAll();
+-
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-			occgeometry->fvispar[i-1].Highlight();
+-		      }
+-		    if (vispar.occzoomtohighlightedentity)
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-		    else
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-		if (strcmp (argv[2], "Solid") == 0)
+-		  {
+-		    int nr = atoi (argv[3]);
+-		    occgeometry->LowLightAll();
+-
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-			occgeometry->fvispar[i-1].Highlight();
+-		      }
+-		    if (vispar.occzoomtohighlightedentity)
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-		    else
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-		/*
+-		  if (strcmp (argv[2], "CompSolid") == 0)
+-		  {
+-		  int nr = atoi (argv[3]);
+-		  occgeometry->LowLightAll();
+-
+-		  TopExp_Explorer exp;
+-		  for (exp.Init (occgeometry->cmap(nr), TopAbs_FACE);
+-		  exp.More(); exp.Next())
+-		  {
+-		  int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-		  occgeometry->fvispar[i-1].Highlight();
+-		  }
+-		  occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-		*/
+-
+-		if (strcmp (argv[2], "Edge") == 0)
+-		  {
+-		    int nr = atoi (argv[3]);
+-		    occgeometry->LowLightAll();
+-
+-		    occgeometry->evispar[nr-1].Highlight();
+-		    if (vispar.occzoomtohighlightedentity)
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-		    else
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-		if (strcmp (argv[2], "Wire") == 0)
+-		  {
+-		    int nr = atoi (argv[3]);
+-		    occgeometry->LowLightAll();
+-
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
+-			occgeometry->evispar[i-1].Highlight();
+-		      }
+-		    if (vispar.occzoomtohighlightedentity)
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-		    else
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-
+-		if (strcmp (argv[2], "Vertex") == 0)
+-		  {
+-		    int nr = atoi (argv[3]);
+-		    occgeometry->LowLightAll();
+-
+-		    occgeometry->vvispar[nr-1].Highlight();
+-		    if (vispar.occzoomtohighlightedentity)
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-		    else
+-		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		  }
+-
+-	      }
+-
+-
+-
+-	    if (strcmp (argv[1], "show") == 0)
+-	      {
+-		int nr = atoi (argv[3]);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-
+-		if (strcmp (argv[2], "Face") == 0)
+-		  {
+-		    occgeometry->fvispar[nr-1].Show();
+-		  }
+-		if (strcmp (argv[2], "Shell") == 0)
+-		  {
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-			occgeometry->fvispar[i-1].Show();
+-		      }
+-		  }
+-		if (strcmp (argv[2], "Solid") == 0)
+-		  {
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-			occgeometry->fvispar[i-1].Show();
+-		      }
+-		  }
+-		if (strcmp (argv[2], "Edge") == 0)
+-		  {
+-		    occgeometry->evispar[nr-1].Show();
+-		  }
+-		if (strcmp (argv[2], "Wire") == 0)
+-		  {
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
+-			occgeometry->evispar[i-1].Show();
+-		      }
+-		  }
+-	      }
+-
+-
+-	    if (strcmp (argv[1], "hide") == 0)
+-	      {
+-		int nr = atoi (argv[3]);
+-		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-
+-		if (strcmp (argv[2], "Face") == 0)
+-		  {
+-		    occgeometry->fvispar[nr-1].Hide();
+-		  }
+-		if (strcmp (argv[2], "Shell") == 0)
+-		  {
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-			occgeometry->fvispar[i-1].Hide();
+-		      }
+-		  }
+-		if (strcmp (argv[2], "Solid") == 0)
+-		  {
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-			occgeometry->fvispar[i-1].Hide();
+-		      }
+-		  }
+-		if (strcmp (argv[2], "Edge") == 0)
+-		  {
+-		    occgeometry->evispar[nr-1].Hide();
+-		  }
+-		if (strcmp (argv[2], "Wire") == 0)
+-		  {
+-		    TopExp_Explorer exp;
+-		    for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
+-			 exp.More(); exp.Next())
+-		      {
+-			int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
+-			occgeometry->evispar[i-1].Hide();
+-		      }
+-		  }
+-	      }
+-
+-
+-
+-	    if (strcmp (argv[1], "findsmallentities") == 0)
+-	      {
+-		stringstream str("");
+-		occgeometry->CheckIrregularEntities(str);
+-		Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-	      }
+-	    if (strcmp (argv[1], "getunmeshedfaceinfo") == 0)
+-	      {
+-		occgeometry->GetUnmeshedFaceInfo(str);
+-		Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-	      }
+-	    if (strcmp (argv[1], "getnotdrawablefaces") == 0)
+-	      {
+-		occgeometry->GetNotDrawableFaces(str);
+-		Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-	      }
+-	    if (strcmp (argv[1], "redrawstatus") == 0)
+-	      {
+-		int i = atoi (argv[2]);
+-		occgeometry->changed = i;
+-	      }
+-	    if (strcmp (argv[1], "swaporientation") == 0)
+-	      {
+-		IGESControl_Writer writer("millimeters", 1);
+-		writer.AddShape (occgeometry->shape);
+-		writer.Write ("1.igs");
+-		/*
+-		  int nr = atoi (argv[3]);
+-
+-		  //	      const_cast (occgeometry->fmap(nr)).Reverse();
+-
+-		  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-		  rebuild->Apply(occgeometry->shape);
+-
+-		  TopoDS_Shape sh;
+-
+-		  //	      if (strcmp (argv[2], "CompSolid") == 0) sh = occgeometry->cmap(nr);
+-		  if (strcmp (argv[2], "Solid") == 0) sh = occgeometry->somap(nr);
+-		  if (strcmp (argv[2], "Shell") == 0) sh = occgeometry->shmap(nr);
+-		  if (strcmp (argv[2], "Face") == 0) sh = occgeometry->fmap(nr);
+-		  if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);
+-		  if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);
+-
+-		  rebuild->Replace(sh, sh.Reversed(), Standard_False);
+-
+-		  TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);
+-		  occgeometry->shape = newshape;
+-
+-		  occgeometry->BuildFMap();
+-		  occgeometry->BuildVisualizationMesh();
+-		  occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-		*/
+-	      }
+-	    if (strcmp (argv[1], "marksingular") == 0)
+-	      {
+-		int nr = atoi (argv[3]);
+-		cout << "marking " << argv[2] << " " << nr << endl;
+-		char buf[2]; buf[0] = '0'; buf[1] = 0;
+-		bool sing = false;
+-		if (strcmp (argv[2], "Face") == 0)
+-		  sing = occgeometry->fsingular[nr-1] = !occgeometry->fsingular[nr-1];
+-		if (strcmp (argv[2], "Edge") == 0)
+-		  sing = occgeometry->esingular[nr-1] = !occgeometry->esingular[nr-1];
+-		if (strcmp (argv[2], "Vertex") == 0)
+-		  sing = occgeometry->vsingular[nr-1] = !occgeometry->vsingular[nr-1];
+-
+-		if (sing) buf[0] = '1';
+-
+-                Tcl_SetVar (interp, "::ismarkedsingular", buf, 0);
+-
+-		stringstream str;
+-		occgeometry->GetTopologyTree (str);
+-
+-		char* cstr = (char*)str.str().c_str();
+-
+-		(*testout) << cstr << endl;
+-
+-		char helpstr[1000];
+-
+-		while (strchr (cstr, '}'))
+-		  {
+-		    strncpy (helpstr, cstr+2, strlen(strchr(cstr+2, '}')));
+-		    (*testout) << "***" << cstr << "***" << endl;
+-		    cstr = strchr (cstr, '}');
+-		  } 
+-	      }
+-	  }
+-      }
+-
+-#endif
+-    return TCL_OK;
+-  }
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-  /*
+-  void OCCConstructGeometry (OCCGeometry & geom);
+-
+-  int Ng_OCCConstruction (ClientData clientData,
+-			  Tcl_Interp * interp,
+-			  int argc, tcl_const char *argv[])
+-  {
+-    if (occgeometry)
+-      OCCConstructGeometry (*occgeometry);
+-    return TCL_OK;
+-  }
+-  */
+-#endif
+-
+-
+-
+-
+-  // Philippose - 30/01/2009
+-  // TCL interface function for the Local Face Mesh size
+-  // definition functionality
+-  int Ng_SurfaceMeshSize (ClientData clientData,
+-		                    Tcl_Interp * interp,
+-		                    int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-
+-    static char buf[100];
+-
+-    if (argc < 2)
+-    {
+-	   Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize needs arguments", TCL_STATIC);
+-	   return TCL_ERROR;
+-    }
+-
+-    OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
+-    if (!occgeometry)
+-    {
+-      Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
+-	   return TCL_ERROR;
+-    }
+-
+-    // Update the face mesh sizes to reflect the global maximum mesh size
+-    for(int i = 1; i <= occgeometry->NrFaces(); i++)
+-    {
+-           if(!occgeometry->GetFaceMaxhModified(i))
+-           {
+-              occgeometry->SetFaceMaxH(i, mparam.maxh);
+-           }   
+-    }
+-
+-    if (strcmp (argv[1], "setsurfms") == 0)
+-    {
+-	   int facenr = atoi (argv[2]);
+-	   double surfms = atof (argv[3]);
+-	   if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
+-	     occgeometry->SetFaceMaxH(facenr, surfms);
+-
+-    }
+-
+-    if (strcmp (argv[1], "setall") == 0)
+-    {
+-	   double surfms = atof (argv[2]);
+-	   if (occgeometry)
+-	   {
+-	     int nrFaces = occgeometry->NrFaces();
+-	     for (int i = 1; i <= nrFaces; i++)
+-	      occgeometry->SetFaceMaxH(i, surfms);
+-	   }
+-    }
+-
+-    if (strcmp (argv[1], "getsurfms") == 0)
+-    {
+-	   int facenr = atoi (argv[2]);
+-	   if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
+-	   {
+-	     sprintf (buf, "%5.2f", occgeometry->GetFaceMaxH(facenr));
+-	   }
+-	   else
+-	   {
+-	     sprintf (buf, "%5.2f", mparam.maxh);
+-	   }
+-	   Tcl_SetResult (interp, buf, TCL_STATIC);
+-    }
+-
+-    if (strcmp (argv[1], "getactive") == 0)
+-    {
+-	   sprintf (buf, "%d", occgeometry->SelectedFace());
+-	   Tcl_SetResult (interp, buf, TCL_STATIC);
+-    }
+-
+-    if (strcmp (argv[1], "setactive") == 0)
+-    {
+-	   int facenr = atoi (argv[2]);
+-	   if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
+-	   {
+-	     occgeometry->SetSelectedFace (facenr);
+-
+-        occgeometry->LowLightAll();
+-        occgeometry->fvispar[facenr-1].Highlight();
+-        occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-	   }
+-    }
+-
+-    if (strcmp (argv[1], "getnfd") == 0)
+-    {
+-	   if (occgeometry)
+-	     sprintf (buf, "%d", occgeometry->NrFaces());
+-	   else
+-	     sprintf (buf, "0");
+-	   Tcl_SetResult (interp, buf, TCL_STATIC);
+-    }
+-    return TCL_OK;
+-#else // No OCCGEOMETRY 
+-
+-    Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
+-    return TCL_ERROR;
+-    
+-#endif // OCCGEOMETRY
+-  }
+-
+-
+-
+-  // Philippose - 25/07/2010
+-  // TCL interface function for extracting and eventually 
+-  // setting or editing the current colours present in the mesh
+-  int Ng_CurrentFaceColours (ClientData clientData,
+-                             Tcl_Interp * interp,
+-                             int argc, tcl_const char *argv[])
+-  {
+-     if(argc < 1)
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours needs arguments", TCL_STATIC);
+-        return TCL_ERROR;
+-     }
+-
+-     if(!mesh.Ptr())
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
+-	     return TCL_ERROR;
+-     }
+-
+-     if(strcmp(argv[1], "getcolours") == 0)
+-     {
+-        stringstream outVar;
+-        Array face_colours;
+-        GetFaceColours(*mesh, face_colours);
+-
+-        for(int i = 0; i < face_colours.Size();i++)
+-        {
+-           outVar << "{ " << face_colours[i].X(1)
+-                  << " "  << face_colours[i].X(2)
+-                  << " "  << face_colours[i].X(3)
+-                  << " } ";
+-        }
+-
+-        tcl_const char * valuevar = argv[2];
+-        Tcl_SetVar  (interp, valuevar, (char*)outVar.str().c_str(), 0);
+-     }
+-
+-     if(strcmp(argv[1], "showalso") == 0)
+-     {
+-        Array face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(1);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "hidealso") == 0)
+-     {
+-        Array face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(0);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "showonly") == 0)
+-     {
+-        Array face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(1);
+-              }
+-           }
+-           else
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(0);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "hideonly") == 0)
+-     {
+-        Array face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(0);
+-              }
+-           }
+-           else
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(1);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "showall") == 0)
+-     {
+-        for(int i = 1; i <= mesh->GetNSE(); i++)
+-        {
+-           mesh->SurfaceElement(i).Visible(1);
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "hideall") == 0)
+-     {
+-        for(int i = 1; i <= mesh->GetNSE(); i++)
+-        {
+-           mesh->SurfaceElement(i).Visible(0);
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     return TCL_OK;
+-  }
+-
+-
+-
+-
+-  // Philippose - 10/03/2009
+-  // TCL interface function for the Automatic Colour-based
+-  // definition of boundary conditions for OCC Geometry
+-  int Ng_AutoColourBcProps (ClientData clientData,
+-		                      Tcl_Interp * interp,
+-		                      int argc, tcl_const char *argv[])
+-  {
+-     if(argc < 1)
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps needs arguments", TCL_STATIC);
+-        return TCL_ERROR;
+-     }
+-
+-     if(!mesh.Ptr())
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
+-	     return TCL_ERROR;
+-     }
+-
+-     if(strcmp(argv[1], "auto") == 0)
+-     {
+-        AutoColourBcProps(*mesh, 0);
+-     }
+-
+-     if(strcmp(argv[1], "profile") == 0)
+-     {
+-        AutoColourBcProps(*mesh, argv[2]);
+-     }
+-
+-     return TCL_OK;
+-  }
+-
+-
+-  int Ng_SetOCCParameters  (ClientData clientData,
+-			    Tcl_Interp * interp,
+-			    int argc, tcl_const char *argv[])
+-  {
+-    OCCGeometryRegister reg;
+-    reg.SetParameters (interp);
+-    /*
+-    occparam.resthcloseedgefac =
+-      atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
+-
+-    occparam.resthcloseedgeenable =
+-      atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
+-    */
+-    return TCL_OK;
+-  }
+-
+-
+-
+-
+-  NetgenGeometry *  OCCGeometryRegister :: Load (string filename) const
+-  {
+-    const char * lgfilename = filename.c_str();
+-
+-
+-    /*
+-    if (strcmp (&cfilename[strlen(cfilename)-3], "geo") == 0)
+-      {
+-	PrintMessage (1, "Load OCCG geometry file ", cfilename);
+-	
+-	extern OCCGeometry * ParseOCCG (istream & istr);
+-
+-	ifstream infile(cfilename);
+-
+-	OCCGeometry * hgeom = ParseOCCG (infile);
+-	if (!hgeom)
+-	  throw NgException ("geo-file should start with 'algebraic3d'");
+-
+-	hgeom -> FindIdenticSurfaces(1e-8 * hgeom->MaxSize()); 
+-	return hgeom;
+-      }
+-    */
+-
+-
+-    if ((strcmp (&lgfilename[strlen(lgfilename)-4], "iges") == 0) ||
+-	(strcmp (&lgfilename[strlen(lgfilename)-3], "igs") == 0) ||
+-	(strcmp (&lgfilename[strlen(lgfilename)-3], "IGS") == 0) ||
+-	(strcmp (&lgfilename[strlen(lgfilename)-4], "IGES") == 0))
+-      {
+-	PrintMessage (1, "Load IGES geometry file ", lgfilename);
+-	OCCGeometry * occgeometry = LoadOCC_IGES (lgfilename);
+-	return occgeometry;
+-      }
+-
+-    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "step") == 0) ||
+-		     (strcmp (&lgfilename[strlen(lgfilename)-3], "stp") == 0) ||
+-		     (strcmp (&lgfilename[strlen(lgfilename)-3], "STP") == 0) ||
+-		     (strcmp (&lgfilename[strlen(lgfilename)-4], "STEP") == 0))
+-      {
+-	PrintMessage (1, "Load STEP geometry file ", lgfilename);
+-	OCCGeometry * occgeometry = LoadOCC_STEP (lgfilename);
+-	return occgeometry;    
+-      }
+-    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "brep") == 0) ||
+-	     (strcmp (&lgfilename[strlen(lgfilename)-4], "Brep") == 0) ||
+-	     (strcmp (&lgfilename[strlen(lgfilename)-4], "BREP") == 0))
+-      {
+-	PrintMessage (1, "Load BREP geometry file ", lgfilename);
+-	OCCGeometry * occgeometry = LoadOCC_BREP (lgfilename);
+-	return occgeometry;
+-      }
+-    
+-    return NULL;
+-  }
+-
+-
+-  static VisualSceneOCCGeometry vsoccgeom;
+-
+-  VisualScene * OCCGeometryRegister :: GetVisualScene (const NetgenGeometry * geom) const
+-  {
+-    OCCGeometry * geometry = dynamic_cast (ng_geometry.Ptr());
+-    if (geometry)
+-      {
+-	vsoccgeom.SetGeometry (geometry);
+-	return &vsoccgeom;
+-      }
+-    return NULL;
+-  }
+-
+-
+-
+-}
+-
+-
+-
+-using namespace netgen;
+-
+-int Ng_occ_Init (Tcl_Interp * interp)
+-{
+-  geometryregister.Append (new OCCGeometryRegister);
+-
+-
+-    Tcl_CreateCommand (interp, "Ng_SetOCCVisParameters",
+-		       Ng_SetOCCVisParameters,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-
+-    Tcl_CreateCommand (interp, "Ng_GetOCCData",
+-		       Ng_GetOCCData,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-
+-    /*
+-#ifdef OCCGEOMETRY
+-    Tcl_CreateCommand (interp, "Ng_OCCConstruction",
+-		       Ng_OCCConstruction,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-#endif
+-    */
+-
+-    Tcl_CreateCommand (interp, "Ng_OCCCommand",
+-		       Ng_OCCCommand,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-
+-
+-    Tcl_CreateCommand (interp, "Ng_SetOCCParameters", Ng_SetOCCParameters,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-
+-
+-
+-    // Philippose - 30/01/2009
+-    // Register the TCL Interface Command for local face mesh size
+-    // definition
+-    Tcl_CreateCommand (interp, "Ng_SurfaceMeshSize", Ng_SurfaceMeshSize,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-
+-    Tcl_CreateCommand (interp, "Ng_AutoColourBcProps", Ng_AutoColourBcProps,
+-		       (ClientData)NULL,
+-		       (Tcl_CmdDeleteProc*) NULL);
+-
+-    // Philippose - 25/07/2010
+-    // Register the TCL Interface Command for handling the face colours 
+-    // present in the mesh
+-    Tcl_CreateCommand(interp, "Ng_CurrentFaceColours", Ng_CurrentFaceColours,
+-                      (ClientData)NULL,
+-                      (Tcl_CmdDeleteProc*) NULL);
+-
+-
+-  return TCL_OK;
+-}
+-
+-#endif
+-
++#ifdef OCCGEOMETRY
++
++#include 
++#include 
++#include 
++#include 
++#include 
++
++
++#include 
++#include 
++
++#include "../meshing/bcfunctions.hpp"
++
++#include "vsocc.hpp"
++
++
++extern "C" int Ng_occ_Init (Tcl_Interp * interp);
++
++
++
++namespace netgen
++{
++  extern AutoPtr ng_geometry;
++  extern AutoPtr mesh;
++ 
++  char * err_needsoccgeometry = (char*) "This operation needs an OCC geometry";
++  extern char * err_needsmesh;
++  extern char * err_jobrunning;
++
++
++
++                          
++  class OCCGeometryRegister : public GeometryRegister
++  {
++  public:
++    virtual NetgenGeometry * Load (string filename) const;
++    virtual VisualScene * GetVisualScene (const NetgenGeometry * geom) const;
++
++    virtual void SetParameters (Tcl_Interp * interp) 
++    {
++      occparam.resthcloseedgefac =
++	atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
++      occparam.resthcloseedgeenable =
++	atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
++	  occparam.resthminedgelen = 
++	atof (Tcl_GetVar (interp, "::stloptions.resthminedgelen", 0));
++	  occparam.resthminedgelenenable = 
++	atoi (Tcl_GetVar (interp, "::stloptions.resthminedgelenenable", 0));
++    }
++  };
++
++
++
++
++  int Ng_SetOCCVisParameters  (ClientData clientData,
++			       Tcl_Interp * interp,
++			       int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++    int showvolume;
++	OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
++
++    showvolume = atoi (Tcl_GetVar (interp, "::occoptions.showvolumenr", 0));
++
++    if (occgeometry)
++      if (showvolume != vispar.occshowvolumenr)
++	{
++	  if (showvolume < 0 || showvolume > occgeometry->NrSolids())
++	    {
++	      char buf[20];
++	      sprintf (buf, "%5i", vispar.occshowvolumenr);
++	      Tcl_SetVar (interp, "::occoptions.showvolumenr", buf, 0);
++	    }
++	  else
++	    {
++	      vispar.occshowvolumenr = showvolume;
++	      if (occgeometry)
++		occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	    }
++	}
++    
++    int temp;
++
++    temp = atoi (Tcl_GetVar (interp, "::occoptions.visproblemfaces", 0));
++
++    if ((bool) temp != vispar.occvisproblemfaces)
++      {
++	vispar.occvisproblemfaces = temp;
++	if (occgeometry)
++	  occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++      }
++
++    vispar.occshowsurfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
++    vispar.occshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
++    vispar.occzoomtohighlightedentity = atoi (Tcl_GetVar (interp, "::occoptions.zoomtohighlightedentity", 0));
++    vispar.occdeflection = pow(10.0,-1-atof (Tcl_GetVar (interp, "::occoptions.deflection", 0)));
++
++#endif
++
++
++
++
++
++#ifdef ACIS
++    vispar.ACISshowfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
++    vispar.ACISshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
++    vispar.ACISshowsolidnr = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr", 0));
++    vispar.ACISshowsolidnr2 = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr2", 0));
++
++#endif
++
++
++
++    return TCL_OK;
++  }  
++
++
++
++
++  int Ng_GetOCCData (ClientData clientData,
++		     Tcl_Interp * interp,
++		     int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++    OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
++
++    static char buf[1000];
++    buf[0] = 0;
++    stringstream str;
++
++    if (argc >= 2)
++      {
++	if (strcmp (argv[1], "getentities") == 0)
++	  {
++	    if (occgeometry)
++	      {
++		occgeometry->GetTopologyTree(str);
++	      }
++	  }
++      }
++
++    Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++
++#endif
++    return TCL_OK;
++  }
++
++  
++
++  int Ng_OCCCommand (ClientData clientData,
++		     Tcl_Interp * interp,
++		     int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++    OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
++
++    stringstream str;
++    if (argc >= 2)
++      {
++	if (strcmp (argv[1], "isoccgeometryloaded") == 0)
++	  {
++	    if (occgeometry)
++	      str << "1 " << flush;
++	    else str << "0 " << flush;
++
++	    Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++	  }
++	if (occgeometry)
++	  {
++	    if (strcmp (argv[1], "buildvisualizationmesh") == 0)
++	      {
++		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	      }
++	    if (strcmp (argv[1], "mesherror") == 0)
++	      {
++		if (occgeometry->ErrorInSurfaceMeshing())
++		  str << 1;
++		else
++		  str << 0;
++	      }
++	    if (strcmp (argv[1], "sewfaces") == 0)
++	      {
++		cout << "Before operation:" << endl;
++		occgeometry->PrintNrShapes();
++		occgeometry->SewFaces();
++		occgeometry->BuildFMap();
++		cout << endl << "After operation:" << endl;
++		occgeometry->PrintNrShapes();
++		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	      }
++	    if (strcmp (argv[1], "makesolid") == 0)
++	      {
++		cout << "Before operation:" << endl;
++		occgeometry->PrintNrShapes();
++		occgeometry->MakeSolid();
++		occgeometry->BuildFMap();
++		cout << endl << "After operation:" << endl;
++		occgeometry->PrintNrShapes();
++		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	      }
++	    if (strcmp (argv[1], "upgradetopology") == 0)
++	      {
++		cout << "Before operation:" << endl;
++		occgeometry->PrintNrShapes();
++		occgeometry->SewFaces();
++		occgeometry->MakeSolid();
++		occgeometry->BuildFMap();
++		cout << endl << "After operation:" << endl;
++		occgeometry->PrintNrShapes();
++		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	      }
++	    if (strcmp (argv[1], "shapehealing") == 0)
++	      {
++		occgeometry->tolerance =
++		  atof (Tcl_GetVar (interp, "::occoptions.tolerance", 0));
++		occgeometry->fixsmalledges =
++		  atoi (Tcl_GetVar (interp, "::occoptions.fixsmalledges", 0));
++		occgeometry->fixspotstripfaces =
++		  atoi (Tcl_GetVar (interp, "::occoptions.fixspotstripfaces", 0));
++		occgeometry->sewfaces =
++		  atoi (Tcl_GetVar (interp, "::occoptions.sewfaces", 0));
++		occgeometry->makesolids =
++		  atoi (Tcl_GetVar (interp, "::occoptions.makesolids", 0));
++		occgeometry->splitpartitions =
++		  atoi (Tcl_GetVar (interp, "::occoptions.splitpartitions", 0));
++
++		//	      cout << "Before operation:" << endl;
++		//	      occgeometry->PrintNrShapes();
++		occgeometry->HealGeometry();
++		occgeometry->BuildFMap();
++		//	      cout << endl << "After operation:" << endl;
++		//	      occgeometry->PrintNrShapes();
++		occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	      }
++
++
++	    if (strcmp (argv[1], "highlightentity") == 0)
++	      {
++		if (strcmp (argv[2], "Face") == 0)
++		  {
++		    int nr = atoi (argv[3]);
++		    occgeometry->LowLightAll();
++
++		    occgeometry->fvispar[nr-1].Highlight();
++		    if (vispar.occzoomtohighlightedentity)
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++		    else
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++		if (strcmp (argv[2], "Shell") == 0)
++		  {
++		    int nr = atoi (argv[3]);
++		    occgeometry->LowLightAll();
++
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++			occgeometry->fvispar[i-1].Highlight();
++		      }
++		    if (vispar.occzoomtohighlightedentity)
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++		    else
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++		if (strcmp (argv[2], "Solid") == 0)
++		  {
++		    int nr = atoi (argv[3]);
++		    occgeometry->LowLightAll();
++
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++			occgeometry->fvispar[i-1].Highlight();
++		      }
++		    if (vispar.occzoomtohighlightedentity)
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++		    else
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++		/*
++		  if (strcmp (argv[2], "CompSolid") == 0)
++		  {
++		  int nr = atoi (argv[3]);
++		  occgeometry->LowLightAll();
++
++		  TopExp_Explorer exp;
++		  for (exp.Init (occgeometry->cmap(nr), TopAbs_FACE);
++		  exp.More(); exp.Next())
++		  {
++		  int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++		  occgeometry->fvispar[i-1].Highlight();
++		  }
++		  occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++		*/
++
++		if (strcmp (argv[2], "Edge") == 0)
++		  {
++		    int nr = atoi (argv[3]);
++		    occgeometry->LowLightAll();
++
++		    occgeometry->evispar[nr-1].Highlight();
++		    if (vispar.occzoomtohighlightedentity)
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++		    else
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++		if (strcmp (argv[2], "Wire") == 0)
++		  {
++		    int nr = atoi (argv[3]);
++		    occgeometry->LowLightAll();
++
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
++			occgeometry->evispar[i-1].Highlight();
++		      }
++		    if (vispar.occzoomtohighlightedentity)
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++		    else
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++
++		if (strcmp (argv[2], "Vertex") == 0)
++		  {
++		    int nr = atoi (argv[3]);
++		    occgeometry->LowLightAll();
++
++		    occgeometry->vvispar[nr-1].Highlight();
++		    if (vispar.occzoomtohighlightedentity)
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++		    else
++		      occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		  }
++
++	      }
++
++
++
++	    if (strcmp (argv[1], "show") == 0)
++	      {
++		int nr = atoi (argv[3]);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++
++		if (strcmp (argv[2], "Face") == 0)
++		  {
++		    occgeometry->fvispar[nr-1].Show();
++		  }
++		if (strcmp (argv[2], "Shell") == 0)
++		  {
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++			occgeometry->fvispar[i-1].Show();
++		      }
++		  }
++		if (strcmp (argv[2], "Solid") == 0)
++		  {
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++			occgeometry->fvispar[i-1].Show();
++		      }
++		  }
++		if (strcmp (argv[2], "Edge") == 0)
++		  {
++		    occgeometry->evispar[nr-1].Show();
++		  }
++		if (strcmp (argv[2], "Wire") == 0)
++		  {
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
++			occgeometry->evispar[i-1].Show();
++		      }
++		  }
++	      }
++
++
++	    if (strcmp (argv[1], "hide") == 0)
++	      {
++		int nr = atoi (argv[3]);
++		occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++
++		if (strcmp (argv[2], "Face") == 0)
++		  {
++		    occgeometry->fvispar[nr-1].Hide();
++		  }
++		if (strcmp (argv[2], "Shell") == 0)
++		  {
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++			occgeometry->fvispar[i-1].Hide();
++		      }
++		  }
++		if (strcmp (argv[2], "Solid") == 0)
++		  {
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++			occgeometry->fvispar[i-1].Hide();
++		      }
++		  }
++		if (strcmp (argv[2], "Edge") == 0)
++		  {
++		    occgeometry->evispar[nr-1].Hide();
++		  }
++		if (strcmp (argv[2], "Wire") == 0)
++		  {
++		    TopExp_Explorer exp;
++		    for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
++			 exp.More(); exp.Next())
++		      {
++			int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
++			occgeometry->evispar[i-1].Hide();
++		      }
++		  }
++	      }
++
++
++
++	    if (strcmp (argv[1], "findsmallentities") == 0)
++	      {
++		stringstream str("");
++		occgeometry->CheckIrregularEntities(str);
++		Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++	      }
++	    if (strcmp (argv[1], "getunmeshedfaceinfo") == 0)
++	      {
++		occgeometry->GetUnmeshedFaceInfo(str);
++		Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++	      }
++	    if (strcmp (argv[1], "getnotdrawablefaces") == 0)
++	      {
++		occgeometry->GetNotDrawableFaces(str);
++		Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++	      }
++	    if (strcmp (argv[1], "redrawstatus") == 0)
++	      {
++		int i = atoi (argv[2]);
++		occgeometry->changed = i;
++	      }
++	    if (strcmp (argv[1], "swaporientation") == 0)
++	      {
++		IGESControl_Writer writer("millimeters", 1);
++		writer.AddShape (occgeometry->shape);
++		writer.Write ("1.igs");
++		/*
++		  int nr = atoi (argv[3]);
++
++		  //	      const_cast (occgeometry->fmap(nr)).Reverse();
++
++		  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++		  rebuild->Apply(occgeometry->shape);
++
++		  TopoDS_Shape sh;
++
++		  //	      if (strcmp (argv[2], "CompSolid") == 0) sh = occgeometry->cmap(nr);
++		  if (strcmp (argv[2], "Solid") == 0) sh = occgeometry->somap(nr);
++		  if (strcmp (argv[2], "Shell") == 0) sh = occgeometry->shmap(nr);
++		  if (strcmp (argv[2], "Face") == 0) sh = occgeometry->fmap(nr);
++		  if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);
++		  if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);
++
++		  rebuild->Replace(sh, sh.Reversed());
++
++		  TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);
++		  occgeometry->shape = newshape;
++
++		  occgeometry->BuildFMap();
++		  occgeometry->BuildVisualizationMesh();
++		  occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++		*/
++	      }
++	    if (strcmp (argv[1], "marksingular") == 0)
++	      {
++		int nr = atoi (argv[3]);
++		cout << "marking " << argv[2] << " " << nr << endl;
++		char buf[2]; buf[0] = '0'; buf[1] = 0;
++		bool sing = false;
++		if (strcmp (argv[2], "Face") == 0)
++		  sing = occgeometry->fsingular[nr-1] = !occgeometry->fsingular[nr-1];
++		if (strcmp (argv[2], "Edge") == 0)
++		  sing = occgeometry->esingular[nr-1] = !occgeometry->esingular[nr-1];
++		if (strcmp (argv[2], "Vertex") == 0)
++		  sing = occgeometry->vsingular[nr-1] = !occgeometry->vsingular[nr-1];
++
++		if (sing) buf[0] = '1';
++
++                Tcl_SetVar (interp, "::ismarkedsingular", buf, 0);
++
++		stringstream str;
++		occgeometry->GetTopologyTree (str);
++
++		char* cstr = (char*)str.str().c_str();
++
++		(*testout) << cstr << endl;
++
++		char helpstr[1000];
++
++		while (strchr (cstr, '}'))
++		  {
++		    strncpy (helpstr, cstr+2, strlen(strchr(cstr+2, '}')));
++		    (*testout) << "***" << cstr << "***" << endl;
++		    cstr = strchr (cstr, '}');
++		  } 
++	      }
++	  }
++      }
++
++#endif
++    return TCL_OK;
++  }
++
++
++
++#ifdef OCCGEOMETRY
++  /*
++  void OCCConstructGeometry (OCCGeometry & geom);
++
++  int Ng_OCCConstruction (ClientData clientData,
++			  Tcl_Interp * interp,
++			  int argc, tcl_const char *argv[])
++  {
++    if (occgeometry)
++      OCCConstructGeometry (*occgeometry);
++    return TCL_OK;
++  }
++  */
++#endif
++
++
++
++
++  // Philippose - 30/01/2009
++  // TCL interface function for the Local Face Mesh size
++  // definition functionality
++  int Ng_SurfaceMeshSize (ClientData clientData,
++		                    Tcl_Interp * interp,
++		                    int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++
++    static char buf[100];
++
++    if (argc < 2)
++    {
++	   Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize needs arguments", TCL_STATIC);
++	   return TCL_ERROR;
++    }
++
++    OCCGeometry * occgeometry = dynamic_cast (ng_geometry.Ptr());
++    if (!occgeometry)
++    {
++      Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
++	   return TCL_ERROR;
++    }
++
++    // Update the face mesh sizes to reflect the global maximum mesh size
++    for(int i = 1; i <= occgeometry->NrFaces(); i++)
++    {
++           if(!occgeometry->GetFaceMaxhModified(i))
++           {
++              occgeometry->SetFaceMaxH(i, mparam.maxh);
++           }   
++    }
++
++    if (strcmp (argv[1], "setsurfms") == 0)
++    {
++	   int facenr = atoi (argv[2]);
++	   double surfms = atof (argv[3]);
++	   if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
++	     occgeometry->SetFaceMaxH(facenr, surfms);
++
++    }
++
++    if (strcmp (argv[1], "setall") == 0)
++    {
++	   double surfms = atof (argv[2]);
++	   if (occgeometry)
++	   {
++	     int nrFaces = occgeometry->NrFaces();
++	     for (int i = 1; i <= nrFaces; i++)
++	      occgeometry->SetFaceMaxH(i, surfms);
++	   }
++    }
++
++    if (strcmp (argv[1], "getsurfms") == 0)
++    {
++	   int facenr = atoi (argv[2]);
++	   if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
++	   {
++	     sprintf (buf, "%5.2f", occgeometry->GetFaceMaxH(facenr));
++	   }
++	   else
++	   {
++	     sprintf (buf, "%5.2f", mparam.maxh);
++	   }
++	   Tcl_SetResult (interp, buf, TCL_STATIC);
++    }
++
++    if (strcmp (argv[1], "getactive") == 0)
++    {
++	   sprintf (buf, "%d", occgeometry->SelectedFace());
++	   Tcl_SetResult (interp, buf, TCL_STATIC);
++    }
++
++    if (strcmp (argv[1], "setactive") == 0)
++    {
++	   int facenr = atoi (argv[2]);
++	   if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
++	   {
++	     occgeometry->SetSelectedFace (facenr);
++
++        occgeometry->LowLightAll();
++        occgeometry->fvispar[facenr-1].Highlight();
++        occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++	   }
++    }
++
++    if (strcmp (argv[1], "getnfd") == 0)
++    {
++	   if (occgeometry)
++	     sprintf (buf, "%d", occgeometry->NrFaces());
++	   else
++	     sprintf (buf, "0");
++	   Tcl_SetResult (interp, buf, TCL_STATIC);
++    }
++    return TCL_OK;
++#else // No OCCGEOMETRY 
++
++    Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
++    return TCL_ERROR;
++    
++#endif // OCCGEOMETRY
++  }
++
++
++
++  // Philippose - 25/07/2010
++  // TCL interface function for extracting and eventually 
++  // setting or editing the current colours present in the mesh
++  int Ng_CurrentFaceColours (ClientData clientData,
++                             Tcl_Interp * interp,
++                             int argc, tcl_const char *argv[])
++  {
++     if(argc < 1)
++     {
++        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours needs arguments", TCL_STATIC);
++        return TCL_ERROR;
++     }
++
++     if(!mesh.Ptr())
++     {
++        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
++	     return TCL_ERROR;
++     }
++
++     if(strcmp(argv[1], "getcolours") == 0)
++     {
++        stringstream outVar;
++        Array face_colours;
++        GetFaceColours(*mesh, face_colours);
++
++        for(int i = 0; i < face_colours.Size();i++)
++        {
++           outVar << "{ " << face_colours[i].X(1)
++                  << " "  << face_colours[i].X(2)
++                  << " "  << face_colours[i].X(3)
++                  << " } ";
++        }
++
++        tcl_const char * valuevar = argv[2];
++        Tcl_SetVar  (interp, valuevar, (char*)outVar.str().c_str(), 0);
++     }
++
++     if(strcmp(argv[1], "showalso") == 0)
++     {
++        Array face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(1);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "hidealso") == 0)
++     {
++        Array face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(0);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "showonly") == 0)
++     {
++        Array face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(1);
++              }
++           }
++           else
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(0);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "hideonly") == 0)
++     {
++        Array face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(0);
++              }
++           }
++           else
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(1);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "showall") == 0)
++     {
++        for(int i = 1; i <= mesh->GetNSE(); i++)
++        {
++           mesh->SurfaceElement(i).Visible(1);
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "hideall") == 0)
++     {
++        for(int i = 1; i <= mesh->GetNSE(); i++)
++        {
++           mesh->SurfaceElement(i).Visible(0);
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     return TCL_OK;
++  }
++
++
++
++
++  // Philippose - 10/03/2009
++  // TCL interface function for the Automatic Colour-based
++  // definition of boundary conditions for OCC Geometry
++  int Ng_AutoColourBcProps (ClientData clientData,
++		                      Tcl_Interp * interp,
++		                      int argc, tcl_const char *argv[])
++  {
++     if(argc < 1)
++     {
++        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps needs arguments", TCL_STATIC);
++        return TCL_ERROR;
++     }
++
++     if(!mesh.Ptr())
++     {
++        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
++	     return TCL_ERROR;
++     }
++
++     if(strcmp(argv[1], "auto") == 0)
++     {
++        AutoColourBcProps(*mesh, 0);
++     }
++
++     if(strcmp(argv[1], "profile") == 0)
++     {
++        AutoColourBcProps(*mesh, argv[2]);
++     }
++
++     return TCL_OK;
++  }
++
++
++  int Ng_SetOCCParameters  (ClientData clientData,
++			    Tcl_Interp * interp,
++			    int argc, tcl_const char *argv[])
++  {
++    OCCGeometryRegister reg;
++    reg.SetParameters (interp);
++    /*
++    occparam.resthcloseedgefac =
++      atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
++
++    occparam.resthcloseedgeenable =
++      atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
++    */
++    return TCL_OK;
++  }
++
++
++
++
++  NetgenGeometry *  OCCGeometryRegister :: Load (string filename) const
++  {
++    const char * lgfilename = filename.c_str();
++
++
++    /*
++    if (strcmp (&cfilename[strlen(cfilename)-3], "geo") == 0)
++      {
++	PrintMessage (1, "Load OCCG geometry file ", cfilename);
++	
++	extern OCCGeometry * ParseOCCG (istream & istr);
++
++	ifstream infile(cfilename);
++
++	OCCGeometry * hgeom = ParseOCCG (infile);
++	if (!hgeom)
++	  throw NgException ("geo-file should start with 'algebraic3d'");
++
++	hgeom -> FindIdenticSurfaces(1e-8 * hgeom->MaxSize()); 
++	return hgeom;
++      }
++    */
++
++
++    if ((strcmp (&lgfilename[strlen(lgfilename)-4], "iges") == 0) ||
++	(strcmp (&lgfilename[strlen(lgfilename)-3], "igs") == 0) ||
++	(strcmp (&lgfilename[strlen(lgfilename)-3], "IGS") == 0) ||
++	(strcmp (&lgfilename[strlen(lgfilename)-4], "IGES") == 0))
++      {
++	PrintMessage (1, "Load IGES geometry file ", lgfilename);
++	OCCGeometry * occgeometry = LoadOCC_IGES (lgfilename);
++	return occgeometry;
++      }
++
++    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "step") == 0) ||
++		     (strcmp (&lgfilename[strlen(lgfilename)-3], "stp") == 0) ||
++		     (strcmp (&lgfilename[strlen(lgfilename)-3], "STP") == 0) ||
++		     (strcmp (&lgfilename[strlen(lgfilename)-4], "STEP") == 0))
++      {
++	PrintMessage (1, "Load STEP geometry file ", lgfilename);
++	OCCGeometry * occgeometry = LoadOCC_STEP (lgfilename);
++	return occgeometry;    
++      }
++    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "brep") == 0) ||
++	     (strcmp (&lgfilename[strlen(lgfilename)-4], "Brep") == 0) ||
++	     (strcmp (&lgfilename[strlen(lgfilename)-4], "BREP") == 0))
++      {
++	PrintMessage (1, "Load BREP geometry file ", lgfilename);
++	OCCGeometry * occgeometry = LoadOCC_BREP (lgfilename);
++	return occgeometry;
++      }
++    
++    return NULL;
++  }
++
++
++  static VisualSceneOCCGeometry vsoccgeom;
++
++  VisualScene * OCCGeometryRegister :: GetVisualScene (const NetgenGeometry * geom) const
++  {
++    OCCGeometry * geometry = dynamic_cast (ng_geometry.Ptr());
++    if (geometry)
++      {
++	vsoccgeom.SetGeometry (geometry);
++	return &vsoccgeom;
++      }
++    return NULL;
++  }
++
++
++
++}
++
++
++
++using namespace netgen;
++
++int Ng_occ_Init (Tcl_Interp * interp)
++{
++  geometryregister.Append (new OCCGeometryRegister);
++
++
++    Tcl_CreateCommand (interp, "Ng_SetOCCVisParameters",
++		       Ng_SetOCCVisParameters,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++
++    Tcl_CreateCommand (interp, "Ng_GetOCCData",
++		       Ng_GetOCCData,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++
++    /*
++#ifdef OCCGEOMETRY
++    Tcl_CreateCommand (interp, "Ng_OCCConstruction",
++		       Ng_OCCConstruction,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++#endif
++    */
++
++    Tcl_CreateCommand (interp, "Ng_OCCCommand",
++		       Ng_OCCCommand,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++
++
++    Tcl_CreateCommand (interp, "Ng_SetOCCParameters", Ng_SetOCCParameters,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++
++
++
++    // Philippose - 30/01/2009
++    // Register the TCL Interface Command for local face mesh size
++    // definition
++    Tcl_CreateCommand (interp, "Ng_SurfaceMeshSize", Ng_SurfaceMeshSize,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++
++    Tcl_CreateCommand (interp, "Ng_AutoColourBcProps", Ng_AutoColourBcProps,
++		       (ClientData)NULL,
++		       (Tcl_CmdDeleteProc*) NULL);
++
++    // Philippose - 25/07/2010
++    // Register the TCL Interface Command for handling the face colours 
++    // present in the mesh
++    Tcl_CreateCommand(interp, "Ng_CurrentFaceColours", Ng_CurrentFaceColours,
++                      (ClientData)NULL,
++                      (Tcl_CmdDeleteProc*) NULL);
++
++
++  return TCL_OK;
++}
++
++#endif
++
+--- netgen_ref/libsrc/occ/utilities.h
++++ netgen/libsrc/occ/utilities.h
+@@ -33,6 +33,7 @@
+ 
+ #include 
+ #include 
++#include 
+ #include 
+ // #include "SALOME_Log.hxx"
+ 
+--- netgen_ref/libsrc/stlgeom/Makefile.am
++++ netgen/libsrc/stlgeom/Makefile.am
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ 
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ 
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+ 
+--- netgen_ref/libsrc/stlgeom/stlgeom.cpp
++++ netgen/libsrc/stlgeom/stlgeom.cpp
+@@ -250,7 +250,7 @@
+ 
+ 	  if (!nbt)
+ 	    {
+-	      cerr << "ERROR: stlgeom::Smoothnormals, nbt = 0" << endl;
++	      std::cerr << "ERROR: stlgeom::Smoothnormals, nbt = 0" << std::endl;
+ 	    }
+ 
+ 	  // smoothed normal
+--- netgen_ref/libsrc/stlgeom/stlgeom.hpp
++++ netgen/libsrc/stlgeom/stlgeom.hpp
+@@ -38,7 +38,7 @@
+     return true;
+   }
+   
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   
+ 
+ 
+--- /dev/null
++++ netgen/nglib/CMakeLists.txt
+@@ -0,0 +1,252 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++INCLUDE_DIRECTORIES(
++    ${CMAKE_CURRENT_SOURCE_DIR}
++    ${PROJECT_SOURCE_DIR}/libsrc/include
++    ${ZLIB_INCLUDE_DIRS}
++    ${CAS_INCLUDE_DIRS}
++)
++
++
++# CGS
++SET(CGS_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/algprim.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/brick.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/bspline2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgparser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/curve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/edgeflw.cpp	
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/explicitcurve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/extrusion.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/gencyl.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/genmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/identify.cpp  
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/manifold.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/meshsurf.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/polyhedra.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/revolution.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/singularref.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/solid.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/specpoin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/spline3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/surface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/triapprox.cpp)
++
++# GENERAL
++SET(GENERAL_SOURCES 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/array.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/bitarray.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/dynamicmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/flags.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/hashtabl.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mystring.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/ngexception.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/optmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/parthreads.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/profiler.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/seti.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/sort.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/spbita2d.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/symbolta.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/table.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mpi_interface.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.cpp)
++
++FILE(GLOB GENERAL_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/general/*.hpp")
++LIST(APPEND GENERAL_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.h)
++
++# GEOM2D
++SET (GEOM2D_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/genmesh2d.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geom2dmesh.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geometry2d.cpp)
++
++# GPRIM
++SET(GPRIM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/adtree.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomfuncs.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomtest3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/transform3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/spline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/splinegeometry.cpp)
++
++FILE(GLOB GPRIM_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/gprim/*.hpp")
++
++# INCLUDE
++SET(INCLUDE_INCLUDES 
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface_v2.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mystdlib.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mydefs.hpp)
++
++# INTERFACE
++SET(INTERFACE_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface_v2.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/read_fnf_mesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readtetmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeabaqus.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writediffpack.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writedolfin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeelmer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefeap.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefluent.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writejcm.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writepermas.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetecplot.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetet.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetochnog.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/wuchemnitz.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeOpenFOAM15x.cpp)
++
++# LINALG
++SET (LINALG_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/densemat.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/polynomial.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/bfgs.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linopt.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linsearch.cpp)
++
++FILE(GLOB LINALG_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/linalg/*.hpp")
++
++# MESHING
++SET(MESHING_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront3.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bisect.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/boundarylayer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/clusters.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/curvedelems.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/geomsearch.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/global.cpp     
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/hprefinement.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2gen.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/localh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshclass.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtype.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/msghandler.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/prism2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramid2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramidrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/quadrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/refine.cpp	
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/secondorder.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.5.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/specials.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/tetrarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/topology.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/triarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/validate.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/zrefine.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bcfunctions.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parallelmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/basegeom.cpp)
++
++FILE(GLOB MESHING_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/meshing/*.hpp")
++
++# OCC
++SET(OCC_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Spliter.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occconstruction.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgenmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.cpp)
++
++SET(OCC_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.hpp ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.hpp)
++
++# STLGEOM
++SET(STLGEOM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeomchart.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeommesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.cpp)
++
++# NGLIB
++SET(NGLIB_SOURCES nglib.cpp)
++ADD_LIBRARY(nglib SHARED 
++            ${NGLIB_SOURCES}
++            ${CGS_SOURCES} 
++            ${GENERAL_SOURCES}
++            ${GPRIM_SOURCES}
++            ${GEOM2D_SOURCES}
++            ${INTERFACE_SOURCES} 
++            ${LINALG_SOURCES} 
++            ${MESHING_SOURCES} 
++            ${OCC_SOURCES}
++            ${STLGEOM_SOURCES})
++
++TARGET_LINK_LIBRARIES(nglib ${OCCLIBS} ${PLATFORM_LIBADD} ${ZLIB_LIBRARIES})
++INSTALL(TARGETS nglib DESTINATION ${NETGEN_INSTALL_LIBS}) 
++
++# Install headers
++INSTALL(FILES ${GENERAL_INCLUDES} 
++              ${INCLUDE_INCLUDES}
++              ${GPRIM_INCLUDES} 
++              ${LINALG_INCLUDES} 
++              ${MESHING_INCLUDES} 
++              ${OCC_INCLUDES} 
++              nglib.h 
++              DESTINATION ${NETGEN_INSTALL_HEADERS})
++
++
++# NG_VOL
++SET(NG_VOL_SOURCES ng_vol.cpp)
++ADD_EXECUTABLE(ng_vol ${NG_VOL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_vol nglib)
++INSTALL(TARGETS ng_vol  DESTINATION ${NETGEN_INSTALL_BINS})
++
++# NG_STL
++SET(NG_STL_SOURCES ng_stl.cpp)
++ADD_EXECUTABLE(ng_stl ${NG_STL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_stl nglib)
++INSTALL(TARGETS ng_stl  DESTINATION ${NETGEN_INSTALL_BINS})
+--- netgen_ref/nglib/Makefile.am
++++ netgen/nglib/Makefile.am
+@@ -14,6 +14,9 @@
+ 	$(top_builddir)/libsrc/stlgeom/libstl.la \
+ 	$(top_builddir)/libsrc/occ/libocc.la \
+ 	$(top_builddir)/libsrc/meshing/libmesh.la \
++	$(top_builddir)/libsrc/general/libgen.la \
++	$(top_builddir)/libsrc/gprim/libgprim.la \
++	$(top_builddir)/libsrc/linalg/libla.la
+ 	$(OCCLIBS) $(MPI_LIBS)
+ 
+ libnglib_la_LDFLAGS = -avoid-version
+--- netgen_ref/nglib/nglib.cpp
++++ netgen/nglib/nglib.cpp
+@@ -1,1242 +1,1243 @@
+-/**************************************************************************/
+-/* File:   nglib.cpp                                                      */
+-/* Author: Joachim Schoeberl                                              */
+-/* Date:   7. May. 2000                                                   */
+-/**************************************************************************/
+-
+-/*
+-  
+-  Interface to the netgen meshing kernel
+-  
+-*/
+-#include 
+-#include 
+-
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include <../visualization/soldata.hpp>
+-
+-#ifdef OCCGEOMETRY
+-#include 
+-#endif
+-
+-#include 
+-
+-
+-namespace netgen {
+-   extern void MeshFromSpline2D (SplineGeometry2d & geometry,
+-                                 Mesh *& mesh, 
+-                                 MeshingParameters & mp);
+-}
+-
+-
+-
+-#ifdef PARALLEL
+-#include 
+-
+-namespace netgen
+-{
+-  // int id = 0, ntasks = 1;
+-  MPI_Comm mesh_comm;
+-}
+-#endif
+-
+-
+-namespace netgen
+-{
+-  int id = 0, ntasks = 1;
+-}
+-
+-
+-
+-/*
+-// should not be needed (occ currently requires it)
+-namespace netgen {
+-#include "../libsrc/visualization/vispar.hpp"
+-  VisualizationParameters vispar;
+-  VisualizationParameters :: VisualizationParameters() { ; }
+-}
+-*/
+-
+-
+-namespace nglib {
+-#include "nglib.h"
+-}
+-
+-using namespace netgen;
+-
+-// constants and types:
+-
+-namespace nglib
+-{
+-   // initialize, deconstruct Netgen library:
+-   DLL_HEADER void Ng_Init ()
+-   {
+-      mycout = &cout;
+-      myerr = &cerr;
+-      // netgen::testout->SetOutStream (new ofstream ("test.out"));
+-      testout = new ofstream ("test.out");
+-   }
+-
+-
+-
+-
+-   // Clean-up functions before ending usage of nglib
+-   DLL_HEADER void Ng_Exit ()
+-   {
+-      ;
+-   }
+-
+-
+-
+-
+-   // Create a new netgen mesh object
+-   DLL_HEADER Ng_Mesh * Ng_NewMesh ()
+-   {
+-      Mesh * mesh = new Mesh;  
+-      mesh->AddFaceDescriptor (FaceDescriptor (1, 1, 0, 1));
+-      return (Ng_Mesh*)(void*)mesh;
+-   }
+-
+-
+-
+-
+-   // Delete an existing netgen mesh object
+-   DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh)
+-   {
+-      if(mesh != NULL)
+-      {
+-         // Delete the Mesh structures
+-         ((Mesh*)mesh)->DeleteMesh();
+-
+-         // Now delete the Mesh class itself
+-         delete (Mesh*)mesh;
+-
+-         // Set the Ng_Mesh pointer to NULL
+-         mesh = NULL;
+-      }
+-   }
+-
+-
+-
+-
+-   // Save a netgen mesh in the native VOL format 
+-   DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename)
+-   {
+-      ((Mesh*)mesh)->Save(filename);
+-   }
+-
+-
+-
+-
+-   // Load a netgen native VOL mesh from a given file
+-   DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename)
+-   {
+-      Mesh * mesh = new Mesh;
+-      mesh->Load(filename);
+-      return ( (Ng_Mesh*)mesh );
+-   }
+-
+-
+-
+-
+-   // Merge another mesh file into the currently loaded one
+-   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh, const char* filename)
+-   {
+-      Ng_Result status = NG_OK;
+-
+-      ifstream infile(filename);
+-      Mesh * m = (Mesh*)mesh;
+-
+-      if(!infile.good())
+-      {
+-         status = NG_FILE_NOT_FOUND;
+-      }
+-
+-      if(!m)
+-      {
+-         status = NG_ERROR;
+-      }
+-
+-      if(status == NG_OK)
+-      {
+-         const int num_pts = m->GetNP();
+-         const int face_offset = m->GetNFD();
+-
+-         m->Merge(infile, face_offset);
+-
+-         if(m->GetNP() > num_pts)
+-         {
+-            status = NG_OK;
+-         }
+-         else
+-         {
+-            status = NG_ERROR;
+-         }
+-      }
+-
+-      return status;
+-   }
+-
+-
+-
+-
+-   // Merge another mesh file into the currently loaded one
+-   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh1, Ng_Mesh* mesh2)
+-   {
+-      return NG_ERROR;
+-   }
+-
+-
+-
+-
+-   // Manually add a point to an existing mesh object
+-   DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      m->AddPoint (Point3d (x[0], x[1], x[2]));
+-   }
+-
+-
+-
+-
+-   // Manually add a surface element of a given type to an existing mesh object
+-   DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et,
+-                                         int * pi)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      Element2d el (3);
+-      el.SetIndex (1);
+-      el.PNum(1) = pi[0];
+-      el.PNum(2) = pi[1];
+-      el.PNum(3) = pi[2];
+-      m->AddSurfaceElement (el);
+-   }
+-
+-
+-
+-
+-   // Manually add a volume element of a given type to an existing mesh object
+-   DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et,
+-                                        int * pi)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      Element el (4);
+-      el.SetIndex (1);
+-      el.PNum(1) = pi[0];
+-      el.PNum(2) = pi[1];
+-      el.PNum(3) = pi[2];
+-      el.PNum(4) = pi[3];
+-      m->AddVolumeElement (el);
+-   }
+-
+-
+-
+-
+-   // Obtain the number of points in the mesh
+-   DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh)
+-   {
+-      return ((Mesh*)mesh) -> GetNP();
+-   }
+-
+-
+-
+-
+-   // Obtain the number of surface elements in the mesh
+-   DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh)
+-   {
+-      return ((Mesh*)mesh) -> GetNSE();
+-   }
+-
+-
+-
+-
+-   // Obtain the number of volume elements in the mesh
+-   DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh)
+-   {
+-      return ((Mesh*)mesh) -> GetNE();
+-   }
+-
+-
+-
+-
+-   //  Return point coordinates of a given point index in the mesh
+-   DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x)
+-   {
+-      const Point3d & p = ((Mesh*)mesh)->Point(num);
+-      x[0] = p.X();
+-      x[1] = p.Y();
+-      x[2] = p.Z();
+-   }
+-
+-
+-
+-
+-   // Return the surface element at a given index "pi"
+-   DLL_HEADER Ng_Surface_Element_Type 
+-      Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi)
+-   {
+-      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
+-      for (int i = 1; i <= el.GetNP(); i++)
+-         pi[i-1] = el.PNum(i);
+-      Ng_Surface_Element_Type et;
+-      switch (el.GetNP())
+-      {
+-      case 3: et = NG_TRIG; break;
+-      case 4: et = NG_QUAD; break;
+-      case 6: 
+-         switch (el.GetNV())
+-         {
+-         case 3: et = NG_TRIG6; break;
+-         case 4: et = NG_QUAD6; break;
+-         default:
+-            et = NG_TRIG6; break;
+-         }
+-         break;
+-      case 8: et = NG_QUAD8; break;
+-      default:
+-         et = NG_TRIG; break; // for the compiler
+-      }
+-      return et;
+-   }
+-
+-
+-
+-
+-   // Return the volume element at a given index "pi"
+-   DLL_HEADER Ng_Volume_Element_Type
+-      Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi)
+-   {
+-      const Element & el = ((Mesh*)mesh)->VolumeElement(num);
+-      for (int i = 1; i <= el.GetNP(); i++)
+-         pi[i-1] = el.PNum(i);
+-      Ng_Volume_Element_Type et;
+-      switch (el.GetNP())
+-      {
+-      case 4: et = NG_TET; break;
+-      case 5: et = NG_PYRAMID; break;
+-      case 6: et = NG_PRISM; break;
+-      case 10: et = NG_TET10; break;
+-      default:
+-         et = NG_TET; break; // for the compiler
+-      }
+-      return et;
+-   }
+-
+-
+-
+-
+-   // Set a global limit on the maximum mesh size allowed
+-   DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h)
+-   {
+-      ((Mesh*)mesh) -> SetGlobalH (h);
+-   }
+-
+-
+-
+-
+-   // Set a local limit on the maximum mesh size allowed around the given point
+-   DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h)
+-   {
+-      ((Mesh*)mesh) -> RestrictLocalH (Point3d (p[0], p[1], p[2]), h);
+-   }
+-
+-
+-
+-
+-   // Set a local limit on the maximum mesh size allowed within a given box region
+-   DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h)
+-   {
+-      for (double x = pmin[0]; x < pmax[0]; x += h)
+-         for (double y = pmin[1]; y < pmax[1]; y += h)
+-            for (double z = pmin[2]; z < pmax[2]; z += h)
+-               ((Mesh*)mesh) -> RestrictLocalH (Point3d (x, y, z), h);
+-   }
+-
+-
+-
+-
+-   // Generates volume mesh from an existing surface mesh
+-   DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      // Philippose - 30/08/2009
+-      // Do not locally re-define "mparam" here... "mparam" is a global 
+-      // object 
+-      //MeshingParameters mparam;
+-      mp->Transfer_Parameters();
+-
+-      m->CalcLocalH(mparam.grading);
+-
+-      MeshVolume (mparam, *m);
+-      RemoveIllegalElements (*m);
+-      OptimizeVolume (mparam, *m);
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   /* ------------------ 2D Meshing Functions ------------------------- */
+-   DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      m->AddPoint (Point3d (x[0], x[1], 0));
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      Segment seg;
+-      seg[0] = pi1;
+-      seg[1] = pi2;
+-      m->AddSegment (seg);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      return m->GetNP();
+-   }
+-
+-
+-
+-
+-   DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      return m->GetNSE();
+-   }
+-
+-
+-
+-
+-   DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      return m->GetNSeg();
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      Point<3> & p = m->Point(num);
+-      x[0] = p(0);
+-      x[1] = p(1);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER Ng_Surface_Element_Type
+-      Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
+-   {
+-      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
+-      for (int i = 1; i <= el.GetNP(); i++)
+-         pi[i-1] = el.PNum(i);
+-
+-      Ng_Surface_Element_Type et;
+-      switch (el.GetNP())
+-      {
+-      case 3: et = NG_TRIG; break;
+-      case 4: et = NG_QUAD; break;
+-      case 6: 
+-         switch (el.GetNV())
+-         {
+-         case 3: et = NG_TRIG6; break;
+-         case 4: et = NG_QUAD6; break;
+-         default:
+-            et = NG_TRIG6; break;
+-         }
+-         break;
+-      case 8: et = NG_QUAD8; break;
+-      default:
+-         et = NG_TRIG; break; // for the compiler
+-      }
+-
+-      if (matnum)
+-         *matnum = el.GetIndex();
+-
+-      return et;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
+-   {
+-      const Segment & seg = ((Mesh*)mesh)->LineSegment(num);
+-      pi[0] = seg[0];
+-      pi[1] = seg[1];
+-
+-      if (matnum)
+-         *matnum = seg.edgenr;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename)
+-   {
+-      SplineGeometry2d * geom = new SplineGeometry2d();
+-      geom -> Load (filename);
+-      return (Ng_Geometry_2D *)geom;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
+-                                            Ng_Mesh ** mesh,
+-                                            Ng_Meshing_Parameters * mp)
+-   {
+-      // use global variable mparam
+-      //  MeshingParameters mparam;  
+-      mp->Transfer_Parameters();
+-
+-      Mesh * m;
+-      MeshFromSpline2D (*(SplineGeometry2d*)geom, m, mparam);
+-
+-      cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << endl;
+-
+-      *mesh = (Ng_Mesh*)m;
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
+-      Ng_Mesh * mesh,
+-      int levels)
+-   {
+-      Refinement2d ref(*(SplineGeometry2d*)geom);
+-      HPRefinement (*(Mesh*)mesh, &ref, levels);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
+-      Ng_Mesh * mesh,
+-      int levels, double parameter)
+-   {
+-      Refinement2d ref(*(SplineGeometry2d*)geom);
+-      HPRefinement (*(Mesh*)mesh, &ref, levels, parameter);
+-   }
+-
+-
+-
+-
+-   Array readtrias; //only before initstlgeometry
+-   Array > readedges; //only before init stlgeometry
+-
+-   // loads geometry from STL file
+-   DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary)
+-   {
+-      int i;
+-      STLGeometry geom;
+-      STLGeometry* geo;
+-      ifstream ist(filename);
+-
+-      if (binary)
+-      {
+-         geo = geom.LoadBinary(ist);
+-      }
+-      else
+-      {
+-         geo = geom.Load(ist);
+-      }
+-
+-      readtrias.SetSize(0);
+-      readedges.SetSize(0);
+-
+-      Point3d p;
+-      Vec3d normal;
+-      double p1[3];
+-      double p2[3];
+-      double p3[3];
+-      double n[3];
+-
+-      Ng_STL_Geometry * geo2 = Ng_STL_NewGeometry();
+-
+-      for (i = 1; i <= geo->GetNT(); i++)
+-      {
+-         const STLTriangle& t = geo->GetTriangle(i);
+-         p = geo->GetPoint(t.PNum(1));
+-         p1[0] = p.X(); p1[1] = p.Y(); p1[2] = p.Z(); 
+-         p = geo->GetPoint(t.PNum(2));
+-         p2[0] = p.X(); p2[1] = p.Y(); p2[2] = p.Z(); 
+-         p = geo->GetPoint(t.PNum(3));
+-         p3[0] = p.X(); p3[1] = p.Y(); p3[2] = p.Z();
+-         normal = t.Normal();
+-         n[0] = normal.X(); n[1] = normal.Y(); n[2] = normal.Z();
+-
+-         Ng_STL_AddTriangle(geo2, p1, p2, p3, n);
+-      }
+-
+-      return geo2;
+-   }
+-
+-
+-
+-
+-   // generate new STL Geometry
+-   DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ()
+-   {
+-      return (Ng_STL_Geometry*)(void*)new STLGeometry;
+-   } 
+-
+-
+-
+-
+-   // after adding triangles (and edges) initialize
+-   DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom)
+-   {
+-      STLGeometry* geo = (STLGeometry*)geom;
+-      geo->InitSTLGeometry(readtrias);
+-      readtrias.SetSize(0);
+-
+-      if (readedges.Size() != 0)
+-      {
+-         /*
+-         for (int i = 1; i <= readedges.Size(); i+=2)
+-         {
+-         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
+-         }
+-         */
+-         geo->AddEdges(readedges);
+-      }
+-
+-      if (geo->GetStatus() == STLTopology::STL_GOOD || geo->GetStatus() == STLTopology::STL_WARNING) return NG_OK;
+-      return NG_SURFACE_INPUT_ERROR;
+-   }
+-
+-
+-
+-
+-   // automatically generates edges:
+-   DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
+-                                          Ng_Mesh* mesh,
+-                                          Ng_Meshing_Parameters * mp)
+-   {
+-      STLGeometry* stlgeometry = (STLGeometry*)geom;
+-      Mesh* me = (Mesh*)mesh;
+-
+-      // Philippose - 27/07/2009
+-      // Do not locally re-define "mparam" here... "mparam" is a global 
+-      // object 
+-      //MeshingParameters mparam;
+-      mp->Transfer_Parameters();
+-
+-      me -> SetGlobalH (mparam.maxh);
+-      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
+-                       stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
+-                       0.3);
+-
+-      me -> LoadLocalMeshSize (mp->meshsize_filename);
+-      /*
+-      if (mp->meshsize_filename)
+-      {
+-      ifstream infile (mp->meshsize_filename);
+-      if (!infile.good()) return NG_FILE_NOT_FOUND;
+-      me -> LoadLocalMeshSize (infile);
+-      }
+-      */
+-
+-      STLMeshing (*stlgeometry, *me);
+-
+-      stlgeometry->edgesfound = 1;
+-      stlgeometry->surfacemeshed = 0;
+-      stlgeometry->surfaceoptimized = 0;
+-      stlgeometry->volumemeshed = 0;
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   // generates mesh, empty mesh be already created.
+-   DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
+-                                                    Ng_Mesh* mesh,
+-                                                    Ng_Meshing_Parameters * mp)
+-   {
+-      STLGeometry* stlgeometry = (STLGeometry*)geom;
+-      Mesh* me = (Mesh*)mesh;
+-
+-      // Philippose - 27/07/2009
+-      // Do not locally re-define "mparam" here... "mparam" is a global 
+-      // object
+-      //MeshingParameters mparam;
+-      mp->Transfer_Parameters();
+-
+-
+-      /*
+-      me -> SetGlobalH (mparam.maxh);
+-      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
+-      stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
+-      0.3);
+-      */
+-      /*
+-      STLMeshing (*stlgeometry, *me);
+-
+-      stlgeometry->edgesfound = 1;
+-      stlgeometry->surfacemeshed = 0;
+-      stlgeometry->surfaceoptimized = 0;
+-      stlgeometry->volumemeshed = 0;
+-      */  
+-      int retval = STLSurfaceMeshing (*stlgeometry, *me);
+-      if (retval == MESHING3_OK)
+-      {
+-         (*mycout) << "Success !!!!" << endl;
+-         stlgeometry->surfacemeshed = 1;
+-         stlgeometry->surfaceoptimized = 0;
+-         stlgeometry->volumemeshed = 0;
+-      } 
+-      else if (retval == MESHING3_OUTERSTEPSEXCEEDED)
+-      {
+-         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << endl;
+-      }
+-      else if (retval == MESHING3_TERMINATE)
+-      {
+-         (*mycout) << "Meshing Stopped!" << endl;
+-      }
+-      else
+-      {
+-         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << endl;
+-      }
+-
+-
+-      STLSurfaceOptimization (*stlgeometry, *me, mparam);
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   // fills STL Geometry
+-   // positive orientation
+-   // normal vector may be null-pointer
+-   DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
+-                                       double * p1, double * p2, double * p3, 
+-                                       double * nv)
+-   {
+-      Point<3> apts[3];
+-      apts[0] = Point<3>(p1[0],p1[1],p1[2]);
+-      apts[1] = Point<3>(p2[0],p2[1],p2[2]);
+-      apts[2] = Point<3>(p3[0],p3[1],p3[2]);
+-
+-      Vec<3> n;
+-      if (!nv)
+-         n = Cross (apts[0]-apts[1], apts[0]-apts[2]);
+-      else
+-         n = Vec<3>(nv[0],nv[1],nv[2]);
+-
+-      readtrias.Append(STLReadTriangle(apts,n));
+-   }
+-
+-   // add (optional) edges:
+-   DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
+-      double * p1, double * p2)
+-   {
+-      readedges.Append(Point3d(p1[0],p1[1],p1[2]));
+-      readedges.Append(Point3d(p2[0],p2[1],p2[2]));
+-   }
+-
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-   // --------------------- OCC Geometry / Meshing Utility Functions -------------------
+-   // Create new OCC Geometry Object
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ()
+-   {
+-      return (Ng_OCC_Geometry*)(void*)new OCCGeometry;
+-   } 
+-
+-
+-
+-
+-   // Delete the OCC Geometry Object
+-   DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry(Ng_OCC_Geometry * geom)
+-   {
+-      if (geom != NULL)
+-      {
+-         delete (OCCGeometry*)geom;
+-         geom = NULL;
+-         return NG_OK;
+-      }
+-      
+-      return NG_ERROR;
+-   }
+-
+-
+-
+-   
+-   // Loads geometry from STEP File
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename)
+-   {
+-      // Call the STEP File Load function. Note.. the geometry class 
+-      // is created and instantiated within the load function
+-      OCCGeometry * occgeo = LoadOCC_STEP(filename);
+-
+-      return ((Ng_OCC_Geometry *)occgeo);
+-   }
+-
+-
+-
+-   
+-   // Loads geometry from IGES File
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename)
+-   {
+-      // Call the IGES File Load function. Note.. the geometry class 
+-      // is created and instantiated within the load function
+-      OCCGeometry * occgeo = LoadOCC_IGES(filename);
+-
+-      return ((Ng_OCC_Geometry *)occgeo);
+-   }
+-
+-
+-
+-   
+-   // Loads geometry from BREP File
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename)
+-   {
+-      // Call the BREP File Load function. Note.. the geometry class 
+-      // is created and instantiated within the load function
+-      OCCGeometry * occgeo = LoadOCC_BREP(filename);
+-
+-      return ((Ng_OCC_Geometry *)occgeo);
+-   }
+-
+-
+-
+-
+-   // Locally limit the size of the mesh to be generated at various points 
+-   // based on the topology of the geometry
+-   DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp)
+-   {
+-      OCCGeometry * occgeom = (OCCGeometry*)geom;
+-      Mesh * me = (Mesh*)mesh;
+-
+-      me->geomtype = Mesh::GEOM_OCC;
+-
+-      mp->Transfer_Parameters();
+-      
+-      occparam.resthcloseedgeenable = mp->closeedgeenable;
+-      occparam.resthcloseedgefac = mp->closeedgefact;
+-
+-      // Delete the mesh structures in order to start with a clean 
+-      // slate
+-      me->DeleteMesh();
+-
+-      OCCSetLocalMeshSize(*occgeom, *me);
+-
+-      return(NG_OK);
+-   }
+-
+-
+-
+-   
+-   // Mesh the edges and add Face descriptors to prepare for surface meshing
+-   DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp)
+-   {
+-      OCCGeometry * occgeom = (OCCGeometry*)geom;
+-      Mesh * me = (Mesh*)mesh;
+-
+-      mp->Transfer_Parameters();
+-
+-      OCCFindEdges(*occgeom, *me);
+-
+-      if((me->GetNP()) && (me->GetNFD()))
+-      {
+-         return NG_OK;
+-      }
+-      else
+-      {
+-         return NG_ERROR;
+-      }
+-   }
+-
+-
+-
+-   
+-   // Mesh the edges and add Face descriptors to prepare for surface meshing
+-   DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
+-                                                    Ng_Mesh * mesh,
+-                                                    Ng_Meshing_Parameters * mp)
+-   {
+-      int numpoints = 0;
+-
+-      OCCGeometry * occgeom = (OCCGeometry*)geom;
+-      Mesh * me = (Mesh*)mesh;
+-
+-      // Set the internal meshing parameters structure from the nglib meshing 
+-      // parameters structure
+-      mp->Transfer_Parameters();
+-
+-
+-      // Only go into surface meshing if the face descriptors have already been added
+-      if(!me->GetNFD())
+-         return NG_ERROR;
+-
+-      numpoints = me->GetNP();
+-
+-      // Initially set up only for surface meshing without any optimisation
+-      int perfstepsend = MESHCONST_MESHSURFACE;
+-
+-      // Check and if required, enable surface mesh optimisation step
+-      if(mp->optsurfmeshenable)
+-      {
+-         perfstepsend = MESHCONST_OPTSURFACE;
+-      }
+-
+-      OCCMeshSurface(*occgeom, *me, perfstepsend);
+-
+-      me->CalcSurfacesOfNode();
+-      
+-      if(me->GetNP() <= numpoints)
+-         return NG_ERROR;
+-
+-      if(me->GetNSE() <= 0)
+-         return NG_ERROR;
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   // Extract the face map from the OCC geometry
+-   // The face map basically gives an index to each face in the geometry, 
+-   // which can be used to access a specific face
+-   DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
+-                                       Ng_OCC_TopTools_IndexedMapOfShape * FMap)
+-   {
+-      OCCGeometry* occgeom = (OCCGeometry*)geom;
+-      TopTools_IndexedMapOfShape *occfmap = (TopTools_IndexedMapOfShape *)FMap;
+-
+-      // Copy the face map from the geometry to the given variable
+-      occfmap->Assign(occgeom->fmap);
+-
+-      if(occfmap->Extent())
+-      {
+-         return NG_OK;
+-      }
+-      else
+-      {
+-         return NG_ERROR;
+-      }
+-   }
+-
+-   // ------------------ End - OCC Geometry / Meshing Utility Functions ----------------
+-#endif
+-
+-
+-
+-
+-   // ------------------ Begin - Meshing Parameters related functions ------------------
+-   // Constructor for the local nglib meshing parameters class
+-   DLL_HEADER Ng_Meshing_Parameters :: Ng_Meshing_Parameters()
+-   {
+-      uselocalh = 1;
+-
+-      maxh = 1000;
+-      minh = 0.0;
+-
+-      fineness = 0.5;
+-      grading = 0.3;
+-
+-      elementsperedge = 2.0;
+-      elementspercurve = 2.0;
+-
+-      closeedgeenable = 0;
+-      closeedgefact = 2.0;
+-
+-	  minedgelenenable = 0;
+-	  minedgelen = 1e-4;
+-
+-      second_order = 0;
+-      quad_dominated = 0;
+-
+-      meshsize_filename = 0;
+-
+-      optsurfmeshenable = 1;
+-      optvolmeshenable = 1;
+-
+-      optsteps_2d = 3;
+-      optsteps_3d = 3;
+-
+-      invert_tets = 0;
+-      invert_trigs = 0;
+-
+-      check_overlap = 1;
+-      check_overlapping_boundary = 1;
+-   }
+-
+-
+-
+-
+-   // Reset the local meshing parameters to the default values
+-   DLL_HEADER void Ng_Meshing_Parameters :: Reset_Parameters()
+-   {
+-      uselocalh = 1;
+-
+-      maxh = 1000;
+-      minh = 0;
+-
+-      fineness = 0.5;
+-      grading = 0.3;
+-
+-      elementsperedge = 2.0;
+-      elementspercurve = 2.0;
+-
+-      closeedgeenable = 0;
+-      closeedgefact = 2.0;
+-
+-  	  minedgelenenable = 0;
+-	  minedgelen = 1e-4;
+-
+-      second_order = 0;
+-      quad_dominated = 0;
+-
+-      meshsize_filename = 0;
+-
+-      optsurfmeshenable = 1;
+-      optvolmeshenable = 1;
+-
+-      optsteps_2d = 3;
+-      optsteps_3d = 3;
+-
+-      invert_tets = 0;
+-      invert_trigs = 0;
+-
+-      check_overlap = 1;
+-      check_overlapping_boundary = 1;
+-   }
+-
+-
+-
+-
+-   // 
+-   DLL_HEADER void Ng_Meshing_Parameters :: Transfer_Parameters()
+-   {
+-      mparam.uselocalh = uselocalh;
+-      
+-      mparam.maxh = maxh;
+-      mparam.minh = minh;
+-
+-      mparam.grading = grading;
+-      mparam.curvaturesafety = elementspercurve;
+-      mparam.segmentsperedge = elementsperedge;
+-
+-      mparam.secondorder = second_order;
+-      mparam.quad = quad_dominated;
+-
+-      mparam.meshsizefilename = meshsize_filename;
+-
+-      mparam.optsteps2d = optsteps_2d;
+-      mparam.optsteps3d = optsteps_3d;
+-
+-      mparam.inverttets = invert_tets;
+-      mparam.inverttrigs = invert_trigs;
+-
+-      mparam.checkoverlap = check_overlap;
+-      mparam.checkoverlappingboundary = check_overlapping_boundary;
+-   }
+-   // ------------------ End - Meshing Parameters related functions --------------------
+-
+-
+-
+-
+-   // ------------------ Begin - Second Order Mesh generation functions ----------------
+-   DLL_HEADER void Ng_Generate_SecondOrder(Ng_Mesh * mesh)
+-   {
+-      Refinement ref;
+-      ref.MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_2D_Generate_SecondOrder(Ng_Geometry_2D * geom,
+-					  Ng_Mesh * mesh)
+-   {
+-      ( (SplineGeometry2d*)geom ) -> GetRefinement().MakeSecondOrder( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_STL_Generate_SecondOrder(Ng_STL_Geometry * geom,
+-					   Ng_Mesh * mesh)
+-   {
+-      ((STLGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
+-					   Ng_Mesh * mesh)
+-   {
+-      ((CSGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-   DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
+-                  Ng_Mesh * mesh)
+-   {
+-      ((OCCGeometry*)geom )->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-#endif
+-   // ------------------ End - Second Order Mesh generation functions ------------------
+-
+-
+-
+-
+-   // ------------------ Begin - Uniform Mesh Refinement functions ---------------------
+-   DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh)
+-   {
+-      Refinement ref;
+-      ref.Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (SplineGeometry2d*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (STLGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (CSGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-   DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (OCCGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-#endif
+-   // ------------------ End - Uniform Mesh Refinement functions -----------------------
+-} // End of namespace nglib
+-
+-
+-
+-
+-// compatibility functions:
+-namespace netgen 
+-{
+-   char geomfilename[255];
+-
+-   DLL_HEADER void MyError (const char * ch)
+-   {
+-      cerr << ch;
+-   }
+-
+-
+-
+-
+-   //Destination for messages, errors, ...
+-   DLL_HEADER void Ng_PrintDest(const char * s)
+-   {
+-#ifdef PARALLEL
+-     int id = 0;
+-     MPI_Comm_rank(MPI_COMM_WORLD, &id);
+-     if (id != 0) return;
+-#endif
+-     (*mycout) << s << flush;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER double GetTime ()
+-   {
+-      return 0;
+-   }
+-
+-
+-
+-
+-   void ResetTime ()
+-   {
+-      ;
+-   }
+-
+-
+-
+-
+-   void MyBeep (int i)
+-   {
+-      ;
+-   }
+-
+-
+-
+-
+-   void Render()
+-   {
+-      ; 
+-   }
+-} // End of namespace netgen
+-
+-
+-
+-
+-void Ng_Redraw () { ; }
+-void Ng_ClearSolutionData () { ; }
+-void Ng_SetSolutionData (Ng_SolutionData * soldata) 
+-{ 
+-  delete soldata->solclass;
+-}
+-void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
+-
+-
++/**************************************************************************/
++/* File:   nglib.cpp                                                      */
++/* Author: Joachim Schoeberl                                              */
++/* Date:   7. May. 2000                                                   */
++/**************************************************************************/
++
++/*
++  
++  Interface to the netgen meshing kernel
++  
++*/
++#include 
++#include 
++
++#include 
++#include 
++#include 
++#include 
++#include 
++#include <../visualization/soldata.hpp>
++
++#ifdef OCCGEOMETRY
++#include 
++#endif
++
++#include 
++
++
++namespace netgen {
++   extern void MeshFromSpline2D (SplineGeometry2d & geometry,
++                                 Mesh *& mesh, 
++                                 MeshingParameters & mp);
++}
++
++
++
++#ifdef PARALLEL
++#include 
++
++namespace netgen
++{
++  // int id = 0, ntasks = 1;
++  MPI_Comm mesh_comm;
++}
++#endif
++
++
++namespace netgen
++{
++  int id = 0, ntasks = 1;
++}
++
++
++
++/*
++// should not be needed (occ currently requires it)
++namespace netgen {
++#include "../libsrc/visualization/vispar.hpp"
++  VisualizationParameters vispar;
++  VisualizationParameters :: VisualizationParameters() { ; }
++}
++*/
++
++
++namespace nglib {
++#include "nglib.h"
++}
++
++using namespace netgen;
++using namespace std;
++// constants and types:
++
++namespace nglib
++{
++   // initialize, deconstruct Netgen library:
++   DLL_HEADER void Ng_Init ()
++   {
++      mycout = &std::cout;
++      myerr = &cerr;
++      // netgen::testout->SetOutStream (new ofstream ("test.out"));
++      testout = new ofstream ("test.out");
++   }
++
++
++
++
++   // Clean-up functions before ending usage of nglib
++   DLL_HEADER void Ng_Exit ()
++   {
++       delete testout;
++       testout = 0;
++   }
++
++
++
++
++   // Create a new netgen mesh object
++   DLL_HEADER Ng_Mesh * Ng_NewMesh ()
++   {
++      Mesh * mesh = new Mesh;  
++      mesh->AddFaceDescriptor (FaceDescriptor (1, 1, 0, 1));
++      return (Ng_Mesh*)(void*)mesh;
++   }
++
++
++
++
++   // Delete an existing netgen mesh object
++   DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh)
++   {
++      if(mesh != NULL)
++      {
++         // Delete the Mesh structures
++         ((Mesh*)mesh)->DeleteMesh();
++
++         // Now delete the Mesh class itself
++         delete (Mesh*)mesh;
++
++         // Set the Ng_Mesh pointer to NULL
++         mesh = NULL;
++      }
++   }
++
++
++
++
++   // Save a netgen mesh in the native VOL format 
++   DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename)
++   {
++      ((Mesh*)mesh)->Save(filename);
++   }
++
++
++
++
++   // Load a netgen native VOL mesh from a given file
++   DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename)
++   {
++      Mesh * mesh = new Mesh;
++      mesh->Load(filename);
++      return ( (Ng_Mesh*)mesh );
++   }
++
++
++
++
++   // Merge another mesh file into the currently loaded one
++   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh, const char* filename)
++   {
++      Ng_Result status = NG_OK;
++
++      ifstream infile(filename);
++      Mesh * m = (Mesh*)mesh;
++
++      if(!infile.good())
++      {
++         status = NG_FILE_NOT_FOUND;
++      }
++
++      if(!m)
++      {
++         status = NG_ERROR;
++      }
++
++      if(status == NG_OK)
++      {
++         const int num_pts = m->GetNP();
++         const int face_offset = m->GetNFD();
++
++         m->Merge(infile, face_offset);
++
++         if(m->GetNP() > num_pts)
++         {
++            status = NG_OK;
++         }
++         else
++         {
++            status = NG_ERROR;
++         }
++      }
++
++      return status;
++   }
++
++
++
++
++   // Merge another mesh file into the currently loaded one
++   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh1, Ng_Mesh* mesh2)
++   {
++      return NG_ERROR;
++   }
++
++
++
++
++   // Manually add a point to an existing mesh object
++   DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x)
++   {
++      Mesh * m = (Mesh*)mesh;
++      m->AddPoint (Point3d (x[0], x[1], x[2]));
++   }
++
++
++
++
++   // Manually add a surface element of a given type to an existing mesh object
++   DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et,
++                                         int * pi)
++   {
++      Mesh * m = (Mesh*)mesh;
++      Element2d el (3);
++      el.SetIndex (1);
++      el.PNum(1) = pi[0];
++      el.PNum(2) = pi[1];
++      el.PNum(3) = pi[2];
++      m->AddSurfaceElement (el);
++   }
++
++
++
++
++   // Manually add a volume element of a given type to an existing mesh object
++   DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et,
++                                        int * pi)
++   {
++      Mesh * m = (Mesh*)mesh;
++      Element el (4);
++      el.SetIndex (1);
++      el.PNum(1) = pi[0];
++      el.PNum(2) = pi[1];
++      el.PNum(3) = pi[2];
++      el.PNum(4) = pi[3];
++      m->AddVolumeElement (el);
++   }
++
++
++
++
++   // Obtain the number of points in the mesh
++   DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh)
++   {
++      return ((Mesh*)mesh) -> GetNP();
++   }
++
++
++
++
++   // Obtain the number of surface elements in the mesh
++   DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh)
++   {
++      return ((Mesh*)mesh) -> GetNSE();
++   }
++
++
++
++
++   // Obtain the number of volume elements in the mesh
++   DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh)
++   {
++      return ((Mesh*)mesh) -> GetNE();
++   }
++
++
++
++
++   //  Return point coordinates of a given point index in the mesh
++   DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x)
++   {
++      const Point3d & p = ((Mesh*)mesh)->Point(num);
++      x[0] = p.X();
++      x[1] = p.Y();
++      x[2] = p.Z();
++   }
++
++
++
++
++   // Return the surface element at a given index "pi"
++   DLL_HEADER Ng_Surface_Element_Type 
++      Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi)
++   {
++      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
++      for (int i = 1; i <= el.GetNP(); i++)
++         pi[i-1] = el.PNum(i);
++      Ng_Surface_Element_Type et;
++      switch (el.GetNP())
++      {
++      case 3: et = NG_TRIG; break;
++      case 4: et = NG_QUAD; break;
++      case 6: 
++         switch (el.GetNV())
++         {
++         case 3: et = NG_TRIG6; break;
++         case 4: et = NG_QUAD6; break;
++         default:
++            et = NG_TRIG6; break;
++         }
++         break;
++      case 8: et = NG_QUAD8; break;
++      default:
++         et = NG_TRIG; break; // for the compiler
++      }
++      return et;
++   }
++
++
++
++
++   // Return the volume element at a given index "pi"
++   DLL_HEADER Ng_Volume_Element_Type
++      Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi)
++   {
++      const Element & el = ((Mesh*)mesh)->VolumeElement(num);
++      for (int i = 1; i <= el.GetNP(); i++)
++         pi[i-1] = el.PNum(i);
++      Ng_Volume_Element_Type et;
++      switch (el.GetNP())
++      {
++      case 4: et = NG_TET; break;
++      case 5: et = NG_PYRAMID; break;
++      case 6: et = NG_PRISM; break;
++      case 10: et = NG_TET10; break;
++      default:
++         et = NG_TET; break; // for the compiler
++      }
++      return et;
++   }
++
++
++
++
++   // Set a global limit on the maximum mesh size allowed
++   DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h)
++   {
++      ((Mesh*)mesh) -> SetGlobalH (h);
++   }
++
++
++
++
++   // Set a local limit on the maximum mesh size allowed around the given point
++   DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h)
++   {
++      ((Mesh*)mesh) -> RestrictLocalH (Point3d (p[0], p[1], p[2]), h);
++   }
++
++
++
++
++   // Set a local limit on the maximum mesh size allowed within a given box region
++   DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h)
++   {
++      for (double x = pmin[0]; x < pmax[0]; x += h)
++         for (double y = pmin[1]; y < pmax[1]; y += h)
++            for (double z = pmin[2]; z < pmax[2]; z += h)
++               ((Mesh*)mesh) -> RestrictLocalH (Point3d (x, y, z), h);
++   }
++
++
++
++
++   // Generates volume mesh from an existing surface mesh
++   DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      // Philippose - 30/08/2009
++      // Do not locally re-define "mparam" here... "mparam" is a global 
++      // object 
++      //MeshingParameters mparam;
++      mp->Transfer_Parameters();
++
++      m->CalcLocalH(mparam.grading);
++
++      MeshVolume (mparam, *m);
++      RemoveIllegalElements (*m);
++      OptimizeVolume (mparam, *m);
++
++      return NG_OK;
++   }
++
++
++
++
++   /* ------------------ 2D Meshing Functions ------------------------- */
++   DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      m->AddPoint (Point3d (x[0], x[1], 0));
++   }
++
++
++
++
++   DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      Segment seg;
++      seg[0] = pi1;
++      seg[1] = pi2;
++      m->AddSegment (seg);
++   }
++
++
++
++
++   DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh)
++   {
++      Mesh * m = (Mesh*)mesh;
++      return m->GetNP();
++   }
++
++
++
++
++   DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh)
++   {
++      Mesh * m = (Mesh*)mesh;
++      return m->GetNSE();
++   }
++
++
++
++
++   DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh)
++   {
++      Mesh * m = (Mesh*)mesh;
++      return m->GetNSeg();
++   }
++
++
++
++
++   DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      Point<3> & p = m->Point(num);
++      x[0] = p(0);
++      x[1] = p(1);
++   }
++
++
++
++
++   DLL_HEADER Ng_Surface_Element_Type
++      Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
++   {
++      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
++      for (int i = 1; i <= el.GetNP(); i++)
++         pi[i-1] = el.PNum(i);
++
++      Ng_Surface_Element_Type et;
++      switch (el.GetNP())
++      {
++      case 3: et = NG_TRIG; break;
++      case 4: et = NG_QUAD; break;
++      case 6: 
++         switch (el.GetNV())
++         {
++         case 3: et = NG_TRIG6; break;
++         case 4: et = NG_QUAD6; break;
++         default:
++            et = NG_TRIG6; break;
++         }
++         break;
++      case 8: et = NG_QUAD8; break;
++      default:
++         et = NG_TRIG; break; // for the compiler
++      }
++
++      if (matnum)
++         *matnum = el.GetIndex();
++
++      return et;
++   }
++
++
++
++
++   DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
++   {
++      const Segment & seg = ((Mesh*)mesh)->LineSegment(num);
++      pi[0] = seg[0];
++      pi[1] = seg[1];
++
++      if (matnum)
++         *matnum = seg.edgenr;
++   }
++
++
++
++
++   DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename)
++   {
++      SplineGeometry2d * geom = new SplineGeometry2d();
++      geom -> Load (filename);
++      return (Ng_Geometry_2D *)geom;
++   }
++
++
++
++
++   DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
++                                            Ng_Mesh ** mesh,
++                                            Ng_Meshing_Parameters * mp)
++   {
++      // use global variable mparam
++      //  MeshingParameters mparam;  
++      mp->Transfer_Parameters();
++
++      Mesh * m;
++      MeshFromSpline2D (*(SplineGeometry2d*)geom, m, mparam);
++
++      std::cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << std::endl;
++
++      *mesh = (Ng_Mesh*)m;
++      return NG_OK;
++   }
++
++
++
++
++   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
++      Ng_Mesh * mesh,
++      int levels)
++   {
++      Refinement2d ref(*(SplineGeometry2d*)geom);
++      HPRefinement (*(Mesh*)mesh, &ref, levels);
++   }
++
++
++
++
++   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
++      Ng_Mesh * mesh,
++      int levels, double parameter)
++   {
++      Refinement2d ref(*(SplineGeometry2d*)geom);
++      HPRefinement (*(Mesh*)mesh, &ref, levels, parameter);
++   }
++
++
++
++
++   Array readtrias; //only before initstlgeometry
++   Array > readedges; //only before init stlgeometry
++
++   // loads geometry from STL file
++   DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary)
++   {
++      int i;
++      STLGeometry geom;
++      STLGeometry* geo;
++      ifstream ist(filename);
++
++      if (binary)
++      {
++         geo = geom.LoadBinary(ist);
++      }
++      else
++      {
++         geo = geom.Load(ist);
++      }
++
++      readtrias.SetSize(0);
++      readedges.SetSize(0);
++
++      Point3d p;
++      Vec3d normal;
++      double p1[3];
++      double p2[3];
++      double p3[3];
++      double n[3];
++
++      Ng_STL_Geometry * geo2 = Ng_STL_NewGeometry();
++
++      for (i = 1; i <= geo->GetNT(); i++)
++      {
++         const STLTriangle& t = geo->GetTriangle(i);
++         p = geo->GetPoint(t.PNum(1));
++         p1[0] = p.X(); p1[1] = p.Y(); p1[2] = p.Z(); 
++         p = geo->GetPoint(t.PNum(2));
++         p2[0] = p.X(); p2[1] = p.Y(); p2[2] = p.Z(); 
++         p = geo->GetPoint(t.PNum(3));
++         p3[0] = p.X(); p3[1] = p.Y(); p3[2] = p.Z();
++         normal = t.Normal();
++         n[0] = normal.X(); n[1] = normal.Y(); n[2] = normal.Z();
++
++         Ng_STL_AddTriangle(geo2, p1, p2, p3, n);
++      }
++
++      return geo2;
++   }
++
++
++
++
++   // generate new STL Geometry
++   DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ()
++   {
++      return (Ng_STL_Geometry*)(void*)new STLGeometry;
++   } 
++
++
++
++
++   // after adding triangles (and edges) initialize
++   DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom)
++   {
++      STLGeometry* geo = (STLGeometry*)geom;
++      geo->InitSTLGeometry(readtrias);
++      readtrias.SetSize(0);
++
++      if (readedges.Size() != 0)
++      {
++         /*
++         for (int i = 1; i <= readedges.Size(); i+=2)
++         {
++         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
++         }
++         */
++         geo->AddEdges(readedges);
++      }
++
++      if (geo->GetStatus() == STLTopology::STL_GOOD || geo->GetStatus() == STLTopology::STL_WARNING) return NG_OK;
++      return NG_SURFACE_INPUT_ERROR;
++   }
++
++
++
++
++   // automatically generates edges:
++   DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
++                                          Ng_Mesh* mesh,
++                                          Ng_Meshing_Parameters * mp)
++   {
++      STLGeometry* stlgeometry = (STLGeometry*)geom;
++      Mesh* me = (Mesh*)mesh;
++
++      // Philippose - 27/07/2009
++      // Do not locally re-define "mparam" here... "mparam" is a global 
++      // object 
++      //MeshingParameters mparam;
++      mp->Transfer_Parameters();
++
++      me -> SetGlobalH (mparam.maxh);
++      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
++                       stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
++                       0.3);
++
++      me -> LoadLocalMeshSize (mp->meshsize_filename);
++      /*
++      if (mp->meshsize_filename)
++      {
++      ifstream infile (mp->meshsize_filename);
++      if (!infile.good()) return NG_FILE_NOT_FOUND;
++      me -> LoadLocalMeshSize (infile);
++      }
++      */
++
++      STLMeshing (*stlgeometry, *me);
++
++      stlgeometry->edgesfound = 1;
++      stlgeometry->surfacemeshed = 0;
++      stlgeometry->surfaceoptimized = 0;
++      stlgeometry->volumemeshed = 0;
++
++      return NG_OK;
++   }
++
++
++
++
++   // generates mesh, empty mesh be already created.
++   DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
++                                                    Ng_Mesh* mesh,
++                                                    Ng_Meshing_Parameters * mp)
++   {
++      STLGeometry* stlgeometry = (STLGeometry*)geom;
++      Mesh* me = (Mesh*)mesh;
++
++      // Philippose - 27/07/2009
++      // Do not locally re-define "mparam" here... "mparam" is a global 
++      // object
++      //MeshingParameters mparam;
++      mp->Transfer_Parameters();
++
++
++      /*
++      me -> SetGlobalH (mparam.maxh);
++      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
++      stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
++      0.3);
++      */
++      /*
++      STLMeshing (*stlgeometry, *me);
++
++      stlgeometry->edgesfound = 1;
++      stlgeometry->surfacemeshed = 0;
++      stlgeometry->surfaceoptimized = 0;
++      stlgeometry->volumemeshed = 0;
++      */  
++      int retval = STLSurfaceMeshing (*stlgeometry, *me);
++      if (retval == MESHING3_OK)
++      {
++         (*mycout) << "Success !!!!" << std::endl;
++         stlgeometry->surfacemeshed = 1;
++         stlgeometry->surfaceoptimized = 0;
++         stlgeometry->volumemeshed = 0;
++      } 
++      else if (retval == MESHING3_OUTERSTEPSEXCEEDED)
++      {
++         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << std::endl;
++      }
++      else if (retval == MESHING3_TERMINATE)
++      {
++         (*mycout) << "Meshing Stopped!" << std::endl;
++      }
++      else
++      {
++         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << std::endl;
++      }
++
++
++      STLSurfaceOptimization (*stlgeometry, *me, mparam);
++
++      return NG_OK;
++   }
++
++
++
++
++   // fills STL Geometry
++   // positive orientation
++   // normal vector may be null-pointer
++   DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
++                                       double * p1, double * p2, double * p3, 
++                                       double * nv)
++   {
++      Point<3> apts[3];
++      apts[0] = Point<3>(p1[0],p1[1],p1[2]);
++      apts[1] = Point<3>(p2[0],p2[1],p2[2]);
++      apts[2] = Point<3>(p3[0],p3[1],p3[2]);
++
++      Vec<3> n;
++      if (!nv)
++         n = Cross (apts[0]-apts[1], apts[0]-apts[2]);
++      else
++         n = Vec<3>(nv[0],nv[1],nv[2]);
++
++      readtrias.Append(STLReadTriangle(apts,n));
++   }
++
++   // add (optional) edges:
++   DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
++      double * p1, double * p2)
++   {
++      readedges.Append(Point3d(p1[0],p1[1],p1[2]));
++      readedges.Append(Point3d(p2[0],p2[1],p2[2]));
++   }
++
++
++
++
++#ifdef OCCGEOMETRY
++   // --------------------- OCC Geometry / Meshing Utility Functions -------------------
++   // Create new OCC Geometry Object
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ()
++   {
++      return (Ng_OCC_Geometry*)(void*)new OCCGeometry;
++   } 
++
++
++
++
++   // Delete the OCC Geometry Object
++   DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry(Ng_OCC_Geometry * geom)
++   {
++      if (geom != NULL)
++      {
++         delete (OCCGeometry*)geom;
++         geom = NULL;
++         return NG_OK;
++      }
++      
++      return NG_ERROR;
++   }
++
++
++
++   
++   // Loads geometry from STEP File
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename)
++   {
++      // Call the STEP File Load function. Note.. the geometry class 
++      // is created and instantiated within the load function
++      OCCGeometry * occgeo = LoadOCC_STEP(filename);
++
++      return ((Ng_OCC_Geometry *)occgeo);
++   }
++
++
++
++   
++   // Loads geometry from IGES File
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename)
++   {
++      // Call the IGES File Load function. Note.. the geometry class 
++      // is created and instantiated within the load function
++      OCCGeometry * occgeo = LoadOCC_IGES(filename);
++
++      return ((Ng_OCC_Geometry *)occgeo);
++   }
++
++
++
++   
++   // Loads geometry from BREP File
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename)
++   {
++      // Call the BREP File Load function. Note.. the geometry class 
++      // is created and instantiated within the load function
++      OCCGeometry * occgeo = LoadOCC_BREP(filename);
++
++      return ((Ng_OCC_Geometry *)occgeo);
++   }
++
++
++
++
++   // Locally limit the size of the mesh to be generated at various points 
++   // based on the topology of the geometry
++   DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp)
++   {
++      OCCGeometry * occgeom = (OCCGeometry*)geom;
++      Mesh * me = (Mesh*)mesh;
++
++      me->geomtype = Mesh::GEOM_OCC;
++
++      mp->Transfer_Parameters();
++      
++      occparam.resthcloseedgeenable = mp->closeedgeenable;
++      occparam.resthcloseedgefac = mp->closeedgefact;
++
++      // Delete the mesh structures in order to start with a clean 
++      // slate
++      me->DeleteMesh();
++
++      OCCSetLocalMeshSize(*occgeom, *me);
++
++      return(NG_OK);
++   }
++
++
++
++   
++   // Mesh the edges and add Face descriptors to prepare for surface meshing
++   DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp)
++   {
++      OCCGeometry * occgeom = (OCCGeometry*)geom;
++      Mesh * me = (Mesh*)mesh;
++
++      mp->Transfer_Parameters();
++
++      OCCFindEdges(*occgeom, *me);
++
++      if((me->GetNP()) && (me->GetNFD()))
++      {
++         return NG_OK;
++      }
++      else
++      {
++         return NG_ERROR;
++      }
++   }
++
++
++
++   
++   // Mesh the edges and add Face descriptors to prepare for surface meshing
++   DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
++                                                    Ng_Mesh * mesh,
++                                                    Ng_Meshing_Parameters * mp)
++   {
++      int numpoints = 0;
++
++      OCCGeometry * occgeom = (OCCGeometry*)geom;
++      Mesh * me = (Mesh*)mesh;
++
++      // Set the internal meshing parameters structure from the nglib meshing 
++      // parameters structure
++      mp->Transfer_Parameters();
++
++
++      // Only go into surface meshing if the face descriptors have already been added
++      if(!me->GetNFD())
++         return NG_ERROR;
++
++      numpoints = me->GetNP();
++
++      // Initially set up only for surface meshing without any optimisation
++      int perfstepsend = MESHCONST_MESHSURFACE;
++
++      // Check and if required, enable surface mesh optimisation step
++      if(mp->optsurfmeshenable)
++      {
++         perfstepsend = MESHCONST_OPTSURFACE;
++      }
++
++      OCCMeshSurface(*occgeom, *me, perfstepsend);
++
++      me->CalcSurfacesOfNode();
++      
++      if(me->GetNP() <= numpoints)
++         return NG_ERROR;
++
++      if(me->GetNSE() <= 0)
++         return NG_ERROR;
++
++      return NG_OK;
++   }
++
++
++
++
++   // Extract the face map from the OCC geometry
++   // The face map basically gives an index to each face in the geometry, 
++   // which can be used to access a specific face
++   DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
++                                       Ng_OCC_TopTools_IndexedMapOfShape * FMap)
++   {
++      OCCGeometry* occgeom = (OCCGeometry*)geom;
++      TopTools_IndexedMapOfShape *occfmap = (TopTools_IndexedMapOfShape *)FMap;
++
++      // Copy the face map from the geometry to the given variable
++      occfmap->Assign(occgeom->fmap);
++
++      if(occfmap->Extent())
++      {
++         return NG_OK;
++      }
++      else
++      {
++         return NG_ERROR;
++      }
++   }
++
++   // ------------------ End - OCC Geometry / Meshing Utility Functions ----------------
++#endif
++
++
++
++
++   // ------------------ Begin - Meshing Parameters related functions ------------------
++   // Constructor for the local nglib meshing parameters class
++   DLL_HEADER Ng_Meshing_Parameters :: Ng_Meshing_Parameters()
++   {
++      uselocalh = 1;
++
++      maxh = 1000;
++      minh = 0.0;
++
++      fineness = 0.5;
++      grading = 0.3;
++
++      elementsperedge = 2.0;
++      elementspercurve = 2.0;
++
++      closeedgeenable = 0;
++      closeedgefact = 2.0;
++
++	  minedgelenenable = 0;
++	  minedgelen = 1e-4;
++
++      second_order = 0;
++      quad_dominated = 0;
++
++      meshsize_filename = 0;
++
++      optsurfmeshenable = 1;
++      optvolmeshenable = 1;
++
++      optsteps_2d = 3;
++      optsteps_3d = 3;
++
++      invert_tets = 0;
++      invert_trigs = 0;
++
++      check_overlap = 1;
++      check_overlapping_boundary = 1;
++   }
++
++
++
++
++   // Reset the local meshing parameters to the default values
++   DLL_HEADER void Ng_Meshing_Parameters :: Reset_Parameters()
++   {
++      uselocalh = 1;
++
++      maxh = 1000;
++      minh = 0;
++
++      fineness = 0.5;
++      grading = 0.3;
++
++      elementsperedge = 2.0;
++      elementspercurve = 2.0;
++
++      closeedgeenable = 0;
++      closeedgefact = 2.0;
++
++  	  minedgelenenable = 0;
++	  minedgelen = 1e-4;
++
++      second_order = 0;
++      quad_dominated = 0;
++
++      meshsize_filename = 0;
++
++      optsurfmeshenable = 1;
++      optvolmeshenable = 1;
++
++      optsteps_2d = 3;
++      optsteps_3d = 3;
++
++      invert_tets = 0;
++      invert_trigs = 0;
++
++      check_overlap = 1;
++      check_overlapping_boundary = 1;
++   }
++
++
++
++
++   // 
++   DLL_HEADER void Ng_Meshing_Parameters :: Transfer_Parameters()
++   {
++      mparam.uselocalh = uselocalh;
++      
++      mparam.maxh = maxh;
++      mparam.minh = minh;
++
++      mparam.grading = grading;
++      mparam.curvaturesafety = elementspercurve;
++      mparam.segmentsperedge = elementsperedge;
++
++      mparam.secondorder = second_order;
++      mparam.quad = quad_dominated;
++
++      mparam.meshsizefilename = meshsize_filename;
++
++      mparam.optsteps2d = optsteps_2d;
++      mparam.optsteps3d = optsteps_3d;
++
++      mparam.inverttets = invert_tets;
++      mparam.inverttrigs = invert_trigs;
++
++      mparam.checkoverlap = check_overlap;
++      mparam.checkoverlappingboundary = check_overlapping_boundary;
++   }
++   // ------------------ End - Meshing Parameters related functions --------------------
++
++
++
++
++   // ------------------ Begin - Second Order Mesh generation functions ----------------
++   DLL_HEADER void Ng_Generate_SecondOrder(Ng_Mesh * mesh)
++   {
++      Refinement ref;
++      ref.MakeSecondOrder(*(Mesh*) mesh);
++   }
++
++
++
++
++   DLL_HEADER void Ng_2D_Generate_SecondOrder(Ng_Geometry_2D * geom,
++					  Ng_Mesh * mesh)
++   {
++      ( (SplineGeometry2d*)geom ) -> GetRefinement().MakeSecondOrder( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_STL_Generate_SecondOrder(Ng_STL_Geometry * geom,
++					   Ng_Mesh * mesh)
++   {
++      ((STLGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
++   }
++
++
++
++
++   DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
++					   Ng_Mesh * mesh)
++   {
++      ((CSGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
++   }
++
++
++
++
++#ifdef OCCGEOMETRY
++   DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
++                  Ng_Mesh * mesh)
++   {
++      ((OCCGeometry*)geom )->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
++   }
++#endif
++   // ------------------ End - Second Order Mesh generation functions ------------------
++
++
++
++
++   // ------------------ Begin - Uniform Mesh Refinement functions ---------------------
++   DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh)
++   {
++      Refinement ref;
++      ref.Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (SplineGeometry2d*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (STLGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (CSGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++#ifdef OCCGEOMETRY
++   DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (OCCGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++#endif
++   // ------------------ End - Uniform Mesh Refinement functions -----------------------
++} // End of namespace nglib
++
++
++
++
++// compatibility functions:
++namespace netgen 
++{
++   char geomfilename[255];
++
++   DLL_HEADER void MyError (const char * ch)
++   {
++      cerr << ch;
++   }
++
++
++
++
++   //Destination for messages, errors, ...
++   DLL_HEADER void Ng_PrintDest(const char * s)
++   {
++#ifdef PARALLEL
++     int id = 0;
++     MPI_Comm_rank(MPI_COMM_WORLD, &id);
++     if (id != 0) return;
++#endif
++     (*mycout) << s << std::flush;
++   }
++
++
++
++
++   DLL_HEADER double GetTime ()
++   {
++      return 0;
++   }
++
++
++
++
++   void ResetTime ()
++   {
++      ;
++   }
++
++
++
++
++   void MyBeep (int i)
++   {
++      ;
++   }
++
++
++
++
++   void Render()
++   {
++      ; 
++   }
++} // End of namespace netgen
++
++
++
++
++void Ng_Redraw () { ; }
++void Ng_ClearSolutionData () { ; }
++void Ng_SetSolutionData (Ng_SolutionData * soldata) 
++{ 
++  delete soldata->solclass;
++}
++void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
++
++
+--- netgen_ref/nglib/nglib.h
++++ netgen/nglib/nglib.h
+@@ -1,747 +1,747 @@
+-#ifndef NGLIB
+-#define NGLIB
+-
+-/**************************************************************************/
+-/* File:   nglib.h                                                        */
+-/* Author: Joachim Schoeberl                                              */
+-/* Date:   7. May. 2000                                                   */
+-/**************************************************************************/
+-
+-/*!
+-   \file nglib.h
+-   \brief Library interface to the netgen meshing kernel
+-   \author Joachim Schoeberl
+-   \date 7. May 2000
+-
+-   This header file provides access to the core functionality of the Netgen 
+-   Mesher via a library interface, without an interactive User Interface.
+-
+-   The intention of providing these set of functions is to allow system 
+-   developers to integrate Netgen into top-level code, to act as the low 
+-   level mesh generation / optimisation kernel.  
+-*/
+-
+-// Philippose - 14.02.2009
+-// Modifications for creating a DLL in Windows
+-#ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
+-      #define DLL_HEADER   __declspec(dllexport)
+-   #else
+-      #define DLL_HEADER   __declspec(dllimport)
+-   #endif
+-#else
+-   #define DLL_HEADER 
+-#endif
+-
+-
+-
+-// ** Constants used within Netgen *********************
+-/// Maximum allowed number of nodes per volume element
+-#define NG_VOLUME_ELEMENT_MAXPOINTS 10
+-
+-/// Maximum allowed number of nodes per surface element
+-#define NG_SURFACE_ELEMENT_MAXPOINTS 8
+-
+-
+-
+-// *** Data-types for accessing Netgen functionality ***
+-/// Data type for NETGEN mesh
+-typedef void * Ng_Mesh;
+-
+-/// Data type for NETGEN CSG geometry
+-typedef void * Ng_CSG_Geometry;
+-
+-/// Data type for NETGEN 2D geometry
+-typedef void * Ng_Geometry_2D;
+-
+-/// Data type for NETGEN STL geometry
+-typedef void * Ng_STL_Geometry;
+-
+-#ifdef OCCGEOMETRY
+-/// Data type for NETGEN OpenCascade geometry
+-typedef void * Ng_OCC_Geometry;
+-typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
+-#endif
+-
+-
+-// *** Special Enum types used within Netgen ***********
+-/// Currently implemented surface element types
+-enum Ng_Surface_Element_Type 
+-   { NG_TRIG = 1, NG_QUAD = 2, NG_TRIG6 = 3, NG_QUAD6 = 4, NG_QUAD8 = 5 };
+-
+-/// Currently implemented volume element types
+-enum Ng_Volume_Element_Type 
+-   { NG_TET = 1, NG_PYRAMID = 2, NG_PRISM = 3, NG_TET10 = 4 };
+-
+-/// Values returned by Netgen functions
+-enum Ng_Result 
+-   { 
+-     NG_ERROR               = -1,   
+-     NG_OK                  = 0, 
+-     NG_SURFACE_INPUT_ERROR = 1,
+-     NG_VOLUME_FAILURE      = 2, 
+-     NG_STL_INPUT_ERROR     = 3,
+-     NG_SURFACE_FAILURE     = 4,
+-     NG_FILE_NOT_FOUND      = 5 
+-   };
+-
+-
+-
+-// *** Classes required for use within Netgen **********
+-/// Netgen Meshing Parameters class
+-class Ng_Meshing_Parameters 
+-{
+-public:
+-   int uselocalh;                      //!< Switch to enable / disable usage of local mesh size modifiers
+-
+-   double maxh;                        //!< Maximum global mesh size allowed
+-   double minh;                        //!< Minimum global mesh size allowed
+-
+-   double fineness;                    //!< Mesh density: 0...1 (0 => coarse; 1 => fine)
+-   double grading;                     //!< Mesh grading: 0...1 (0 => uniform mesh; 1 => aggressive local grading)
+-
+-   double elementsperedge;             //!< Number of elements to generate per edge of the geometry
+-   double elementspercurve;            //!< Elements to generate per curvature radius
+-
+-   int closeedgeenable;                //!< Enable / Disable mesh refinement at close edges
+-   double closeedgefact;               //!< Factor to use for refinement at close edges (larger => finer)
+-
+-   int minedgelenenable;			   //!< Enable / Disable user defined minimum edge length for edge subdivision
+-   double minedgelen;                  //!< Minimum edge length to use while subdividing the edges (default = 1e-4)
+-
+-   int second_order;                   //!< Generate second-order surface and volume elements
+-   int quad_dominated;                 //!< Creates a Quad-dominated mesh 
+-
+-   char * meshsize_filename;           //!< Optional external mesh size file 
+-
+-   int optsurfmeshenable;              //!< Enable / Disable automatic surface mesh optimization
+-   int optvolmeshenable;               //!< Enable / Disable automatic volume mesh optimization
+-
+-   int optsteps_3d;                     //!< Number of optimize steps to use for 3-D mesh optimization
+-   int optsteps_2d;                     //!< Number of optimize steps to use for 2-D mesh optimization
+-
+-   // Philippose - 13/09/2010
+-   // Added a couple more parameters into the meshing parameters list 
+-   // from Netgen into Nglib
+-   int invert_tets;                    //!< Invert all the volume elements
+-   int invert_trigs;                   //!< Invert all the surface triangle elements
+-
+-   int check_overlap;                  //!< Check for overlapping surfaces during Surface meshing
+-   int check_overlapping_boundary;     //!< Check for overlapping surface elements before volume meshing
+-
+-
+-   /*!
+-      Default constructor for the Mesh Parameters class
+-
+-      Note: This constructor initialises the variables in the 
+-      class with the following default values
+-      - #uselocalh: 1
+-      - #maxh: 1000.0
+-      - #fineness: 0.5
+-      - #grading: 0.3
+-      - #elementsperedge: 2.0
+-      - #elementspercurve: 2.0
+-      - #closeedgeenable: 0
+-      - #closeedgefact: 2.0
+-      - #secondorder: 0
+-      - #meshsize_filename: null
+-      - #quad_dominated: 0
+-      - #optsurfmeshenable: 1
+-      - #optvolmeshenable: 1
+-      - #optsteps_2d: 3
+-      - #optsteps_3d: 3
+-      - #invert_tets: 0
+-      - #invert_trigs:0 
+-      - #check_overlap: 1
+-      - #check_overlapping_boundary: 1
+-   */
+-   DLL_HEADER Ng_Meshing_Parameters();
+-
+-
+-
+-   /*!
+-       Reset the meshing parameters to their defaults
+-
+-       This member function resets all the meshing parameters 
+-       of the object to the default values
+-   */
+-   DLL_HEADER void Reset_Parameters();
+-
+-
+-
+-   /*!
+-       Transfer local meshing parameters to internal meshing parameters
+-
+-       This member function transfers all the meshing parameters 
+-       defined in the local meshing parameters structure of nglib into 
+-       the internal meshing parameters structure used by the Netgen core
+-   */
+-   DLL_HEADER void Transfer_Parameters();
+-};
+-
+-
+-
+-
+-// *** Functions Exported by this Library *************
+-
+-// ------------------------------------------------------------------
+-// Netgen library initialisation / destruction functions
+-
+-/*! \brief Initialise the Netgen library and prepare for use
+-
+-    This function needs to be called by the third-party 
+-    program before beginning to use the other Netgen 
+-    specific functions.
+-*/
+-DLL_HEADER void Ng_Init ();
+-
+-
+-/*! \brief Exit the Netgen meshing kernel in a clean manner
+-
+-    Use this function to exit the meshing sub-system in 
+-    a clean and orderly manner.
+-*/
+-DLL_HEADER void Ng_Exit ();
+-  
+-
+-/*! \brief Create a new (and empty) Netgen Mesh Structure
+-
+-    This function creates a new Netgen Mesh, initialises 
+-    it, and returns a pointer to the created mesh structure. 
+-
+-    Use the returned pointer for subsequent operations 
+-    which involve mesh operations.
+-
+-    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh
+-*/
+-DLL_HEADER  Ng_Mesh * Ng_NewMesh ();
+-
+-
+-/*! \brief Delete an existing Netgen Mesh Structure
+-
+-    Use this function to delete an existing Netgen mesh 
+-    structure and release the used memory. 
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure 
+-                of type #Ng_Mesh
+-*/
+-DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh);
+-
+-
+-/*! \brief Save a Netgen Mesh to disk
+-
+-    This function allows a generated mesh structure to be saved 
+-    to disk.
+-
+-    A Mesh saved using this function, will be written to disk 
+-    in the Netgen VOL file format.
+-
+-    \param mesh    Pointer to an existing Netgen Mesh structure 
+-                   of type #Ng_Mesh
+-    \param filename Pointer to a character array containing the 
+-                    name of the file to which the mesh should 
+-                    be saved
+-*/
+-DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename);
+-
+-
+-/*! \brief Load a Netgen VOL Mesh from disk into memory
+-
+-    A Netgen mesh saved in the internal VOL format can be loaded 
+-    into a Netgen Mesh structure using this function. 
+-
+-    \param filename Pointer to a character array containing the 
+-                    name of the file to load
+-    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh containing 
+-                    the mesh loaded from disk
+-*/
+-DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename);
+-
+-
+-/*! \brief Merge a Netgen VOL Mesh from disk into an existing mesh in memory
+-
+-    A Netgen mesh saved in the internal VOL format can be merged 
+-    into an existing Netgen Mesh structure using this function. 
+-
+-    \param mesh       Name of the Mesh structure already existent in memory
+-    \param filename   Pointer to a character array containing the 
+-                      name of the file to load
+-    \return Ng_Result Status of the merge operation
+-*/
+-DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh, const char* filename);
+-
+-
+-/*! \brief Merge one Netgen Mesh into another Netgen Mesh in the case 
+-    when both are already in memory
+-
+-    (NOTE: FUNCTION STILL WORK IN PROGRESS!!!)
+-
+-    This function can be used to merge two Netgen meshes already present 
+-    in memory.
+-
+-    \param mesh1      Parent Mesh structure into which the second mesh 
+-                      will be merged
+-    \param mesh2      Child mesh structure which will get merged into 
+-                      the parent mesh
+-    \return Ng_Result Status of the merge operation
+-*/
+-DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh1, Ng_Mesh * mesh2);
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Basic Meshing functions for manually adding points, surface elements 
+-// and volume elements to a Netgen Mesh structure
+-
+-/*! \brief Add a point to a given Netgen Mesh Structure
+-
+-    This function allows points to be directly added to a Netgen 
+-    mesh structure by providing the co-ordinates.
+-
+-    Each call to the function allows only one point to be added.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param x    Pointer to an array of type double containing the co-ordinates 
+-                of the point to be added in the form: \n
+-                - x[0] = X co-ordinate
+-                - x[1] = Y co-ordinate
+-                - x[2] = Z co-ordinate
+-*/
+-DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x);
+-
+-
+-/*! \brief Add a surface element to a given Netgen Mesh Structure
+-
+-    This function allows the top-level code to directly add individual 
+-    Surface Elements to a Netgen Mesh Structure by providing the type of 
+-    element to be added and the indices of the points which constitute the 
+-    element.
+-
+-    Note: 
+-    - The points referred to by the surface elements must have been
+-      added prior to calling this function. 
+-    - Currently only triangular elements are supported, and the Surface Element 
+-      Type argument is not used.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param et   Surface Element type provided via the enumerated type 
+-                #Ng_Surface_Element_Type 
+-    \param pi   Pointer to an array of integers containing the indices of the 
+-                points which constitute the surface element being added
+-*/
+-DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et, int * pi);
+-
+-
+-/*! \brief Add a volume element to a given Netgen Mesh Structure
+-
+-    This function allows the top-level code to directly add individual 
+-    Volume Elements to a Netgen Mesh Structure by providing the type of 
+-    element to be added and the indices of the points which constitute the 
+-    element.
+-
+-    Note: 
+-    - The points referred to by the volume elements must have been
+-      added prior to calling this function. 
+-    - Currently only tetrahedral elements are supported, and the Volume Element 
+-      Type argument is not used.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param et   Volume Element type provided via the enumerated type 
+-                #Ng_Volume_Element_Type 
+-    \param pi   Pointer to an array of integers containing the indices of the 
+-                points which constitute the volume element being added
+-
+-*/
+-DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et, int * pi);
+-  
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Local Mesh Size restriction / limiting utilities
+-
+-/*! \brief Apply a global restriction on mesh element size
+-
+-    This utility allows the user to apply a global mesh element 
+-    size limitation. 
+-
+-    During mesh creation, in the absence of an explicit local 
+-    size restriction around the neighbourhood of a point within 
+-    the meshing domain, this global size restriction will be 
+-    utilised.
+-
+-    Note: This function only limits the Maximum 
+-    size of an element within the mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param h    Variable of type double, specifying the maximum
+-                allowable mesh size
+-*/
+-DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h);
+-
+-
+-/*! \brief Locally restrict the mesh element size at the given point
+-
+-    Unlike the function #Ng_RestrictMeshSizeGlobal, this function 
+-    allows the user to locally restrict the maximum allowable mesh 
+-    size at a given point.
+-
+-    The point is specified via its three cartesian co-ordinates.
+-
+-    Note: This function only limits the Maximum size 
+-    of the elements around the specified point.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param p    Pointer to an Array of type double, containing 
+-                the three co-ordinates of the point in the form: \n
+-                - p[0] = X co-ordinate
+-                - p[1] = Y co-ordinate
+-                - p[2] = Z co-ordinate
+-    \param h    Variable of type double, specifying the maximum
+-                allowable mesh size at that point
+-*/
+-DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h);
+-
+-
+-/*! \brief Locally restrict the mesh element size within a specified box
+-
+-    Similar to the function #Ng_RestrictMeshSizePoint, this function 
+-    allows the size of elements within a mesh to be locally limited.
+-
+-    However, rather than limit the mesh size at a single point, this 
+-    utility restricts the local mesh size within a 3D Box region, specified 
+-    via the co-ordinates of the two diagonally opposite points of a cuboid.
+-
+-    Note: This function only limits the Maximum size 
+-    of the elements within the specified region.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param pmin Pointer to an Array of type double, containing 
+-                the three co-ordinates of the first point of the cuboid: \n
+-                - pmin[0] = X co-ordinate
+-                - pmin[1] = Y co-ordinate
+-                - pmin[2] = Z co-ordinate
+-    \param pmax Pointer to an Array of type double, containing 
+-                the three co-ordinates of the opposite point of the 
+-                cuboid: \n
+-                - pmax[0] = X co-ordinate
+-                - pmax[1] = Y co-ordinate
+-                - pmax[2] = Z co-ordinate
+-    \param h    Variable of type double, specifying the maximum
+-                allowable mesh size at that point
+-*/
+-DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// 3D Mesh Generation functions
+-
+-/*! \brief Create a 3D Volume Mesh given a Surface Mesh
+-
+-    After creating a surface mesh, this function can be utilised 
+-    to automatically generate the corresponding 3D Volume Mesh.
+-
+-    Mesh generation parameters (such as grading, maximum element size, 
+-    etc.) are specified via the meshing parameters class which also 
+-    needs to be passed to this function.
+-
+-    Note: Currently, Netgen generates pure tetrahedral volume 
+-    meshes.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param mp   Pointer to a copy of the Meshing Parameters class
+-                (#Ng_Meshing_Parameters), filled up with the 
+-                required values
+-
+-    \return Ng_Result Status of the Mesh Generation routine. More 
+-                      details regarding the return value can be 
+-                      found in the description of #Ng_Result
+-*/
+-DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Basic Mesh information functions
+-
+-/*! \brief Returns the Number of Points present in the specified Mesh
+-
+-    Given an already existent Netgen Mesh Structure, this function 
+-    returns the number of points currently present within the Mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \return 
+-                Integer Data-type with the number of points in the Mesh
+-*/
+-DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh);
+-
+-
+-/*! \brief Returns the Number of Surface Elements present in the specified Mesh
+-
+-    Given an already existent Netgen Mesh Structure, this function 
+-    returns the number of surface elements currently present within 
+-    the Mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \return 
+-                Integer Data-type with the number of surface elements in the Mesh
+-*/
+-DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh);
+-
+-
+-/*! \brief Returns the Number of Volume Elements present in the specified Mesh
+-
+-    Given an already existent Netgen Mesh Structure, this function 
+-    returns the number of volume elements currently present within 
+-    the Mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \return 
+-                Integer Data-type with the number of volume elements in the Mesh
+-*/
+-DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Mesh Topology functions
+-// Use these functions to extract points, surface / volume elements, 
+-// perform topological searches, etc..etc...
+-  
+-//  Return the Point Coordinates of a specified Point
+-// The x, y and z co-ordinates are returned in the array pointer as 
+-// x[0] = x ; x[1] = y ; x[2] = z
+-DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x);
+-
+-
+-
+-// return surface and volume element in pi
+-DLL_HEADER Ng_Surface_Element_Type 
+-Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi);
+-
+-DLL_HEADER Ng_Volume_Element_Type
+-Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-
+-// **********************************************************
+-// **   2D Meshing                                         **
+-// **********************************************************
+-
+-
+-// feeds points and boundary to mesh
+-
+-DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x);
+-DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2);
+-  
+-// ask for number of points, elements and boundary segments
+-DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh);
+-DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh);
+-DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh);
+-  
+-//  return point coordinates
+-DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x);
+-
+-// return 2d elements
+-DLL_HEADER Ng_Surface_Element_Type 
+-Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
+-
+-// return 2d boundary segment
+-DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
+-
+-
+-// load 2d netgen spline geometry
+-DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename);
+-
+-// generate 2d mesh, mesh is allocated by function
+-DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
+-                                         Ng_Mesh ** mesh,
+-                                         Ng_Meshing_Parameters * mp);
+-  
+-DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
+-                                  Ng_Mesh * mesh,
+-                                  int levels);
+-  
+-
+-
+-
+-
+-// **********************************************************
+-// **   STL Meshing                                        **
+-// **********************************************************
+-
+-
+-// loads geometry from STL file
+-DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary = 0);
+-
+-
+-// generate new STL Geometry
+-DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ();
+-  
+-
+-// fills STL Geometry
+-// positive orientation
+-// normal vector may be null-pointer
+-DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
+-                         double * p1, double * p2, double * p3, 
+-                         double * nv = NULL);
+-
+-// add (optional) edges :
+-DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
+-                     double * p1, double * p2);
+-
+-// after adding triangles (and edges) initialize
+-DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom);
+-
+-// automatically generates edges:
+-DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
+-                            Ng_Mesh* mesh,
+-                            Ng_Meshing_Parameters * mp);
+-
+-
+-// generates mesh, empty mesh must be already created.
+-DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp);
+-
+-
+-#ifdef ACIS
+-
+-// **********************************************************
+-// **   ACIS Meshing                                       **
+-// **********************************************************
+-
+-/// Data type for NETGEN STL geomty
+-typedef void * Ng_ACIS_Geometry;
+-
+-// loads geometry from STL file
+-DLL_HEADER Ng_ACIS_Geometry * Ng_ACIS_LoadGeometry (const char * filename);
+-  
+-// generates mesh, empty mesh must be already created.
+-DLL_HEADER Ng_Result Ng_ACIS_GenerateSurfaceMesh (Ng_ACIS_Geometry * geom,
+-                                                  Ng_Mesh * mesh,
+-                                                  Ng_Meshing_Parameters * mp);
+-
+-
+-#endif
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-
+-// **********************************************************
+-// **   OpenCascade Geometry / Meshing Utilities           **
+-// **********************************************************
+-
+-// Create new OCC Geometry Object
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
+-
+-// Delete an OCC Geometry Object
+-DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
+-
+-// Loads geometry from STEP file
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
+-
+-// Loads geometry from IGES file
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
+-
+-// Loads geometry from BREP file
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
+-
+-// Set the local mesh size based on geometry / topology
+-DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
+-                                              Ng_Mesh * mesh,
+-                                              Ng_Meshing_Parameters * mp);
+-
+-// Mesh the edges and add Face descriptors to prepare for surface meshing
+-DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
+-                                              Ng_Mesh * mesh,
+-                                              Ng_Meshing_Parameters * mp);
+-
+-// Mesh the surfaces of an OCC geometry
+-DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp); 
+-
+-// Get the face map of an already loaded OCC geometry
+-DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
+-                                    Ng_OCC_TopTools_IndexedMapOfShape * FMap);
+-
+-#endif // OCCGEOMETRY
+-
+-
+-
+-// **********************************************************
+-// **   Mesh refinement algorithms                         **
+-// **********************************************************
+-
+-// uniform mesh refinement
+-DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh);
+-
+-
+-// uniform mesh refinement with geometry adaption:
+-
+-DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
+-					  Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
+-					   Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
+-					   Ng_Mesh * mesh);
+-
+-#ifdef OCCGEOMETRY
+-DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
+-					   Ng_Mesh * mesh);
+-#endif
+-
+-
+-
+-// **********************************************************
+-// **   Second Order mesh algorithms                       **
+-// **********************************************************
+-
+-// convert mesh to second order
+-DLL_HEADER void Ng_Generate_SecondOrder (Ng_Mesh * mesh);
+-
+-
+-// convert mesh to second order with geometry adaption:
+-
+-DLL_HEADER void Ng_2D_Generate_SecondOrder (Ng_Geometry_2D * geom,
+-					  Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_STL_Generate_SecondOrder (Ng_STL_Geometry * geom,
+-					   Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
+-					   Ng_Mesh * mesh);
+-
+-#ifdef OCCGEOMETRY
+-DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
+-					   Ng_Mesh * mesh);
+-#endif
+-
+-
+-#endif // NGLIB
++#ifndef NGLIB
++#define NGLIB
++
++/**************************************************************************/
++/* File:   nglib.h                                                        */
++/* Author: Joachim Schoeberl                                              */
++/* Date:   7. May. 2000                                                   */
++/**************************************************************************/
++
++/*!
++   \file nglib.h
++   \brief Library interface to the netgen meshing kernel
++   \author Joachim Schoeberl
++   \date 7. May 2000
++
++   This header file provides access to the core functionality of the Netgen 
++   Mesher via a library interface, without an interactive User Interface.
++
++   The intention of providing these set of functions is to allow system 
++   developers to integrate Netgen into top-level code, to act as the low 
++   level mesh generation / optimisation kernel.  
++*/
++
++// Philippose - 14.02.2009
++// Modifications for creating a DLL in Windows
++#ifdef WIN32
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
++      #define DLL_HEADER   __declspec(dllexport)
++   #else
++      #define DLL_HEADER   __declspec(dllimport)
++   #endif
++#else
++   #define DLL_HEADER 
++#endif
++
++
++
++// ** Constants used within Netgen *********************
++/// Maximum allowed number of nodes per volume element
++#define NG_VOLUME_ELEMENT_MAXPOINTS 10
++
++/// Maximum allowed number of nodes per surface element
++#define NG_SURFACE_ELEMENT_MAXPOINTS 8
++
++
++
++// *** Data-types for accessing Netgen functionality ***
++/// Data type for NETGEN mesh
++typedef void * Ng_Mesh;
++
++/// Data type for NETGEN CSG geometry
++typedef void * Ng_CSG_Geometry;
++
++/// Data type for NETGEN 2D geometry
++typedef void * Ng_Geometry_2D;
++
++/// Data type for NETGEN STL geometry
++typedef void * Ng_STL_Geometry;
++
++#ifdef OCCGEOMETRY
++/// Data type for NETGEN OpenCascade geometry
++typedef void * Ng_OCC_Geometry;
++typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
++#endif
++
++
++// *** Special Enum types used within Netgen ***********
++/// Currently implemented surface element types
++enum Ng_Surface_Element_Type 
++   { NG_TRIG = 1, NG_QUAD = 2, NG_TRIG6 = 3, NG_QUAD6 = 4, NG_QUAD8 = 5 };
++
++/// Currently implemented volume element types
++enum Ng_Volume_Element_Type 
++   { NG_TET = 1, NG_PYRAMID = 2, NG_PRISM = 3, NG_TET10 = 4 };
++
++/// Values returned by Netgen functions
++enum Ng_Result 
++   { 
++     NG_ERROR               = -1,   
++     NG_OK                  = 0, 
++     NG_SURFACE_INPUT_ERROR = 1,
++     NG_VOLUME_FAILURE      = 2, 
++     NG_STL_INPUT_ERROR     = 3,
++     NG_SURFACE_FAILURE     = 4,
++     NG_FILE_NOT_FOUND      = 5 
++   };
++
++
++
++// *** Classes required for use within Netgen **********
++/// Netgen Meshing Parameters class
++class Ng_Meshing_Parameters 
++{
++public:
++   int uselocalh;                      //!< Switch to enable / disable usage of local mesh size modifiers
++
++   double maxh;                        //!< Maximum global mesh size allowed
++   double minh;                        //!< Minimum global mesh size allowed
++
++   double fineness;                    //!< Mesh density: 0...1 (0 => coarse; 1 => fine)
++   double grading;                     //!< Mesh grading: 0...1 (0 => uniform mesh; 1 => aggressive local grading)
++
++   double elementsperedge;             //!< Number of elements to generate per edge of the geometry
++   double elementspercurve;            //!< Elements to generate per curvature radius
++
++   int closeedgeenable;                //!< Enable / Disable mesh refinement at close edges
++   double closeedgefact;               //!< Factor to use for refinement at close edges (larger => finer)
++
++   int minedgelenenable;			   //!< Enable / Disable user defined minimum edge length for edge subdivision
++   double minedgelen;                  //!< Minimum edge length to use while subdividing the edges (default = 1e-4)
++
++   int second_order;                   //!< Generate second-order surface and volume elements
++   int quad_dominated;                 //!< Creates a Quad-dominated mesh 
++
++   char * meshsize_filename;           //!< Optional external mesh size file 
++
++   int optsurfmeshenable;              //!< Enable / Disable automatic surface mesh optimization
++   int optvolmeshenable;               //!< Enable / Disable automatic volume mesh optimization
++
++   int optsteps_3d;                     //!< Number of optimize steps to use for 3-D mesh optimization
++   int optsteps_2d;                     //!< Number of optimize steps to use for 2-D mesh optimization
++
++   // Philippose - 13/09/2010
++   // Added a couple more parameters into the meshing parameters list 
++   // from Netgen into Nglib
++   int invert_tets;                    //!< Invert all the volume elements
++   int invert_trigs;                   //!< Invert all the surface triangle elements
++
++   int check_overlap;                  //!< Check for overlapping surfaces during Surface meshing
++   int check_overlapping_boundary;     //!< Check for overlapping surface elements before volume meshing
++
++
++   /*!
++      Default constructor for the Mesh Parameters class
++
++      Note: This constructor initialises the variables in the 
++      class with the following default values
++      - #uselocalh: 1
++      - #maxh: 1000.0
++      - #fineness: 0.5
++      - #grading: 0.3
++      - #elementsperedge: 2.0
++      - #elementspercurve: 2.0
++      - #closeedgeenable: 0
++      - #closeedgefact: 2.0
++      - #secondorder: 0
++      - #meshsize_filename: null
++      - #quad_dominated: 0
++      - #optsurfmeshenable: 1
++      - #optvolmeshenable: 1
++      - #optsteps_2d: 3
++      - #optsteps_3d: 3
++      - #invert_tets: 0
++      - #invert_trigs:0 
++      - #check_overlap: 1
++      - #check_overlapping_boundary: 1
++   */
++   DLL_HEADER Ng_Meshing_Parameters();
++
++
++
++   /*!
++       Reset the meshing parameters to their defaults
++
++       This member function resets all the meshing parameters 
++       of the object to the default values
++   */
++   DLL_HEADER void Reset_Parameters();
++
++
++
++   /*!
++       Transfer local meshing parameters to internal meshing parameters
++
++       This member function transfers all the meshing parameters 
++       defined in the local meshing parameters structure of nglib into 
++       the internal meshing parameters structure used by the Netgen core
++   */
++   DLL_HEADER void Transfer_Parameters();
++};
++
++
++
++
++// *** Functions Exported by this Library *************
++
++// ------------------------------------------------------------------
++// Netgen library initialisation / destruction functions
++
++/*! \brief Initialise the Netgen library and prepare for use
++
++    This function needs to be called by the third-party 
++    program before beginning to use the other Netgen 
++    specific functions.
++*/
++DLL_HEADER void Ng_Init ();
++
++
++/*! \brief Exit the Netgen meshing kernel in a clean manner
++
++    Use this function to exit the meshing sub-system in 
++    a clean and orderly manner.
++*/
++DLL_HEADER void Ng_Exit ();
++  
++
++/*! \brief Create a new (and empty) Netgen Mesh Structure
++
++    This function creates a new Netgen Mesh, initialises 
++    it, and returns a pointer to the created mesh structure. 
++
++    Use the returned pointer for subsequent operations 
++    which involve mesh operations.
++
++    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh
++*/
++DLL_HEADER  Ng_Mesh * Ng_NewMesh ();
++
++
++/*! \brief Delete an existing Netgen Mesh Structure
++
++    Use this function to delete an existing Netgen mesh 
++    structure and release the used memory. 
++
++    \param mesh Pointer to an existing Netgen Mesh structure 
++                of type #Ng_Mesh
++*/
++DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh);
++
++
++/*! \brief Save a Netgen Mesh to disk
++
++    This function allows a generated mesh structure to be saved 
++    to disk.
++
++    A Mesh saved using this function, will be written to disk 
++    in the Netgen VOL file format.
++
++    \param mesh    Pointer to an existing Netgen Mesh structure 
++                   of type #Ng_Mesh
++    \param filename Pointer to a character array containing the 
++                    name of the file to which the mesh should 
++                    be saved
++*/
++DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename);
++
++
++/*! \brief Load a Netgen VOL Mesh from disk into memory
++
++    A Netgen mesh saved in the internal VOL format can be loaded 
++    into a Netgen Mesh structure using this function. 
++
++    \param filename Pointer to a character array containing the 
++                    name of the file to load
++    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh containing 
++                    the mesh loaded from disk
++*/
++DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename);
++
++
++/*! \brief Merge a Netgen VOL Mesh from disk into an existing mesh in memory
++
++    A Netgen mesh saved in the internal VOL format can be merged 
++    into an existing Netgen Mesh structure using this function. 
++
++    \param mesh       Name of the Mesh structure already existent in memory
++    \param filename   Pointer to a character array containing the 
++                      name of the file to load
++    \return Ng_Result Status of the merge operation
++*/
++DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh, const char* filename);
++
++
++/*! \brief Merge one Netgen Mesh into another Netgen Mesh in the case 
++    when both are already in memory
++
++    (NOTE: FUNCTION STILL WORK IN PROGRESS!!!)
++
++    This function can be used to merge two Netgen meshes already present 
++    in memory.
++
++    \param mesh1      Parent Mesh structure into which the second mesh 
++                      will be merged
++    \param mesh2      Child mesh structure which will get merged into 
++                      the parent mesh
++    \return Ng_Result Status of the merge operation
++*/
++DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh1, Ng_Mesh * mesh2);
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Basic Meshing functions for manually adding points, surface elements 
++// and volume elements to a Netgen Mesh structure
++
++/*! \brief Add a point to a given Netgen Mesh Structure
++
++    This function allows points to be directly added to a Netgen 
++    mesh structure by providing the co-ordinates.
++
++    Each call to the function allows only one point to be added.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param x    Pointer to an array of type double containing the co-ordinates 
++                of the point to be added in the form: \n
++                - x[0] = X co-ordinate
++                - x[1] = Y co-ordinate
++                - x[2] = Z co-ordinate
++*/
++DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x);
++
++
++/*! \brief Add a surface element to a given Netgen Mesh Structure
++
++    This function allows the top-level code to directly add individual 
++    Surface Elements to a Netgen Mesh Structure by providing the type of 
++    element to be added and the indices of the points which constitute the 
++    element.
++
++    Note: 
++    - The points referred to by the surface elements must have been
++      added prior to calling this function. 
++    - Currently only triangular elements are supported, and the Surface Element 
++      Type argument is not used.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param et   Surface Element type provided via the enumerated type 
++                #Ng_Surface_Element_Type 
++    \param pi   Pointer to an array of integers containing the indices of the 
++                points which constitute the surface element being added
++*/
++DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et, int * pi);
++
++
++/*! \brief Add a volume element to a given Netgen Mesh Structure
++
++    This function allows the top-level code to directly add individual 
++    Volume Elements to a Netgen Mesh Structure by providing the type of 
++    element to be added and the indices of the points which constitute the 
++    element.
++
++    Note: 
++    - The points referred to by the volume elements must have been
++      added prior to calling this function. 
++    - Currently only tetrahedral elements are supported, and the Volume Element 
++      Type argument is not used.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param et   Volume Element type provided via the enumerated type 
++                #Ng_Volume_Element_Type 
++    \param pi   Pointer to an array of integers containing the indices of the 
++                points which constitute the volume element being added
++
++*/
++DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et, int * pi);
++  
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Local Mesh Size restriction / limiting utilities
++
++/*! \brief Apply a global restriction on mesh element size
++
++    This utility allows the user to apply a global mesh element 
++    size limitation. 
++
++    During mesh creation, in the absence of an explicit local 
++    size restriction around the neighbourhood of a point within 
++    the meshing domain, this global size restriction will be 
++    utilised.
++
++    Note: This function only limits the Maximum 
++    size of an element within the mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param h    Variable of type double, specifying the maximum
++                allowable mesh size
++*/
++DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h);
++
++
++/*! \brief Locally restrict the mesh element size at the given point
++
++    Unlike the function #Ng_RestrictMeshSizeGlobal, this function 
++    allows the user to locally restrict the maximum allowable mesh 
++    size at a given point.
++
++    The point is specified via its three cartesian co-ordinates.
++
++    Note: This function only limits the Maximum size 
++    of the elements around the specified point.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param p    Pointer to an Array of type double, containing 
++                the three co-ordinates of the point in the form: \n
++                - p[0] = X co-ordinate
++                - p[1] = Y co-ordinate
++                - p[2] = Z co-ordinate
++    \param h    Variable of type double, specifying the maximum
++                allowable mesh size at that point
++*/
++DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h);
++
++
++/*! \brief Locally restrict the mesh element size within a specified box
++
++    Similar to the function #Ng_RestrictMeshSizePoint, this function 
++    allows the size of elements within a mesh to be locally limited.
++
++    However, rather than limit the mesh size at a single point, this 
++    utility restricts the local mesh size within a 3D Box region, specified 
++    via the co-ordinates of the two diagonally opposite points of a cuboid.
++
++    Note: This function only limits the Maximum size 
++    of the elements within the specified region.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param pmin Pointer to an Array of type double, containing 
++                the three co-ordinates of the first point of the cuboid: \n
++                - pmin[0] = X co-ordinate
++                - pmin[1] = Y co-ordinate
++                - pmin[2] = Z co-ordinate
++    \param pmax Pointer to an Array of type double, containing 
++                the three co-ordinates of the opposite point of the 
++                cuboid: \n
++                - pmax[0] = X co-ordinate
++                - pmax[1] = Y co-ordinate
++                - pmax[2] = Z co-ordinate
++    \param h    Variable of type double, specifying the maximum
++                allowable mesh size at that point
++*/
++DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h);
++
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// 3D Mesh Generation functions
++
++/*! \brief Create a 3D Volume Mesh given a Surface Mesh
++
++    After creating a surface mesh, this function can be utilised 
++    to automatically generate the corresponding 3D Volume Mesh.
++
++    Mesh generation parameters (such as grading, maximum element size, 
++    etc.) are specified via the meshing parameters class which also 
++    needs to be passed to this function.
++
++    Note: Currently, Netgen generates pure tetrahedral volume 
++    meshes.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param mp   Pointer to a copy of the Meshing Parameters class
++                (#Ng_Meshing_Parameters), filled up with the 
++                required values
++
++    \return Ng_Result Status of the Mesh Generation routine. More 
++                      details regarding the return value can be 
++                      found in the description of #Ng_Result
++*/
++DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
++
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Basic Mesh information functions
++
++/*! \brief Returns the Number of Points present in the specified Mesh
++
++    Given an already existent Netgen Mesh Structure, this function 
++    returns the number of points currently present within the Mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \return 
++                Integer Data-type with the number of points in the Mesh
++*/
++DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh);
++
++
++/*! \brief Returns the Number of Surface Elements present in the specified Mesh
++
++    Given an already existent Netgen Mesh Structure, this function 
++    returns the number of surface elements currently present within 
++    the Mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \return 
++                Integer Data-type with the number of surface elements in the Mesh
++*/
++DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh);
++
++
++/*! \brief Returns the Number of Volume Elements present in the specified Mesh
++
++    Given an already existent Netgen Mesh Structure, this function 
++    returns the number of volume elements currently present within 
++    the Mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \return 
++                Integer Data-type with the number of volume elements in the Mesh
++*/
++DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh);
++
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Mesh Topology functions
++// Use these functions to extract points, surface / volume elements, 
++// perform topological searches, etc..etc...
++  
++//  Return the Point Coordinates of a specified Point
++// The x, y and z co-ordinates are returned in the array pointer as 
++// x[0] = x ; x[1] = y ; x[2] = z
++DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x);
++
++
++
++// return surface and volume element in pi
++DLL_HEADER Ng_Surface_Element_Type 
++Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi);
++
++DLL_HEADER Ng_Volume_Element_Type
++Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi);
++
++// ------------------------------------------------------------------
++
++
++
++
++// **********************************************************
++// **   2D Meshing                                         **
++// **********************************************************
++
++
++// feeds points and boundary to mesh
++
++DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x);
++DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2);
++  
++// ask for number of points, elements and boundary segments
++DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh);
++DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh);
++DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh);
++  
++//  return point coordinates
++DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x);
++
++// return 2d elements
++DLL_HEADER Ng_Surface_Element_Type 
++Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
++
++// return 2d boundary segment
++DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
++
++
++// load 2d netgen spline geometry
++DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename);
++
++// generate 2d mesh, mesh is allocated by function
++DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
++                                         Ng_Mesh ** mesh,
++                                         Ng_Meshing_Parameters * mp);
++  
++DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
++                                  Ng_Mesh * mesh,
++                                  int levels);
++  
++
++
++
++
++// **********************************************************
++// **   STL Meshing                                        **
++// **********************************************************
++
++
++// loads geometry from STL file
++DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary = 0);
++
++
++// generate new STL Geometry
++DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ();
++  
++
++// fills STL Geometry
++// positive orientation
++// normal vector may be null-pointer
++DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
++                         double * p1, double * p2, double * p3, 
++                         double * nv = NULL);
++
++// add (optional) edges :
++DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
++                     double * p1, double * p2);
++
++// after adding triangles (and edges) initialize
++DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom);
++
++// automatically generates edges:
++DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
++                            Ng_Mesh* mesh,
++                            Ng_Meshing_Parameters * mp);
++
++
++// generates mesh, empty mesh must be already created.
++DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp);
++
++
++#ifdef ACIS
++
++// **********************************************************
++// **   ACIS Meshing                                       **
++// **********************************************************
++
++/// Data type for NETGEN STL geomty
++typedef void * Ng_ACIS_Geometry;
++
++// loads geometry from STL file
++DLL_HEADER Ng_ACIS_Geometry * Ng_ACIS_LoadGeometry (const char * filename);
++  
++// generates mesh, empty mesh must be already created.
++DLL_HEADER Ng_Result Ng_ACIS_GenerateSurfaceMesh (Ng_ACIS_Geometry * geom,
++                                                  Ng_Mesh * mesh,
++                                                  Ng_Meshing_Parameters * mp);
++
++
++#endif
++
++
++
++#ifdef OCCGEOMETRY
++
++// **********************************************************
++// **   OpenCascade Geometry / Meshing Utilities           **
++// **********************************************************
++
++// Create new OCC Geometry Object
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
++
++// Delete an OCC Geometry Object
++DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
++
++// Loads geometry from STEP file
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
++
++// Loads geometry from IGES file
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
++
++// Loads geometry from BREP file
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
++
++// Set the local mesh size based on geometry / topology
++DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
++                                              Ng_Mesh * mesh,
++                                              Ng_Meshing_Parameters * mp);
++
++// Mesh the edges and add Face descriptors to prepare for surface meshing
++DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
++                                              Ng_Mesh * mesh,
++                                              Ng_Meshing_Parameters * mp);
++
++// Mesh the surfaces of an OCC geometry
++DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp); 
++
++// Get the face map of an already loaded OCC geometry
++DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
++                                    Ng_OCC_TopTools_IndexedMapOfShape * FMap);
++
++#endif // OCCGEOMETRY
++
++
++
++// **********************************************************
++// **   Mesh refinement algorithms                         **
++// **********************************************************
++
++// uniform mesh refinement
++DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh);
++
++
++// uniform mesh refinement with geometry adaption:
++
++DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
++					  Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
++					   Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
++					   Ng_Mesh * mesh);
++
++#ifdef OCCGEOMETRY
++DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
++					   Ng_Mesh * mesh);
++#endif
++
++
++
++// **********************************************************
++// **   Second Order mesh algorithms                       **
++// **********************************************************
++
++// convert mesh to second order
++DLL_HEADER void Ng_Generate_SecondOrder (Ng_Mesh * mesh);
++
++
++// convert mesh to second order with geometry adaption:
++
++DLL_HEADER void Ng_2D_Generate_SecondOrder (Ng_Geometry_2D * geom,
++					  Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_STL_Generate_SecondOrder (Ng_STL_Geometry * geom,
++					   Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
++					   Ng_Mesh * mesh);
++
++#ifdef OCCGEOMETRY
++DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
++					   Ng_Mesh * mesh);
++#endif
++
++
++#endif // NGLIB
diff --git a/products/patches/netgen49ForSalome.patch b/products/patches/netgen49ForSalome.patch
new file mode 100644
index 0000000..0e78c4a
--- /dev/null
+++ b/products/patches/netgen49ForSalome.patch
@@ -0,0 +1,1109 @@
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp netgen-4.9.13_new/libsrc/meshing/meshtype.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp	2009-09-13 14:28:38.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -1,4 +1,5 @@
+ #include 
++#include  // to get DBL_MIN defined
+ 
+ #include "meshing.hpp"  
+ 
+@@ -650,7 +651,8 @@
+ 
+         double det = trans.Det();
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -706,7 +708,8 @@
+ 
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+ 
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -790,7 +793,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -840,7 +844,8 @@
+         frob /= 2;
+ 
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1857,7 +1862,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+ 
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2035,7 +2041,8 @@
+ 
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2107,7 +2114,8 @@
+         ddet *= -1;
+ 
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2189,7 +2197,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+@@ -2522,10 +2530,10 @@
+ 
+   MeshingParameters :: MeshingParameters ()
+   {
+-    optimize3d = "cmdmustm";
++    optimize3d = (char*)"cmdmustm"; // optimize3d = "cmdmustm";
+     //optimize3d = "cmdmstm";
+     optsteps3d = 3;
+-    optimize2d = "smsmsmSmSmSm";
++    optimize2d = (char*)"smsmsmSmSmSm"; // optimize2d = "smsmsmSmSmSm";
+     optsteps2d = 3;
+     opterrpow = 2;
+     blockfill = 1;
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp netgen-4.9.13_new/libsrc/meshing/meshtype.hpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp	2009-11-09 13:50:43.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.hpp	2014-07-22 13:01:28.000000000 +0400
+@@ -12,6 +12,7 @@
+     Classes for NETGEN
+ */
+ 
++class Mesh; // added due to compilation errors on some platforms
+ 
+ enum ELEMENT_TYPE { 
+   SEGMENT = 1, SEGMENT3 = 2,
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp	2009-11-09 13:47:09.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -302,7 +302,8 @@
+     vgrad = 0;
+     badness = 0;
+ 
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+ 
+     //  meshthis -> ProjectPoint (surfi, pp1);
+@@ -360,7 +361,8 @@
+     vgrad = 0;
+     badness = 0;
+ 
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+ 
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+ 
+@@ -514,7 +516,8 @@
+     vgrad = 0;
+     badness = 0;
+ 
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+ 
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+ 
+@@ -586,7 +589,8 @@
+     vgrad = 0;
+     badness = 0;
+ 
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+ 
+     // pp1 = sp1;
+     //    pp1.Add2 (x.Get(1), t1, x.Get(2), t2);
+@@ -973,7 +977,7 @@
+ 		{
+ 		  mesh[pi] = Point<3> (origp);
+ 		}
+-	    
++	      break; // exit as  is not used anymore
+ 	    }
+ 	}
+ 
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp netgen-4.9.13_new/libsrc/occ/occconstruction.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp	2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occconstruction.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -28,7 +28,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
++//#include 
+ //#include 
+ #include 
+ #include 
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp	2010-03-16 09:30:07.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -15,6 +15,8 @@
+ 
+ #define DIVIDEEDGESECTIONS 1000
+ #define IGNORECURVELENGTH 1e-4
++// a small value used to avoid FPE
++#define VSMALL 1e-10
+ 
+ 
+    bool merge_solids = 1;
+@@ -26,7 +28,8 @@
+       double nq = n*q;
+ 
+       Point<3> p = p0 + 0.5*n;
+-      double lambda = (p-l.p0)*n / nq;
++      // double lambda = (p-l.p0)*n / nq;  -- avoid FPE
++      double lambda = (fabs(nq) > 1e-10) ? (p-l.p0)*n / nq : -1;
+ 
+       if (lambda >= 0 && lambda <= 1)
+       {
+@@ -54,6 +57,8 @@
+ 
+ 
+ 
++   
++   static // useless out of this file
+    double ComputeH (double kappa)
+    {
+       double hret;
+@@ -62,7 +67,8 @@
+       if (mparam.maxh * kappa < 1)
+          hret = mparam.maxh;
+       else
+-         hret = 1 / kappa;
++        // hret = 1 / kappa; -- avoid FPE
++        hret = 1 / (kappa + VSMALL);
+ 
+       if (mparam.maxh < hret)
+          hret = mparam.maxh;
+@@ -71,8 +77,7 @@
+    }
+ 
+ 
+-
+-
++   static // useless out of this file
+    void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
+                            BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
+    {
+@@ -168,8 +173,8 @@
+          if(h < 1e-4*maxside)
+             return;
+ 
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+ 
+       if (h < maxside && depth < 10)
+@@ -228,6 +233,7 @@
+ 
+ 
+ 
++   static // useless out of this file
+    void DivideEdge (TopoDS_Edge & edge, Array & ps,
+                     Array & params, Mesh & mesh)
+    {
+@@ -247,8 +253,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+ 
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+ 
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+ 
+@@ -256,15 +262,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per /DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
+-            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
++                1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++                pnt.Distance(oldpnt));
+ 
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+ 
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+ 
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -279,7 +289,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -323,6 +336,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+ 
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+ 
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -332,7 +348,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -362,6 +379,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+ 
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -381,6 +399,7 @@
+       int facenr = 0;
+       int edgenr = 0;
+ 
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+ 
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -442,6 +461,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+ 
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -474,20 +494,104 @@
+ 
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
++                   }
++                   else
++                   {
++                     ip += first_vp - 1;
++                   }
++                 }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+ 
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+ 
+@@ -497,17 +601,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+ 
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -591,6 +698,8 @@
+       //		(*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //	exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+ 
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+@@ -633,7 +742,8 @@
+          }
+ 
+          (*testout) << "mesh face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         // multithread.percent = 100 * k / (mesh.GetNFD()+1e-10); -- avoid FPE
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          geom.facemeshstatus[k-1] = -1;
+ 
+ 
+@@ -901,7 +1011,8 @@
+          //      if (k != 36) continue;
+ 
+          //      (*testout) << "optimize face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         //multithread.percent = 100 * k / (mesh.GetNFD()+1e-10); -- avoid FPE
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+ 
+          FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+ 
+@@ -1456,3 +1567,4 @@
+ }
+ 
+ #endif
++
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.cpp netgen-4.9.13_new/libsrc/occ/occgeom.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.cpp	2010-03-05 16:16:21.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include  // -- to optimize Project() and FastProject()
++#include 
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,10 +18,17 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+ 
+-
+ namespace netgen
+ {
+-   void OCCGeometry :: PrintNrShapes ()
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
++  void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+       int count = 0;
+@@ -951,25 +960,58 @@
+    }
+ 
+ 
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+ 
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+ 
+       gp_Pnt pnt(p(0), p(1), p(2));
+ 
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
+-
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++  
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
++  
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+ 
++      return true;
+    }
+ 
+ 
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+ 
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++    
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++    
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+ 
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      // writer.RelativeMode() = Standard_False;
+ 
+-      writer.SetDeflection(0.02);
++      // writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+ 
+       cout << "done" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.hpp netgen-4.9.13_new/libsrc/occ/occgeom.hpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.hpp	2010-01-14 19:56:19.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.hpp	2014-07-22 13:09:03.000000000 +0400
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include 
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
+ 
++// -- Optimization: to use cached projector and classifier
++#include 
++class Handle_ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ 
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -190,6 +198,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap fprjmap;
++      mutable NCollection_DataMap fclsmap;
+ 
+    public:
+       TopoDS_Shape shape;
+@@ -241,6 +252,8 @@
+          vmap.Clear();
+       }
+ 
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+ 
+       Box<3> GetBoundingBox()
+@@ -260,9 +273,14 @@
+       Point<3> Center()
+       {  return center;}
+ 
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
+ 
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp	2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -6,6 +6,7 @@
+ #include 
+ #include 
+ #include 
++#include  // -- moved here from occgeom.hpp
+ 
+ 
+ namespace netgen
+@@ -434,23 +435,33 @@
+ 
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+ 
+ 
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+ 
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
+-	p = hp;
+-	return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
++    p = hp;
++    return ok;
+   }
+ 
+ 
+@@ -680,7 +691,8 @@
+ 	if (!geometry.FastProject (surfi, hnewp, u, v))
+ 	  {
+ 	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	    geometry.Project (surfi, hnewp);
++	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++	    geometry.Project (surfi, hnewp, u, v);
+ 	  }
+ 
+ 	newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }
+ 
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi)
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      // geometry.Project (surfi, p); -- Project() changed for optimization
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi)
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+ 	{
+ 	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	  geometry.Project (surfi, p);
++          double u, v;
++	  geometry.Project (surfi, p, u, v);
+ 	}
+-  };
++  }
+ 
+ 
+ 
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx	2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx	2014-07-22 13:01:28.000000000 +0400
+@@ -86,6 +86,9 @@
+ #include 
+ #include 
+ #include 
++
++#include 
++
+ #include 
+ 
+ //=======================================================================
+@@ -243,7 +246,12 @@
+       Standard_Integer i, nbExt = anExtPS.NbExt();
+       Extrema_POnSurf aPOnSurf;
+       for (i = 1; i <= nbExt; ++i )
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++        if (anExtPS.SquareDistance( i ) <= TolE * TolE) {
++#else
+         if (anExtPS.Value( i ) <= TolE) {
++#endif
+           aPOnSurf = anExtPS.Point( i );
+           break;
+         }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx	2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx	2014-07-22 13:01:28.000000000 +0400
+@@ -22,7 +22,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+@@ -51,6 +50,15 @@
+ #include 
+ #include 
+ 
++#include 
++
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++#include 
++#else
++#include 
++#endif
++
+ //=======================================================================
+ //function : Partition_Loop2d
+ //purpose  :
+@@ -209,7 +217,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+ 
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+ 
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -233,7 +241,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+ 
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+@@ -519,7 +527,12 @@
+     DC.Initialize( DegEdge, F );
+ 
+   // avoid intersecting twice the same edge
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++  TopTools_DataMapOfShapeReal EUMap ( EdgesList.Extent() );
++#else
+   BRepOffset_DataMapOfShapeReal EUMap ( EdgesList.Extent() );
++#endif
+ 
+   Standard_Real U, f, l;
+   BRep_Tool::Range (DegEdge, f, l);
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx	2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx	2014-07-22 13:01:28.000000000 +0400
+@@ -178,7 +178,7 @@
+       }
+     }
+ 
+-    Standard_Real anglemax = - PI;
++    Standard_Real anglemax = - M_PI;
+     TopoDS_Edge   SelectedEdge;	
+     for ( itl.Initialize(LE); itl.More(); itl.Next()) {
+       const TopoDS_Edge& E = TopoDS::Edge(itl.Value());
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx	2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx	2014-07-22 13:01:28.000000000 +0400
+@@ -79,6 +79,8 @@
+ #include 
+ #include 
+ 
++#include 
++
+ #ifdef DEB
+ //# define PART_PERF
+ #endif
+@@ -1169,7 +1171,12 @@
+           for (; j<=nbj && ok; ++j) {
+             if (Extrema.IsMin(j)) {
+ 	      hasMin = Standard_True;
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++              ok = Extrema.SquareDistance(j) <= tol * tol;
++#else
+               ok = Extrema.Value(j) <= tol;
++#endif
+ 	    }
+           }
+         }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/utilities.h netgen-4.9.13_new/libsrc/occ/utilities.h
+--- netgen-4.9.13_orig/libsrc/occ/utilities.h	2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/utilities.h	2014-07-22 13:01:28.000000000 +0400
+@@ -33,6 +33,7 @@
+ 
+ #include 
+ #include 
++#include 
+ #include 
+ // #include "SALOME_Log.hxx"
+ 
+diff -Naur netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp
+--- netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp	2009-08-10 15:40:51.000000000 +0400
++++ netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp	2014-07-22 13:01:28.000000000 +0400
+@@ -1435,7 +1435,8 @@
+ 
+ 	  if (!optstring || strlen(optstring) == 0)
+ 	    {
+-	      mparam.optimize2d = "smcm";
++	      //mparam.optimize2d = (char*)"smcm";
++              mparam.optimize2d = (char*)"smcm";
+ 	    }
+ 	  else
+ 	    {
+@@ -1451,7 +1452,8 @@
+ 				 mparam.grading);
+ 	      mesh -> LoadLocalMeshSize (mparam.meshsizefilename);	      
+ 	      mesh -> CalcLocalHFromSurfaceCurvature (stlparam.resthsurfmeshcurvfac);
+-	      mparam.optimize2d = "cmsmSm";
++	      //mparam.optimize2d = (char*)"cmsmSm";
++              mparam.optimize2d = (char*)"cmsmSm";
+ 	      STLSurfaceOptimization (*stlgeometry, *mesh, mparam);
+ #ifdef STAT_STREAM
+ 	      (*statout) << GetTime() << " & ";
+@@ -1557,7 +1559,8 @@
+ 
+ 	  if (!optstring || strlen(optstring) == 0)
+ 	    {
+-	      mparam.optimize3d = "cmdmstm";
++              //mparam.optimize3d = "cmdmstm";
++	      mparam.optimize3d = (char*)"cmdmstm";
+ 	    }
+ 	  else
+ 	    {
+diff -Naur netgen-4.9.13_orig/nglib/nglib.h netgen-4.9.13_new/nglib/nglib.h
+--- netgen-4.9.13_orig/nglib/nglib.h	2010-05-18 15:20:25.000000000 +0400
++++ netgen-4.9.13_new/nglib/nglib.h	2014-07-22 13:01:28.000000000 +0400
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
diff --git a/products/patches/netgen53ForSalome.patch b/products/patches/netgen53ForSalome.patch
new file mode 100644
index 0000000..ccd4e8c
--- /dev/null
+++ b/products/patches/netgen53ForSalome.patch
@@ -0,0 +1,1455 @@
+diff -NaurwB netgen-5.3.1_orig/Makefile.am netgen-5.3.1_new/Makefile.am
+--- netgen-5.3.1_orig/Makefile.am	2016-10-21 17:32:01.000000000 +0300
++++ netgen-5.3.1_new/Makefile.am	2016-10-21 17:31:54.000000000 +0300
+@@ -2,7 +2,7 @@
+ 
+ METASOURCES = AUTO
+ 
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ 
+ # TESTS = ng/netgen -batchmode
+ 
+diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in
+--- netgen-5.3.1_orig/Makefile.in	2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_new/Makefile.in	2016-10-03 16:17:10.164707368 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+ 
+diff -NaurwB netgen-5.3.1_orig/configure.ac netgen-5.3.1_new/configure.ac
+--- netgen-5.3.1_orig/configure.ac	2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_new/configure.ac	2016-09-29 14:34:11.957389447 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+ 
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+ 
+@@ -42,8 +42,8 @@
+ 
+ if test a$occon = atrue ; then
+ 
+-	AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-	AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++	AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++	AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ 
+ #  -lTKDCAF
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/findip.hpp netgen-5.3.1_new/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/findip.hpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/findip.hpp	2016-09-30 20:38:56.662234111 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
+ 
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array a;
+   Array c;
+   Mat<3> m, inv;
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_new/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/improve3.cpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/improve3.cpp	2016-10-03 16:16:57.636639300 +0300
+@@ -1219,6 +1219,7 @@
+ 
+ 	      tetused = 0;
+ 	      tetused[0] = 1;
++              int nbtetused = 0;
+ 
+ 	      for (int l = 2; l < nsuround; l++)
+ 		{
+@@ -1239,10 +1240,12 @@
+ 			      
+ 			      tetused[k] = 1; 
+ 			      suroundpts[l] = newpi;
++                              ++nbtetused;
+ 			    }			
+ 		      }
+ 		}
+-
++              if ( nbtetused < nsuround )
++                continue;
+ 	      
+ 	      bad1 = 0;
+ 	      for (int k = 0; k < nsuround; k++)
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_new/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.cpp	2016-09-29 14:04:51.500148293 +0300
+@@ -1,4 +1,5 @@
+ #include 
++#include  // to get DBL_MIN defined
+ 
+ #include "meshing.hpp"  
+ 
+@@ -666,7 +667,8 @@
+ 
+         double det = trans.Det();
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+ 
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+ 
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+ 
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+ 
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+ 
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+ 
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_new/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.hpp	2016-09-30 14:28:09.147575801 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
+ 
++class Mesh; // added due to compilation errors on some platforms
+ 
+ 
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+ 	  return 8;
+ 	default:
+ #ifdef DEBUG
+-	  PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++	  PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+ 	    ;
+ 	}
+@@ -682,7 +683,7 @@
+ 	case PRISM12: return 5;
+ 	default:
+ #ifdef DEBUG
+-	  PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++	  PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+ 	    ;
+ 	}
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx	2016-09-29 14:44:01.996464598 +0300
+@@ -47,9 +47,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx	2016-09-29 14:44:01.996464598 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+ 
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include 
++
++#if OCC_VERSION_MAJOR < 7
+ #include 
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include 
+ #endif
++
++#include 
++#include 
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+ 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx	2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+ 
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+ 
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include 
++
++#if OCC_VERSION_MAJOR < 7
+ #include 
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include 
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include 
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include 
+ #endif
+@@ -43,10 +48,7 @@
+ #include 
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+ 
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ 
+ #ifndef _Standard_HeaderFile
+ #include 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx	2016-09-29 14:04:51.504148314 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+ 
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+ 
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+ 
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+ 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include 
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include 
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include 
+ #endif
+@@ -23,8 +26,6 @@
+ #include 
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx	2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx	2016-09-29 14:44:02.004464639 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include 
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include 
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include 
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+ 
+ 
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_new/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occconstruction.cpp	2016-09-29 14:04:51.500148293 +0300
+@@ -28,7 +28,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
++//#include 
+ //#include 
+ #include 
+ #include 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp	2016-09-29 14:04:51.500148293 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)
+             return;
+ 
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+ 
+       if (h < maxside && depth < 10)
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+ 
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+ 
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+ 
+@@ -259,15 +259,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per /DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++                pnt.Distance(oldpnt));
+ 
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+ 
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+ 
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -282,7 +286,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+ 
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+ 
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -335,7 +345,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -365,6 +376,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+ 
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -384,6 +396,7 @@
+       int facenr = 0;
+       int edgenr = 0;
+ 
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+ 
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+ 
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -477,20 +491,104 @@
+ 
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+ 
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+ 
+@@ -500,17 +598,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+ 
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -594,6 +695,8 @@
+       //		(*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //	exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+ 
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_new/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.cpp	2016-09-29 16:22:31.636328123 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include  // -- to optimize Project() and FastProject()
++#include 
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+ 
+-
+ namespace netgen
+ {
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+@@ -112,7 +121,7 @@
+       double surfacecont = 0;
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;
+ 
+          Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+ 
+ 
+@@ -200,7 +209,7 @@
+ 
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;
+ 
+          Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+ 
+ 
+@@ -284,7 +293,7 @@
+ 
+          {
+             BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+ 
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+@@ -312,7 +321,7 @@
+ 
+ 
+          {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+             {
+@@ -438,7 +447,7 @@
+ 
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -483,7 +492,7 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+                   TopoDS_Solid newsolid = solid;
+                   BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //		  rebuild->Apply(shape);
+                   rebuild->Replace(solid, newsolid, Standard_False);
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+@@ -906,7 +915,7 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+             TopoDS_Solid newsolid = solid;
+             BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Replace(solid, newsolid, Standard_False);
+ 
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+@@ -951,25 +960,58 @@
+    }
+ 
+ 
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+ 
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+ 
+       gp_Pnt pnt(p(0), p(1), p(2));
+ 
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
+ 
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
+ 
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+ 
++      return true;
+    }
+ 
+ 
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+ 
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
+ 
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
+ 
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+ 
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      //writer.RelativeMode() = Standard_False;
+ 
+-      writer.SetDeflection(0.02);
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+ 
+       cout << "done" << endl;
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;
+ 
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+ 
+       // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
++      Handle(TDocStd_Document) iges_doc;
+ 
+       // Check if a IGES File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);
+ 
+       // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+ 
+       TDF_LabelSequence iges_shapes;
+       iges_shape_contents->GetShapes(iges_shapes);
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;
+ 
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+ 
+       // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
++      Handle(TDocStd_Document) step_doc;
+ 
+       // Check if a STEP File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);
+ 
+       // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+ 
+       TDF_LabelSequence step_shapes;
+       step_shape_contents->GetShapes(step_shapes);
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when 
+       // opening BREP Files, since BREP Files have no colour data.
+       // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();
+       occgeo->changed = 1;
+       occgeo->BuildFMap();
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_new/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.hpp	2016-09-29 14:44:01.996464598 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include 
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
+ 
++// -- Optimization: to use cached projector and classifier
++#include 
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ 
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap fprjmap;
++      mutable NCollection_DataMap fclsmap;
+ 
+    public:
+       TopoDS_Shape shape;
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support
+       // XCAF Handle to make the face colours available to the rest of
+       // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
++      Handle(XCAFDoc_ColorTool) face_colours;
+ 
+      mutable int changed;
+       Array facemeshstatus;
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;
+ 
+ 
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+ 
+       Box<3> GetBoundingBox()
+@@ -266,9 +279,14 @@
+       Point<3> Center()
+       {  return center;}
+ 
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
+ 
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp	2016-09-29 14:08:00.045144560 +0300
+@@ -6,6 +6,7 @@
+ #include 
+ #include 
+ #include 
++#include  // -- moved here from occgeom.hpp
+ 
+ 
+ namespace netgen
+@@ -96,13 +97,16 @@
+ 
+ 	n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+ 	n(0)=lprop.Normal().X();
+ 	n(1)=lprop.Normal().Y();
+ 	n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+ 	(*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +435,33 @@
+ 
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+ 
+ 
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+ 
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+ 	p = hp;
+-	return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+ 
+ 
+@@ -680,7 +691,8 @@
+ 	if (!geometry.FastProject (surfi, hnewp, u, v))
+ 	  {
+ 	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	    geometry.Project (surfi, hnewp);
++	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++	    geometry.Project (surfi, hnewp, u, v);
+ 	  }
+ 
+ 	newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+ 	{
+ 	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	  geometry.Project (surfi, p);
++          double u, v;
++	  geometry.Project (surfi, p, u, v);
++	}
+ 	}
+-  };
+ 
+ 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/utilities.h netgen-5.3.1_new/libsrc/occ/utilities.h
+--- netgen-5.3.1_orig/libsrc/occ/utilities.h	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/utilities.h	2016-09-29 14:04:51.504148314 +0300
+@@ -33,6 +33,7 @@
+ 
+ #include 
+ #include 
++#include 
+ #include 
+ // #include "SALOME_Log.hxx"
+ 
+diff -NaurwB netgen-5.3.1_orig/nglib/nglib.h netgen-5.3.1_new/nglib/nglib.h
+--- netgen-5.3.1_orig/nglib/nglib.h	2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/nglib.h	2016-09-29 14:04:51.504148314 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
+diff -Naur netgen-5.3.1_orig/libsrc/csg/Makefile.am netgen-5.3.1_new/libsrc/csg/Makefile.am
+--- netgen-5.3.1_orig/libsrc/csg/Makefile.am	2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/csg/Makefile.am	2016-11-08 17:48:02.000000000 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ 
+ 
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+ 
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_new/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_orig/libsrc/geom2d/Makefile.am	2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/geom2d/Makefile.am	2016-11-08 17:49:13.000000000 +0300
+@@ -4,16 +4,15 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ 
+ 
+ 
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD = 	$(top_builddir)/libsrc/meshing/libmesh.la
+ 
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_orig/libsrc/interface/Makefile.am netgen-5.3.1_new/libsrc/interface/Makefile.am
+--- netgen-5.3.1_orig/libsrc/interface/Makefile.am	2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_new/libsrc/interface/Makefile.am	2016-11-08 17:49:26.000000000 +0300
+@@ -2,14 +2,11 @@
+ 
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+ 	read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+ 	writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+ 	writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+ 	wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+ 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/Makefile.am netgen-5.3.1_new/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_orig/libsrc/meshing/Makefile.am	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/Makefile.am	2016-11-08 17:48:44.000000000 +0300
+@@ -15,7 +15,7 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ 
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+ 	clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp	    \
+@@ -30,8 +30,5 @@
+ 	topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+ 	parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+ 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-	$(top_builddir)/libsrc/gprim/libgprim.la \
+-	$(top_builddir)/libsrc/general/libgen.la \
+-	-lz
++libmesh_la_LIBADD = -lz
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/occ/Makefile.am netgen-5.3.1_new/libsrc/occ/Makefile.am
+--- netgen-5.3.1_orig/libsrc/occ/Makefile.am	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Makefile.am	2016-11-08 17:30:53.000000000 +0300
+@@ -14,10 +14,10 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ 
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+ 
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_new/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/stlgeom/Makefile.am	2016-11-08 18:28:09.000000000 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ 
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ 
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+ 
+diff -Naur netgen-5.3.1_orig/nglib/Makefile.am netgen-5.3.1_new/nglib/Makefile.am
+--- netgen-5.3.1_orig/nglib/Makefile.am	2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/Makefile.am	2016-11-08 19:01:17.000000000 +0300
+@@ -14,6 +14,9 @@
+ 	$(top_builddir)/libsrc/stlgeom/libstl.la \
+ 	$(top_builddir)/libsrc/occ/libocc.la \
+ 	$(top_builddir)/libsrc/meshing/libmesh.la \
++	$(top_builddir)/libsrc/general/libgen.la \
++	$(top_builddir)/libsrc/gprim/libgprim.la \
++	$(top_builddir)/libsrc/linalg/libla.la
+ 	$(OCCLIBS) $(MPI_LIBS)
+ 
+ libnglib_la_LDFLAGS = -avoid-version
diff --git a/products/patches/netgen53ForSalomeOCCT730.patch b/products/patches/netgen53ForSalomeOCCT730.patch
new file mode 100644
index 0000000..1639721
--- /dev/null
+++ b/products/patches/netgen53ForSalomeOCCT730.patch
@@ -0,0 +1,1530 @@
+diff -Naur netgen-5.3.1_SRC_orig/Makefile.am netgen-5.3.1_SRC_modif/Makefile.am
+--- netgen-5.3.1_SRC_orig/Makefile.am	2014-08-29 13:55:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/Makefile.am	2017-09-11 18:08:21.217313702 +0300
+@@ -2,7 +2,7 @@
+ 
+ METASOURCES = AUTO
+ 
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ 
+ # TESTS = ng/netgen -batchmode
+ 
+diff -Naur netgen-5.3.1_SRC_orig/Makefile.in netgen-5.3.1_SRC_modif/Makefile.in
+--- netgen-5.3.1_SRC_orig/Makefile.in	2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_SRC_modif/Makefile.in	2017-09-11 18:08:21.225312838 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+ 
+diff -Naur netgen-5.3.1_SRC_orig/configure.ac netgen-5.3.1_SRC_modif/configure.ac
+--- netgen-5.3.1_SRC_orig/configure.ac	2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_SRC_modif/configure.ac	2017-09-11 18:08:21.226312730 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+ 
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+ 
+@@ -42,8 +42,8 @@
+ 
+ if test a$occon = atrue ; then
+ 
+-	AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-	AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++	AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++	AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ 
+ #  -lTKDCAF
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/csg/Makefile.am netgen-5.3.1_SRC_modif/libsrc/csg/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/csg/Makefile.am	2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/csg/Makefile.am	2017-09-11 18:08:21.234311865 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ 
+ 
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+ 
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_SRC_modif/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/geom2d/Makefile.am	2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/geom2d/Makefile.am	2017-09-11 18:08:21.234311865 +0300
+@@ -4,16 +4,15 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ 
+ 
+ 
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD = 	$(top_builddir)/libsrc/meshing/libmesh.la
+ 
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/interface/Makefile.am netgen-5.3.1_SRC_modif/libsrc/interface/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/interface/Makefile.am	2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/interface/Makefile.am	2017-09-11 18:08:21.234311865 +0300
+@@ -2,14 +2,11 @@
+ 
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+ 	read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+ 	writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+ 	writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+ 	wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+ 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/Makefile.am netgen-5.3.1_SRC_modif/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/Makefile.am	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/Makefile.am	2017-09-11 18:08:21.234311865 +0300
+@@ -15,7 +15,7 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ 
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+ 	clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp	    \
+@@ -30,8 +30,5 @@
+ 	topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+ 	parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+ 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-	$(top_builddir)/libsrc/gprim/libgprim.la \
+-	$(top_builddir)/libsrc/general/libgen.la \
+-	-lz
++libmesh_la_LIBADD = -lz
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/findip.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/findip.hpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/findip.hpp	2017-09-11 18:08:21.226312730 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
+ 
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array a;
+   Array c;
+   Mat<3> m, inv;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_SRC_modif/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/improve3.cpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/improve3.cpp	2017-09-11 18:08:21.227312622 +0300
+@@ -1219,6 +1219,7 @@
+ 
+ 	      tetused = 0;
+ 	      tetused[0] = 1;
++              int nbtetused = 0;
+ 
+ 	      for (int l = 2; l < nsuround; l++)
+ 		{
+@@ -1239,10 +1240,12 @@
+ 			      
+ 			      tetused[k] = 1; 
+ 			      suroundpts[l] = newpi;
++                              ++nbtetused;
+ 			    }			
+ 		      }
+ 		}
+-
++              if ( nbtetused < nsuround )
++                continue;
+ 	      
+ 	      bad1 = 0;
+ 	      for (int k = 0; k < nsuround; k++)
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.cpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.cpp	2017-09-11 18:08:21.227312622 +0300
+@@ -1,4 +1,5 @@
+ #include 
++#include  // to get DBL_MIN defined
+ 
+ #include "meshing.hpp"  
+ 
+@@ -666,7 +667,8 @@
+ 
+         double det = trans.Det();
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+ 
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+ 
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+ 
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+ 
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+ 
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+ 
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp	2017-09-11 18:08:21.228312514 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
+ 
++class Mesh; // added due to compilation errors on some platforms
+ 
+ 
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+ 	  return 8;
+ 	default:
+ #ifdef DEBUG
+-	  PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++	  PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+ 	    ;
+ 	}
+@@ -682,7 +683,7 @@
+ 	case PRISM12: return 5;
+ 	default:
+ #ifdef DEBUG
+-	  PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++	  PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+ 	    ;
+ 	}
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Makefile.am netgen-5.3.1_SRC_modif/libsrc/occ/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Makefile.am	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Makefile.am	2017-09-11 18:08:21.234311865 +0300
+@@ -14,10 +14,10 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ 
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+ 
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.cxx	2017-09-11 18:08:21.228312514 +0300
+@@ -47,9 +47,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.hxx	2017-09-11 18:08:21.228312514 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+ 
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include 
++
++#if OCC_VERSION_MAJOR < 7
+ #include 
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include 
+ #endif
++
++#include 
++#include 
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+ 
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.cxx	2017-09-11 18:08:21.229312406 +0300
+@@ -48,7 +48,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+ 
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.hxx	2017-09-11 18:08:21.229312406 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+ 
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include 
++
++#if OCC_VERSION_MAJOR < 7
+ #include 
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include 
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include 
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include 
+ #endif
+@@ -43,10 +48,7 @@
+ #include 
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+ 
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop.hxx	2017-09-11 18:08:21.229312406 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ 
+ #ifndef _Standard_HeaderFile
+ #include 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.cxx	2017-09-11 18:08:21.229312406 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+ 
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+ 
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+ 
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.hxx	2017-09-11 18:08:21.230312298 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+ 
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop3d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop3d.hxx	2017-09-11 18:08:21.230312298 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include 
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include 
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include 
+ #endif
+@@ -23,8 +26,6 @@
+ #include 
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.cxx	2017-09-11 18:08:21.230312298 +0300
+@@ -48,7 +48,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.hxx	2017-09-11 18:08:21.231312190 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include 
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include 
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include 
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+ 
+ 
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occconstruction.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occconstruction.cpp	2017-09-11 18:08:21.231312190 +0300
+@@ -28,7 +28,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
++//#include 
+ //#include 
+ #include 
+ #include 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp	2017-09-11 18:08:21.231312190 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)
+             return;
+ 
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+ 
+       if (h < maxside && depth < 10)
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+ 
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+ 
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+ 
+@@ -259,15 +259,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per /DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++                pnt.Distance(oldpnt));
+ 
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+ 
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+ 
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -282,7 +286,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+ 
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+ 
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -335,7 +345,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -365,6 +376,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+ 
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -384,6 +396,7 @@
+       int facenr = 0;
+       int edgenr = 0;
+ 
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+ 
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+ 
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -477,20 +491,104 @@
+ 
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+ 
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+ 
+@@ -500,17 +598,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+ 
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -594,6 +695,8 @@
+       //		(*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //	exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+ 
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.cpp	2017-09-11 18:08:32.836058020 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include  // -- to optimize Project() and FastProject()
++#include 
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+ 
+-
+ namespace netgen
+ {
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+@@ -112,13 +121,13 @@
+       double surfacecont = 0;
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
++               rebuild->Remove(edge);
+          }
+          shape = rebuild->Apply(shape);
+       }
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;
+ 
+          Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+ 
+ 
+@@ -187,7 +196,7 @@
+                   cout << "(natural bounds added)" <Face();
+ 
+-               rebuild->Replace(face, newface, Standard_False);
++               rebuild->Replace(face, newface);
+             }
+ 
+             // Set the original colour of the face to the newly created 
+@@ -200,13 +209,13 @@
+ 
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
++               rebuild->Remove(edge);
+          }
+          shape = rebuild->Apply(shape);
+       }
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;
+ 
+          Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+ 
+ 
+@@ -270,7 +279,7 @@
+                if(replace)
+                {
+                   TopoDS_Wire newwire = sfw->Wire();
+-                  rebuild->Replace(oldwire, newwire, Standard_False);
++                  rebuild->Replace(oldwire, newwire);
+                }
+ 
+                //delete sfw; sfw = NULL;
+@@ -284,7 +293,7 @@
+ 
+          {
+             BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+ 
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+@@ -300,7 +309,7 @@
+                      cout << "removing degenerated edge " << emap.FindIndex(edge)
+                         << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
+                         << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;
+-                     rebuild->Remove(edge, false);
++                     rebuild->Remove(edge);
+                   }
+                }
+             }
+@@ -312,13 +321,13 @@
+ 
+ 
+          {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+             {
+                TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+                if ( BRep_Tool::Degenerated(edge) )
+-                  rebuild->Remove(edge, false);
++                  rebuild->Remove(edge);
+             }
+             shape = rebuild->Apply(shape);
+          }
+@@ -438,13 +447,13 @@
+ 
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
++               rebuild->Remove(edge);
+          }
+          shape = rebuild->Apply(shape);
+       }
+@@ -483,9 +492,9 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+                   TopoDS_Solid newsolid = solid;
+                   BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //		  rebuild->Apply(shape);
+-                  rebuild->Replace(solid, newsolid, Standard_False);
++                  rebuild->Replace(solid, newsolid);
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+                   //		  TopoDS_Shape newshape = rebuild->Apply(shape);
+                   shape = newshape;
+@@ -906,8 +915,8 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+             TopoDS_Solid newsolid = solid;
+             BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Replace(solid, newsolid, Standard_False);
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Replace(solid, newsolid);
+ 
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+             shape = newshape;
+@@ -951,25 +960,58 @@
+    }
+ 
+ 
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+ 
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+ 
+       gp_Pnt pnt(p(0), p(1), p(2));
+ 
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
+ 
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+ 
++      return true;
+    }
+ 
+ 
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+ 
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+ 
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      //writer.RelativeMode() = Standard_False;
+ 
+-      writer.SetDeflection(0.02);
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+ 
+       cout << "done" << endl;
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;
+ 
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+ 
+       // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
++      Handle(TDocStd_Document) iges_doc;
+ 
+       // Check if a IGES File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);
+ 
+       // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+ 
+       TDF_LabelSequence iges_shapes;
+       iges_shape_contents->GetShapes(iges_shapes);
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;
+ 
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+ 
+       // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
++      Handle(TDocStd_Document) step_doc;
+ 
+       // Check if a STEP File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);
+ 
+       // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+ 
+       TDF_LabelSequence step_shapes;
+       step_shape_contents->GetShapes(step_shapes);
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when 
+       // opening BREP Files, since BREP Files have no colour data.
+       // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();
+       occgeo->changed = 1;
+       occgeo->BuildFMap();
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp	2017-09-11 18:08:21.233311974 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include 
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
+ 
++// -- Optimization: to use cached projector and classifier
++#include 
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ 
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap fprjmap;
++      mutable NCollection_DataMap fclsmap;
+ 
+    public:
+       TopoDS_Shape shape;
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support
+       // XCAF Handle to make the face colours available to the rest of
+       // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
++      Handle(XCAFDoc_ColorTool) face_colours;
+ 
+      mutable int changed;
+       Array facemeshstatus;
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;
+ 
+ 
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+ 
+       Box<3> GetBoundingBox()
+@@ -266,9 +279,14 @@
+       Point<3> Center()
+       {  return center;}
+ 
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
+ 
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.cpp	2017-09-11 18:08:21.233311974 +0300
+@@ -6,6 +6,7 @@
+ #include 
+ #include 
+ #include 
++#include  // -- moved here from occgeom.hpp
+ 
+ 
+ namespace netgen
+@@ -96,13 +97,16 @@
+ 
+ 	n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+ 	n(0)=lprop.Normal().X();
+ 	n(1)=lprop.Normal().Y();
+ 	n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+ 	(*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +438,33 @@
+ 
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+ 
+ 
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+ 
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+ 	p = hp;
+-	return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+ 
+ 
+@@ -680,7 +694,8 @@
+ 	if (!geometry.FastProject (surfi, hnewp, u, v))
+ 	  {
+ 	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	    geometry.Project (surfi, hnewp);
++	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++	    geometry.Project (surfi, hnewp, u, v);
+ 	  }
+ 
+ 	newgi.trignum = 1;
+@@ -689,7 +704,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +723,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +742,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+ 	{
+ 	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	  geometry.Project (surfi, p);
++          double u, v;
++	  geometry.Project (surfi, p, u, v);
++	}
+ 	}
+-  };
+ 
+ 
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occpkg.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occpkg.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occpkg.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occpkg.cpp	2017-09-11 18:08:32.837057913 +0300
+@@ -485,7 +485,7 @@
+ 		  if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);
+ 		  if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);
+ 
+-		  rebuild->Replace(sh, sh.Reversed(), Standard_False);
++		  rebuild->Replace(sh, sh.Reversed());
+ 
+ 		  TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);
+ 		  occgeometry->shape = newshape;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/utilities.h netgen-5.3.1_SRC_modif/libsrc/occ/utilities.h
+--- netgen-5.3.1_SRC_orig/libsrc/occ/utilities.h	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/utilities.h	2017-09-11 18:08:21.233311974 +0300
+@@ -33,6 +33,7 @@
+ 
+ #include 
+ #include 
++#include 
+ #include 
+ // #include "SALOME_Log.hxx"
+ 
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_SRC_modif/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/stlgeom/Makefile.am	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/stlgeom/Makefile.am	2017-09-11 18:08:21.235311757 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ 
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ 
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+ 
+diff -Naur netgen-5.3.1_SRC_orig/nglib/Makefile.am netgen-5.3.1_SRC_modif/nglib/Makefile.am
+--- netgen-5.3.1_SRC_orig/nglib/Makefile.am	2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_SRC_modif/nglib/Makefile.am	2017-09-11 18:08:21.235311757 +0300
+@@ -14,6 +14,9 @@
+ 	$(top_builddir)/libsrc/stlgeom/libstl.la \
+ 	$(top_builddir)/libsrc/occ/libocc.la \
+ 	$(top_builddir)/libsrc/meshing/libmesh.la \
++	$(top_builddir)/libsrc/general/libgen.la \
++	$(top_builddir)/libsrc/gprim/libgprim.la \
++	$(top_builddir)/libsrc/linalg/libla.la
+ 	$(OCCLIBS) $(MPI_LIBS)
+ 
+ libnglib_la_LDFLAGS = -avoid-version
+diff -Naur netgen-5.3.1_SRC_orig/nglib/nglib.h netgen-5.3.1_SRC_modif/nglib/nglib.h
+--- netgen-5.3.1_SRC_orig/nglib/nglib.h	2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_SRC_modif/nglib/nglib.h	2017-09-11 18:08:21.233311974 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
diff --git a/products/patches/netgen53ForSalomeVisualStudio2017.patch b/products/patches/netgen53ForSalomeVisualStudio2017.patch
new file mode 100644
index 0000000..2cbdb94
--- /dev/null
+++ b/products/patches/netgen53ForSalomeVisualStudio2017.patch
@@ -0,0 +1,1648 @@
+--- netgen_ref/libsrc/general/array.hpp
++++ netgen/libsrc/general/array.hpp
+@@ -50,7 +50,7 @@
+     {
+ #ifdef DEBUG
+       if (i-BASE < 0 || i-BASE >= size)
+-	cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << endl;
++	std::cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << std::endl;
+ #endif
+ 
+       return data[i-BASE]; 
+@@ -69,9 +69,9 @@
+     {
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-	cout << "Array<" << typeid(T).name() 
++	std::cout << "Array<" << typeid(T).name() 
+ 	     << ">::Elem out of range, i = " << i
+-	     << ", s = " << size << endl;
++	     << ", s = " << size << std::endl;
+ #endif
+ 
+       return ((T*)data)[i-1]; 
+@@ -82,8 +82,8 @@
+     {
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-	cout << "Array<" << typeid(T).name() << ">::Get out of range, i = " << i
+-	     << ", s = " << size << endl;
++	std::cout << "Array<" << typeid(T).name() << ">::Get out of range, i = " << i
++	     << ", s = " << size << std::endl;
+ #endif
+ 
+       return ((const T*)data)[i-1]; 
+@@ -94,8 +94,8 @@
+     { 
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-	cout << "Array<" << typeid(T).name() << ">::Set out of range, i = " << i
+-	     << ", s = " << size << endl;
++	std::cout << "Array<" << typeid(T).name() << ">::Set out of range, i = " << i
++	     << ", s = " << size << std::endl;
+ #endif
+ 
+       ((T*)data)[i-1] = el; 
+@@ -151,7 +151,7 @@
+   inline ostream & operator<< (ostream & s, const FlatArray & a)
+   {
+     for (TIND i = a.Begin(); i < a.End(); i++)
+-      s << i << ": " << a[i] << endl;
++      s << i << ": " << a[i] << std::endl;
+     return s;
+   }
+ 
+@@ -435,7 +435,7 @@
+   inline ostream & operator<< (ostream & s, const IndirectArray & ia)
+   {
+     for (int i = ia.Begin(); i < ia.End(); i++)
+-      s << i << ": " << ia[i] << endl;
++      s << i << ": " << ia[i] << std::endl;
+     return s;
+   }
+   
+@@ -551,7 +551,7 @@
+     void PrintMemInfo (ostream & ost) const
+     {
+       ost << Size() << " elements of size " << sizeof(T) << " = " 
+-	  << Size() * sizeof(T) << endl;
++	  << Size() * sizeof(T) << std::endl;
+     }
+ 
+     MoveableArray & operator= (const T & el)
+@@ -593,7 +593,7 @@
+   inline ostream & operator<< (ostream & ost, MoveableArray & a)
+   {
+     for (int i = 0; i < a.Size(); i++)
+-      ost << i << ": " << a[i] << endl;
++      ost << i << ": " << a[i] << std::endl;
+     return ost;
+   }
+   */
+--- netgen_ref/libsrc/gprim/spline.hpp
++++ netgen/libsrc/gprim/spline.hpp
+@@ -55,7 +55,7 @@
+     /// returns a (not necessarily unit-length) tangent vector for 0 <= t <= 1
+     virtual Vec GetTangent (const double t) const
+     { 
+-      cerr << "GetTangent not implemented for spline base-class"  << endl; 
++      std::cerr << "GetTangent not implemented for spline base-class"  << std::endl; 
+       Vec dummy; return dummy;
+     }
+ 
+@@ -100,10 +100,10 @@
+     virtual string GetType(void) const {return "splinebase";}
+ 
+     virtual void Project (const Point point, Point & point_on_curve, double & t) const
+-    { cerr << "Project not implemented for spline base-class" << endl;}
++    { std::cerr << "Project not implemented for spline base-class" << std::endl;}
+ 
+     virtual void GetRawData (Array & data) const
+-    { cerr << "GetRawData not implemented for spline base-class" << endl;}
++    { std::cerr << "GetRawData not implemented for spline base-class" << std::endl;}
+ 
+   };
+ 
+@@ -308,7 +308,7 @@
+ 
+     for ( int i=0; i<6; i++)
+       ost << u[i] << "  ";
+-    ost << endl;
++    ost << std::endl;
+   }
+ 
+ 
+@@ -430,11 +430,11 @@
+     Vec v2 = p3-p2;
+     double l1 = v1.Length();
+     double l2 = v2.Length();
+-    (*testout) << "v1 " << v1 << " v2 " << v2 << endl;
++    (*testout) << "v1 " << v1 << " v2 " << v2 << std::endl;
+ 
+     double cosalpha = v1*v2/(l1*l2);
+ 
+-    (*testout) << "cosalpha " << cosalpha << endl;
++    (*testout) << "cosalpha " << cosalpha << std::endl;
+ 
+     return sqrt(cosalpha + 1.)/(min2(l1,l2)*(1.-cosalpha));
+     }
+--- netgen_ref/libsrc/occ/occgenmesh.cpp
++++ netgen/libsrc/occ/occgenmesh.cpp
+@@ -122,7 +122,7 @@
+          prop->SetParameters (parmid.X(), parmid.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(fabs(prop->MinCurvature()),
+@@ -131,7 +131,7 @@
+          prop->SetParameters (par0.X(), par0.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(curvature,max(fabs(prop->MinCurvature()),
+@@ -140,7 +140,7 @@
+          prop->SetParameters (par1.X(), par1.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(curvature,max(fabs(prop->MinCurvature()),
+@@ -149,17 +149,17 @@
+          prop->SetParameters (par2.X(), par2.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(curvature,max(fabs(prop->MinCurvature()),
+             fabs(prop->MaxCurvature())));
+ 
+-         //(*testout) << "curvature " << curvature << endl;
++         //(*testout) << "curvature " << curvature << std::endl;
+ 
+          if (curvature < 1e-3)
+          {
+-            //(*testout) << "curvature too small (" << curvature << ")!" << endl;
++            //(*testout) << "curvature too small (" << curvature << ")!" << std::endl;
+             return;
+             // return war bis 10.2.05 auskommentiert
+          }
+@@ -177,13 +177,13 @@
+ 
+       if (h < maxside && depth < 10)
+       {
+-         //cout << "\r h " << h << flush;
++         //std::cout << "\r h " << h << flush;
+          gp_Pnt2d pm;
+ 
+-         //cout << "h " << h << " maxside " << maxside << " depth " << depth << endl;
+-         //cout << "par0 " << par0.X() << " " << par0.Y()
++         //std::cout << "h " << h << " maxside " << maxside << " depth " << depth << std::endl;
++         //std::cout << "par0 " << par0.X() << " " << par0.Y()
+          //<< " par1 " << par1.X() << " " << par1.Y()
+-         //   << " par2 " << par2.X() << " " << par2.Y()<< endl;
++         //   << " par2 " << par2.X() << " " << par2.Y()<< std::endl;
+ 
+          if(ls == 0)
+          {
+@@ -224,7 +224,7 @@
+          p3d = Point3d(pnt2.X(), pnt2.Y(), pnt2.Z());
+          mesh.RestrictLocalH (p3d, h);
+ 
+-         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << endl;
++         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << std::endl;
+ 
+       }
+    }
+@@ -268,7 +268,7 @@
+                 pnt.Distance(oldpnt));
+ 
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+-         //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
++         //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << std::endl;
+ 
+          //olddist = dist; -- useless variables
+          //dist = pnt.Distance(oldpnt);
+@@ -300,7 +300,7 @@
+             nsubedges = i;
+             ps.SetSize(nsubedges-1);
+             params.SetSize(nsubedges+1);
+-            cout << "divide edge: local h too small" << endl;
++            std::cout << "divide edge: local h too small" << std::endl;
+          }
+       } while (i < nsubedges);
+ 
+@@ -309,7 +309,7 @@
+ 
+       if (params[nsubedges] <= params[nsubedges-1])
+       {
+-         cout << "CORRECTED" << endl;
++         std::cout << "CORRECTED" << std::endl;
+          ps.SetSize (nsubedges-2);
+          params.SetSize (nsubedges);
+          params[nsubedges] = s1;
+@@ -324,13 +324,13 @@
+       const char * savetask = multithread.task;
+       multithread.task = "Edge meshing";
+ 
+-      (*testout) << "edge meshing" << endl;
++      (*testout) << "edge meshing" << std::endl;
+ 
+       int nvertices = geom.vmap.Extent();
+       int nedges = geom.emap.Extent();
+ 
+-      (*testout) << "nvertices = " << nvertices << endl;
+-      (*testout) << "nedges = " << nedges << endl;
++      (*testout) << "nvertices = " << nvertices << std::endl;
++      (*testout) << "nedges = " << nedges << std::endl;
+ 
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
+       const double eps2 = eps * eps; // -- small optimization
+@@ -356,7 +356,7 @@
+                   mesh.AddPoint (mp);
+       }
+ 
+-      (*testout) << "different vertices = " << mesh.GetNP() << endl;
++      (*testout) << "different vertices = " << mesh.GetNP() << std::endl;
+ 
+ 
+       int first_ep = mesh.GetNP()+1;
+@@ -398,7 +398,7 @@
+ 
+       edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+ 
+-      (*testout) << "faces = " << geom.fmap.Extent() << endl;
++      (*testout) << "faces = " << geom.fmap.Extent() << std::endl;
+       int curr = 0;
+ 
+       for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
+@@ -447,7 +447,7 @@
+             for (TopExp_Explorer exp3 (wire, TopAbs_EDGE); exp3.More(); exp3.Next())
+             {
+                curr++;
+-               (*testout) << "edge nr " << curr << endl;
++               (*testout) << "edge nr " << curr << std::endl;
+ 
+                multithread.percent = 100 * curr / double (total);
+                if (multithread.terminate) return;
+@@ -455,7 +455,7 @@
+                TopoDS_Edge edge = TopoDS::Edge (exp3.Current());
+                if (BRep_Tool::Degenerated(edge))
+                {
+-                  //(*testout) << "ignoring degenerated edge" << endl;
++                  //(*testout) << "ignoring degenerated edge" << std::endl;
+                   continue;
+                }
+                if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+@@ -468,8 +468,8 @@
+ 
+                   if (system.Mass() < eps)
+                   {
+-                     cout << "ignoring edge " << geom.emap.FindIndex (edge)
+-                        << ". closed edge with length < " << eps << endl;
++                     std::cout << "ignoring edge " << geom.emap.FindIndex (edge)
++                        << ". closed edge with length < " << eps << std::endl;
+                      continue;
+                   }
+                }
+@@ -612,13 +612,13 @@
+                      else
+                      {
+                         mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+-                        (*testout) << "add meshpoint " << mp[i-1] << endl;
++                        (*testout) << "add meshpoint " << mp[i-1] << std::endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+                }
+-               (*testout) << "NP = " << mesh.GetNP() << endl;
++               (*testout) << "NP = " << mesh.GetNP() << std::endl;
+ 
+-               //(*testout) << pnums[pnums.Size()-1] << endl;
++               //(*testout) << pnums[pnums.Size()-1] << std::endl;
+ 
+                for (int i = 1; i <= mp.Size()+1; i++)
+                {
+@@ -647,7 +647,7 @@
+                   /*
+                   if (occface->IsUPeriodic())
+                   {
+-                  cout << "U Periodic" << endl;
++                  std::cout << "U Periodic" << std::endl;
+                   if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
+                   fabs(seg.epgeominfo[1].u-
+                   (seg.epgeominfo[0].u-occface->UPeriod())))
+@@ -661,7 +661,7 @@
+ 
+                   if (occface->IsVPeriodic())
+                   {
+-                  cout << "V Periodic" << endl;
++                  std::cout << "V Periodic" << std::endl;
+                   if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
+                   fabs(seg.epgeominfo[1].v-
+                   (seg.epgeominfo[0].v-occface->VPeriod())))
+@@ -693,7 +693,7 @@
+ 
+       //	for(i=1; i<=mesh.GetNSeg(); i++)
+       //		(*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+-      //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
++      //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << std::endl;
+       //	exit(10);
+       for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
+         mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+@@ -733,12 +733,12 @@
+       {
+          if(1==0 && !geom.fvispar[k-1].IsDrawable())
+          {
+-            (*testout) << "ignoring face " << k << endl;
+-            cout << "ignoring face " << k << endl;
++            (*testout) << "ignoring face " << k << std::endl;
++            std::cout << "ignoring face " << k << std::endl;
+             continue;
+          }
+ 
+-         (*testout) << "mesh face " << k << endl;
++         (*testout) << "mesh face " << k << std::endl;
+          multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          geom.facemeshstatus[k-1] = -1;
+ 
+@@ -746,7 +746,7 @@
+          /*
+          if (k != 42)
+          {
+-         cout << "skipped" << endl;
++         std::cout << "skipped" << std::endl;
+          continue;
+          }
+          */
+@@ -768,12 +768,12 @@
+             PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (parameter space projection)");
+ 
+          if (surfmesherror)
+-            cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << endl;
++            std::cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << std::endl;
+ 
+          //      Meshing2OCCSurfaces meshing(f2, bb);
+          meshing.SetStartTime (starttime);
+ 
+-         //(*testout) << "Face " << k << endl << endl;
++         //(*testout) << "Face " << k << std::endl << std::endl;
+ 
+ 
+          if (meshing.GetProjectionType() == PLANESPACE)
+@@ -811,8 +811,8 @@
+                   gi1.v = seg.epgeominfo[1].v;
+ 
+                   meshing.AddBoundaryElement (glob2loc.Get(seg[0]), glob2loc.Get(seg[1]), gi0, gi1);
+-                  //(*testout) << gi0.u << " " << gi0.v << endl;
+-                  //(*testout) << gi1.u << " " << gi1.v << endl;
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
+                }
+             }
+          }
+@@ -869,8 +869,8 @@
+                   }
+ 
+                   meshing.AddBoundaryElement (locpnum[0], locpnum[1], gi0, gi1);
+-                  //(*testout) << gi0.u << " " << gi0.v << endl;
+-                  //(*testout) << gi1.u << " " << gi1.v << endl;
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
+ 
+                }
+             }
+@@ -899,13 +899,13 @@
+ 
+          catch (SingularMatrixException)
+          {
+-            (*myerr) << "Singular Matrix" << endl;
++            (*myerr) << "Singular Matrix" << std::endl;
+             res = MESHING2_GIVEUP;
+          }
+ 
+          catch (UVBoundsException)
+          {
+-            (*myerr) << "UV bounds exceeded" << endl;
++            (*myerr) << "UV bounds exceeded" << std::endl;
+             res = MESHING2_GIVEUP;
+          }
+ 
+@@ -920,7 +920,7 @@
+ 
+                mesh.Compress();
+ 
+-               cout << "retry Surface " << k << endl;
++               std::cout << "retry Surface " << k << std::endl;
+ 
+                k--;
+                projecttype*=-1;
+@@ -949,18 +949,18 @@
+ 
+ //      ofstream problemfile("occmesh.rep");
+ 
+-//      problemfile << "SURFACEMESHING" << endl << endl;
++//      problemfile << "SURFACEMESHING" << std::endl << std::endl;
+ 
+       if (surfmesherror)
+       {
+-         cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << endl;
+-         cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << endl;
++         std::cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << std::endl;
++         std::cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << std::endl;
+          for (int i = 1; i <= geom.fmap.Extent(); i++)
+             if (geom.facemeshstatus[i-1] == -1)
+             {
+-               cout << "Face " << i << endl;
+-//               problemfile << "problem with face " << i << endl;
+-//               problemfile << "vertices: " << endl;
++               std::cout << "Face " << i << std::endl;
++//               problemfile << "problem with face " << i << std::endl;
++//               problemfile << "vertices: " << std::endl;
+                TopExp_Explorer exp0,exp1,exp2;
+                for ( exp0.Init(TopoDS::Face (geom.fmap(i)), TopAbs_WIRE); exp0.More(); exp0.Next() )
+                {
+@@ -972,21 +972,21 @@
+                      {
+                         TopoDS_Vertex vertex = TopoDS::Vertex(exp2.Current());
+                         gp_Pnt point = BRep_Tool::Pnt(vertex);
+-//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << endl;
++//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << std::endl;
+                      }
+                   }
+                }
+-//               problemfile << endl;
++//               problemfile << std::endl;
+ 
+             }
+-            cout << endl << endl;
+-            cout << "for more information open IGES/STEP Topology Explorer" << endl;
++            std::cout << std::endl << std::endl;
++            std::cout << "for more information open IGES/STEP Topology Explorer" << std::endl;
+ //            problemfile.close();
+             throw NgException ("Problem in Surface mesh generation");
+       }
+       else
+       {
+-//         problemfile << "OK" << endl << endl;
++//         problemfile << "OK" << std::endl << std::endl;
+ //         problemfile.close();
+       }
+ 
+@@ -1006,7 +1006,7 @@
+          //      if (k != 42) continue;
+          //      if (k != 36) continue;
+ 
+-         //      (*testout) << "optimize face " << k << endl;
++         //      (*testout) << "optimize face " << k << std::endl;
+          multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+ 
+          FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+@@ -1014,7 +1014,7 @@
+          PrintMessage (1, "Optimize Surface ", k);
+          for (i = 1; i <= mparam.optsteps2d; i++)
+          {
+-            //	  (*testout) << "optstep " << i << endl;
++            //	  (*testout) << "optstep " << i << std::endl;
+             if (multithread.terminate) return;
+ 
+             {
+@@ -1025,7 +1025,7 @@
+                //meshopt.SetMetricWeight (0.2);
+                meshopt.SetWriteStatus (0);
+ 
+-               //	    (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << endl;
++               //	    (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << std::endl;
+                meshopt.EdgeSwapping (mesh, (i > mparam.optsteps2d/2));
+             }
+ 
+@@ -1038,7 +1038,7 @@
+                meshopt.SetMetricWeight (mparam.elsizeweight);
+                meshopt.SetWriteStatus (0);
+ 
+-               //	    (*testout) << "ImproveMesh (mesh)" << endl;
++               //	    (*testout) << "ImproveMesh (mesh)" << std::endl;
+                meshopt.ImproveMesh (mesh, mparam);
+             }
+ 
+@@ -1050,7 +1050,7 @@
+                meshopt.SetMetricWeight (mparam.elsizeweight);
+                meshopt.SetWriteStatus (0);
+ 
+-               //	    (*testout) << "CombineImprove (mesh)" << endl;
++               //	    (*testout) << "CombineImprove (mesh)" << std::endl;
+                meshopt.CombineImprove (mesh);
+             }
+ 
+@@ -1063,7 +1063,7 @@
+                meshopt.SetMetricWeight (mparam.elsizeweight);
+                meshopt.SetWriteStatus (0);
+ 
+-               //	    (*testout) << "ImproveMesh (mesh)" << endl;
++               //	    (*testout) << "ImproveMesh (mesh)" << std::endl;
+                meshopt.ImproveMesh (mesh, mparam);
+             }
+          }
+@@ -1132,7 +1132,7 @@
+ 
+             if (len < mincurvelength)
+             {
+-               (*testout) << "ignored" << endl;
++               (*testout) << "ignored" << std::endl;
+                continue;
+             }
+ 
+@@ -1212,7 +1212,7 @@
+ 
+                mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), ComputeH (fabs(curvature)));
+             }
+-            // (*testout) << "edge " << i << " max. curvature: " << maxcur << endl;
++            // (*testout) << "edge " << i << " max. curvature: " << maxcur << std::endl;
+          }
+ 
+          multithread.task = "Setting local mesh size (face curvature)";
+@@ -1251,10 +1251,10 @@
+                //maxside = max (maxside, p[0].Distance(p[1]));
+                //maxside = max (maxside, p[0].Distance(p[2]));
+                //maxside = max (maxside, p[1].Distance(p[2]));
+-               //cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
++               //std::cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
+ 
+                RestrictHTriangle (par[0], par[1], par[2], &prop, mesh, 0);
+-               //cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
++               //std::cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
+             }
+          }
+ 
+@@ -1347,8 +1347,8 @@
+                if (mindist < 1e-3)
+                {
+                   (*testout) << "extremely small local h: " << mindist
+-                     << " --> setting to 1e-3" << endl;
+-                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << endl;
++                     << " --> setting to 1e-3" << std::endl;
++                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << std::endl;
+                   mindist = 1e-3;
+                }
+ 
+@@ -1398,7 +1398,7 @@
+          OCCFindEdges (geom, *mesh);
+ 
+          /*
+-         cout << "Removing redundant points" << endl;
++         std::cout << "Removing redundant points" << std::endl;
+ 
+          int i, j;
+          int np = mesh->GetNP();
+@@ -1419,7 +1419,7 @@
+          for (i = 1; i <= np; i++)
+          if (equalto[i-1])
+          {
+-         cout << "Point " << i << " is equal to Point " << equalto[i-1] << endl;
++         std::cout << "Point " << i << " is equal to Point " << equalto[i-1] << std::endl;
+          for (j = 1; j <= mesh->GetNSeg(); j++)
+          {
+          Segment & seg = mesh->LineSegment(j);
+@@ -1428,14 +1428,14 @@
+          }
+          }
+ 
+-         cout << "Removing degenerated segments" << endl;
++         std::cout << "Removing degenerated segments" << std::endl;
+          for (j = 1; j <= mesh->GetNSeg(); j++)
+          {
+          Segment & seg = mesh->LineSegment(j);
+          if (seg[0] == seg[1])
+          {
+          mesh->DeleteSegment(j);
+-         cout << "Deleting Segment " << j << endl;
++         std::cout << "Deleting Segment " << j << std::endl;
+          }
+          }
+ 
+@@ -1451,15 +1451,15 @@
+          {
+          Handle(Geom_Surface) hf2 =
+          BRep_Tool::Surface(TopoDS::Face(geom.fmap(j)));
+-         if (hf1 == hf2) cout << "face " << i << " and face " << j << " lie on same surface" << endl;
++         if (hf1 == hf2) std::cout << "face " << i << " and face " << j << " lie on same surface" << std::endl;
+          }
+          }
+          */
+ 
+ #ifdef LOG_STREAM
+-         (*logout) << "Edges meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Edges meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+       }
+ 
+@@ -1472,15 +1472,15 @@
+          if (multithread.terminate) return TCL_OK;
+ 
+ #ifdef LOG_STREAM
+-         (*logout) << "Surfaces meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Surfaces meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+ 
+ #ifdef STAT_STREAM
+          (*statout) << mesh->GetNSeg() << " & "
+             << mesh->GetNSE() << " & - &"
+-            << GetTime() << " & " << endl;
++            << GetTime() << " & " << std::endl;
+ #endif
+ 
+          //      MeshQuality2d (*mesh);
+@@ -1499,12 +1499,12 @@
+ /*
+          ofstream problemfile("occmesh.rep",ios_base::app);
+ 
+-         problemfile << "VOLUMEMESHING" << endl << endl;
++         problemfile << "VOLUMEMESHING" << std::endl << std::endl;
+          if(res != MESHING3_OK)
+-            problemfile << "ERROR" << endl << endl;
++            problemfile << "ERROR" << std::endl << std::endl;
+          else
+-            problemfile << "OK" << endl
+-            << mesh->GetNE() << " elements" << endl << endl;
++            problemfile << "OK" << std::endl
++            << mesh->GetNE() << " elements" << std::endl << std::endl;
+ 
+          problemfile.close();
+ */
+@@ -1523,9 +1523,9 @@
+ #endif
+ 
+ #ifdef LOG_STREAM
+-         (*logout) << "Volume meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Volume meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+       }
+ 
+@@ -1542,26 +1542,26 @@
+ #ifdef STAT_STREAM
+          (*statout) << GetTime() << " & "
+             << mesh->GetNE() << " & "
+-            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << endl;
++            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << std::endl;
+ #endif
+ 
+ #ifdef LOG_STREAM
+-         (*logout) << "Volume optimized" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Volume optimized" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+ 
+-         // cout << "Optimization complete" << endl;
++         // std::cout << "Optimization complete" << std::endl;
+ 
+       }
+ 
+-      (*testout) << "NP: " << mesh->GetNP() << endl;
++      (*testout) << "NP: " << mesh->GetNP() << std::endl;
+       for (int i = 1; i <= mesh->GetNP(); i++)
+-         (*testout) << mesh->Point(i) << endl;
++         (*testout) << mesh->Point(i) << std::endl;
+ 
+-      (*testout) << endl << "NSegments: " << mesh->GetNSeg() << endl;
++      (*testout) << std::endl << "NSegments: " << mesh->GetNSeg() << std::endl;
+       for (int i = 1; i <= mesh->GetNSeg(); i++)
+-         (*testout) << mesh->LineSegment(i) << endl;
++         (*testout) << mesh->LineSegment(i) << std::endl;
+ 
+       return TCL_OK;
+    }
+--- netgen_ref/libsrc/occ/occgeom.cpp
++++ netgen/libsrc/occ/occgeom.cpp
+@@ -33,13 +33,13 @@
+       TopExp_Explorer e;
+       int count = 0;
+       for (e.Init(shape, TopAbs_COMPSOLID); e.More(); e.Next()) count++;
+-      cout << "CompSolids: " << count << endl;
++      std::cout << "CompSolids: " << count << std::endl;
+ 
+-      cout << "Solids    : " << somap.Extent() << endl;
+-      cout << "Shells    : " << shmap.Extent() << endl;
+-      cout << "Faces     : " << fmap.Extent() << endl;
+-      cout << "Edges     : " << emap.Extent() << endl;
+-      cout << "Vertices  : " << vmap.Extent() << endl;
++      std::cout << "Solids    : " << somap.Extent() << std::endl;
++      std::cout << "Shells    : " << shmap.Extent() << std::endl;
++      std::cout << "Faces     : " << fmap.Extent() << std::endl;
++      std::cout << "Edges     : " << emap.Extent() << std::endl;
++      std::cout << "Vertices  : " << vmap.Extent() << std::endl;
+    }
+ 
+ 
+@@ -51,51 +51,51 @@
+       cont.Clear();
+       cont.Perform(geom->shape);
+ 
+-      (*testout) << "OCC CONTENTS" << endl;
+-      (*testout) << "============" << endl;
+-      (*testout) << "SOLIDS   : " << cont.NbSolids() << endl;
+-      (*testout) << "SHELLS   : " << cont.NbShells() << endl;
+-      (*testout) << "FACES    : " << cont.NbFaces() << endl;
+-      (*testout) << "WIRES    : " << cont.NbWires() << endl;
+-      (*testout) << "EDGES    : " << cont.NbEdges() << endl;
+-      (*testout) << "VERTICES : " << cont.NbVertices() << endl;
++      (*testout) << "OCC CONTENTS" << std::endl;
++      (*testout) << "============" << std::endl;
++      (*testout) << "SOLIDS   : " << cont.NbSolids() << std::endl;
++      (*testout) << "SHELLS   : " << cont.NbShells() << std::endl;
++      (*testout) << "FACES    : " << cont.NbFaces() << std::endl;
++      (*testout) << "WIRES    : " << cont.NbWires() << std::endl;
++      (*testout) << "EDGES    : " << cont.NbEdges() << std::endl;
++      (*testout) << "VERTICES : " << cont.NbVertices() << std::endl;
+ 
+       TopExp_Explorer e;
+       int count = 0;
+       for (e.Init(geom->shape, TopAbs_COMPOUND); e.More(); e.Next())
+          count++;
+-      (*testout) << "Compounds: " << count << endl;
++      (*testout) << "Compounds: " << count << std::endl;
+ 
+       count = 0;
+       for (e.Init(geom->shape, TopAbs_COMPSOLID); e.More(); e.Next())
+          count++;
+-      (*testout) << "CompSolids: " << count << endl;
++      (*testout) << "CompSolids: " << count << std::endl;
+ 
+-      (*testout) << endl;
++      (*testout) << std::endl;
+ 
+-      cout << "Highest entry in topology hierarchy: " << endl;
++      std::cout << "Highest entry in topology hierarchy: " << std::endl;
+       if (count)
+-         cout << count << " composite solid(s)" << endl;
++         std::cout << count << " composite solid(s)" << std::endl;
+       else
+          if (geom->somap.Extent())
+-            cout << geom->somap.Extent() << " solid(s)" << endl;
++            std::cout << geom->somap.Extent() << " solid(s)" << std::endl;
+          else
+             if (geom->shmap.Extent())
+-               cout << geom->shmap.Extent() << " shells(s)" << endl;
++               std::cout << geom->shmap.Extent() << " shells(s)" << std::endl;
+             else
+                if (geom->fmap.Extent())
+-                  cout << geom->fmap.Extent() << " face(s)" << endl;
++                  std::cout << geom->fmap.Extent() << " face(s)" << std::endl;
+                else
+                   if (geom->wmap.Extent())
+-                     cout << geom->wmap.Extent() << " wire(s)" << endl;
++                     std::cout << geom->wmap.Extent() << " wire(s)" << std::endl;
+                   else
+                      if (geom->emap.Extent())
+-                        cout << geom->emap.Extent() << " edge(s)" << endl;
++                        std::cout << geom->emap.Extent() << " edge(s)" << std::endl;
+                      else
+                         if (geom->vmap.Extent())
+-                           cout << geom->vmap.Extent() << " vertices(s)" << endl;
++                           std::cout << geom->vmap.Extent() << " vertices(s)" << std::endl;
+                         else
+-                           cout << "no entities" << endl;
++                           std::cout << "no entities" << std::endl;
+ 
+    }
+ 
+@@ -145,11 +145,11 @@
+       }
+ 
+ 
+-      cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << endl
+-         << "-----------------------------------" << endl;
++      std::cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << std::endl
++         << "-----------------------------------" << std::endl;
+ 
+       {
+-         cout << endl << "- repairing faces" << endl;
++         std::cout << std::endl << "- repairing faces" << std::endl;
+ 
+          Handle(ShapeFix_Face) sff;
+          Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+@@ -183,17 +183,17 @@
+                sff->Status(ShapeExtend_DONE4) ||
+                sff->Status(ShapeExtend_DONE5))
+             {
+-               cout << "repaired face " << fmap.FindIndex(face) << " ";
++               std::cout << "repaired face " << fmap.FindIndex(face) << " ";
+                if(sff->Status(ShapeExtend_DONE1))
+-                  cout << "(some wires are fixed)" <Status(ShapeExtend_DONE2))
+-                  cout << "(orientation of wires fixed)" <Status(ShapeExtend_DONE3))
+-                  cout << "(missing seam added)" <Status(ShapeExtend_DONE4))
+-                  cout << "(small area wire removed)" <Status(ShapeExtend_DONE5))
+-                  cout << "(natural bounds added)" <Face();
+ 
+                rebuild->Replace(face, newface);
+@@ -223,7 +223,7 @@
+ 
+       if (fixsmalledges)
+       {
+-         cout << endl << "- fixing small edges" << endl;
++         std::cout << std::endl << "- fixing small edges" << std::endl;
+ 
+          Handle(ShapeFix_Wire) sfw;
+          Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+@@ -254,19 +254,19 @@
+                   sfw->StatusSmall(ShapeExtend_FAIL2) ||
+                   sfw->StatusSmall(ShapeExtend_FAIL3)))
+                {
+-                  cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << endl;
++                  std::cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << std::endl;
+                   replace = true;
+ 
+                }
+                else if (sfw->StatusSmall(ShapeExtend_FAIL1))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge cannot be checked (no 3d curve and no pcurve)" << endl;
++                  std::cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge cannot be checked (no 3d curve and no pcurve)" << std::endl;
+                else if (sfw->StatusSmall(ShapeExtend_FAIL2))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << endl;
++                  std::cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << std::endl;
+                else if (sfw->StatusSmall(ShapeExtend_FAIL3))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", CheckConnected has failed" << endl;
++                  std::cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", CheckConnected has failed" << std::endl;
+ 
+                replace = sfw->FixEdgeCurves() || replace;
+ 
+@@ -306,9 +306,9 @@
+                   BRepGProp::LinearProperties(edge, system);
+                   if (system.Mass() < tolerance)
+                   {
+-                     cout << "removing degenerated edge " << emap.FindIndex(edge)
++                     std::cout << "removing degenerated edge " << emap.FindIndex(edge)
+                         << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
+-                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;
++                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << std::endl;
+                      rebuild->Remove(edge);
+                   }
+                }
+@@ -344,12 +344,12 @@
+ 
+          if (sfwf->FixWireGaps())
+          {
+-            cout << endl << "- fixing wire gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_OK)) cout << "no gaps found" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) cout << "some 2D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) cout << "some 3D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) cout << "failed to fix some 2D gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) cout << "failed to fix some 3D gaps" << endl;
++            std::cout << std::endl << "- fixing wire gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_OK)) std::cout << "no gaps found" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) std::cout << "some 2D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) std::cout << "some 3D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) std::cout << "failed to fix some 2D gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) std::cout << "failed to fix some 3D gaps" << std::endl;
+          }
+ 
+          sfwf->SetPrecision(tolerance);
+@@ -360,7 +360,7 @@
+             {
+                TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+                if ( BRep_Tool::Degenerated(edge) )
+-                  cout << "degenerated edge at position 4" << endl;
++                  std::cout << "degenerated edge at position 4" << std::endl;
+             }
+          }
+ 
+@@ -368,10 +368,10 @@
+ 
+          if (sfwf->FixSmallEdges())
+          {
+-            cout << endl << "- fixing wire frames" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) cout << "no small edges found" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) cout << "some small edges fixed" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) cout << "failed to fix some small edges" << endl;
++            std::cout << std::endl << "- fixing wire frames" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) std::cout << "no small edges found" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) std::cout << "some small edges fixed" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) std::cout << "failed to fix some small edges" << std::endl;
+          }
+ 
+ 
+@@ -392,7 +392,7 @@
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 5" << endl;
++               std::cout << "degenerated edge at position 5" << std::endl;
+          }
+       }
+ 
+@@ -402,7 +402,7 @@
+       if (fixspotstripfaces)
+       {
+ 
+-         cout << endl << "- fixing spot and strip faces" << endl;
++         std::cout << std::endl << "- fixing spot and strip faces" << std::endl;
+          Handle(ShapeFix_FixSmallFace) sffsm = new ShapeFix_FixSmallFace();
+          sffsm -> Init (shape);
+          sffsm -> SetPrecision (tolerance);
+@@ -418,7 +418,7 @@
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 6" << endl;
++               std::cout << "degenerated edge at position 6" << std::endl;
+          }
+       }
+ 
+@@ -426,7 +426,7 @@
+ 
+       if (sewfaces)
+       {
+-         cout << endl << "- sewing faces" << endl;
++         std::cout << std::endl << "- sewing faces" << std::endl;
+ 
+          BRepOffsetAPI_Sewing sewedObj(tolerance);
+ 
+@@ -441,7 +441,7 @@
+          if (!sewedObj.SewedShape().IsNull())
+             shape = sewedObj.SewedShape();
+          else
+-            cout << " not possible";
++            std::cout << " not possible";
+       }
+ 
+ 
+@@ -461,7 +461,7 @@
+ 
+       if (makesolids)
+       {
+-         cout << endl << "- making solids" << endl;
++         std::cout << std::endl << "- making solids" << std::endl;
+ 
+          BRepBuilderAPI_MakeSolid ms;
+          int count = 0;
+@@ -473,7 +473,7 @@
+ 
+          if (!count)
+          {
+-            cout << " not possible (no shells)" << endl;
++            std::cout << " not possible (no shells)" << std::endl;
+          }
+          else
+          {
+@@ -503,7 +503,7 @@
+                //delete sfs; sfs = NULL;
+             }
+             else
+-               cout << " not possible" << endl;
++               std::cout << " not possible" << std::endl;
+          }
+       }
+ 
+@@ -511,7 +511,7 @@
+ 
+       if (splitpartitions)
+       {
+-         cout << "- running SALOME partition splitter" << endl;
++         std::cout << "- running SALOME partition splitter" << std::endl;
+ 
+          TopExp_Explorer e2;
+          Partition_Spliter ps;
+@@ -527,13 +527,13 @@
+          ps.Compute();
+          shape = ps.Shape();
+ 
+-         cout << " before: " << count << " solids" << endl;
++         std::cout << " before: " << count << " solids" << std::endl;
+ 
+          count = 0;
+          for (e2.Init (shape, TopAbs_SOLID);
+             e2.More(); e2.Next()) count++;
+ 
+-            cout << " after : " << count << " solids" << endl;
++            std::cout << " after : " << count << " solids" << std::endl;
+       }
+ 
+       BuildFMap();
+@@ -545,7 +545,7 @@
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 8" << endl;
++               std::cout << "degenerated edge at position 8" << std::endl;
+          }
+       }
+ 
+@@ -573,18 +573,18 @@
+       for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nnrc++;
+       for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nnrcs++;
+ 
+-      cout << "-----------------------------------" << endl;
+-      cout << "Compounds       : " << nnrc << " (" << nrc << ")" << endl;
+-      cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << endl;
+-      cout << "Solids          : " << nnrso << " (" << nrso << ")" << endl;
+-      cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << endl;
+-      cout << "Wires           : " << nnrw << " (" << nrw << ")" << endl;
+-      cout << "Faces           : " << nnrf << " (" << nrf << ")" << endl;
+-      cout << "Edges           : " << nnre << " (" << nre << ")" << endl;
+-      cout << "Vertices        : " << nnrv << " (" << nrv << ")" << endl;
+-      cout << endl;
+-      cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << endl;
+-      cout << endl;
++      std::cout << "-----------------------------------" << std::endl;
++      std::cout << "Compounds       : " << nnrc << " (" << nrc << ")" << std::endl;
++      std::cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << std::endl;
++      std::cout << "Solids          : " << nnrso << " (" << nrso << ")" << std::endl;
++      std::cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << std::endl;
++      std::cout << "Wires           : " << nnrw << " (" << nrw << ")" << std::endl;
++      std::cout << "Faces           : " << nnrf << " (" << nrf << ")" << std::endl;
++      std::cout << "Edges           : " << nnre << " (" << nre << ")" << std::endl;
++      std::cout << "Vertices        : " << nnrv << " (" << nrv << ")" << std::endl;
++      std::cout << std::endl;
++      std::cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << std::endl;
++      std::cout << std::endl;
+    }
+ 
+ 
+@@ -605,12 +605,12 @@
+          exp0.More(); exp0.Next())
+       {
+          TopoDS_Compound compound = TopoDS::Compound (exp0.Current());
+-         (*testout) << "compound" << endl;
++         (*testout) << "compound" << std::endl;
+          int i = 0;
+          for (exp1.Init(compound, TopAbs_SHELL);
+             exp1.More(); exp1.Next())
+          {
+-            (*testout) << "shell " << ++i << endl;
++            (*testout) << "shell " << ++i << std::endl;
+          }
+       }
+ 
+@@ -640,7 +640,7 @@
+                         fmap.Add (face);
+                         (*testout) << "face " << fmap.FindIndex(face) << " ";
+                         (*testout) << ((face.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
++                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
+                         for (exp3.Init(exp2.Current(), TopAbs_WIRE);
+                            exp3.More(); exp3.Next())
+                         {
+@@ -684,7 +684,7 @@
+ 
+             (*testout) << "shell " << shmap.FindIndex(shell) << " ";
+             (*testout) << ((shell.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
++            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
+ 
+             for (exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next())
+             {
+@@ -850,8 +850,8 @@
+ 
+    void OCCGeometry :: SewFaces ()
+    {
+-      (*testout) << "Trying to sew faces ..." << endl;
+-      cout << "Trying to sew faces ..." << flush;
++      (*testout) << "Trying to sew faces ..." << std::endl;
++      std::cout << "Trying to sew faces ..." << flush;
+ 
+       BRepOffsetAPI_Sewing sewedObj(1);
+  
+@@ -866,10 +866,10 @@
+       if (!sewedObj.SewedShape().IsNull())
+       {
+          shape = sewedObj.SewedShape();
+-         cout << " done" << endl;
++         std::cout << " done" << std::endl;
+       }
+       else
+-         cout << " not possible";
++         std::cout << " not possible";
+    }
+ 
+ 
+@@ -880,8 +880,8 @@
+    {
+       TopExp_Explorer exp0;
+ 
+-      (*testout) << "Trying to build solids ..." << endl;
+-      cout << "Trying to build solids ..." << flush;
++      (*testout) << "Trying to build solids ..." << std::endl;
++      std::cout << "Trying to build solids ..." << flush;
+ 
+       BRepBuilderAPI_MakeSolid ms;
+       int count = 0;
+@@ -893,7 +893,7 @@
+ 
+       if (!count)
+       {
+-         cout << " not possible (no shells)" << endl;
++         std::cout << " not possible (no shells)" << std::endl;
+          return;
+       }
+ 
+@@ -922,10 +922,10 @@
+             shape = newshape;
+          }
+ 
+-         cout << " done" << endl;
++         std::cout << " done" << std::endl;
+       }
+       else
+-         cout << " not possible" << endl;
++         std::cout << " not possible" << std::endl;
+    }
+ 
+ 
+@@ -933,12 +933,12 @@
+ 
+    void OCCGeometry :: BuildVisualizationMesh (double deflection)
+    {
+-      cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
++      std::cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
+ 
+       BRepTools::Clean (shape);
+       // BRepMesh_IncrementalMesh::
+       BRepMesh_IncrementalMesh (shape, deflection, true);
+-      cout << "done" << endl;
++      std::cout << "done" << std::endl;
+    }
+ 
+ 
+@@ -954,7 +954,7 @@
+       Point<3> p1 = Point<3> (x1,y1,z1);
+       Point<3> p2 = Point<3> (x2,y2,z2);
+ 
+-      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << endl;
++      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << std::endl;
+       boundingbox = Box<3> (p1,p2);
+       SetCenter();
+    }
+@@ -985,7 +985,7 @@
+    bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+-      if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
++      if (++cnt % 1000 == 0) std::cout << "Project cnt = " << cnt << std::endl;
+ 
+       gp_Pnt pnt(p(0), p(1), p(2));
+ 
+@@ -1065,7 +1065,7 @@
+       // 
+       // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+       // 
+-      // //    (*testout) << "FastProject count: " << count << endl;
++      // //    (*testout) << "FastProject count: " << count << std::endl;
+       // 
+       // if (count == 50) return false;
+       // 
+@@ -1077,7 +1077,7 @@
+       gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
+       if (cls->Perform(p2d) == TopAbs_OUT)
+       {
+-        //cout << "Projection fails" << endl;
++        //std::cout << "Projection fails" << std::endl;
+         return false;
+       }
+ 
+@@ -1093,14 +1093,14 @@
+ 
+    void OCCGeometry :: WriteOCC_STL(char * filename)
+    {
+-      cout << "writing stl..."; cout.flush();
++      std::cout << "writing stl..."; std::cout.flush();
+       StlAPI_Writer writer;
+       //writer.RelativeMode() = Standard_False;
+ 
+       //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+ 
+-      cout << "done" << endl;
++      std::cout << "done" << std::endl;
+    }
+ 
+ 
+@@ -1379,7 +1379,7 @@
+ 	   case TopAbs_VERTEX:
+ 	     count2 = vmap.FindIndex(TopoDS::Vertex(e.Current())); break;
+ 	   default:
+-	     cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << endl;
++	     std::cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << std::endl;
+          }
+ 
+          int nrsubshapes = 0;
+@@ -1414,7 +1414,7 @@
+ 
+    void OCCGeometry :: GetTopologyTree (stringstream & str)
+    {
+-      cout << "Building topology tree ... " << flush;
++      std::cout << "Building topology tree ... " << flush;
+       RecursiveTopologyTree (shape, str, TopAbs_COMPSOLID, false, "CompSolids");
+       RecursiveTopologyTree (shape, str, TopAbs_SOLID, true, "FreeSolids");
+       RecursiveTopologyTree (shape, str, TopAbs_SHELL, true, "FreeShells");
+@@ -1423,7 +1423,7 @@
+       RecursiveTopologyTree (shape, str, TopAbs_EDGE, true, "FreeEdges");
+       RecursiveTopologyTree (shape, str, TopAbs_VERTEX, true, "FreeVertices");
+       str << flush;
+-      //  cout << "done" << endl;
++      //  std::cout << "done" << std::endl;
+    }
+ 
+ 
+@@ -1449,7 +1449,7 @@
+       int twistedfaces = 0;
+       // int edgessamebutnotidentified = 0;
+ 
+-      cout << "checking faces ... " << flush;
++      std::cout << "checking faces ... " << flush;
+ 
+       int i;
+       for (i = 1; i <= fmap.Extent(); i++)
+@@ -1462,7 +1462,7 @@
+             if (!spotfaces++)
+                str << "SpotFace {Spot face} ";
+ 
+-            (*testout) << "Face " << i << " is a spot face" << endl;
++            (*testout) << "Face " << i << " is a spot face" << std::endl;
+             str << "SpotFace/Face" << i << " ";
+             str << "{Face " << i << " } ";
+          }
+@@ -1472,7 +1472,7 @@
+             if (!stripsupportfaces++)
+                str << "StripSupportFace {Strip support face} ";
+ 
+-            (*testout) << "Face " << i << " has strip support" << endl;
++            (*testout) << "Face " << i << " has strip support" << std::endl;
+             str << "StripSupportFace/Face" << i << " ";
+             str << "{Face " << i << " } ";
+          }
+@@ -1483,7 +1483,7 @@
+                str << "SingleStripFace {Single strip face} ";
+ 
+             (*testout) << "Face " << i << " is a single strip (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)" << endl;
++               << " and edge " << emap.FindIndex(e2) << " are identical)" << std::endl;
+             str << "SingleStripFace/Face" << i << " ";
+             str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+                << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+@@ -1496,7 +1496,7 @@
+ 
+             (*testout) << "Face " << i << " is a strip (edge " << emap.FindIndex(e1)
+                << " and edge " << emap.FindIndex(e2)
+-               << " are identical)" << endl;
++               << " are identical)" << std::endl;
+             str << "StripFace/Face" << i << " ";
+             str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+                << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+@@ -1508,7 +1508,7 @@
+                str << "FaceSplitByVertices {Face split by vertices} ";
+ 
+             (*testout) << "Face " << i << " is split by " << count
+-               << " vertex/vertices " << endl;
++               << " vertex/vertices " << std::endl;
+             str << "FaceSplitByVertices/Face" << i << " ";
+             str << "{Face " << i << " (split by " << count << "vertex/vertices)} ";
+          }
+@@ -1521,7 +1521,7 @@
+                if (!smoothpinfaces++)
+                   str << "SmoothPinFace {Smooth pin face} ";
+ 
+-               (*testout) << "Face " << i << " is a smooth pin" << endl;
++               (*testout) << "Face " << i << " is a smooth pin" << std::endl;
+                str << "SmoothPinFace/Face" << i << " ";
+                str << "{Face " << i << " } ";
+             }
+@@ -1530,7 +1530,7 @@
+                if (!stretchedpinfaces++)
+                   str << "StretchedPinFace {Stretched pin face} ";
+ 
+-               (*testout) << "Face " << i << " is a streched pin" << endl;
++               (*testout) << "Face " << i << " is a streched pin" << std::endl;
+                str << "StretchedPinFace/Face" << i << " ";
+                str << "{Face " << i << " } ";
+             }
+@@ -1542,14 +1542,14 @@
+             if (!twistedfaces++)
+                str << "TwistedFace {Twisted face} ";
+ 
+-            (*testout) << "Face " << i << " is twisted" << endl;
++            (*testout) << "Face " << i << " is twisted" << std::endl;
+             str << "TwistedFace/Face" << i << " ";
+             str << "{Face " << i << " } ";
+          }
+       }
+ 
+-      cout << "done" << endl;
+-      cout << "checking edges ... " << flush;
++      std::cout << "done" << std::endl;
++      std::cout << "checking edges ... " << flush;
+ 
+       // double dmax;
+       // int cnt = 0;
+@@ -1577,7 +1577,7 @@
+ 
+       str << flush;
+ 
+-      cout << "done" << endl;
++      std::cout << "done" << std::endl;
+    }
+ 
+ 
+@@ -1651,11 +1651,11 @@
+ 
+    void OCCParameters :: Print(ostream & ost) const
+    {
+-      ost << "OCC Parameters:" << endl
++      ost << "OCC Parameters:" << std::endl
+          << "close edges: " << resthcloseedgeenable
+-         << ", fac = " << resthcloseedgefac << endl
++         << ", fac = " << resthcloseedgefac << std::endl
+ 		 << "minimum edge length: " << resthminedgelenenable
+-		 << ", min len = " << resthminedgelen << endl;
++		 << ", min len = " << resthminedgelen << std::endl;
+    }
+ 
+ 
+--- netgen_ref/libsrc/occ/occgeom.hpp
++++ netgen/libsrc/occ/occgeom.hpp
+@@ -291,7 +291,7 @@
+ 
+       OCCSurface GetSurface (int surfi)
+       {
+-         cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
++         std::cout << "OCCGeometry::GetSurface using PLANESPACE" << std::endl;
+          return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
+       }
+ 
+--- netgen_ref/libsrc/occ/occmeshsurf.cpp
++++ netgen/libsrc/occ/occmeshsurf.cpp
+@@ -111,13 +111,13 @@
+       {
+ 	(*testout) << "u " << geominfo.u << " v " << geominfo.v 
+ 		   << " du " << lprop.D1U().X() << " "<< lprop.D1U().Y() << " "<< lprop.D1U().Z()
+-		   << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << endl;
++		   << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << std::endl;
+       }
+ 
+ 
+ 
+     if (orient == TopAbs_REVERSED) n = -1*n;
+-    //  (*testout) << "GetNormalVector" << endl;
++    //  (*testout) << "GetNormalVector" << std::endl;
+   }
+ 
+ 
+@@ -130,8 +130,8 @@
+       {
+ 	p1 = ap1; p2 = ap2;
+ 
+-	//cout << "p1 = " << p1 << endl;
+-	//cout << "p2 = " << p2 << endl;
++	//std::cout << "p1 = " << p1 << std::endl;
++	//std::cout << "p2 = " << p2 << std::endl;
+       
+ 	GetNormalVector (p1, geominfo1, ez);
+       
+@@ -152,7 +152,7 @@
+ 	ez.Normalize();
+ 	ey = Cross (ez, ex);
+ 	nmid = ez;
+-	//cout << "ex " << ex << " ey " << ey << " ez " << ez << endl;
++	//std::cout << "ex " << ex << " ey " << ey << " ez " << ez << std::endl;
+       }
+     else
+       {
+@@ -182,9 +182,9 @@
+ 	D1(0,1) = dv.X(); D1(1,1) = dv.Y(); D1(2,1) = dv.Z();
+ 
+ 	/*
+-	  (*testout) << "DefineTangentialPlane" << endl
+-	  << "---------------------" << endl;
+-	  (*testout) << "D1 = " << endl << D1 << endl;
++	  (*testout) << "DefineTangentialPlane" << std::endl
++	  << "---------------------" << std::endl;
++	  (*testout) << "D1 = " << std::endl << D1 << std::endl;
+ 	*/
+ 
+ 	Transpose (D1, D1T);
+@@ -274,7 +274,7 @@
+ 	/*
+ 	  if(zone == -1)
+ 	  {
+-	  (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << endl;
++	  (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << std::endl;
+ 	  glob_testout = true;
+ 	  GetNormalVector (p3d, geominfo, n);
+ 	  glob_testout = false;
+@@ -284,7 +284,7 @@
+     else
+       {
+ 	pplane = Point<2>(geominfo.u, geominfo.v);
+-	//      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << endl;
++	//      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << std::endl;
+ 	pplane = Point<2> (1/h * (Amatinv * (pplane-psp1)));
+ 	//      pplane = Point<2> (h * (Amatinv * (pplane-psp1)));
+ 	//      pplane = Point<2> (1/h * ((pplane-psp1)));
+@@ -301,11 +301,11 @@
+   { 
+     if (projecttype == PLANESPACE)
+       {
+-	//      cout << "2d   : " << pplane << endl;
++	//      std::cout << "2d   : " << pplane << std::endl;
+ 	p3d = p1 + (h * pplane(0)) * ex + (h * pplane(1)) * ey;
+-	//      cout << "3d   : " << p3d << endl;
++	//      std::cout << "3d   : " << p3d << std::endl;
+ 	Project (p3d, gi);  
+-	//      cout << "proj : " << p3d << endl;
++	//      std::cout << "proj : " << p3d << std::endl;
+       }
+     else
+       {
+@@ -325,11 +325,11 @@
+   void OCCSurface :: Project (Point<3> & p, PointGeomInfo & gi)
+   {
+     //   static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << std::endl;
+   
+     gp_Pnt pnt(p(0), p(1), p(2));
+ 
+-    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+ 
+ 
+     /*
+@@ -337,7 +337,7 @@
+ 
+     if (!proj.NbPoints())
+       {
+-	cout << "Project Point on Surface FAIL" << endl;
++	std::cout << "Project Point on Surface FAIL" << std::endl;
+ 	throw UVBoundsException();
+       }
+     */
+@@ -347,13 +347,13 @@
+ 
+ 
+     /*
+-      cout << "NP = " << proj.NbPoints() << endl;
++      std::cout << "NP = " << proj.NbPoints() << std::endl;
+ 
+       for (int i = 1; i <= proj.NbPoints(); i++)
+       {
+       gp_Pnt pnt2 = proj.Point(i);
+       Point<3> p2 = Point<3> (pnt2.X(), pnt2.Y(), pnt2.Z());
+-      cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << endl;
++      std::cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << std::endl;
+       }
+     */
+ 
+@@ -368,7 +368,7 @@
+     suval.Coord( u, v);
+     pnt = occface->Value( u, v );
+     
+-    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+     gi.u = u;
+     gi.v = v;
+     
+@@ -520,7 +520,7 @@
+   GetNormalVector(INDEX surfind, const Point<3> & p, Vec<3> & n) const
+   {
+     //  static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "GetNV cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "GetNV cnt = " << cnt << std::endl;
+     Standard_Real u,v;
+ 
+     gp_Pnt pnt(p(0), p(1), p(2));
+@@ -533,9 +533,9 @@
+ 
+     if (proj.NbPoints() < 1)
+       {
+-	cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-	     << endl;
+-	cout << p << endl;
++	std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++	     << std::endl;
++	std::cout << p << std::endl;
+ 	return;
+       }
+  
+@@ -554,7 +554,7 @@
+ 
+     /*
+       if (!occface->IsCNu (1) || !occface->IsCNv (1))
+-      (*testout) << "SurfOpt: Differentiation FAIL" << endl;
++      (*testout) << "SurfOpt: Differentiation FAIL" << std::endl;
+     */
+ 
+     n = Cross (Vec3d(du.X(), du.Y(), du.Z()),
+@@ -580,9 +580,9 @@
+ 
+     if (proj.NbPoints() < 1)
+       {
+-	cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-	     << endl;
+-	cout << p << endl;
++	std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++	     << std::endl;
++	std::cout << p << std::endl;
+ 	return 0;
+       }
+  
+@@ -693,7 +693,7 @@
+  
+ 	if (!geometry.FastProject (surfi, hnewp, u, v))
+ 	  {
+-	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
++	  //  std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
+ 	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
+ 	    geometry.Project (surfi, hnewp, u, v);
+ 	  }
+@@ -741,7 +741,7 @@
+     if (surfi > 0)
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+ 	{
+-	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
++	  std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
+           double u, v;
+ 	  geometry.Project (surfi, p, u, v);
+ 	}
+--- netgen_ref/nglib/nglib.cpp
++++ netgen/nglib/nglib.cpp
+@@ -75,8 +75,8 @@
+    // initialize, deconstruct Netgen library:
+    DLL_HEADER void Ng_Init ()
+    {
+-      mycout = &cout;
+-      myerr = &cerr;
++      mycout = &std::cout;
++      myerr = &std::cerr;
+       // netgen::testout->SetOutStream (new ofstream ("test.out"));
+       testout = new ofstream ("test.out");
+    }
+@@ -515,7 +515,7 @@
+       Mesh * m;
+       MeshFromSpline2D (*(SplineGeometry2d*)geom, m, mparam);
+ 
+-      cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << endl;
++      std::cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << std::endl;
+ 
+       *mesh = (Ng_Mesh*)m;
+       return NG_OK;
+@@ -620,7 +620,7 @@
+          /*
+          for (int i = 1; i <= readedges.Size(); i+=2)
+          {
+-         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
++         std::cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << std::endl;
+          }
+          */
+          geo->AddEdges(readedges);
+@@ -707,22 +707,22 @@
+       int retval = STLSurfaceMeshing (*stlgeometry, *me);
+       if (retval == MESHING3_OK)
+       {
+-         (*mycout) << "Success !!!!" << endl;
++         (*mycout) << "Success !!!!" << std::endl;
+          stlgeometry->surfacemeshed = 1;
+          stlgeometry->surfaceoptimized = 0;
+          stlgeometry->volumemeshed = 0;
+       } 
+       else if (retval == MESHING3_OUTERSTEPSEXCEEDED)
+       {
+-         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << endl;
++         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << std::endl;
+       }
+       else if (retval == MESHING3_TERMINATE)
+       {
+-         (*mycout) << "Meshing Stopped!" << endl;
++         (*mycout) << "Meshing Stopped!" << std::endl;
+       }
+       else
+       {
+-         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << endl;
++         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << std::endl;
+       }
+ 
+ 
+@@ -1179,7 +1179,7 @@
+ 
+    DLL_HEADER void MyError (const char * ch)
+    {
+-      cerr << ch;
++      std::cerr << ch;
+    }
+ 
+ 
diff --git a/products/patches/netgen53ForSalome_Windows.patch b/products/patches/netgen53ForSalome_Windows.patch
new file mode 100644
index 0000000..84ef164
--- /dev/null
+++ b/products/patches/netgen53ForSalome_Windows.patch
@@ -0,0 +1,1455 @@
+diff -NaurwB netgen-5.3.1_orig/Makefile.am netgen-5.3.1_new/Makefile.am
+--- netgen-5.3.1_orig/Makefile.am	2016-10-21 17:32:01.000000000 +0300
++++ netgen-5.3.1_new/Makefile.am	2016-10-21 17:31:54.000000000 +0300
+@@ -2,7 +2,7 @@
+ 
+ METASOURCES = AUTO
+ 
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ 
+ # TESTS = ng/netgen -batchmode
+ 
+diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in
+--- netgen-5.3.1_orig/Makefile.in	2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_new/Makefile.in	2016-10-03 16:17:10.164707368 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+ 
+diff -NaurwB netgen-5.3.1_orig/configure.ac netgen-5.3.1_new/configure.ac
+--- netgen-5.3.1_orig/configure.ac	2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_new/configure.ac	2016-09-29 14:34:11.957389447 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+ 
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+ 
+@@ -42,8 +42,8 @@
+ 
+ if test a$occon = atrue ; then
+ 
+-	AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-	AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++	AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++	AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ 
+ #  -lTKDCAF
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/findip.hpp netgen-5.3.1_new/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/findip.hpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/findip.hpp	2016-09-30 20:38:56.662234111 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
+ 
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array a;
+   Array c;
+   Mat<3> m, inv;
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_new/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/improve3.cpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/improve3.cpp	2016-10-03 16:16:57.636639300 +0300
+@@ -1219,6 +1219,7 @@
+ 
+ 	      tetused = 0;
+ 	      tetused[0] = 1;
++              int nbtetused = 0;
+ 
+ 	      for (int l = 2; l < nsuround; l++)
+ 		{
+@@ -1239,10 +1240,12 @@
+ 			      
+ 			      tetused[k] = 1; 
+ 			      suroundpts[l] = newpi;
++                              ++nbtetused;
+ 			    }			
+ 		      }
+ 		}
+-
++              if ( nbtetused < nsuround )
++                continue;
+ 	      
+ 	      bad1 = 0;
+ 	      for (int k = 0; k < nsuround; k++)
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_new/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.cpp	2016-09-29 14:04:51.500148293 +0300
+@@ -1,4 +1,5 @@
+ #include 
++#include  // to get DBL_MIN defined
+ 
+ #include "meshing.hpp"  
+ 
+@@ -666,7 +667,8 @@
+ 
+         double det = trans.Det();
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+ 
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+ 
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+ 
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+ 
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+ 
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+ 
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+ 
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_new/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.hpp	2016-09-30 14:28:09.147575801 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
+ 
++class Mesh; // added due to compilation errors on some platforms
+ 
+ 
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+ 	  return 8;
+ 	default:
+ #ifdef DEBUG
+-	  PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++	  PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+ 	    ;
+ 	}
+@@ -682,7 +683,7 @@
+ 	case PRISM12: return 5;
+ 	default:
+ #ifdef DEBUG
+-	  PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++	  PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+ 	    ;
+ 	}
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx	2016-09-29 14:44:01.996464598 +0300
+@@ -47,9 +47,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx	2016-09-29 14:44:01.996464598 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+ 
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include 
++
++#if OCC_VERSION_MAJOR < 7
+ #include 
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include 
+ #endif
++
++#include 
++#include 
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+ 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx	2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ #include 
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+ 
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+ 
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include 
++
++#if OCC_VERSION_MAJOR < 7
+ #include 
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include 
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include 
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include 
+ #endif
+@@ -43,10 +48,7 @@
+ #include 
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+ 
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ 
+ #ifndef _Standard_HeaderFile
+ #include 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx	2016-09-29 14:04:51.504148314 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+ 
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+ 
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+ 
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+ 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx	2016-09-29 14:44:02.000464619 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include 
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include 
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include 
+ #endif
+@@ -23,8 +26,6 @@
+ #include 
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx	2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
+ #include 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx	2016-09-29 14:44:02.004464639 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include 
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include 
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include 
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+ 
+ 
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_new/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occconstruction.cpp	2016-09-29 14:04:51.500148293 +0300
+@@ -28,7 +28,7 @@
+ #include 
+ #include 
+ #include 
+-#include 
++//#include 
+ //#include 
+ #include 
+ #include 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp	2016-09-29 14:04:51.500148293 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)
+             return;
+ 
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+ 
+       if (h < maxside && depth < 10)
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+ 
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+ 
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+ 
+@@ -259,15 +259,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per /DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++                pnt.Distance(oldpnt));
+ 
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //	   <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+ 
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+ 
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -282,7 +286,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+ 
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+ 
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -335,7 +345,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -365,6 +376,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+ 
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -384,6 +396,7 @@
+       int facenr = 0;
+       int edgenr = 0;
+ 
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+ 
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+ 
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -477,20 +491,104 @@
+ 
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+ 
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+ 
+@@ -500,17 +598,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+ 
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -594,6 +695,8 @@
+       //		(*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //				<< " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //	exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+ 
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_new/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.cpp	2016-09-29 16:22:31.636328123 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include  // -- to optimize Project() and FastProject()
++#include 
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+ 
+-
+ namespace netgen
+ {
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+@@ -112,7 +121,7 @@
+       double surfacecont = 0;
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;
+ 
+          Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+ 
+ 
+@@ -200,7 +209,7 @@
+ 
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;
+ 
+          Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+ 
+ 
+@@ -284,7 +293,7 @@
+ 
+          {
+             BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+ 
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+@@ -312,7 +321,7 @@
+ 
+ 
+          {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+             {
+@@ -438,7 +447,7 @@
+ 
+ 
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -483,7 +492,7 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+                   TopoDS_Solid newsolid = solid;
+                   BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //		  rebuild->Apply(shape);
+                   rebuild->Replace(solid, newsolid, Standard_False);
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+@@ -906,7 +915,7 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+             TopoDS_Solid newsolid = solid;
+             BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Replace(solid, newsolid, Standard_False);
+ 
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+@@ -951,25 +960,58 @@
+    }
+ 
+ 
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+ 
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+ 
+       gp_Pnt pnt(p(0), p(1), p(2));
+ 
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
+ 
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
+ 
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+ 
++      return true;
+    }
+ 
+ 
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+ 
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
+ 
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
+ 
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+ 
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      //writer.RelativeMode() = Standard_False;
+ 
+-      writer.SetDeflection(0.02);
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+ 
+       cout << "done" << endl;
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;
+ 
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+ 
+       // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
++      Handle(TDocStd_Document) iges_doc;
+ 
+       // Check if a IGES File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);
+ 
+       // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+ 
+       TDF_LabelSequence iges_shapes;
+       iges_shape_contents->GetShapes(iges_shapes);
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;
+ 
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+ 
+       // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
++      Handle(TDocStd_Document) step_doc;
+ 
+       // Check if a STEP File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);
+ 
+       // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+ 
+       TDF_LabelSequence step_shapes;
+       step_shape_contents->GetShapes(step_shapes);
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when 
+       // opening BREP Files, since BREP Files have no colour data.
+       // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();
+       occgeo->changed = 1;
+       occgeo->BuildFMap();
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_new/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.hpp	2016-09-29 14:44:01.996464598 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include 
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
+ 
++// -- Optimization: to use cached projector and classifier
++#include 
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ 
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap fprjmap;
++      mutable NCollection_DataMap fclsmap;
+ 
+    public:
+       TopoDS_Shape shape;
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support
+       // XCAF Handle to make the face colours available to the rest of
+       // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
++      Handle(XCAFDoc_ColorTool) face_colours;
+ 
+      mutable int changed;
+       Array facemeshstatus;
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;
+ 
+ 
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+ 
+       Box<3> GetBoundingBox()
+@@ -266,9 +279,14 @@
+       Point<3> Center()
+       {  return center;}
+ 
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
+ 
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp	2016-09-29 14:08:00.045144560 +0300
+@@ -6,6 +6,7 @@
+ #include 
+ #include 
+ #include 
++#include  // -- moved here from occgeom.hpp
+ 
+ 
+ namespace netgen
+@@ -96,13 +97,16 @@
+ 
+ 	n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+ 	n(0)=lprop.Normal().X();
+ 	n(1)=lprop.Normal().Y();
+ 	n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+ 	(*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +435,33 @@
+ 
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+ 
+ 
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+ 
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+ 	p = hp;
+-	return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+ 
+ 
+@@ -680,7 +691,8 @@
+ 	if (!geometry.FastProject (surfi, hnewp, u, v))
+ 	  {
+ 	  //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	    geometry.Project (surfi, hnewp);
++	    // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++	    geometry.Project (surfi, hnewp, u, v);
+ 	  }
+ 
+ 	newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+ 
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+ 
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+ 	{
+ 	  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-	  geometry.Project (surfi, p);
++          double u, v;
++	  geometry.Project (surfi, p, u, v);
++	}
+ 	}
+-  };
+ 
+ 
+ 
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/utilities.h netgen-5.3.1_new/libsrc/occ/utilities.h
+--- netgen-5.3.1_orig/libsrc/occ/utilities.h	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/utilities.h	2016-09-29 14:04:51.504148314 +0300
+@@ -33,6 +33,7 @@
+ 
+ #include 
+ #include 
++#include 
+ #include 
+ // #include "SALOME_Log.hxx"
+ 
+diff -NaurwB netgen-5.3.1_orig/nglib/nglib.h netgen-5.3.1_new/nglib/nglib.h
+--- netgen-5.3.1_orig/nglib/nglib.h	2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/nglib.h	2016-09-29 14:04:51.504148314 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
+diff -Naur netgen-5.3.1_orig/libsrc/csg/Makefile.am netgen-5.3.1_new/libsrc/csg/Makefile.am
+--- netgen-5.3.1_orig/libsrc/csg/Makefile.am	2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/csg/Makefile.am	2016-11-08 17:48:02.000000000 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ 
+ 
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+ 
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_new/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_orig/libsrc/geom2d/Makefile.am	2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/geom2d/Makefile.am	2016-11-08 17:49:13.000000000 +0300
+@@ -4,16 +4,15 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ 
+ 
+ 
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD = 	$(top_builddir)/libsrc/meshing/libmesh.la
+ 
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_orig/libsrc/interface/Makefile.am netgen-5.3.1_new/libsrc/interface/Makefile.am
+--- netgen-5.3.1_orig/libsrc/interface/Makefile.am	2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_new/libsrc/interface/Makefile.am	2016-11-08 17:49:26.000000000 +0300
+@@ -2,14 +2,11 @@
+ 
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+ 	read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+ 	writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+ 	writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+ 	wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+ 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/Makefile.am netgen-5.3.1_new/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_orig/libsrc/meshing/Makefile.am	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/Makefile.am	2016-11-08 17:48:44.000000000 +0300
+@@ -15,7 +15,7 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ 
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+ 	clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp	    \
+@@ -30,8 +30,5 @@
+ 	topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+ 	parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+ 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-	$(top_builddir)/libsrc/gprim/libgprim.la \
+-	$(top_builddir)/libsrc/general/libgen.la \
+-	-lz
++libmesh_la_LIBADD = -lz
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/occ/Makefile.am netgen-5.3.1_new/libsrc/occ/Makefile.am
+--- netgen-5.3.1_orig/libsrc/occ/Makefile.am	2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Makefile.am	2016-11-08 17:30:53.000000000 +0300
+@@ -14,10 +14,10 @@
+ 
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ 
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+ 
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_new/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am	2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/stlgeom/Makefile.am	2016-11-08 18:28:09.000000000 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+ 
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ 
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ 
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+ 
+diff -Naur netgen-5.3.1_orig/nglib/Makefile.am netgen-5.3.1_new/nglib/Makefile.am
+--- netgen-5.3.1_orig/nglib/Makefile.am	2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/Makefile.am	2016-11-08 19:01:17.000000000 +0300
+@@ -14,6 +14,9 @@
+ 	$(top_builddir)/libsrc/stlgeom/libstl.la \
+ 	$(top_builddir)/libsrc/occ/libocc.la \
+ 	$(top_builddir)/libsrc/meshing/libmesh.la \
++	$(top_builddir)/libsrc/general/libgen.la \
++	$(top_builddir)/libsrc/gprim/libgprim.la \
++	$(top_builddir)/libsrc/linalg/libla.la
+ 	$(OCCLIBS) $(MPI_LIBS)
+ 
+ libnglib_la_LDFLAGS = -avoid-version
diff --git a/products/patches/netgen53ForWindows.patch b/products/patches/netgen53ForWindows.patch
new file mode 100644
index 0000000..5321974
--- /dev/null
+++ b/products/patches/netgen53ForWindows.patch
@@ -0,0 +1,1228 @@
+diff -Naur netgen-5.3.1_orig/CMakeLists.txt netgen-5.3.1_modif/CMakeLists.txt
+--- netgen-5.3.1_orig/CMakeLists.txt	1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/CMakeLists.txt	2019-01-22 12:34:45.926401100 +0300
+@@ -0,0 +1,75 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
++INCLUDE(CMakeDependentOption)
++
++PROJECT(netgen C CXX)
++
++# Ensure a proper linker behavior:
++CMAKE_POLICY(SET CMP0003 NEW)
++
++# Versioning
++# ===========
++# Project name, upper case
++STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
++
++SET(${PROJECT_NAME_UC}_MAJOR_VERSION 5)
++SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
++SET(${PROJECT_NAME_UC}_PATCH_VERSION 1)
++SET(${PROJECT_NAME_UC}_VERSION
++  ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
++
++# Common CMake macros
++# ===================
++LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
++# Detect platform
++INCLUDE(FindPLATFORM) 
++# Detect OCCT
++INCLUDE(FindCAS)
++
++# Detect ZLIB on Windows
++IF(WIN32)
++  SET(ZLIB_ROOT_DIR $ENV{ZLIB_ROOT_DIR})
++  IF(EXISTS ${ZLIB_ROOT_DIR})
++    SET(ZLIB_ROOT ${ZLIB_ROOT_DIR})
++    INCLUDE(FindZLIB)
++    IF (NOT ${ZLIB_FOUND})
++      MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please check zlib installation !")
++    ENDIF()
++  ELSE()
++    MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please define ZLIB_ROOT_DIR !")
++  ENDIF()
++ENDIF()
++
++
++# Common definitions
++# ==================
++ADD_DEFINITIONS(-DNO_PARALLEL_THREADS)
++ADD_DEFINITIONS(-DOCCGEOMETRY)
++
++# Target directories
++SET(NETGEN_INSTALL_BINS "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Install path: netgen binaries")
++SET(NETGEN_INSTALL_LIBS "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Install path: netgen libs")
++SET(NETGEN_INSTALL_HEADERS "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Install path: netgen headers")
++SET(NETGEN_INSTALL_CMAKE "${CMAKE_INSTALL_PREFIX}/cmake" CACHE PATH "Install path: netgen cmake files")
++
++# Sub-directories
++ADD_SUBDIRECTORY(nglib)
++ADD_SUBDIRECTORY(cmake)
++
+diff -Naur netgen-5.3.1_orig/cmake/CMakeLists.txt netgen-5.3.1_modif/cmake/CMakeLists.txt
+--- netgen-5.3.1_orig/cmake/CMakeLists.txt	1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/CMakeLists.txt	2019-01-22 12:34:45.946401400 +0300
+@@ -0,0 +1,22 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++IF(WIN32)
++ INSTALL(FILES FindZLIB.cmake DESTINATION ${NETGEN_INSTALL_CMAKE})
++ENDIF()
+\ No newline at end of file
+diff -Naur netgen-5.3.1_orig/cmake/FindCAS.cmake netgen-5.3.1_modif/cmake/FindCAS.cmake
+--- netgen-5.3.1_orig/cmake/FindCAS.cmake	1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/FindCAS.cmake	2019-01-22 12:34:45.955403500 +0300
+@@ -0,0 +1,152 @@
++#  Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++SET(CASROOT $ENV{CASROOT})
++ADD_DEFINITIONS(-DLIN -DLINTEL -DCSFDB)
++ADD_DEFINITIONS(-DNo_exception)
++ADD_DEFINITIONS(-DHAVE_LIMITS_H)
++
++IF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++  ADD_DEFINITIONS(-D_OCC64)
++ENDIF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++
++IF(NOT WINDOWS)
++  FIND_LIBRARY(Xmu Xmu)
++  IF(Xmu)
++    SET(CAS_LDPATH ${Xmu})
++  ENDIF(Xmu)
++ENDIF(NOT WINDOWS)
++
++IF(WINDOWS)
++  IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/libd ${CASROOT}/win64/vc10/lib ${CASROOT}/win64/vc14/libd)
++  ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/lib ${CASROOT}/win64/vc10/lib ${CASROOT}/win64/vc14/lib)
++  ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++ELSE(WINDOWS)
++  SET(CASROOT_LIBDIR ${CASROOT}/lib)
++ENDIF(WINDOWS)
++
++SET(_CAS_VERSION_FILE_NAME Standard_Version.hxx)
++
++# Include directories:
++FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include/opencascade)
++IF(CAS_INCLUDE_DIRS)
++ELSE()
++  FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include inc)
++ENDIF()
++
++
++FIND_LIBRARY(BinLPlugin BinLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinPlugin BinPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinTObjPlugin BinTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinXCAFPlugin BinXCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(FWOSPlugin FWOSPlugin PATHS ${CASROOT_LIBDIR})
++
++FIND_LIBRARY(PTKernel PTKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdLPlugin StdLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdPlugin StdPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKAdvTools TKAdvTools PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBin TKBin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinL TKBinL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinTObj TKBinTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinXCAF TKBinXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBO TKBO PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBool TKBool PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBRep TKBRep PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCAF TKCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCDF TKCDF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKernel TKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFeat TKFeat PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFillet TKFillet PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG2d TKG2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG3d TKG3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomAlgo TKGeomAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomBase TKGeomBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKHLR TKHLR PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKIGES TKIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKLCAF TKLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMath TKMath PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMesh TKMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMeshVS TKMeshVS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKNIS TKNIS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOffset TKOffset PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOpenGl TKOpenGl PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPCAF TKPCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPLCAF TKPLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPrim TKPrim PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPShape TKPShape PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKService TKService PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShapeSchema TKShapeSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShHealing TKShHealing PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdLSchema TKStdLSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdSchema TKStdSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP TKSTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP209 TKSTEP209 PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPAttr TKSTEPAttr PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPBase TKSTEPBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTL TKSTL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTObj TKTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTopAlgo TKTopAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV2d TKV2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV3d TKV3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKVRML TKVRML PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAF TKXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAFSchema TKXCAFSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDEIGES TKXDEIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDESTEP TKXDESTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXMesh TKXMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXml TKXml PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlL TKXmlL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlTObj TKXmlTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlXCAF TKXmlXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXSBase TKXSBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XCAFPlugin XCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlLPlugin XmlLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlPlugin XmlPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlTObjPlugin XmlTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlXCAFPlugin XmlXCAFPlugin PATHS ${CASROOT_LIBDIR})
++
++SET(CAS_KERNEL ${TKernel} ${TKMath})
++SET(CAS_OCAF ${TKernel} ${TKMath} ${TKCDF} ${TKLCAF})
++SET(CAS_VIEWER ${TKService} ${TKV3d} ${TKG3d} ${TKGeomBase} ${TKBRep})
++SET(CAS_OCAFVIS ${TKCAF} ${TKBRep} ${TKG2d})
++SET(CAS_MODELER ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKBRep} ${TKTopAlgo} ${TKG2d})
++
++SET(TKV3d_EA ${TKernel} ${TKMath} ${TKV3d})
++SET(TKBool_EA ${TKernel} ${TKMath} ${TKBRep} ${TKG2d} ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKTopAlgo} ${TKBool})
++SET(TKBRep_EA ${TKernel} ${TKMath} ${TKBRep})
++SET(TKIGES_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKIGES})
++SET(TKSTEP_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKSTEP})
++SET(TKSTL_EA ${TKernel} ${TKMath} ${TKSTL})
++SET(TKCAF_EA ${TKPrim} ${TKCAF})
++
++SET(TKV3d ${TKV3d_EA})
++SET(TKBool ${TKBool_EA})
++SET(TKBRep ${TKBRep_EA})
++SET(TKIGES ${TKIGES_EA})
++SET(TKSTEP ${TKSTEP_EA})
++SET(TKSTL ${TKSTL_EA})
++SET(TKCAF ${TKCAF_EA})
++
++#LIBRARIES
++SET(OCCLIBS ${CAS_LDPATH})
++SET(OCCLIBS ${OCCLIBS} ${TKernel} ${TKGeomBase} ${TKMath} ${TKG2d} ${TKG3d} ${TKXSBase} ${TKOffset} ${TKFillet} ${TKShHealing})
++SET(OCCLIBS ${OCCLIBS} ${TKMesh} ${TKMeshVS} ${TKTopAlgo} ${TKGeomAlgo} ${TKBool} ${TKPrim} ${TKBO} ${TKIGES} ${TKBRep})
++SET(OCCLIBS ${OCCLIBS} ${TKSTEPBase} ${TKSTEP} ${TKSTL} ${TKSTEPAttr} ${TKSTEP209} ${TKXDESTEP} ${TKXDEIGES} ${TKXCAF} ${TKLCAF})
+\ No newline at end of file
+diff -Naur netgen-5.3.1_orig/cmake/FindPLATFORM.cmake netgen-5.3.1_modif/cmake/FindPLATFORM.cmake
+--- netgen-5.3.1_orig/cmake/FindPLATFORM.cmake	1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/FindPLATFORM.cmake	2019-01-22 12:34:45.962402900 +0300
+@@ -0,0 +1,96 @@
++#  Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++MARK_AS_ADVANCED(ISSUE)
++FIND_FILE(ISSUE issue /etc)
++IF(ISSUE)
++  SET(WINDOWS 0)
++ELSE()
++  SET(WINDOWS 1)
++ENDIF(ISSUE)
++
++IF(WINDOWS)
++  SET(MACHINE WINDOWS)
++ELSE(WINDOWS)
++  SET(MACHINE PCLINUX)
++ENDIF(WINDOWS)
++
++SET(CMAKE_INSTALL_PREFIX_ENV $ENV{CMAKE_INSTALL_PREFIX})
++IF(CMAKE_INSTALL_PREFIX_ENV)
++  SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_ENV} CACHE PATH "installation prefix" FORCE)
++ENDIF(CMAKE_INSTALL_PREFIX_ENV)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE})
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE Release)
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(WINDOWS)
++ELSE(WINDOWS)
++  SET(ADD_WERROR ON)
++  SET(NAMES ACCEPT_SALOME_WARNINGS ACCEPT_${MODULE}_WARNINGS I_AM_A_TROLL_I_DO_NOT_FIX_${MODULE}_WARNINGS)
++  FOREACH(name ${NAMES})
++    SET(VAL $ENV{${name}})
++    IF(X${VAL} STREQUAL X0)
++      SET(ADD_WERROR ON)
++    ENDIF(X${VAL} STREQUAL X0)
++    IF(X${VAL} STREQUAL X1)
++      SET(ADD_WERROR OFF)
++    ENDIF(X${VAL} STREQUAL X1)
++  ENDFOREACH(name ${NAMES})
++  IF(ADD_WERROR)
++    SET(CMAKE_C_FLAGS "-Werror")
++    SET(CMAKE_CXX_FLAGS "-Werror")
++  ENDIF(ADD_WERROR)
++ENDIF(WINDOWS)
++
++IF(CMAKE_BUILD_TYPE)
++  IF(WINDOWS)
++    MARK_AS_ADVANCED(CLEAR CMAKE_CONFIGURATION_TYPES)
++    SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "compilation types" FORCE)
++  ELSE(WINDOWS)
++    IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++      SET(CMAKE_C_FLAGS_DEBUG "-g")
++      SET(CMAKE_CXX_FLAGS_DEBUG "-g")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    IF(CMAKE_BUILD_TYPE STREQUAL Release)
++      SET(CMAKE_C_FLAGS_RELEASE "-O1 -DNDEBUG")
++      SET(CMAKE_CXX_FLAGS_RELEASE "-O1 -DNDEBUG")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
++  ENDIF(WINDOWS)
++ENDIF(CMAKE_BUILD_TYPE)
++
++SET(PLATFORM_CPPFLAGS)
++SET(PLATFORM_LDFLAGS)
++SET(PLATFORM_LIBADD)
++IF(WINDOWS)
++  ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)  # To disable windows warnings for strcpy, fopen, ...
++  ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)  # To disable windows warnings std::copy, std::transform, ...
++  ADD_DEFINITIONS(-DWNT)
++  ADD_DEFINITIONS(-DPPRO_NT) # For medfile
++  ADD_DEFINITIONS(-D_USE_MATH_DEFINES) # At least for MEDMEM
++  ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501) # Windows 2000 or later API is required
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit
++ELSE(WINDOWS)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl)
++ENDIF(WINDOWS) 
+\ No newline at end of file
+diff -Naur netgen-5.3.1_orig/cmake/FindZLIB.cmake netgen-5.3.1_modif/cmake/FindZLIB.cmake
+--- netgen-5.3.1_orig/cmake/FindZLIB.cmake	1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/FindZLIB.cmake	2019-01-22 12:34:45.972400600 +0300
+@@ -0,0 +1,45 @@
++#  Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++
++SET(_ZLIB_SDIRS)
++
++# Search in ZLIB_ROOT_DIR first
++IF(ZLIB_ROOT_DIR)
++  SET(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT_DIR} NO_DEFAULT_PATH)
++  list(APPEND _ZLIB_SDIRS _ZLIB_SEARCH_ROOT)
++ENDIF()
++
++SET(ZLIB_NAMES z zlib zdll zlib1 zlibd zlibd1 zlib1d)
++
++# Try each search configuration.
++FOREACH(search ${_ZLIB_SDIRS})
++  FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h        ${${search}} PATH_SUFFIXES include)
++  FIND_LIBRARY(ZLIB_LIBRARY  NAMES ${ZLIB_NAMES} ${search} PATH_SUFFIXES lib)
++ENDFOREACH()
++
++MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++IF(ZLIB_FOUND)
++    SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
++    SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
++ENDIF()
+diff -Naur netgen-5.3.1_orig/libsrc/csg/specpoin.hpp netgen-5.3.1_modif/libsrc/csg/specpoin.hpp
+--- netgen-5.3.1_orig/libsrc/csg/specpoin.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/csg/specpoin.hpp	2019-01-22 12:34:45.978401300 +0300
+@@ -8,10 +8,12 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
+ 
++#include 
++
+ namespace netgen
+ {
+ 
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+ 
+   /*
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/general/template.hpp netgen-5.3.1_modif/libsrc/general/template.hpp
+--- netgen-5.3.1_orig/libsrc/general/template.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/general/template.hpp	2019-01-22 12:34:46.006400400 +0300
+@@ -26,10 +26,10 @@
+ DLL_HEADER extern ostream * testout;
+ 
+ /** use instead of cout */
+-extern ostream * mycout;
++DLL_HEADER extern ostream * mycout;
+ 
+ /** error output stream */
+-extern ostream * myerr;
++DLL_HEADER extern ostream * myerr;
+ 
+ /** Error messages display.
+   Error messages are displayed by this function */
+diff -Naur netgen-5.3.1_orig/libsrc/include/mystdlib.h netgen-5.3.1_modif/libsrc/include/mystdlib.h
+--- netgen-5.3.1_orig/libsrc/include/mystdlib.h	2014-08-29 12:54:04.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/include/mystdlib.h	2019-01-22 12:34:46.018400100 +0300
+@@ -66,6 +66,7 @@
+ #  ifdef MSVC_EXPRESS
+ #   include 
+ #  else
++    #define _AFXDLL
+ #   include 
+ #   include 
+ #  endif // MSVC_EXPRESS
+diff -Naur netgen-5.3.1_orig/libsrc/interface/nginterface.cpp netgen-5.3.1_modif/libsrc/interface/nginterface.cpp
+--- netgen-5.3.1_orig/libsrc/interface/nginterface.cpp	2014-08-29 12:54:02.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/interface/nginterface.cpp	2019-01-22 12:34:46.030400300 +0300
+@@ -1,3 +1,16 @@
++#ifdef _MSC_VER
++#ifndef MSVC_EXPRESS
++
++#define _AFXDLL
++
++#include 
++#include 
++#include 
++#include 
++
++#endif
++#endif
++
+ #include 
+ 
+ #include 
+@@ -11,7 +24,6 @@
+ #include "nginterface.h"
+ #include "../visualization/soldata.hpp"
+ 
+-
+ #ifdef _MSC_VER
+ // Philippose - 30/01/2009
+ // MSVC Express Edition Support
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/global.hpp netgen-5.3.1_modif/libsrc/meshing/global.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/global.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/meshing/global.hpp	2019-01-22 12:34:46.042401800 +0300
+@@ -8,6 +8,8 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
+ 
++#include 
++
+ /*
+   global functions and variables
+ */
+@@ -29,7 +31,7 @@
+ 
+   extern Array tets_in_qualclass;
+ 
+-  class multithreadt
++  class DLL_HEADER multithreadt
+   {
+   public:
+     int pause;
+@@ -44,7 +46,7 @@
+     multithreadt();
+   };
+ 
+-  extern volatile multithreadt multithread;
++  DLL_HEADER extern volatile multithreadt multithread;
+ 
+   DLL_HEADER extern string ngdir;
+   extern DebugParameters debugparam;
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/meshclass.hpp netgen-5.3.1_modif/libsrc/meshing/meshclass.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshclass.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/meshing/meshclass.hpp	2019-01-22 12:34:46.064400700 +0300
+@@ -311,7 +311,7 @@
+     { return lockedpoints; }
+ 
+     /// Returns number of domains
+-    int GetNDomains() const;
++    DLL_HEADER int GetNDomains() const;
+ 
+     ///
+     int GetDimension() const 
+@@ -320,7 +320,7 @@
+     { dimension = dim; }
+ 
+     /// sets internal tables
+-    void CalcSurfacesOfNode ();
++    void DLL_HEADER CalcSurfacesOfNode ();
+ 
+     /// additional (temporarily) fix points 
+     void FixPoints (const BitArray & fixpoints);
+@@ -390,13 +390,13 @@
+     ///
+     DLL_HEADER void SetGlobalH (double h);
+     ///
+-    void SetMinimalH (double h);
++    void DLL_HEADER SetMinimalH (double h);
+     ///
+     double MaxHDomain (int dom) const;
+     ///
+     void SetMaxHDomain (const Array & mhd);
+     ///
+-    double GetH (const Point3d & p) const;
++    double DLL_HEADER GetH (const Point3d & p) const;
+     ///
+     double GetMinH (const Point3d & pmin, const Point3d & pmax);
+     ///
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_modif/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp	2019-01-22 13:07:09.630603600 +0300
++++ netgen-5.3.1_modif/libsrc/meshing/meshtype.hpp	2019-01-22 12:34:46.078402400 +0300
+@@ -324,19 +324,19 @@
+ 
+   public:
+     ///
+-    Element2d ();
++    DLL_HEADER Element2d ();
+     ///
+-    Element2d (int anp);
++    DLL_HEADER Element2d (int anp);
+     ///
+     DLL_HEADER Element2d (ELEMENT_TYPE type);
+     ///
+-    Element2d (int pi1, int pi2, int pi3);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3);
+     ///
+-    Element2d (int pi1, int pi2, int pi3, int pi4);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3, int pi4);
+     ///
+-    ELEMENT_TYPE GetType () const { return typ; }
++    DLL_HEADER ELEMENT_TYPE GetType () const { return typ; }
+     /// 
+-    void SetType (ELEMENT_TYPE atyp)
++    DLL_HEADER  void SetType (ELEMENT_TYPE atyp)
+     {
+       typ = atyp;
+       switch (typ)
+@@ -351,9 +351,9 @@
+ 	}
+     }
+     ///
+-    int GetNP() const { return np; }
++    DLL_HEADER int GetNP() const { return np; }
+     ///
+-    int GetNV() const
++    DLL_HEADER int GetNV() const
+     {
+       if (typ == TRIG || typ == TRIG6)
+         return 3;
+@@ -385,95 +385,95 @@
+     }
+ 
+     ///
+-    PointIndex & operator[] (int i) { return pnum[i]; }
++    DLL_HEADER  PointIndex & operator[] (int i) { return pnum[i]; }
+     ///
+-    const PointIndex & operator[] (int i) const { return pnum[i]; }
++    DLL_HEADER const PointIndex & operator[] (int i) const { return pnum[i]; }
+ 
+-    FlatArray PNums () const 
++    DLL_HEADER  FlatArray PNums () const 
+     { return FlatArray (np, &pnum[0]); }
+     
+     ///
+-    PointIndex & PNum (int i) { return pnum[i-1]; }
++    DLL_HEADER PointIndex & PNum (int i) { return pnum[i-1]; }
+     ///
+-    const PointIndex & PNum (int i) const { return pnum[i-1]; }
++    DLL_HEADER const PointIndex & PNum (int i) const { return pnum[i-1]; }
+     ///
+-    PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
++    DLL_HEADER PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
+     ///
+-    const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
++    DLL_HEADER const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
+     ///
+ 
+     ///
+-    PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
+     ///
+-    const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
+     ///
+-    PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
+     ///
+-    const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
+ 
+ 
+-    void SetIndex (int si) { index = si; }
++    DLL_HEADER void SetIndex (int si) { index = si; }
+     ///
+-    int GetIndex () const { return index; }
++    DLL_HEADER int GetIndex () const { return index; }
+ 
+-    int GetOrder () const { return orderx; }
+-    void SetOrder (int aorder) { orderx = ordery = aorder; }
++    DLL_HEADER int GetOrder () const { return orderx; }
++    DLL_HEADER void SetOrder (int aorder) { orderx = ordery = aorder; }
+ 
+ 
+-    void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
+-    void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
+-    void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
+-    void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
++    DLL_HEADER void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
++    DLL_HEADER void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
++    DLL_HEADER void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
++    DLL_HEADER void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
+ 
+ 
+     ///
+-    void GetBox (const T_POINTS & points, Box3d & box) const;
++    DLL_HEADER void GetBox (const T_POINTS & points, Box3d & box) const;
+     /// invert orientation
+-    inline void Invert ();
++    DLL_HEADER inline void Invert ();
+     ///
+-    void Invert2 ();
++    DLL_HEADER void Invert2 ();
+     /// first point number is smallest
+-    inline void NormalizeNumbering ();
++    DLL_HEADER inline void NormalizeNumbering ();
+     ///
+-    void NormalizeNumbering2 ();
++    DLL_HEADER void NormalizeNumbering2 ();
+ 
+-    bool BadElement() const { return badel; }
++    DLL_HEADER bool BadElement() const { return badel; }
+ 
+     // friend ostream & operator<<(ostream  & s, const Element2d & el);
+     friend class Mesh;
+ 
+ 
+     /// get number of 'integration points'
+-    int GetNIP () const;
+-    void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
++    DLL_HEADER int GetNIP () const;
++    DLL_HEADER void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
+ 
+-    void GetTransformation (int ip, const Array & points,
++    DLL_HEADER void GetTransformation (int ip, const Array & points,
+ 			    class DenseMatrix & trans) const;
+-    void GetTransformation (int ip, class DenseMatrix & pmat,
++    DLL_HEADER void GetTransformation (int ip, class DenseMatrix & pmat,
+ 			    class DenseMatrix & trans) const;
+ 
+-    void GetShape (const Point2d & p, class Vector & shape) const;
+-    void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
++    DLL_HEADER void GetShape (const Point2d & p, class Vector & shape) const;
++    DLL_HEADER void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
+     /// matrix 2 * np
+-    void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
+-    void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
++    DLL_HEADER void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
++    DLL_HEADER void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
+     /// matrix 2 * np
+-    void GetPointMatrix (const Array & points,
++    DLL_HEADER void GetPointMatrix (const Array & points,
+ 			 class DenseMatrix & pmat) const; 
+ 
+-    void ComputeIntegrationPointData () const;
++    DLL_HEADER void ComputeIntegrationPointData () const;
+   
+ 
+-    double CalcJacobianBadness (const Array & points) const;
+-    double CalcJacobianBadness (const T_POINTS & points, 
++    DLL_HEADER double CalcJacobianBadness (const Array & points) const;
++    DLL_HEADER double CalcJacobianBadness (const T_POINTS & points, 
+ 				const Vec<3> & n) const;
+-    double CalcJacobianBadnessDirDeriv (const Array & points,
++    DLL_HEADER double CalcJacobianBadnessDirDeriv (const Array & points,
+ 					int pi, Vec2d & dir, double & dd) const;
+ 
+ 
+ 
+-    void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
+-    bool IsDeleted () const 
++    DLL_HEADER void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
++    DLL_HEADER bool IsDeleted () const 
+     {
+ #ifdef DEBUG
+       if (pnum[0] < PointIndex::BASE && !deleted)
+@@ -484,27 +484,27 @@
+ 
+     // Philippose - 08 August 2010
+     // Access functions for the new property: visible
+-    void Visible(bool vis = 1) 
++    DLL_HEADER void Visible(bool vis = 1) 
+     { visible = vis; }
+-    bool IsVisible () const 
++    DLL_HEADER bool IsVisible () const 
+     { return visible; }
+    
+-    void SetRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetRefinementFlag (bool rflag = 1) 
+     { refflag = rflag; }
+-    bool TestRefinementFlag () const
++    DLL_HEADER bool TestRefinementFlag () const
+     { return refflag; }
+ 
+-    void SetStrongRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetStrongRefinementFlag (bool rflag = 1) 
+     { strongrefflag = rflag; }
+-    bool TestStrongRefinementFlag () const
++    DLL_HEADER bool TestStrongRefinementFlag () const
+     { return strongrefflag; }
+ 
+   
+-    SurfaceElementIndex NextElement() { return next; }
++    DLL_HEADER SurfaceElementIndex NextElement() { return next; }
+ 
+-    bool operator==(const Element2d & el2) const;
++    DLL_HEADER bool operator==(const Element2d & el2) const;
+ 
+-    int HasFace(const Element2d& el) const;
++    DLL_HEADER int HasFace(const Element2d& el) const;
+     ///
+     int meshdocval;
+     ///
+@@ -517,7 +517,7 @@
+   };
+ 
+ 
+-  ostream & operator<<(ostream  & s, const Element2d & el);
++  DLL_HEADER ostream & operator<<(ostream  & s, const Element2d & el);
+ 
+ 
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_modif/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp	2019-01-22 13:07:09.801603600 +0300
++++ netgen-5.3.1_modif/libsrc/occ/occgenmesh.cpp	2019-01-22 12:34:46.090399900 +0300
+@@ -18,7 +18,7 @@
+ #define VSMALL 1e-10
+ 
+ 
+-   bool merge_solids = 1;
++   DLL_HEADER bool merge_solids = 1;
+ 
+ 
+   // can you please explain what you intend to compute here (JS) !!!
+@@ -540,7 +540,7 @@
+                  
+                   Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
+                   Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
+-                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  double tol2 = min( eps*eps, 1e-6 * Dist2( fp, lp ));
+                   if ( isClosedEdge )
+                     tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_modif/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp	2019-01-22 13:07:09.828603500 +0300
++++ netgen-5.3.1_modif/libsrc/occ/occgeom.hpp	2019-01-22 12:34:46.100401600 +0300
+@@ -9,6 +9,8 @@
+ 
+ #ifdef OCCGEOMETRY
+ 
++#include 
++
+ #include 
+ 
+ #include "BRep_Tool.hxx"
+@@ -122,7 +124,7 @@
+ {
+ #include "occmeshsurf.hpp"
+ 
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+ 
+ #define PROJECTION_TOLERANCE 1e-10
+ 
+@@ -197,7 +199,7 @@
+ 
+ 
+ 
+-   class OCCGeometry : public NetgenGeometry
++   class DLL_HEADER OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
+       // -- Optimization: to use cached projector and classifier
+@@ -413,7 +415,7 @@
+ 
+ 
+ 
+-   class OCCParameters
++   class DLL_HEADER OCCParameters
+    {
+    public:
+ 
+@@ -453,21 +455,21 @@
+    OCCGeometry * LoadOCC_STEP (const char * filename);
+    OCCGeometry * LoadOCC_BREP (const char * filename);
+ 
+-   extern OCCParameters occparam;
++   extern DLL_HEADER OCCParameters occparam;
+ 
+ 
+    // Philippose - 31.09.2009
+    // External access to the mesh generation functions within the OCC
+    // subsystem (Not sure if this is the best way to implement this....!!)
+-   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++   extern DLL_HEADER int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
+ 			       MeshingParameters & mparam,
+ 			       int perfstepsstart, int perfstepsend);
+ 
+-  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++  extern DLL_HEADER void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
+ 
+-   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++   extern DLL_HEADER void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
+ 
+-   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++   extern DLL_HEADER void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
+ }
+ 
+ #endif
+diff -Naur netgen-5.3.1_orig/libsrc/occ/occmeshsurf.hpp netgen-5.3.1_modif/libsrc/occ/occmeshsurf.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.hpp	2019-01-22 13:07:01.521952200 +0300
++++ netgen-5.3.1_modif/libsrc/occ/occmeshsurf.hpp	2019-01-22 12:34:46.109400000 +0300
+@@ -169,7 +169,7 @@
+ class OCCGeometry;
+ 
+ 
+-class OCCRefinementSurfaces : public Refinement
++class DLL_HEADER OCCRefinementSurfaces : public Refinement
+ {
+   const OCCGeometry & geometry;
+ 
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/stlgeom.hpp netgen-5.3.1_modif/libsrc/stlgeom/stlgeom.hpp
+--- netgen-5.3.1_orig/libsrc/stlgeom/stlgeom.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/stlgeom/stlgeom.hpp	2019-01-22 12:41:58.899495900 +0300
+@@ -38,7 +38,7 @@
+     return true;
+   }
+   
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   
+ 
+ 
+@@ -98,7 +98,7 @@
+ 
+ 
+ 
+-  class STLGeometry : public STLTopology, public NetgenGeometry
++  class DLL_HEADER STLGeometry : public STLTopology, public NetgenGeometry
+   {
+     // edges to be meshed:
+     Array edges;
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/stltool.hpp netgen-5.3.1_modif/libsrc/stlgeom/stltool.hpp
+--- netgen-5.3.1_orig/libsrc/stlgeom/stltool.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/stlgeom/stltool.hpp	2019-01-22 12:31:33.216947700 +0300
+@@ -183,7 +183,7 @@
+ };
+ 
+ 
+-class STLDoctorParams
++class DLL_HEADER STLDoctorParams
+ {
+ public:
+   int drawmeshededges;
+@@ -218,11 +218,11 @@
+   void Print (ostream & ost) const;
+ };
+ 
+-extern STLDoctorParams stldoctor;
++extern DLL_HEADER STLDoctorParams stldoctor;
+ 
+ 
+ 
+-class STLParameters
++class DLL_HEADER STLParameters
+ {
+ public:
+   /// angle for edge detection
+@@ -267,7 +267,7 @@
+   void Print (ostream & ost) const;
+ };
+ 
+-extern STLParameters stlparam;
++extern DLL_HEADER STLParameters stlparam;
+ 
+ 
+ void STLMeshing (STLGeometry & geom,
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/stltopology.hpp netgen-5.3.1_modif/libsrc/stlgeom/stltopology.hpp
+--- netgen-5.3.1_orig/libsrc/stlgeom/stltopology.hpp	2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/stlgeom/stltopology.hpp	2019-01-22 12:43:39.341330600 +0300
+@@ -236,7 +236,7 @@
+ 
+ 
+ 
+-class STLTopology
++class DLL_HEADER STLTopology
+ {
+ protected:
+   Array trias;
+diff -Naur netgen-5.3.1_orig/nglib/CMakeLists.txt netgen-5.3.1_modif/nglib/CMakeLists.txt
+--- netgen-5.3.1_orig/nglib/CMakeLists.txt	1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/nglib/CMakeLists.txt	2019-01-22 12:34:46.146402900 +0300
+@@ -0,0 +1,260 @@
++# Copyright (C) 2016 OPEN CASCADE
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++#
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++#
++INCLUDE_DIRECTORIES(
++    ${CMAKE_CURRENT_SOURCE_DIR}
++    ${PROJECT_SOURCE_DIR}/libsrc/include
++    ${ZLIB_INCLUDE_DIRS}
++    ${CAS_INCLUDE_DIRS}
++)
++
++
++# CGS
++SET(CGS_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/algprim.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/brick.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/bspline2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgparser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/curve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/edgeflw.cpp	
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/explicitcurve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/extrusion.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/gencyl.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/genmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/identify.cpp  
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/manifold.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/meshsurf.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/polyhedra.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/revolution.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/singularref.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/solid.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/specpoin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/spline3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/surface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/triapprox.cpp)
++
++# GENERAL
++SET(GENERAL_SOURCES 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/array.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/bitarray.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/dynamicmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/flags.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/hashtabl.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mystring.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/ngexception.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/optmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/parthreads.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/profiler.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/seti.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/sort.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/spbita2d.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/symbolta.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/table.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mpi_interface.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.cpp)
++
++FILE(GLOB GENERAL_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/general/*.hpp")
++LIST(APPEND GENERAL_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.h)
++
++# GEOM2D
++SET (GEOM2D_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/genmesh2d.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geom2dmesh.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geometry2d.cpp)
++
++# GPRIM
++SET(GPRIM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/adtree.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomfuncs.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomtest3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/transform3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/spline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/splinegeometry.cpp)
++
++FILE(GLOB GPRIM_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/gprim/*.hpp")
++
++# INCLUDE
++SET(INCLUDE_INCLUDES 
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface_v2.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mystdlib.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mydefs.hpp)
++
++# INTERFACE
++SET(INTERFACE_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface_v2.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/read_fnf_mesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readtetmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeabaqus.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writediffpack.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writedolfin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeelmer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefeap.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefluent.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writejcm.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writepermas.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetecplot.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetet.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetochnog.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/wuchemnitz.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeOpenFOAM15x.cpp)
++
++# LINALG
++SET (LINALG_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/densemat.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/polynomial.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/bfgs.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linopt.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linsearch.cpp)
++
++FILE(GLOB LINALG_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/linalg/*.hpp")
++
++# MESHING
++SET(MESHING_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront3.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bisect.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/boundarylayer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/clusters.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/curvedelems.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/geomsearch.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/global.cpp     
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/hprefinement.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2gen.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/localh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshclass.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtype.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/msghandler.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/prism2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramid2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramidrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/quadrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/refine.cpp	
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/secondorder.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.5.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/specials.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/tetrarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/topology.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/triarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/validate.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/zrefine.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bcfunctions.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parallelmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/basegeom.cpp)
++
++FILE(GLOB MESHING_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/meshing/*.hpp")
++
++# OCC
++SET(OCC_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Spliter.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occconstruction.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgenmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.cpp)
++
++SET(OCC_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.hpp ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.hpp)
++
++# STLGEOM
++SET(STLGEOM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeomchart.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeommesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.cpp)
++
++SET(STLGEOM_INCLUDES
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.hpp)
++
++# NGLIB
++SET(NGLIB_SOURCES nglib.cpp)
++ADD_LIBRARY(nglib SHARED 
++            ${NGLIB_SOURCES}
++            ${CGS_SOURCES} 
++            ${GENERAL_SOURCES}
++            ${GPRIM_SOURCES}
++            ${GEOM2D_SOURCES}
++            ${INTERFACE_SOURCES} 
++            ${LINALG_SOURCES} 
++            ${MESHING_SOURCES} 
++            ${OCC_SOURCES}
++            ${STLGEOM_SOURCES})
++
++TARGET_LINK_LIBRARIES(nglib ${OCCLIBS} ${PLATFORM_LIBADD} ${ZLIB_LIBRARIES})
++INSTALL(TARGETS nglib DESTINATION ${NETGEN_INSTALL_LIBS}) 
++
++# Install headers
++INSTALL(FILES ${GENERAL_INCLUDES} 
++              ${INCLUDE_INCLUDES}
++              ${GPRIM_INCLUDES} 
++              ${LINALG_INCLUDES} 
++              ${MESHING_INCLUDES} 
++              ${STLGEOM_INCLUDES}
++              ${OCC_INCLUDES} 
++              nglib.h 
++              DESTINATION ${NETGEN_INSTALL_HEADERS})
++
++
++# NG_VOL
++SET(NG_VOL_SOURCES ng_vol.cpp)
++ADD_EXECUTABLE(ng_vol ${NG_VOL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_vol nglib)
++INSTALL(TARGETS ng_vol  DESTINATION ${NETGEN_INSTALL_BINS})
++
++# NG_STL
++SET(NG_STL_SOURCES ng_stl.cpp)
++ADD_EXECUTABLE(ng_stl ${NG_STL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_stl nglib)
++INSTALL(TARGETS ng_stl  DESTINATION ${NETGEN_INSTALL_BINS})
+diff -Naur netgen-5.3.1_orig/nglib/nglib.cpp netgen-5.3.1_modif/nglib/nglib.cpp
+--- netgen-5.3.1_orig/nglib/nglib.cpp	2019-01-22 13:07:06.386379800 +0300
++++ netgen-5.3.1_modif/nglib/nglib.cpp	2019-01-22 12:34:46.150402500 +0300
+@@ -87,7 +87,8 @@
+    // Clean-up functions before ending usage of nglib
+    DLL_HEADER void Ng_Exit ()
+    {
+-      ;
++       delete testout;
++       testout = 0;
+    }
+ 
+ 
+@@ -546,7 +547,7 @@
+ 
+ 
+    Array readtrias; //only before initstlgeometry
+-   Array > readedges; //only before init stlgeometry
++   DLL_HEADER Array > readedges; //only before init stlgeometry
+ 
+    // loads geometry from STL file
+    DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary)
diff --git a/products/patches/omniNotify-2.1-lib64.patch b/products/patches/omniNotify-2.1-lib64.patch
new file mode 100755
index 0000000..ed9997a
--- /dev/null
+++ b/products/patches/omniNotify-2.1-lib64.patch
@@ -0,0 +1,94 @@
+diff -Naur omniNotify-orig/include/RDIstrstream.h omniNotify/include/RDIstrstream.h
+--- omniNotify/include/RDIstrstream.h	2003-10-12 22:51:15.000000000 +0400
++++ omniNotify/include/RDIstrstream.h	2006-09-28 17:44:20.000000000 +0400
+@@ -57,8 +57,10 @@
+   RDIstrstream& operator<<(const void *p);
+   RDIstrstream& operator<<(int n);
+   RDIstrstream& operator<<(unsigned int n);
++#ifndef HAS_LongLong
+   RDIstrstream& operator<<(long n);
+   RDIstrstream& operator<<(unsigned long n);
++#endif
+   RDIstrstream& operator<<(short n) {return operator<<((int)n);}
+   RDIstrstream& operator<<(unsigned short n) {return operator<<((unsigned int)n);}
+ #ifdef HAS_LongLong
+diff -Naur omniNotify-orig/include/RDITimeWrappers.h omniNotify/include/RDITimeWrappers.h
+--- omniNotify/include/RDITimeWrappers.h	2003-10-23 17:28:18.000000000 +0400
++++ omniNotify/include/RDITimeWrappers.h	2006-09-28 18:10:41.000000000 +0400
+@@ -236,8 +236,11 @@
+   // pretty-printing of absolute local time -- no newline
+   void out_local(RDIstrstream& str) {
+     CORBA::ULong ts, tn;
+-    get_posixbase_secs_nanosecs(ts, tn);
+-    RDI_posixbase_out_time(str, ts, tn);
++    unsigned long ts3, tn3;   
++    get_posixbase_secs_nanosecs(ts3, tn3);
++    RDI_posixbase_out_time(str, ts3, tn3);
++    ts = (CORBA::ULong)ts3;
++    tn = (CORBA::ULong)tn3;
+     str << " (local time)";
+   }
+ 
+@@ -396,8 +399,11 @@
+   // pretty-printing of absolute univ time -- no newline
+   void out_gmt(RDIstrstream& str) {
+     CORBA::ULong ts, tn;
+-    get_gmt_posixbase_secs_nanosecs(ts, tn);
+-    RDI_posixbase_out_time(str, ts, tn);
++    unsigned long ts4, tn4;
++    get_gmt_posixbase_secs_nanosecs(ts4, tn4);
++    RDI_posixbase_out_time(str, ts4, tn4);
++    ts = (CORBA::ULong)ts4;
++    tn = (CORBA::ULong)tn4;
+     str << " (greenwich mean time)";
+   }
+   // static helpers for producing TimeBase::UtcT min and max
+diff -Naur omniNotify-orig/lib/RDIstrstream.cc omniNotify/lib/RDIstrstream.cc
+--- omniNotify/lib/RDIstrstream.cc	2003-10-23 08:39:12.000000000 +0400
++++ omniNotify/lib/RDIstrstream.cc	2006-09-28 16:56:03.000000000 +0400
+@@ -175,6 +175,7 @@
+   return *this;
+ }
+ 
++#ifndef HAS_LongLong
+ RDIstrstream&
+ RDIstrstream::operator<<(long n)
+ {
+@@ -194,6 +195,7 @@
+   width_fill();
+   return *this;
+ }
++#endif
+ 
+ #ifdef HAS_LongLong
+ RDIstrstream&
+diff -Naur omniNotify-orig/lib/RDITimeWrappers.cc omniNotify/lib/RDITimeWrappers.cc
+--- omniNotify/lib/RDITimeWrappers.cc	2003-10-23 08:39:12.000000000 +0400
++++ omniNotify/lib/RDITimeWrappers.cc	2006-09-28 16:56:09.000000000 +0400
+@@ -147,7 +147,10 @@
+ #define WHATFN "RDI_TimeT::fmt_local"
+ const char *RDI_TimeT::fmt_local() {
+   CORBA::ULong ts, tm;
+-  get_posixbase_secs_msecs(ts, tm);
++  unsigned long ts2, tm2;
++  get_posixbase_secs_msecs(ts2, tm2);
++  ts = (CORBA::ULong)ts2;
++  tm = (CORBA::ULong)tm2;
+   time_t secs_as_time_t = ts;
+   TW_SCOPE_LOCK(otime_lock, RDI_out_time_lock, "RDI_out_time", WHATFN);
+   RDI_TimeT_fmt_local_buf_idx = (RDI_TimeT_fmt_local_buf_idx + 1) % 10;
+diff -Naur omniNotify/mk/beforeauto.mk.in omniNotify/mk/beforeauto.mk.in
+--- omniNotify/mk/beforeauto.mk.in	2003-10-29 22:18:36.000000000 +0300
++++ omniNotify/mk/beforeauto.mk.in	2006-10-13 16:58:26.000000000 +0400
+@@ -95,9 +95,9 @@
+ 
+ CPPFLAGS = $(DIR_CPPFLAGS) $(IMPORT_CPPFLAGS)
+ 
+-CFLAGS = $(CDEBUGFLAGS) $(COPTIONS) $(CPPFLAGS)
++CFLAGS = -m64 $(CDEBUGFLAGS) $(COPTIONS) $(CPPFLAGS)
+ 
+-CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(CPPFLAGS)
++CXXFLAGS = -m64 $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(CPPFLAGS)
+ 
+ 
+ #############################################################################
diff --git a/products/patches/omniNotify-2.1.patch b/products/patches/omniNotify-2.1.patch
new file mode 100755
index 0000000..6ee139f
--- /dev/null
+++ b/products/patches/omniNotify-2.1.patch
@@ -0,0 +1,4584 @@
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/all_cosnotify_clients.cc omniNotify-2.1.new/examples/all_cosnotify_clients.cc
+--- omniNotify-2.1.orig/examples/all_cosnotify_clients.cc	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/all_cosnotify_clients.cc	2009-06-28 17:19:34.000000000 +0400
+@@ -41,7 +41,7 @@
+     num_con_events = 6 * num_events;
+ 
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -51,7 +51,7 @@
+     }
+ 
+     // (3) Create all 12 CosNotify-style clients
+-    if (verbose) cout << "Creating 12 clients" << endl;
++    if (verbose) std::cout << "Creating 12 clients" << std::endl;
+ 
+     // (3.1) any_push_consumer
+     PushConsumer_i* a_push_c =
+@@ -59,7 +59,7 @@
+ 			     "", "", sample_consume_any_fn, sample_offer_change_fn,
+ 			     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_push_c) {
+-      cerr << "Constructing any_push_consumer failed" << endl;
++      std::cerr << "Constructing any_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PushConsumer_var my_a_push_c = a_push_c->_this();
+@@ -71,7 +71,7 @@
+ 				       "", "", sample_consume_structured_fn, sample_offer_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_push_c) {
+-      cerr << "Constructing struct_push_consumer failed" << endl;
++      std::cerr << "Constructing struct_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPushConsumer_var my_s_push_c = s_push_c->_this();
+@@ -83,7 +83,7 @@
+ 				     "", "", sample_consume_batch_fn, sample_offer_change_fn,
+ 				     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_push_c) {
+-      cerr << "Constructing batch_push_consumer failed" << endl;
++      std::cerr << "Constructing batch_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePushConsumer_var my_b_push_c = b_push_c->_this();
+@@ -95,7 +95,7 @@
+ 			     "", "", sample_consume_any_fn, sample_offer_change_fn,
+ 			     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_pull_c) {
+-      cerr << "Constructing any_pull_consumer failed" << endl;
++      std::cerr << "Constructing any_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PullConsumer_var my_a_pull_c = a_pull_c->_this();
+@@ -107,7 +107,7 @@
+ 				       "", "", sample_consume_structured_fn, sample_offer_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_pull_c) {
+-      cerr << "Constructing struct_pull_consumer failed" << endl;
++      std::cerr << "Constructing struct_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPullConsumer_var my_s_pull_c = s_pull_c->_this();
+@@ -119,7 +119,7 @@
+ 				     "", "", sample_consume_batch_fn, sample_offer_change_fn,
+ 				     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_pull_c) {
+-      cerr << "Constructing batch_pull_consumer failed" << endl;
++      std::cerr << "Constructing batch_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePullConsumer_var my_b_pull_c = b_pull_c->_this();
+@@ -131,7 +131,7 @@
+ 			     "", "", sample_supply_any_fn, sample_subscription_change_fn,
+ 			     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_push_s) {
+-      cerr << "Constructing any_push_supplier failed" << endl;
++      std::cerr << "Constructing any_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PushSupplier_var my_a_push_s = a_push_s->_this();
+@@ -143,7 +143,7 @@
+ 				       "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_push_s) {
+-      cerr << "Constructing struct_push_supplier failed" << endl;
++      std::cerr << "Constructing struct_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPushSupplier_var my_s_push_s = s_push_s->_this();
+@@ -155,7 +155,7 @@
+ 				     "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+ 				     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_push_s) {
+-      cerr << "Constructing batch_push_supplier failed" << endl;
++      std::cerr << "Constructing batch_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePushSupplier_var my_b_push_s = b_push_s->_this();
+@@ -167,7 +167,7 @@
+ 			     "", "", sample_supply_any_fn, sample_subscription_change_fn,
+ 			     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_pull_s) {
+-      cerr << "Constructing any_pull_supplier failed" << endl;
++      std::cerr << "Constructing any_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PullSupplier_var my_a_pull_s = a_pull_s->_this();
+@@ -179,7 +179,7 @@
+ 				       "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_pull_s) {
+-      cerr << "Constructing struct_pull_supplier failed" << endl;
++      std::cerr << "Constructing struct_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPullSupplier_var my_s_pull_s = s_pull_s->_this();
+@@ -191,75 +191,75 @@
+ 				     "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+ 				     &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_pull_s) {
+-      cerr << "Constructing batch_pull_supplier failed" << endl;
++      std::cerr << "Constructing batch_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePullSupplier_var my_b_pull_s = b_pull_s->_this();
+     b_pull_s->_remove_ref(); // enables POA cleanup of servant
+ 
+     // (4) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+ 
+     // (5) Connect clients to their proxies -- consumers first
+-    if (verbose) cout << "Connecting consumer clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl;
+ 
+     if (a_push_c->connect()) {
+-      cerr << "Connecting any_push_consumer failed" << endl;
++      std::cerr << "Connecting any_push_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (s_push_c->connect()) {
+-      cerr << "Connecting struct_push_consumer failed" << endl;
++      std::cerr << "Connecting struct_push_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (b_push_c->connect()) {
+-      cerr << "Connecting batch_push_consumer failed" << endl;
++      std::cerr << "Connecting batch_push_consumer failed" << std::endl;
+       goto error_return;
+     }
+ 
+     if (a_pull_c->connect()) {
+-      cerr << "Connecting any_pull_consumer failed" << endl;
++      std::cerr << "Connecting any_pull_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (s_pull_c->connect()) {
+-      cerr << "Connecting struct_pull_consumer failed" << endl;
++      std::cerr << "Connecting struct_pull_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (b_pull_c->connect()) {
+-      cerr << "Connecting batch_pull_consumer failed" << endl;
++      std::cerr << "Connecting batch_pull_consumer failed" << std::endl;
+       goto error_return;
+     }
+ 
+-    if (verbose) cout << "Connecting supplier clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting supplier clients to proxies" << std::endl;
+ 
+     if (a_push_s->connect()) {
+-      cerr << "Connecting any_push_supplier failed" << endl;
++      std::cerr << "Connecting any_push_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (s_push_s->connect()) {
+-      cerr << "Connecting struct_push_supplier failed" << endl;
++      std::cerr << "Connecting struct_push_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (b_push_s->connect()) {
+-      cerr << "Connecting batch_push_supplier failed" << endl;
++      std::cerr << "Connecting batch_push_supplier failed" << std::endl;
+       goto error_return;
+     }
+ 
+     if (a_pull_s->connect()) {
+-      cerr << "Connecting any_pull_supplier failed" << endl;
++      std::cerr << "Connecting any_pull_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (s_pull_s->connect()) {
+-      cerr << "Connecting struct_pull_supplier failed" << endl;
++      std::cerr << "Connecting struct_pull_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (b_pull_s->connect()) {
+-      cerr << "Connecting batch_pull_supplier failed" << endl;
++      std::cerr << "Connecting batch_pull_supplier failed" << std::endl;
+       goto error_return;
+     }
+ 
+-    if (verbose) cout << "Waiting for all 12 clients to finish" << endl;
++    if (verbose) std::cout << "Waiting for all 12 clients to finish" << std::endl;
+     CORBA::Boolean a_push_c_err = a_push_c->wait_done();
+     CORBA::Boolean s_push_c_err = s_push_c->wait_done();
+     CORBA::Boolean b_push_c_err = b_push_c->wait_done();
+@@ -291,10 +291,10 @@
+       b_pull_s_err;
+ 
+     if (com_err && (num_events > 0)) {
+-      if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl;
++      if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl;
+     }
+ 
+-    if (verbose) cout << "Cleaning up" << endl;
++    if (verbose) std::cout << "Cleaning up" << std::endl;
+ 
+     if (!a_push_c_err) { a_push_c->cleanup(); }
+     if (!s_push_c_err) { s_push_c->cleanup(); }
+@@ -315,25 +315,25 @@
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "main caught CORBA::SystemException." << endl;  
++    std::cerr << "main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "main caught CORBA::Exception." << endl;        
++    std::cerr << "main caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;       
++  std::cerr << "main caught an exception." << std::endl;       
+  error_return:
+-  cerr << "QUITTING due to error" << endl;
++  std::cerr << "QUITTING due to error" << std::endl;
+   // orb->destroy();
+   return -1;
+  normal_return:
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_add_filter.cc omniNotify-2.1.new/examples/demo_add_filter.cc
+--- omniNotify-2.1.orig/examples/demo_add_filter.cc	2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/demo_add_filter.cc	2009-06-28 17:20:35.000000000 +0400
+@@ -1,5 +1,5 @@
+ #include 
+-#include 
++#include 
+ #include 
+ 
+ #include "CosNotifyShorthands.h"
+@@ -25,14 +25,14 @@
+ 				 CORBA::Boolean verbose);
+ 
+ void usage(char* pname) {
+-  cerr << "Usage: " << pname << " [-n name] [-f file] -p file" << endl << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -p file  : file with stringified IOR of proxy to be" << endl;
+-  cout << "               sent add_filter messages (REQUIRED)" << endl;
+-  cout << "(The channel is needed to obtain its default filter factory)" << endl;
++  std::cerr << "Usage: " << pname << " [-n name] [-f file] -p file" << std::endl << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -p file  : file with stringified IOR of proxy to be" << std::endl;
++  std::cout << "               sent add_filter messages (REQUIRED)" << std::endl;
++  std::cout << "(The channel is needed to obtain its default filter factory)" << std::endl;
+ }
+ 
+ 
+@@ -84,11 +84,11 @@
+     char buf[8096];
+     FILE* ifile;
+     if (! (ifile = fopen(proxy_ior_file, "r")) ) {
+-      cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl;
++      std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl;
+       goto cleanup;
+     }
+     if (fscanf(ifile, "%s", buf) != 1) {
+-      cerr << "Failed to get an IOR from file " << proxy_ior_file << endl;
++      std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl;
+       fclose(ifile);
+       goto cleanup;
+     }
+@@ -97,32 +97,32 @@
+     try {
+       CORBA::Object_var proxy_ref = orb->string_to_object(buf);
+       if ( CORBA::is_nil(proxy_ref) ) {
+-	cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl;
++	std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl;
+ 	goto cleanup;
+       }
+       proxy = CosNF::FilterAdmin::_narrow(proxy_ref);
+       if ( CORBA::is_nil(proxy) ) {
+-	cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl;
++	std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl;
+ 	goto cleanup;
+       }
+     } catch (...) {
+-      cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+     }
+ 
+     CosNF::Filter_ptr filter = CosNF::Filter::_nil();
+     while (1) {
+-      cout << endl << "Enter a constraint ('exit' to quit, 'remove' to remove all filters): " << endl <<  flush;
++      std::cout << std::endl << "Enter a constraint ('exit' to quit, 'remove' to remove all filters): " << std::endl <<  std::flush;
+       if (!(fgets(buf, 8090, stdin))) break;
+       if (strlen(buf) < 2) continue; // skip empty lines
+       buf[strlen(buf)-1] = '\0'; // strip newline from end
+       if (strcmp(buf, "exit") == 0) {
+ 	break;
+       }
+-      cout << "Calling remove_all_filters on the proxy" << endl;
++      std::cout << "Calling remove_all_filters on the proxy" << std::endl;
+       proxy->remove_all_filters();
+       if (!CORBA::is_nil(filter)) {
+-	cout << "Destroying the previous filter, which is no longer in use" << endl;
++	std::cout << "Destroying the previous filter, which is no longer in use" << std::endl;
+ 	filter->destroy();
+ 	filter = CosNF::Filter::_nil();
+       }
+@@ -134,27 +134,27 @@
+ 	evs.length(0);
+ 	sample_add_filter(channel, proxy, evs, buf, "demo_add_filter", filter, 1);
+       }
+-      cout << endl << "---------------------------------------------------------" << endl;
++      std::cout << std::endl << "---------------------------------------------------------" << std::endl;
+     }
+     orb->destroy();
+     return 0; // success
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "Caught CORBA::SystemException." << endl;  
++    std::cerr << "Caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "Caught CORBA::Exception." << endl;        
++    std::cerr << "Caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "Caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "Caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+-    cerr << "Caught unknown exception." << endl;       
++    std::cerr << "Caught unknown exception." << std::endl;       
+   }
+  cleanup:
+   orb->destroy();
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_offer_change.cc omniNotify-2.1.new/examples/demo_offer_change.cc
+--- omniNotify-2.1.orig/examples/demo_offer_change.cc	2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/demo_offer_change.cc	2009-06-28 17:21:48.000000000 +0400
+@@ -1,5 +1,5 @@
+ #include 
+-#include 
++#include 
+ #include 
+ 
+ #include "CosNotifyShorthands.h"
+@@ -58,9 +58,9 @@
+ }
+ 
+ void usage(char* pname) {
+-  cerr << "Usage: " << pname << " -p file" << endl << endl;
+-  cout << "  -p file  : file with stringified IOR of proxy to be" << endl;
+-  cout << "               sent offer_change messages (REQUIRED)" << endl;
++  std::cerr << "Usage: " << pname << " -p file" << std::endl << std::endl;
++  std::cout << "  -p file  : file with stringified IOR of proxy to be" << std::endl;
++  std::cout << "               sent offer_change messages (REQUIRED)" << std::endl;
+ }
+ 
+ int main(int argc, char** argv)
+@@ -96,11 +96,11 @@
+     char buf2[8096];
+     FILE* ifile;
+     if (! (ifile = fopen(proxy_ior_file, "r")) ) {
+-      cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl;
++      std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl;
+       goto cleanup;
+     }
+     if (fscanf(ifile, "%s", buf) != 1) {
+-      cerr << "Failed to get an IOR from file " << proxy_ior_file << endl;
++      std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl;
+       fclose(ifile);
+       goto cleanup;
+     }
+@@ -109,69 +109,69 @@
+     try {
+       CORBA::Object_var proxy_ref = orb->string_to_object(buf);
+       if ( CORBA::is_nil(proxy_ref) ) {
+-	cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl;
++	std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl;
+ 	goto cleanup;
+       }
+       proxy = CosNC::NotifyPublish::_narrow(proxy_ref);
+       if ( CORBA::is_nil(proxy) ) {
+-	cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl;
++	std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl;
+ 	goto cleanup;
+       }
+     } catch (...) {
+-      cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+     }
+ 
+     while (1) {
+       added.length(0);
+       deled.length(0);
+-      cout << endl << "Enter list of removals (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of removals (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf, 8090, stdin))) break;
+       if (strlen(buf) < 1) break;
+       buf[strlen(buf)-1] = '\0'; // strip newline from end
+       if (strcmp(buf, "exit") == 0) break;
+       if (strlen(buf)) {
+ 	if (parse_etype_list(buf, deled)) {
+-	  cerr << "Failed to parse the input as an event type list" << endl;
++	  std::cerr << "Failed to parse the input as an event type list" << std::endl;
+ 	  continue;
+ 	}
+       }
+ 
+-      cout << endl << "Enter list of additions (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of additions (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf2, 8090, stdin))) break;
+       if (strlen(buf2) < 1) break;
+       buf2[strlen(buf2)-1] = '\0'; // strip newline from end
+       if (strcmp(buf2, "exit") == 0) break;
+       if (strlen(buf2)) {
+ 	if (parse_etype_list(buf2, added)) {
+-	  cerr << "Failed to parse the input as an event type list" << endl;
++	  std::cerr << "Failed to parse the input as an event type list" << std::endl;
+ 	  continue;
+ 	}
+       }
+ 
+-      cout << "Calling offer_change on the proxy" << endl;
++      std::cout << "Calling offer_change on the proxy" << std::endl;
+       proxy->offer_change(added, deled);
+-      cout << endl << "---------------------------------------------------------" << endl;
++      std::cout << std::endl << "---------------------------------------------------------" << std::endl;
+     }
+     orb->destroy();
+     return 0; // success
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "Caught CORBA::SystemException." << endl;  
++    std::cerr << "Caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "Caught CORBA::Exception." << endl;        
++    std::cerr << "Caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "Caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "Caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+-    cerr << "Caught unknown exception." << endl;       
++    std::cerr << "Caught unknown exception." << std::endl;       
+   }
+  cleanup:
+   orb->destroy();
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_subscription_change.cc omniNotify-2.1.new/examples/demo_subscription_change.cc
+--- omniNotify-2.1.orig/examples/demo_subscription_change.cc	2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/demo_subscription_change.cc	2009-06-28 17:23:49.000000000 +0400
+@@ -1,5 +1,5 @@
+ #include 
+-#include 
++#include 
+ #include 
+ 
+ #include "CosNotifyShorthands.h"
+@@ -58,9 +58,9 @@
+ }
+ 
+ void usage(char* pname) {
+-  cerr << "Usage: " << pname << " -p file" << endl << endl;
+-  cout << "  -p file  : file with stringified IOR of proxy to be" << endl;
+-  cout << "               sent subscription_change messages (REQUIRED)" << endl;
++  std::cerr << "Usage: " << pname << " -p file" << std::endl << std::endl;
++  std::cout << "  -p file  : file with stringified IOR of proxy to be" << std::endl;
++  std::cout << "               sent subscription_change messages (REQUIRED)" << std::endl;
+ }
+ 
+ int main(int argc, char** argv)
+@@ -96,11 +96,11 @@
+     char buf2[8096];
+     FILE* ifile;
+     if (! (ifile = fopen(proxy_ior_file, "r")) ) {
+-      cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl;
++      std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl;
+       goto cleanup;
+     }
+     if (fscanf(ifile, "%s", buf) != 1) {
+-      cerr << "Failed to get an IOR from file " << proxy_ior_file << endl;
++      std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl;
+       fclose(ifile);
+       goto cleanup;
+     }
+@@ -109,69 +109,69 @@
+     try {
+       CORBA::Object_var proxy_ref = orb->string_to_object(buf);
+       if ( CORBA::is_nil(proxy_ref) ) {
+-	cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl;
++	std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl;
+ 	goto cleanup;
+       }
+       proxy = CosNC::NotifySubscribe::_narrow(proxy_ref);
+       if ( CORBA::is_nil(proxy) ) {
+-	cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl;
++	std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl;
+ 	goto cleanup;
+       }
+     } catch (...) {
+-      cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+     }
+ 
+     while (1) {
+       added.length(0);
+       deled.length(0);
+-      cout << endl << "Enter list of removals (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of removals (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf, 8090, stdin))) break;
+       if (strlen(buf) < 1) break;
+       buf[strlen(buf)-1] = '\0'; // strip newline from end
+       if (strcmp(buf, "exit") == 0) break;
+       if (strlen(buf)) {
+ 	if (parse_etype_list(buf, deled)) {
+-	  cerr << "Failed to parse the input as an event type list" << endl;
++	  std::cerr << "Failed to parse the input as an event type list" << std::endl;
+ 	  continue;
+ 	}
+       }
+ 
+-      cout << endl << "Enter list of additions (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of additions (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf2, 8090, stdin))) break;
+       if (strlen(buf2) < 1) break;
+       buf2[strlen(buf2)-1] = '\0'; // strip newline from end
+       if (strcmp(buf2, "exit") == 0) break;
+       if (strlen(buf2)) {
+ 	if (parse_etype_list(buf2, added)) {
+-	  cerr << "Failed to parse the input as an event type list" << endl;
++	  std::cerr << "Failed to parse the input as an event type list" << std::endl;
+ 	  continue;
+ 	}
+       }
+ 
+-      cout << "Calling subscription_change on the proxy" << endl;
++      std::cout << "Calling subscription_change on the proxy" << std::endl;
+       proxy->subscription_change(added, deled);
+-      cout << endl << "---------------------------------------------------------" << endl;
++      std::cout << std::endl << "---------------------------------------------------------" << std::endl;
+     }
+     orb->destroy();
+     return 0; // success
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "Caught CORBA::SystemException." << endl;  
++    std::cerr << "Caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "Caught CORBA::Exception." << endl;        
++    std::cerr << "Caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "Caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "Caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+-    cerr << "Caught unknown exception." << endl;       
++    std::cerr << "Caught unknown exception." << std::endl;       
+   }
+  cleanup:
+   orb->destroy();
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/get_channel.h omniNotify-2.1.new/examples/get_channel.h
+--- omniNotify-2.1.orig/examples/get_channel.h	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/get_channel.h	2009-06-28 17:10:29.000000000 +0400
+@@ -19,11 +19,11 @@
+   CosNA::EventChannel_ptr channel = CosNA::EventChannel::_nil();
+   if (!ior_file || strlen(ior_file) == 0) return channel; // empty string -- ignore
+   if (! (ifile = fopen(ior_file, "r")) ) {
+-    cerr << "Failed to open file " << ior_file << " for reading" << endl;
++    std::cerr << "Failed to open file " << ior_file << " for reading" << std::endl;
+     return channel; // failure
+   }
+   if (fscanf(ifile, "%s", buf) != 1) {
+-    cerr << "Failed to get an IOR from file " << ior_file << endl;
++    std::cerr << "Failed to get an IOR from file " << ior_file << std::endl;
+     fclose(ifile);
+     return channel; // failure
+   }
+@@ -31,21 +31,21 @@
+   try {
+     CORBA::Object_var channel_ref = orb->string_to_object(buf);
+     if ( CORBA::is_nil(channel_ref) ) {
+-      cerr << "Failed to turn IOR in file " << ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << ior_file << " into object" << std::endl;
+       return channel; // failure
+     }
+     channel = CosNA::EventChannel::_narrow(channel_ref);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to narrow object from IOR in file " << ior_file <<
+-	" to type CosNotifyChannelAdmin::EventChannel" << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << ior_file <<
++	" to type CosNotifyChannelAdmin::EventChannel" << std::endl;
+       return channel; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to convert IOR in file " << ior_file << " to object" << endl;
++    std::cerr << "Failed to convert IOR in file " << ior_file << " to object" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Found valid channel reference" << endl;
++    std::cout << "Found valid channel reference" << std::endl;
+   return channel; // success
+ }
+ 
+@@ -59,29 +59,29 @@
+   if (!channel_name || strlen(channel_name) == 0) return channel; // empty string -- ignore
+ 
+   if (verbose)
+-    cout << "Obtaining naming service reference" << endl;
++    std::cout << "Obtaining naming service reference" << std::endl;
+   try {
+     CORBA::Object_var name_service;
+     name_service = orb->resolve_initial_references("NameService"); 
+     name_context = CosNaming::NamingContext::_narrow(name_service);
+     if ( CORBA::is_nil(name_context) ) {
+-      cerr << "Failed to obtain context for NameService" << endl;
++      std::cerr << "Failed to obtain context for NameService" << std::endl;
+       return channel; // failure
+     } 
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Service required is invalid [does not exist]" << endl;
++    std::cerr << "Service required is invalid [does not exist]" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving the naming service" << endl;
++    std::cerr << "Caught exception while resolving the naming service" << std::endl;
+     return channel; // failure
+   }
+ 
+   if (verbose)
+-    cout << "Looking up channel name " << channel_name << " . " << channel_name << endl;
++    std::cout << "Looking up channel name " << channel_name << " . " << channel_name << std::endl;
+ 
+   name.length(1);
+   name[0].id   = CORBA::string_dup((const char*)channel_name);
+@@ -91,23 +91,23 @@
+     CORBA::Object_var channel_ref = name_context->resolve(name);
+     channel = CosNA::EventChannel::_narrow(channel_ref);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to narrow object found in naming service " <<
+-	" to type CosNotifyChannelAdmin::EventChannel" << endl;
++      std::cerr << "Failed to narrow object found in naming service " <<
++	" to type CosNotifyChannelAdmin::EventChannel" << std::endl;
+       return channel; // failure
+     }
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Invalid name" << endl;
++    std::cerr << "Invalid name" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while resolving event channel name" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while resolving event channel name" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving event channel name" << endl;
++    std::cerr << "Caught exception while resolving event channel name" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Found valid channel reference" << endl;
++    std::cout << "Found valid channel reference" << std::endl;
+   return channel; // success
+ }
+ 
+@@ -121,30 +121,30 @@
+   CosNaming::Name name;
+ 
+   if (verbose)
+-    cout << "Obtaining naming service reference" << endl;
++    std::cout << "Obtaining naming service reference" << std::endl;
+   if (!factory_name || strlen(factory_name) == 0) return channel; // empty string -- ignore
+   try {
+     CORBA::Object_var name_service;
+     name_service = orb->resolve_initial_references("NameService"); 
+     name_context = CosNaming::NamingContext::_narrow(name_service);
+     if ( CORBA::is_nil(name_context) ) {
+-      cerr << "Failed to obtain context for NameService" << endl;
++      std::cerr << "Failed to obtain context for NameService" << std::endl;
+       return channel; // failure
+     } 
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Service required is invalid [does not exist]" << endl;
++    std::cerr << "Service required is invalid [does not exist]" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving the naming service" << endl;
++    std::cerr << "Caught exception while resolving the naming service" << std::endl;
+     return channel; // failure
+   }
+ 
+   if (verbose)
+-    cout << "Looking up channel factory name " << factory_name << " . " << factory_name << endl;
++    std::cout << "Looking up channel factory name " << factory_name << " . " << factory_name << std::endl;
+ 
+   name.length(1);
+   name[0].id   = CORBA::string_dup((const char*)factory_name);
+@@ -154,41 +154,41 @@
+     CORBA::Object_var factory_ref = name_context->resolve(name);
+     factory = CosNA::EventChannelFactory::_narrow(factory_ref);
+     if ( CORBA::is_nil(factory) ) {
+-      cerr << "Failed to narrow object found in naming service " <<
+-	" to type CosNotifyChannelAdmin::EventChannelFactory" << endl;
++      std::cerr << "Failed to narrow object found in naming service " <<
++	" to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl;
+       return channel; // failure
+     }
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Invalid name" << endl;
++    std::cerr << "Invalid name" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving event channel factory name" << endl;
++    std::cerr << "Caught exception while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   }
+   if (verbose) {
+-    cout << "Found valid channel factory reference" << endl;
+-    cout << "Looking up channel id " << chan_id << endl;
++    std::cout << "Found valid channel factory reference" << std::endl;
++    std::cout << "Looking up channel id " << chan_id << std::endl;
+   }
+ 
+   try {
+     channel = factory->get_event_channel( chan_id );
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to find channel id " << chan_id << endl;
++      std::cerr << "Failed to find channel id " << chan_id << std::endl;
+       return channel; // failure
+     }
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while invoking get_event_channel" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while invoking get_event_channel" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while invoking get_event_channel" << endl;
++    std::cerr << "Caught exception while invoking get_event_channel" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Found valid channel reference" << endl;
++    std::cout << "Found valid channel reference" << std::endl;
+   return channel; // success
+ }
+ 
+@@ -201,30 +201,30 @@
+   CosNaming::Name name;
+ 
+   if (verbose)
+-    cout << "Obtaining naming service reference" << endl;
++    std::cout << "Obtaining naming service reference" << std::endl;
+   if (!factory_name || strlen(factory_name) == 0) return channel; // empty string -- ignore
+   try {
+     CORBA::Object_var name_service;
+     name_service = orb->resolve_initial_references("NameService"); 
+     name_context = CosNaming::NamingContext::_narrow(name_service);
+     if ( CORBA::is_nil(name_context) ) {
+-      cerr << "Failed to obtain context for NameService" << endl;
++      std::cerr << "Failed to obtain context for NameService" << std::endl;
+       return channel; // failure
+     } 
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Service required is invalid [does not exist]" << endl;
++    std::cerr << "Service required is invalid [does not exist]" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving the naming service" << endl;
++    std::cerr << "Caught exception while resolving the naming service" << std::endl;
+     return channel; // failure
+   }
+ 
+   if (verbose)
+-    cout << "Looking up channel factory name " << factory_name << " . " << factory_name << endl;
++    std::cout << "Looking up channel factory name " << factory_name << " . " << factory_name << std::endl;
+ 
+   name.length(1);
+   name[0].id   = CORBA::string_dup((const char*)factory_name);
+@@ -234,24 +234,24 @@
+     CORBA::Object_var factory_ref = name_context->resolve(name);
+     factory = CosNA::EventChannelFactory::_narrow(factory_ref);
+     if ( CORBA::is_nil(factory) ) {
+-      cerr << "Failed to narrow object found in naming service " <<
+-	" to type CosNotifyChannelAdmin::EventChannelFactory" << endl;
++      std::cerr << "Failed to narrow object found in naming service " <<
++	" to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl;
+       return channel; // failure
+     }
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Invalid name" << endl;
++    std::cerr << "Invalid name" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving event channel factory name" << endl;
++    std::cerr << "Caught exception while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   }
+   if (verbose) {
+-    cout << "Found valid channel factory reference" << endl;
+-    cout << "Creating new channel" << endl;
++    std::cout << "Found valid channel factory reference" << std::endl;
++    std::cout << "Creating new channel" << std::endl;
+   }
+ 
+   CosNA::ChannelID         chan_id;
+@@ -264,18 +264,18 @@
+ 
+     channel = factory->create_channel(qosP, admP, chan_id);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to create new channel" << endl;
++      std::cerr << "Failed to create new channel" << std::endl;
+       return channel; // failure
+     }
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while invoking create_channel" << endl;
++    std::cerr << "Caught exception while invoking create_channel" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Created a new channel with channel ID " << chan_id << endl;
++    std::cout << "Created a new channel with channel ID " << chan_id << std::endl;
+   return channel; // success
+ }
+ 
+@@ -289,11 +289,11 @@
+ 
+   if (!ior_file || strlen(ior_file) == 0) return channel; // empty string -- ignore
+   if (! (ifile = fopen(ior_file, "r")) ) {
+-    cerr << "Failed to open file " << ior_file << " for reading" << endl;
++    std::cerr << "Failed to open file " << ior_file << " for reading" << std::endl;
+     return channel; // failure
+   }
+   if (fscanf(ifile, "%s", buf) != 1) {
+-    cerr << "Failed to get an IOR from file " << ior_file << endl;
++    std::cerr << "Failed to get an IOR from file " << ior_file << std::endl;
+     fclose(ifile);
+     return channel; // failure
+   }
+@@ -301,22 +301,22 @@
+   try {
+     CORBA::Object_var fact_ref = orb->string_to_object(buf);
+     if ( CORBA::is_nil(fact_ref) ) {
+-      cerr << "Failed to turn IOR in file " << ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << ior_file << " into object" << std::endl;
+       return channel; // failure
+     }
+     factory = CosNA::EventChannelFactory::_narrow(fact_ref);
+     if ( CORBA::is_nil(factory) ) {
+-      cerr << "Failed to narrow object from IOR in file " << ior_file <<
+-	" to type CosNotifyChannelAdmin::EventChannelFactory" << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << ior_file <<
++	" to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl;
+       return channel; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to convert IOR in file " << ior_file << " to object" << endl;
++    std::cerr << "Failed to convert IOR in file " << ior_file << " to object" << std::endl;
+     return channel; // failure
+   }
+   if (verbose) {
+-    cout << "Found valid channel factory reference" << endl;
+-    cout << "Creating new channel" << endl;
++    std::cout << "Found valid channel factory reference" << std::endl;
++    std::cout << "Creating new channel" << std::endl;
+   }
+ 
+   CosNA::ChannelID         chan_id;
+@@ -329,18 +329,18 @@
+ 
+     channel = factory->create_channel(qosP, admP, chan_id);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to create new channel" << endl;
++      std::cerr << "Failed to create new channel" << std::endl;
+       return channel; // failure
+     }
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while invoking create_channel" << endl;
++    std::cerr << "Caught exception while invoking create_channel" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Created a new channel with channel ID " << chan_id << endl;
++    std::cout << "Created a new channel with channel ID " << chan_id << std::endl;
+   return channel; // success
+ }
+ 
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/legacy_clients.cc omniNotify-2.1.new/examples/legacy_clients.cc
+--- omniNotify-2.1.orig/examples/legacy_clients.cc	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/legacy_clients.cc	2009-06-28 17:19:01.000000000 +0400
+@@ -4,8 +4,8 @@
+ // See legacy_clients.h
+ // -------------------------------------------------------------- //
+ 
+-#include 
+-#include 
++#include 
++#include 
+ #include "thread_wrappers.h"
+ 
+ #include "CosNotifyShorthands.h"
+@@ -40,22 +40,22 @@
+   try {
+     admin = channel->for_consumers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_push_supplier();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+ 
+     // Construct a client
+   LegacyPushConsumer_i* client =
+@@ -70,16 +70,16 @@
+   try {
+     _my_proxy->connect_push_consumer(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs) 
+     _worker = new GenericBoundWorkerThread(this);
+@@ -91,7 +91,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -113,7 +113,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -138,7 +138,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using connect_push_consumer" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using connect_push_consumer" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -158,16 +158,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -180,7 +180,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::diconnect_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -231,22 +231,22 @@
+   try {
+     admin = channel->for_consumers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_pull_supplier();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+ 
+     // Construct a client
+   LegacyPullConsumer_i* client =
+@@ -261,17 +261,17 @@
+   try {
+     _my_proxy->connect_pull_consumer(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -281,7 +281,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -309,7 +309,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -322,7 +322,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-	if (_verbose) cout << _obj_name << ": strange failure: pull() returned nil" << endl;
++	if (_verbose) std::cout << _obj_name << ": strange failure: pull() returned nil" << std::endl;
+ 	_com_err = 1;
+ 	break; // break from while loop -- done
+       }
+@@ -330,11 +330,11 @@
+       _num_events++;
+       if (_consume_fn)
+ 	(*_consume_fn)(*data, _obj_name, _num_events, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-	if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	break; // done 
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -349,7 +349,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -370,7 +370,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::disconnect_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -422,22 +422,22 @@
+   try {
+     admin = channel->for_suppliers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_push_consumer();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0; // failure
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+ 
+     // Construct a client
+   LegacyPushSupplier_i* client =
+@@ -452,17 +452,17 @@
+   try {
+     _my_proxy->connect_push_supplier(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -472,7 +472,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -500,7 +500,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -515,9 +515,9 @@
+ 	if (_done) break; // must have disconnected during push
+ 	_num_events++;
+ 	// [rather than doing the following we let supply_fn report if it wants to]
+-	// if (_verbose) cout << _obj_name << ": Pushed an event, event count = " << _num_events << endl;
++	// if (_verbose) std::cout << _obj_name << ": Pushed an event, event count = " << _num_events << std::endl;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  break; // done
+ 	}
+       }
+@@ -534,7 +534,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -554,7 +554,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::disconnect_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -606,22 +606,22 @@
+   try {
+     admin = channel->for_suppliers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_pull_consumer();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0; // failure
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+ 
+     // Construct a client
+   LegacyPullSupplier_i* client =
+@@ -636,16 +636,16 @@
+   try {
+     _my_proxy->connect_pull_supplier(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs)
+     _worker = new GenericBoundWorkerThread(this);
+@@ -657,7 +657,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -678,7 +678,7 @@
+ 
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -703,7 +703,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using connect_pull_supplier" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using connect_pull_supplier" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -722,7 +722,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::try_pull");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull" << std::endl;
+ 
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event.
+@@ -730,10 +730,10 @@
+   // processed the previous try_pull (the final supplied event) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+     return data;
+   }
+ 
+@@ -741,14 +741,14 @@
+     has_event = 1;
+     _num_events++;
+     // [rather than doing the following we let supply_fn report if it wants to]
+-    // if (_verbose) cout << _obj_name << ": Returning an event, event count = " << _num_events << endl;
++    // if (_verbose) std::cout << _obj_name << ": Returning an event, event count = " << _num_events << std::endl;
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -771,7 +771,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::pull");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     while ( 1 ) {
+@@ -779,9 +779,9 @@
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+ 	_num_events++;
+ 	// [rather than doing the following we let supply_fn report if it wants to]
+-	// if (_verbose) cout << _obj_name << ": Returning an event, event count = " << _num_events << endl;
++	// if (_verbose) std::cout << _obj_name << ": Returning an event, event count = " << _num_events << std::endl;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  _done = 1;
+ 	  _finish.broadcast();
+ 	}
+@@ -801,7 +801,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -816,7 +816,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::discconnect_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/main_program.h omniNotify-2.1.new/examples/main_program.h
+--- omniNotify-2.1.orig/examples/main_program.h	2004-03-19 00:39:20.000000000 +0300
++++ omniNotify-2.1.new/examples/main_program.h	2009-06-28 17:24:41.000000000 +0400
+@@ -58,7 +58,7 @@
+ 
+ #ifndef CREATE_CHANNEL
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -68,7 +68,7 @@
+     }
+ #else
+     // (2) Create a new notification channel
+-    if (verbose) cout << "Creating a new notification channel" << endl;
++    if (verbose) std::cout << "Creating a new notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getnewchan_use_ns(orb, cfact_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getnewchan_use_iorfile(orb, cfact_ior_file, verbose);
+@@ -79,7 +79,7 @@
+ #endif
+ 
+     // (3) Create a client
+-    if (verbose) cout << "Creating client" << endl;
++    if (verbose) std::cout << "Creating client" << std::endl;
+ #ifndef LEGACY_CLIENT
+     CLIENT_IMPL_CLASS* client =
+       CLIENT_IMPL_CLASS::create(orb, channel, num_events, batch_size, CLIENT_NAME, proxy_ior_file, admin_ior_file,
+@@ -94,55 +94,55 @@
+       goto error_return; // failed to create client
+     }
+     // Obtain reference to the external client object
+-    if (verbose) cout << "Obtaining CORBA object ref to client" << endl;
++    if (verbose) std::cout << "Obtaining CORBA object ref to client" << std::endl;
+     CLIENT_CLASS_VAR myref = client->_this(); // implicit activation
+     client->_remove_ref(); // enables POA cleanup of servant
+ 
+     // (4) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+ 
+     // (5) Connect client to its proxy, wait for desired # of events
+-    if (verbose) cout << "Connecting client to its proxy" << endl;
++    if (verbose) std::cout << "Connecting client to its proxy" << std::endl;
+     if (client->connect()) {
+       // an immediate error occurred
+     } else {
+-      if (verbose) cout << "Waiting for desired # of events" << endl;
++      if (verbose) std::cout << "Waiting for desired # of events" << std::endl;
+       // Wait until num_events has been reached
+       CORBA::Boolean communication_error = client->wait_done();
+       if (communication_error && (num_events > 0)) {
+-	if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl;
++	if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl;
+       }
+-      if (verbose) cout << "Cleaning up" << endl;
++      if (verbose) std::cout << "Cleaning up" << std::endl;
+       client->cleanup();
+     }
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {
+-    cerr << "main caught CORBA::SystemException." << endl;
++    std::cerr << "main caught CORBA::SystemException." << std::endl;
+   }
+   catch(CORBA::Exception&) {
+-    cerr << "main caught CORBA::Exception." << endl;
++    std::cerr << "main caught CORBA::Exception." << std::endl;
+   }
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {
+-    cerr << "main caught omniORB::fatalException:" << endl;
+-    cerr << "  file: " << fe.file() << endl;
+-    cerr << "  line: " << fe.line() << endl;
+-    cerr << "  mesg: " << fe.errmsg() << endl;
++    std::cerr << "main caught omniORB::fatalException:" << std::endl;
++    std::cerr << "  file: " << fe.file() << std::endl;
++    std::cerr << "  line: " << fe.line() << std::endl;
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;
+   }
+ #endif
+   catch(...) {
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;
++  std::cerr << "main caught an exception." << std::endl;
+  error_return:
+ #ifdef CREATE_CHANNEL
+ #ifdef DESTROY_CHANNEL
+   try {
+     if (!CORBA::is_nil(channel)) {
+-      if (verbose) cout << "Destroying the channel we created" << endl;
++      if (verbose) std::cout << "Destroying the channel we created" << std::endl;
+       channel->destroy();
+     }
+   } catch(...) { }
+@@ -155,7 +155,7 @@
+ #ifdef DESTROY_CHANNEL
+   try {
+     if (!CORBA::is_nil(channel)) {
+-      if (verbose) cout << "Destroying the channel we created" << endl;
++      if (verbose) std::cout << "Destroying the channel we created" << std::endl;
+       channel->destroy();
+     }
+   } catch(...) { }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/ndadmin.cc omniNotify-2.1.new/examples/ndadmin.cc
+--- omniNotify-2.1.orig/examples/ndadmin.cc	2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/ndadmin.cc	2009-06-28 17:09:16.000000000 +0400
+@@ -6,7 +6,7 @@
+ #error COS_USES_BOA should not be set for this example
+ #endif
+ 
+-#include 
++#include 
+ 
+ #include "orb_init_name.h"
+ #include "get_channel.h"
+@@ -23,15 +23,15 @@
+ 
+ static void usage(const char* pname)
+ {
+-  cout << "Usage: " << pname << " [-n name] [-f file] [-v]" << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -v       : verbose output" << endl;
+-  cout << "NOTE: The server has a default channel; " << pname << " finds this channel" << endl;
+-  cout << "      and then goes 'UP' to find the notifd server" << endl;
+-  cout << endl;
++  std::cout << "Usage: " << pname << " [-n name] [-f file] [-v]" << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -v       : verbose output" << std::endl;
++  std::cout << "NOTE: The server has a default channel; " << pname << " finds this channel" << std::endl;
++  std::cout << "      and then goes 'UP' to find the notifd server" << std::endl;
++  std::cout << std::endl;
+ }
+ 
+ int main(int argc, char** argv) {
+@@ -78,12 +78,12 @@
+     }
+ 
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+       if (CORBA::is_nil(channel)) {
+-	if (verbose) cout << "Could not find server's default channel" << endl;
++	if (verbose) std::cout << "Could not find server's default channel" << std::endl;
+ 	goto err_return; // both methods failed
+       }
+     }
+@@ -97,7 +97,7 @@
+     catch ( CORBA::OBJECT_NOT_EXIST& e ) { docmd_problem = 1; } \
+     catch ( CORBA::COMM_FAILURE& e ) { docmd_problem = 1; }
+     if (!success || !target_changed || docmd_problem) {
+-      if (verbose) cout << "Could not find server's default channel" << endl;
++      if (verbose) std::cout << "Could not find server's default channel" << std::endl;
+       goto err_return;
+     }
+     target = next_target;
+@@ -108,7 +108,7 @@
+     catch ( CORBA::OBJECT_NOT_EXIST& e ) { docmd_problem = 1; } \
+     catch ( CORBA::COMM_FAILURE& e ) { docmd_problem = 1; }
+     if (!success || !target_changed || docmd_problem) {
+-      if (verbose) cout << "Could not find server's default channel" << endl;
++      if (verbose) std::cout << "Could not find server's default channel" << std::endl;
+       goto err_return;
+     }
+     target = AttN::Interactive::_duplicate(next_target);
+@@ -119,23 +119,23 @@
+     goto norm_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << pname << " main caught CORBA::SystemException." << endl;  
++    std::cerr << pname << " main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << pname << " main caught CORBA::Exception." << endl;        
++    std::cerr << pname << " main caught CORBA::Exception." << std::endl;        
+   }                                                    
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;
++  std::cerr << "main caught an exception." << std::endl;
+  err_return:
+-  cerr << "QUITTING due to error" << endl;
++  std::cerr << "QUITTING due to error" << std::endl;
+   return -1;
+  norm_return:
+   return 0;
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/parse_cmd_line.h omniNotify-2.1.new/examples/parse_cmd_line.h
+--- omniNotify-2.1.orig/examples/parse_cmd_line.h	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/parse_cmd_line.h	2009-06-28 17:13:49.000000000 +0400
+@@ -4,7 +4,7 @@
+ #define _PARSE_CMD_LINE_H
+ 
+ #include 
+-#include 
++#include 
+ 
+ #include "CosNotifyShorthands.h"
+ 
+@@ -18,47 +18,47 @@
+ 
+ static void usage(const char* pname, CORBA::Boolean supports_filters)
+ {
+-  cout << "Usage: " << pname << " [-d #] [-b #] [-m #] [-M #] [-n name] [-f file] [-N name] [-F file] [-p file] [-a file] [-v]";
++  std::cout << "Usage: " << pname << " [-d #] [-b #] [-m #] [-M #] [-n name] [-f file] [-N name] [-F file] [-p file] [-a file] [-v]";
+   if (supports_filters) {
+-    cout << " [-t types] [-e expr]" << endl;
++    std::cout << " [-t types] [-e expr]" << std::endl;
+   } else {
+-    cout << endl;
++    std::cout << std::endl;
+   }
+-  cout << "  -d #     : disconnect after # events [default 0 means never disconnect]" << endl;
+-  cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << endl;
+-  cout << "               => must be >= 1" << endl;
+-  cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << endl;
+-  cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << endl;
+-  cout << "             (-M only applies to push consumers and pull suppliers)" << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -N name  : factory name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -F file  : file containing channel factory IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -p file  : file to store IOR of the proxy used by this client" << endl;
+-  cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << endl;
+-  cout << "  -a file  : file to store IOR of the admin used by this client" << endl;
+-  cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << endl;
+-  cout << "  -v       : verbose output" << endl;
+-  cout << endl;
++  std::cout << "  -d #     : disconnect after # events [default 0 means never disconnect]" << std::endl;
++  std::cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << std::endl;
++  std::cout << "               => must be >= 1" << std::endl;
++  std::cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << std::endl;
++  std::cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << std::endl;
++  std::cout << "             (-M only applies to push consumers and pull suppliers)" << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -N name  : factory name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -F file  : file containing channel factory IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -p file  : file to store IOR of the proxy used by this client" << std::endl;
++  std::cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << std::endl;
++  std::cout << "  -a file  : file to store IOR of the admin used by this client" << std::endl;
++  std::cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << std::endl;
++  std::cout << "  -v       : verbose output" << std::endl;
++  std::cout << std::endl;
+   if (supports_filters) {
+-    cout << "Options for adding a filter:" << endl;
+-    cout << "  -t types : add a filter for the specified types, which should be a" << endl;
+-    cout << "               comma-separated list of types of the form D::T" << endl;
+-    cout << "  -e expr  : add a filter with the specified boolean expression" << endl;
+-    cout << endl;
+-    cout << "If only -t specified, the expression \"true\" is used for the filter" << endl;
+-    cout << "If only -e specified, the event type \"*::*\" is used for the filter" << endl;
+-    cout << endl;
+-  }
+-  cout << "If both -n and -f are specified, the -n option is tried first" << endl;
+-  cout << endl;
+-  cout << "If neither -n or -f is specified, program first tries name service" << endl;
+-  cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << endl;
+-  cout << endl;
++    std::cout << "Options for adding a filter:" << std::endl;
++    std::cout << "  -t types : add a filter for the specified types, which should be a" << std::endl;
++    std::cout << "               comma-separated list of types of the form D::T" << std::endl;
++    std::cout << "  -e expr  : add a filter with the specified boolean expression" << std::endl;
++    std::cout << std::endl;
++    std::cout << "If only -t specified, the expression \"true\" is used for the filter" << std::endl;
++    std::cout << "If only -e specified, the event type \"*::*\" is used for the filter" << std::endl;
++    std::cout << std::endl;
++  }
++  std::cout << "If both -n and -f are specified, the -n option is tried first" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If neither -n or -f is specified, program first tries name service" << std::endl;
++  std::cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << std::endl;
++  std::cout << std::endl;
+ }
+ 
+ // return 0 if etype_list is a valid comma-separated event type list
+@@ -201,12 +201,12 @@
+     cfact_ior_file = (char*)"/tmp/rdifact.ior";
+   }
+   if ( (!supports_filters) && ( strlen(etype_list) || strlen(constraint_expr) ) ) {
+-    cout << "Filter options not supported for this client" << endl;
++    std::cout << "Filter options not supported for this client" << std::endl;
+     usage(pname, supports_filters);
+     return 1; // error
+   }
+   if (strlen(etype_list) && parse_etype_list(etype_list, evs)) {
+-    cout << "Event type list for -t option must be comma-separated list of D::T" << endl << endl; 
++    std::cout << "Event type list for -t option must be comma-separated list of D::T" << std::endl << std::endl; 
+     usage(pname, supports_filters);
+     return 1;
+   }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/sample_clients.cc omniNotify-2.1.new/examples/sample_clients.cc
+--- omniNotify-2.1.orig/examples/sample_clients.cc	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/sample_clients.cc	2009-06-28 17:17:16.000000000 +0400
+@@ -7,9 +7,9 @@
+ #include 
+ #include 
+ #include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
+ 
+ #ifdef HAVE_UNISTD_H
+ #  include 
+@@ -70,7 +70,7 @@
+ 
+ // This helper routine informs channel that type ANY will be supplied
+ void offer_any(CosNC::NotifyPublish_ptr proxy, const char* objnm, CORBA::Boolean verbose) {
+-  if (verbose) cout << objnm << ": offering type %ANY" << endl;
++  if (verbose) std::cout << objnm << ": offering type %ANY" << std::endl;
+   CosN::EventTypeSeq added, deled;
+   added.length(1);
+   added[0].domain_name = CORBA::string_dup("");
+@@ -79,13 +79,13 @@
+   try {
+     proxy->offer_change(added, deled);
+   } catch (...) {
+-    if (verbose) cout << "** registration failed **" << endl;
++    if (verbose) std::cout << "** registration failed **" << std::endl;
+   }
+ }
+ 
+ // This helper routine informs channel that types Stock::Ticker and Bond::Ticker will be supplied
+ void offer_ticker(CosNC::NotifyPublish_ptr proxy, const char* objnm, CORBA::Boolean verbose) {
+-  if (verbose) cout << objnm << ": offering types Stock::Ticker and Bond::Ticker" << endl;
++  if (verbose) std::cout << objnm << ": offering types Stock::Ticker and Bond::Ticker" << std::endl;
+   CosN::EventTypeSeq added, deled;
+   added.length(2);
+   added[0].domain_name = CORBA::string_dup("Stock");
+@@ -96,7 +96,7 @@
+   try {
+     proxy->offer_change(added, deled);
+   } catch (...) {
+-    if (verbose) cout << "** registration failed **" << endl;
++    if (verbose) std::cout << "** registration failed **" << std::endl;
+   }
+ }
+ 
+@@ -104,19 +104,19 @@
+ void write_ior_to_file(CORBA::ORB_ptr orb, CORBA::Object_ptr o,
+ 		       const char* filenm, CORBA::Boolean verbose) {
+   if (strlen(filenm) == 0) {
+-    if (verbose) cout << "ior filename empty -- skipping" << endl;
++    if (verbose) std::cout << "ior filename empty -- skipping" << std::endl;
+     return;
+   }
+-  ofstream file(filenm, ios::out);
++  std::ofstream file(filenm, std::ios::out);
+   if ( ! file ) {
+-    if (verbose) cerr << "Failed to open IOR file: " << filenm << endl;
++    if (verbose) std::cerr << "Failed to open IOR file: " << filenm << std::endl;
+     return;
+   }
+   char* ior_name = orb->object_to_string(o);
+   file << ior_name;
+   file.close();
+   delete [] ior_name;
+-  if (verbose) cout << "wrote IOR to file: " << filenm << endl;
++  if (verbose) std::cout << "wrote IOR to file: " << filenm << std::endl;
+ }
+ 
+ // These 2 helper routines are used to obtain one of the
+@@ -138,14 +138,14 @@
+   try {
+     admin = channel->new_for_suppliers(ifoper, admID);
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return generic_proxy; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return generic_proxy;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+ 
+   CosNA::ProxyID prxID;
+   try {
+@@ -156,14 +156,14 @@
+     }
+   } catch (...) {  }
+   if (CORBA::is_nil(generic_proxy)) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     try {
+       admin->destroy();
+     } catch (...) { }
+     admin = CosNA::SupplierAdmin::_nil();
+     return generic_proxy;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+   write_ior_to_file(orb, admin, admin_ior_file, verbose);
+   return generic_proxy; // success if generic_proxy is non-nil, otherwise failure
+ }
+@@ -183,14 +183,14 @@
+   try {
+     admin = channel->new_for_consumers(ifoper, admID);
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return generic_proxy; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return generic_proxy;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+ 
+   CosNA::ProxyID prxID;
+   try {
+@@ -201,14 +201,14 @@
+     }
+   } catch (...) {  }
+   if (CORBA::is_nil(generic_proxy)) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     try {
+       admin->destroy();
+     } catch (...) { }
+     admin = CosNA::ConsumerAdmin::_nil();
+     return generic_proxy;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+   write_ior_to_file(orb, admin, admin_ior_file, verbose);
+   return generic_proxy; // success if generic_proxy is non-nil, otherwise failure
+ }
+@@ -226,24 +226,24 @@
+ 		  CORBA::Boolean verbose) {
+   // if evs and constraint expr are empty, we ignore them + do not add a filter
+   if ( (evs.length() == 0) && (strlen(constraint_expr) == 0) ) {
+-    if (verbose) cout << obj_name << ": (no filter used)" << endl;
++    if (verbose) std::cout << obj_name << ": (no filter used)" << std::endl;
+     return 0; // OK
+   }
+   // Obtain a reference to the default filter factory; create a filter object 
+   CosNF::FilterFactory_ptr ffp;
+   filter = CosNF::Filter::_nil();
+   try {
+-    if (verbose) cout << obj_name << ": Obtaining default filter factory" << endl;
++    if (verbose) std::cout << obj_name << ": Obtaining default filter factory" << std::endl;
+     ffp    = channel->default_filter_factory();  
+     filter = ffp->create_filter("EXTENDED_TCL");
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << obj_name << ": Caught exception obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught exception obtaining filter object" << std::endl;
+     return 1; // error
+   }
+-  if (verbose) cout << obj_name << ": Obtained filter from default filter factory" << endl;
++  if (verbose) std::cout << obj_name << ": Obtained filter from default filter factory" << std::endl;
+ 
+   // Construct a simple constraint expression; add it to fadmin
+   CosNF::ConstraintExpSeq   exp;
+@@ -252,32 +252,32 @@
+   exp[0].constraint_expr = CORBA::string_dup(constraint_expr);
+   CORBA::Boolean res = 0; // OK
+   try {
+-    if (verbose) cout << obj_name << ": Adding constraints to filter" << endl;
++    if (verbose) std::cout << obj_name << ": Adding constraints to filter" << std::endl;
+     filter->add_constraints(exp);
+-    if (verbose) cout << obj_name << ": Adding filter to target" << endl;
++    if (verbose) std::cout << obj_name << ": Adding filter to target" << std::endl;
+     fadmin->add_filter(filter);
+     if (verbose) {
+       if (evs.length()) {
+-	cout << obj_name << ": Added filter for types ";
++	std::cout << obj_name << ": Added filter for types ";
+ 	for (unsigned int j = 0; j < evs.length(); j++) { 
+-	  cout << (const char*)evs[j].domain_name << "::" << (const char*)evs[j].type_name;
++	  std::cout << (const char*)evs[j].domain_name << "::" << (const char*)evs[j].type_name;
+ 	  if ((j+1) < evs.length())
+-	    cout << ", ";
++	    std::cout << ", ";
+ 	}
+       } else {
+-	cout << obj_name << ": Added filter for type *::* ";
++	std::cout << obj_name << ": Added filter for type *::* ";
+       }
+-      cout << " and constraint expression \"" << constraint_expr << "\" " << endl;
++      std::cout << " and constraint expression \"" << constraint_expr << "\" " << std::endl;
+     }
+   }
+   catch(CosNF::InvalidConstraint& _exobj1) {
+-    cerr << obj_name << ": Exception thrown : Invalid constraint given "
+-	 << (const char *)constraint_expr << endl;
++    std::cerr << obj_name << ": Exception thrown : Invalid constraint given "
++	 << (const char *)constraint_expr << std::endl;
+     res = 1; // error
+   }
+   catch (...) {
+-    cerr << obj_name << ": Exception thrown while adding constraint " 
+-	 << (const char *)constraint_expr << endl; 
++    std::cerr << obj_name << ": Exception thrown while adding constraint " 
++	 << (const char *)constraint_expr << std::endl; 
+     res = 1; // error
+   }
+   if (res == 1) { // error so destroy filter
+@@ -306,17 +306,17 @@
+   CosNF::FilterFactory_ptr ffp;
+   filter = CosNF::Filter::_nil();
+   try {
+-    if (verbose) cout << obj_name << ": Obtaining default filter factory" << endl;
++    if (verbose) std::cout << obj_name << ": Obtaining default filter factory" << std::endl;
+     ffp    = channel->default_filter_factory();  
+     filter = ffp->create_filter("EXTENDED_TCL");
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << obj_name << ": Caught exception obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught exception obtaining filter object" << std::endl;
+     return 1; // error
+   }
+-  if (verbose) cout << obj_name << ": Obtained filter from default filter factory" << endl;
++  if (verbose) std::cout << obj_name << ": Obtained filter from default filter factory" << std::endl;
+ 
+   // Construct a simple constraint expression; add it to fadmin
+   CosNF::ConstraintExpSeq   exp;
+@@ -327,29 +327,29 @@
+   exp[0].constraint_expr = CORBA::string_dup("true");
+   CORBA::Boolean res = 0; // OK
+   try {
+-    if (verbose) cout << obj_name << ": Adding initial dummy constraint to filter" << endl;
++    if (verbose) std::cout << obj_name << ": Adding initial dummy constraint to filter" << std::endl;
+     if (verbose) {
+-      cout << obj_name << ": Adding constraint with dummy type Type_XXX and constraint \"true\" to filter" << endl;
++      std::cout << obj_name << ": Adding constraint with dummy type Type_XXX and constraint \"true\" to filter" << std::endl;
+     }
+     filter->add_constraints(exp);
+-    if (verbose) cout << obj_name << ": Adding filter to target" << endl;
++    if (verbose) std::cout << obj_name << ": Adding filter to target" << std::endl;
+     fadmin->add_filter(filter);
+     for (int i = 0; i < 512; i++) {
+       char buf[1024];
+       sprintf(buf, "Type_%03d", i);
+       exp[0].event_types[0].type_name = CORBA::string_dup(buf);
+       if (verbose) {
+-	cout << obj_name << ": Adding constraint with type " << buf << " and constraint \"true\" to filter" << endl;
++	std::cout << obj_name << ": Adding constraint with type " << buf << " and constraint \"true\" to filter" << std::endl;
+       }
+       filter->add_constraints(exp);
+     }
+   }
+   catch(CosNF::InvalidConstraint& _exobj1) {
+-    cerr << obj_name << ": Exception thrown : Invalid constraint given" << endl;
++    std::cerr << obj_name << ": Exception thrown : Invalid constraint given" << std::endl;
+     res = 1; // error
+   }
+   catch (...) {
+-    cerr << obj_name << ": Exception thrown while adding constraint/filter" << endl; 
++    std::cerr << obj_name << ": Exception thrown while adding constraint/filter" << std::endl; 
+     res = 1; // error
+   }
+ 
+@@ -445,16 +445,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl;
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl;
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs)
+     _worker = new GenericBoundWorkerThread(this);
+@@ -466,11 +466,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy
+@@ -496,7 +496,7 @@
+ 
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -518,7 +518,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -538,16 +538,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -560,7 +560,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::disconnect_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -590,11 +590,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -678,16 +678,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs) 
+     _worker = new GenericBoundWorkerThread(this);
+@@ -699,11 +699,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -730,7 +730,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -752,7 +752,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -771,16 +771,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -793,7 +793,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::disconnect_structured_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -823,11 +823,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -922,16 +922,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs) 
+     _worker = new GenericBoundWorkerThread(this);
+@@ -943,11 +943,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -974,7 +974,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -997,7 +997,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -1016,16 +1016,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1038,7 +1038,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::disconnect_structured_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1068,11 +1068,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1155,16 +1155,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs)
+     _worker = new GenericBoundWorkerThread(this);
+@@ -1176,11 +1176,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1207,7 +1207,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -1230,7 +1230,7 @@
+       continue; // continue ping loop
+     com_fail:
+ 	if (_done) break;
+-	if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++	if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+ 	_done = 1;
+ 	_finish.broadcast();
+ 	_com_err = 1;
+@@ -1250,16 +1250,16 @@
+   _num_events += data.length();
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _num_batches, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push_structured_events response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push_structured_events response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1272,7 +1272,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::disconnect_sequence_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1302,11 +1302,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1393,17 +1393,17 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -1413,11 +1413,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1450,7 +1450,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -1463,7 +1463,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-	if (_verbose) cout << _obj_name << ": strange failure: pull() returned nil" << endl;
++	if (_verbose) std::cout << _obj_name << ": strange failure: pull() returned nil" << std::endl;
+ 	_com_err = 1;
+ 	break; // break from while loop -- done
+       }
+@@ -1471,11 +1471,11 @@
+       _num_events++;
+       if (_consume_fn)
+ 	(*_consume_fn)(*data, _obj_name, _num_events, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-	if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	break; // done 
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -1490,7 +1490,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull()" << std::endl;
+       _com_err = 1;
+       break;
+     } // end while loop
+@@ -1510,7 +1510,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::disconnect_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1540,11 +1540,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1629,17 +1629,17 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -1649,11 +1649,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1686,7 +1686,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -1699,7 +1699,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-	if (_verbose) cout << _obj_name << ": strange failure: pull_structured_event() returned nil" << endl;
++	if (_verbose) std::cout << _obj_name << ": strange failure: pull_structured_event() returned nil" << std::endl;
+ 	_com_err = 1;
+ 	break; // break from while loop -- done
+       }
+@@ -1707,11 +1707,11 @@
+       _num_events++;
+       if (_consume_fn)
+ 	(*_consume_fn)(*data, _obj_name, _num_events, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-	if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	break; // done
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -1726,7 +1726,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break; // must have disconnected during pull
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull_structured_event()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull_structured_event()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -1747,7 +1747,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::disconnect_structured_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1777,11 +1777,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1865,17 +1865,17 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -1885,11 +1885,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::connect");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1922,7 +1922,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -1935,7 +1935,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-	if (_verbose) cout << _obj_name << ": strange failure: pull_structured_events() returned nil" << endl;
++	if (_verbose) std::cout << _obj_name << ": strange failure: pull_structured_events() returned nil" << std::endl;
+ 	_com_err = 1;
+ 	break; // break from while loop -- done
+       }
+@@ -1944,11 +1944,11 @@
+       _num_events += data->length();
+       if (_consume_fn)
+ 	(*_consume_fn)(*data, _obj_name, _num_events, _num_batches, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-	if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	break; // done
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -1963,7 +1963,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break; // must have disconnected during pull
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull_structured_events()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull_structured_events()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -1983,7 +1983,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::disconnect_sequence_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2013,11 +2013,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2115,19 +2115,19 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // register the types to be supplied
+   offer_any(_my_proxy, _obj_name, _verbose);
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2137,11 +2137,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2174,7 +2174,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -2189,7 +2189,7 @@
+ 	if (_done) break; // must have disconnected during push
+ 	_num_events++;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  break; // done
+ 	}
+       }
+@@ -2206,7 +2206,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -2226,7 +2226,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::disconnect_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2256,11 +2256,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2345,19 +2345,19 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2367,11 +2367,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::connect");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2404,7 +2404,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -2419,7 +2419,7 @@
+ 	if (_done) break; // must have disconnected during push
+ 	_num_events++;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  break; // done
+ 	}
+       }
+@@ -2436,7 +2436,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push_structured_event()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_event()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -2456,7 +2456,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::disconnect_structured_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2486,11 +2486,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2575,17 +2575,17 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2595,11 +2595,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2631,7 +2631,7 @@
+   CosN::StructuredEvent* data = new CosN::StructuredEvent;
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -2646,7 +2646,7 @@
+ 	if (_done) break; // must have disconnected during push
+ 	_num_events++;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  break; // done
+ 	}
+       }
+@@ -2663,7 +2663,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push_structured_event()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_event()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } //end while loop
+@@ -2683,7 +2683,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::disconnect_structured_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2713,11 +2713,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2807,19 +2807,19 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2829,11 +2829,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2867,7 +2867,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       data->length(0);
+@@ -2884,7 +2884,7 @@
+ 	_num_batches++;
+ 	_num_events += data->length();
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  break; // done
+ 	}
+       }
+@@ -2901,7 +2901,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push_structured_events()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_events()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -2921,7 +2921,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::disconnect_sequence_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2951,11 +2951,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3053,16 +3053,16 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // register the types to be supplied
+   offer_any(_my_proxy, _obj_name, _verbose);
+   // if _millisecs is set, spawn a thread to ping the proxy
+@@ -3076,11 +3076,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -3107,7 +3107,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -3129,7 +3129,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -3148,7 +3148,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::try_pull");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull" << std::endl;
+ 
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event.
+@@ -3156,10 +3156,10 @@
+   // processed the previous try_pull (the final supplied event) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+     return data;
+   }
+ 
+@@ -3167,12 +3167,12 @@
+     has_event = 1;
+     _num_events++;
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3194,7 +3194,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::pull");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     // (it is *not* held during yield() and timedwait() calls)
+@@ -3206,7 +3206,7 @@
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+ 	_num_events++;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  _done = 1;
+ 	  _finish.broadcast();
+ 	}
+@@ -3227,7 +3227,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -3242,7 +3242,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::disconnect_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -3272,11 +3272,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3361,16 +3361,16 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // if _millisecs is set, spawn a thread to ping the proxy
+@@ -3384,11 +3384,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -3416,7 +3416,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -3438,7 +3438,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -3457,7 +3457,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::try_pull_structured_event");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull_structured_event" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull_structured_event" << std::endl;
+ 
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event.
+@@ -3465,10 +3465,10 @@
+   // processed the previous try_pull (the final supplied event) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+     return data;
+   }
+ 
+@@ -3476,12 +3476,12 @@
+     has_event = 1;
+     _num_events++;
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3503,7 +3503,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::pull_structured_event");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull_structured_event" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull_structured_event" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     // (it is *not* held during yield() and timedwait() calls)
+@@ -3515,7 +3515,7 @@
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+ 	_num_events++;
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  _done = 1;
+ 	  _finish.broadcast();
+ 	}
+@@ -3536,7 +3536,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -3551,7 +3551,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::disconnect_structured_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -3581,11 +3581,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3675,16 +3675,16 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // if _millisecs is set, spawn a thread to ping the proxy
+@@ -3698,11 +3698,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -3729,7 +3729,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::start_working");
+ 
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -3751,7 +3751,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -3772,7 +3772,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::try_pull_structured_events");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull_structured_events" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull_structured_events" << std::endl;
+ 
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event batch.
+@@ -3780,10 +3780,10 @@
+   // processed the previous try_pull (the final supplied event batch) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning a batch" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning a batch" << std::endl;
+     return data;
+   }
+ 
+@@ -3792,12 +3792,12 @@
+     _num_batches++;
+     _num_events += data->length();
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning a batch" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning a batch" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull_structured_events response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull_structured_events response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3820,7 +3820,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::pull_structured_events");
+ 
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull_structured_events" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull_structured_events" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     // (it is *not* held during yield() and timedwait() calls)
+@@ -3834,7 +3834,7 @@
+ 	_num_batches++;
+ 	_num_events += data->length();
+ 	if (_max_events && (_num_events >= _max_events)) {
+-	  if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++	  if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+ 	  _done = 1;
+ 	  _finish.broadcast();
+ 	}
+@@ -3855,7 +3855,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull_structured_events response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull_structured_events response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -3870,7 +3870,7 @@
+ 
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::disconnect_sequence_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -3900,11 +3900,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/sample_functions.cc omniNotify-2.1.new/examples/sample_functions.cc
+--- omniNotify-2.1.orig/examples/sample_functions.cc	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/sample_functions.cc	2009-06-28 17:12:44.000000000 +0400
+@@ -2,8 +2,8 @@
+ 
+ #include 
+ #include 
+-#include 
+-#include 
++#include 
++#include 
+ #include "sample_functions.h"
+ 
+ ///////////////////////////////////////////////////////////////////
+@@ -20,7 +20,7 @@
+ 		      )
+ {
+   event <<= event_num;
+-  if (verbose) cout << "Supplied event # " << event_num << endl;
++  if (verbose) std::cout << "Supplied event # " << event_num << std::endl;
+   return 1; // OK
+ }
+ 
+@@ -33,9 +33,9 @@
+ {
+   CORBA::ULong ul;
+   if (event >>= ul) {
+-    if (verbose) cout << obj_name << ": event data = " << ul << ", event count = " << event_num << endl;
++    if (verbose) std::cout << obj_name << ": event data = " << ul << ", event count = " << event_num << std::endl;
+   } else {
+-    if (verbose) cout << obj_name << ": event data not known (not a ULong), event count = " << event_num << endl;
++    if (verbose) std::cout << obj_name << ": event data not known (not a ULong), event count = " << event_num << std::endl;
+   }
+ }
+ 
+@@ -59,9 +59,9 @@
+ 			      )
+ {
+   if (verbose) {
+-    cout << setw(10) << obj_name << " : " <<
+-      setw(4) << event_num << " : " <<
+-      setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
++    std::cout << std::setw(10) << obj_name << " : " <<
++      std::setw(4) << event_num << " : " <<
++      std::setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
+       event.header.fixed_header.event_type.type_name << " -- ";
+     const char* stock_or_bond_name = "";
+     CORBA::ULong value = 0;
+@@ -71,15 +71,15 @@
+ 	(event.filterable_data.length() > 1) &&
+ 	(event.filterable_data[0].value >>= stock_or_bond_name) &&
+ 	(event.filterable_data[1].value >>= value)) {
+-      cout << "Name: " << stock_or_bond_name << " Value: " << setw(4) << value << " Quote# "; 
++      std::cout << "Name: " << stock_or_bond_name << " Value: " << std::setw(4) << value << " Quote# "; 
+       CORBA::ULong l = 0;
+       if (event.remainder_of_body >>= l) {
+-	cout << setw(4) << l << endl;
++	std::cout << std::setw(4) << l << std::endl;
+       } else {
+-	cout << "????" << endl;
++	std::cout << "????" << std::endl;
+       }
+     } else {
+-      cout << "(not a Stock or Bond quote -- ignoring)" << endl;
++      std::cout << "(not a Stock or Bond quote -- ignoring)" << std::endl;
+     }
+   }
+ }
+@@ -121,7 +121,7 @@
+   event.filterable_data[1].name = (const char*) "Value";
+   event.filterable_data[1].value <<= (CORBA::ULong) sample_stockbond_val[i];
+   event.remainder_of_body <<= (CORBA::ULong) event_num;
+-  if (verbose) cout << "Supplied event # " << event_num << endl;
++  if (verbose) std::cout << "Supplied event # " << event_num << std::endl;
+   return 1;
+ }
+ 
+@@ -141,8 +141,8 @@
+ {
+   CORBA::ULong evnum = event_num;
+   // We re-use the singleton example function
+-  if (verbose) cout << "--------- " << obj_name << " Supplying Event Batch " <<
+-		 batch_num << " -------------" << endl;
++  if (verbose) std::cout << "--------- " << obj_name << " Supplying Event Batch " <<
++		 batch_num << " -------------" << std::endl;
+   events.length(batch_size);
+   for (unsigned int i = 0; i < batch_size; i++) {
+     sample_supply_structured_fn(events[i], obj_name, evnum++, verbose);
+@@ -160,8 +160,8 @@
+ {
+   // We re-use the singleton example function
+   CORBA::ULong evnum = (event_num - events.length()) + 1;
+-  if (verbose) cout << "--------- " << obj_name << " Got Event Batch " <<
+-		 batch_num << " -------------" << endl;
++  if (verbose) std::cout << "--------- " << obj_name << " Got Event Batch " <<
++		 batch_num << " -------------" << std::endl;
+   for (unsigned int i = 0; i < events.length(); i++) {
+     sample_consume_structured_fn(events[i], "", evnum++, verbose);
+   }
+@@ -177,15 +177,15 @@
+ 			  )
+ {
+   if (verbose) {
+-    cout << setw(10) << obj_name << " : " <<
+-      setw(4) << event_num << " : " <<
+-      setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
++    std::cout << std::setw(10) << obj_name << " : " <<
++      std::setw(4) << event_num << " : " <<
++      std::setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
+       event.header.fixed_header.event_type.type_name << " -- ";
+     CORBA::ULong l = 0;
+     if (event.remainder_of_body >>= l) {
+-      cout << setw(4) << l << endl;
++      std::cout << std::setw(4) << l << std::endl;
+     } else {
+-      cout << "????" << endl;
++      std::cout << "????" << std::endl;
+     }
+   }
+ }
+@@ -209,13 +209,13 @@
+   event.filterable_data[0].name = (const char*) "TypeNum";
+   event.filterable_data[0].value <<= (CORBA::ULong) i;
+   event.remainder_of_body <<= (CORBA::ULong) event_num;
+-  if (verbose) cout << "Supplied event # " << event_num << endl;
++  if (verbose) std::cout << "Supplied event # " << event_num << std::endl;
+   return 1;
+ }
+ 
+ // Helper functions
+ 
+-ostream& operator<< (ostream& out, const CosN::EventType & t) {
++std::ostream& operator<< (std::ostream& out, const CosN::EventType & t) {
+   const char* dname = (t.domain_name ? (const char*)t.domain_name : "*");
+   const char* tname = (t.type_name ? (const char*)t.type_name : "*");
+   return out << dname << "::" << tname;
+@@ -228,10 +228,10 @@
+   CORBA::ULong indx;
+   CosN::EventType type;
+   for (indx = 0; indx < added.length(); indx++) {
+-    cout << "\t+ " << added[indx] << endl;
++    std::cout << "\t+ " << added[indx] << std::endl;
+   }
+   for (indx = 0; indx < deled.length(); indx++) {
+-    cout << "\t- " << deled[indx] << endl;
++    std::cout << "\t- " << deled[indx] << std::endl;
+   }
+ }
+ 
+@@ -247,8 +247,8 @@
+ 		       )
+ {
+   if (verbose) {
+-    cout << "Object " << obj_name <<
+-      " received offer_change msg [# " << num_changes << "]:" << endl;
++    std::cout << "Object " << obj_name <<
++      " received offer_change msg [# " << num_changes << "]:" << std::endl;
+     sample_describe_change_fn(added, deled);
+   }
+ }
+@@ -262,8 +262,8 @@
+ 		       )
+ {
+   if (verbose) {
+-    cout << "Object " << obj_name << 
+-      " received subscription_change msg [# " << num_changes << "]:" << endl;
++    std::cout << "Object " << obj_name << 
++      " received subscription_change msg [# " << num_changes << "]:" << std::endl;
+     sample_describe_change_fn(added, deled);
+   }
+ }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/some_notify_clients.cc omniNotify-2.1.new/examples/some_notify_clients.cc
+--- omniNotify-2.1.orig/examples/some_notify_clients.cc	2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/some_notify_clients.cc	2009-06-28 17:18:19.000000000 +0400
+@@ -4,7 +4,7 @@
+ #endif
+ 
+ #include 
+-#include 
++#include 
+ 
+ #include "orb_init_name.h"
+ #include "get_channel.h"
+@@ -23,58 +23,58 @@
+ 
+ static void usage(const char* pname)
+ {
+-  cout << "Usage: " << pname << " -u client_type [-u client_type ...] [-c #] [-s #] [-b #] [-m #] [-M #] [-n name] [-f file] [-v] [-t types] [-e expr]" << endl;
+-  cout << "  -u type  : use the specified client type (one client of that type is used)." << endl;
+-  cout << "             Specify as many as you like, one -u option for each.  Types:" << endl;
+-  cout << "                lpushc : legacy push consumer" << endl;   
+-  cout << "                apushc : any push consumer" << endl; 
+-  cout << "                spushc : structured push consumer" << endl; 
+-  cout << "                bpushc : batch push consumer" << endl; 
+-  cout << endl;
+-  cout << "                lpullc : legacy pull consumer" << endl;   
+-  cout << "                apullc : any pull consumer" << endl; 
+-  cout << "                spullc : structured pull consumer" << endl; 
+-  cout << "                bpullc : batch pull consumer" << endl; 
+-  cout << endl;
+-  cout << "                lpushs : legacy push supplier" << endl;   
+-  cout << "                apushs : any push supplier" << endl; 
+-  cout << "                spushs : structured push supplier" << endl; 
+-  cout << "                bpushs : batch push supplier" << endl; 
+-  cout << endl;
+-  cout << "                lpulls : legacy pull supplier" << endl;   
+-  cout << "                apulls : any pull supplier" << endl; 
+-  cout << "                spulls : structured pull supplier" << endl; 
+-  cout << "                bpulls : batch pull supplier" << endl; 
+-  cout << endl;
+-  cout << "  -s #     : for suppliers: disconnect after # events supplied [default 0 means never disconnect]" << endl;
+-  cout << "  -c #     : for consumers: disconnect after # events consumed [default 0 means never disconnect]" << endl;
+-  cout << "             **  N.B. You should take # of suppliers into account:" << endl;
+-  cout << "                 if 3 suppliers supply 30 events, each consumer should consume 90 events" << endl; 
+-  cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << endl;
+-  cout << "               => must be >= 1" << endl;
+-  cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << endl;
+-  cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << endl;
+-  cout << "             (-M only applies to push consumers and pull suppliers)" << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -v       : verbose output" << endl;
+-  cout << endl;
+-  cout << "Options for adding a filter **:" << endl;
+-  cout << "  -t types : add a filter for the specified types, which should be a" << endl;
+-  cout << "               comma-separated list of types of the form D::T" << endl;
+-  cout << "  -e expr  : add a filter with the specified boolean expression" << endl;
+-  cout << "** N.B. Only add filters that always evaluate to TRUE to get proper program termination" << endl;
+-  cout << endl;
+-  cout << "If only -t specified, the expression \"true\" is used for the filter" << endl;
+-  cout << "If only -e specified, the event type \"*::*\" is used for the filter" << endl;
+-  cout << endl;
+-  cout << "If both -n and -f are specified, the -n option is tried first" << endl;
+-  cout << endl;
+-  cout << "If neither -n or -f is specified, program first tries name service" << endl;
+-  cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << endl;
+-  cout << endl;
++  std::cout << "Usage: " << pname << " -u client_type [-u client_type ...] [-c #] [-s #] [-b #] [-m #] [-M #] [-n name] [-f file] [-v] [-t types] [-e expr]" << std::endl;
++  std::cout << "  -u type  : use the specified client type (one client of that type is used)." << std::endl;
++  std::cout << "             Specify as many as you like, one -u option for each.  Types:" << std::endl;
++  std::cout << "                lpushc : legacy push consumer" << std::endl;   
++  std::cout << "                apushc : any push consumer" << std::endl; 
++  std::cout << "                spushc : structured push consumer" << std::endl; 
++  std::cout << "                bpushc : batch push consumer" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "                lpullc : legacy pull consumer" << std::endl;   
++  std::cout << "                apullc : any pull consumer" << std::endl; 
++  std::cout << "                spullc : structured pull consumer" << std::endl; 
++  std::cout << "                bpullc : batch pull consumer" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "                lpushs : legacy push supplier" << std::endl;   
++  std::cout << "                apushs : any push supplier" << std::endl; 
++  std::cout << "                spushs : structured push supplier" << std::endl; 
++  std::cout << "                bpushs : batch push supplier" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "                lpulls : legacy pull supplier" << std::endl;   
++  std::cout << "                apulls : any pull supplier" << std::endl; 
++  std::cout << "                spulls : structured pull supplier" << std::endl; 
++  std::cout << "                bpulls : batch pull supplier" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "  -s #     : for suppliers: disconnect after # events supplied [default 0 means never disconnect]" << std::endl;
++  std::cout << "  -c #     : for consumers: disconnect after # events consumed [default 0 means never disconnect]" << std::endl;
++  std::cout << "             **  N.B. You should take # of suppliers into account:" << std::endl;
++  std::cout << "                 if 3 suppliers supply 30 events, each consumer should consume 90 events" << std::endl; 
++  std::cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << std::endl;
++  std::cout << "               => must be >= 1" << std::endl;
++  std::cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << std::endl;
++  std::cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << std::endl;
++  std::cout << "             (-M only applies to push consumers and pull suppliers)" << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -v       : verbose output" << std::endl;
++  std::cout << std::endl;
++  std::cout << "Options for adding a filter **:" << std::endl;
++  std::cout << "  -t types : add a filter for the specified types, which should be a" << std::endl;
++  std::cout << "               comma-separated list of types of the form D::T" << std::endl;
++  std::cout << "  -e expr  : add a filter with the specified boolean expression" << std::endl;
++  std::cout << "** N.B. Only add filters that always evaluate to TRUE to get proper program termination" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If only -t specified, the expression \"true\" is used for the filter" << std::endl;
++  std::cout << "If only -e specified, the event type \"*::*\" is used for the filter" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If both -n and -f are specified, the -n option is tried first" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If neither -n or -f is specified, program first tries name service" << std::endl;
++  std::cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << std::endl;
++  std::cout << std::endl;
+ }
+ 
+ // return 0 if etype_list is a valid comma-separated event type list
+@@ -195,7 +195,7 @@
+ 	} else if (strcmp(optarg, "bpulls") == 0) {
+ 	  USE_B_PULL_S = 1; num_sup++;
+ 	} else {
+-	  cout << endl << "Bad client type (" << optarg << ") for -u option" << endl;
++	  std::cout << std::endl << "Bad client type (" << optarg << ") for -u option" << std::endl;
+ 	  usage(pname);
+ 	  goto error_return;
+ 	}
+@@ -250,7 +250,7 @@
+       ior_file = (char*)"/tmp/rdichan.ior";
+     }
+     if (strlen(etype_list) && parse_etype_list(etype_list, evs)) {
+-      cout << "Event type list for -t option must be comma-separated list of D::T" << endl << endl; 
++      std::cout << "Event type list for -t option must be comma-separated list of D::T" << std::endl << std::endl; 
+       usage(pname);
+       goto error_return;
+     }
+@@ -258,19 +258,19 @@
+       constraint_expr = (char*)"true";
+     }
+     if (num_con + num_sup == 0) {
+-      cout << endl << "** You must use at least one -u option to specify a client **" << endl;
++      std::cout << std::endl << "** You must use at least one -u option to specify a client **" << std::endl;
+       usage(pname);
+       goto error_return;
+     }
+     if (num_con && num_sup && num_con_events && num_sup_events && (num_con_events != (num_sup * num_sup_events))) {
+-      cout << endl << "** WARNING: Unless filtering or external clients change the count, your math is wrong" << endl;
+-      cout << "    num_con_events != num_sup * num_sup_events" << endl;
+-      cout << "    ( " << num_con_events << " != " << num_sup << " * " << num_sup_events << " )" << endl;
+-      cout << "Proceeding anyway" << endl;
++      std::cout << std::endl << "** WARNING: Unless filtering or external clients change the count, your math is wrong" << std::endl;
++      std::cout << "    num_con_events != num_sup * num_sup_events" << std::endl;
++      std::cout << "    ( " << num_con_events << " != " << num_sup << " * " << num_sup_events << " )" << std::endl;
++      std::cout << "Proceeding anyway" << std::endl;
+     }
+ 
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -323,12 +323,12 @@
+ 
+     // (3.1) legacy_push_consumer
+     if (USE_L_PUSH_C) {
+-      cout << "Constructing legacy_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing legacy_push_consumer, num_con_events = " << num_con_events << std::endl;
+       l_push_c =
+ 	LegacyPushConsumer_i::create(channel, num_con_events, "legacy_push_consumer",
+ 				     sample_consume_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_push_c) {
+-	cerr << "Constructing legacy_push_consumer failed" << endl;
++	std::cerr << "Constructing legacy_push_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_l_push_c = l_push_c->_this();
+@@ -337,12 +337,12 @@
+ 
+       // (3.2) legacy_pull_consumer
+     if (USE_L_PULL_C) {
+-      cout << "Constructing legacy_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing legacy_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       l_pull_c =
+ 	LegacyPullConsumer_i::create(channel, num_con_events, "legacy_pull_consumer",
+ 				     sample_consume_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_pull_c) {
+-	cerr << "Constructing legacy_pull_consumer failed" << endl;
++	std::cerr << "Constructing legacy_pull_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_l_pull_c = l_pull_c->_this();
+@@ -351,13 +351,13 @@
+ 
+     // (3.3) any_push_consumer
+     if (USE_A_PUSH_C) {
+-      cout << "Constructing any_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing any_push_consumer, num_con_events = " << num_con_events << std::endl;
+       a_push_c =
+ 	PushConsumer_i::create(orb, channel, num_con_events, batch_size, "any_push_consumer",
+ 			       "", "", sample_consume_any_fn, sample_offer_change_fn,
+ 			       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_push_c) {
+-	cerr << "Constructing any_push_consumer failed" << endl;
++	std::cerr << "Constructing any_push_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_a_push_c = a_push_c->_this();
+@@ -366,13 +366,13 @@
+ 
+     // (3.4) struct_push_consumer
+     if (USE_S_PUSH_C) {
+-      cout << "Constructing struct_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing struct_push_consumer, num_con_events = " << num_con_events << std::endl;
+       s_push_c =
+ 	StructuredPushConsumer_i::create(orb, channel, num_con_events, batch_size, "struct_push_consumer",
+ 					 "", "", sample_consume_structured_fn, sample_offer_change_fn,
+ 					 &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_push_c) {
+-	cerr << "Constructing struct_push_consumer failed" << endl;
++	std::cerr << "Constructing struct_push_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_s_push_c = s_push_c->_this();
+@@ -381,13 +381,13 @@
+ 
+     // (3.5) batch_push_consumer
+     if (USE_B_PUSH_C) {
+-      cout << "Constructing batch_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing batch_push_consumer, num_con_events = " << num_con_events << std::endl;
+       b_push_c =
+ 	SequencePushConsumer_i::create(orb, channel, num_con_events, batch_size, "batch_push_consumer",
+ 				       "", "", sample_consume_batch_fn, sample_offer_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_push_c) {
+-	cerr << "Constructing batch_push_consumer failed" << endl;
++	std::cerr << "Constructing batch_push_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_b_push_c = b_push_c->_this();
+@@ -396,13 +396,13 @@
+ 
+     // (3.6) any_pull_consumer
+     if (USE_A_PULL_C) {
+-      cout << "Constructing any_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing any_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       a_pull_c =
+ 	PullConsumer_i::create(orb, channel, num_con_events, batch_size, "any_pull_consumer",
+ 			       "", "", sample_consume_any_fn, sample_offer_change_fn,
+ 			       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_pull_c) {
+-	cerr << "Constructing any_pull_consumer failed" << endl;
++	std::cerr << "Constructing any_pull_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_a_pull_c = a_pull_c->_this();
+@@ -411,13 +411,13 @@
+ 
+     // (3.7) struct_pull_consumer
+     if (USE_S_PULL_C) {
+-      cout << "Constructing struct_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing struct_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       s_pull_c =
+ 	StructuredPullConsumer_i::create(orb, channel, num_con_events, batch_size, "struct_pull_consumer",
+ 					 "", "", sample_consume_structured_fn, sample_offer_change_fn,
+ 					 &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_pull_c) {
+-	cerr << "Constructing struct_pull_consumer failed" << endl;
++	std::cerr << "Constructing struct_pull_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_s_pull_c = s_pull_c->_this();
+@@ -426,13 +426,13 @@
+ 
+     // (3.8) batch_pull_consumer
+     if (USE_B_PULL_C) {
+-      cout << "Constructing batch_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing batch_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       b_pull_c =
+ 	SequencePullConsumer_i::create(orb, channel, num_con_events, batch_size, "batch_pull_consumer",
+ 				       "", "", sample_consume_batch_fn, sample_offer_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_pull_c) {
+-	cerr << "Constructing batch_pull_consumer failed" << endl;
++	std::cerr << "Constructing batch_pull_consumer failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_b_pull_c = b_pull_c->_this();
+@@ -441,12 +441,12 @@
+ 
+     // (3.9) legacy_push_supplier
+     if (USE_L_PUSH_S) {
+-      cout << "Constructing legacy_push_supplier, num_sup_events = " << num_sup_events << endl;
++      std::cout << "Constructing legacy_push_supplier, num_sup_events = " << num_sup_events << std::endl;
+       l_push_s =
+ 	LegacyPushSupplier_i::create(channel, num_sup_events, "legacy_push_supplier",
+ 				     sample_supply_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_push_s) {
+-	cerr << "Constructing legacy_push_supplier failed" << endl;
++	std::cerr << "Constructing legacy_push_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_l_push_s = l_push_s->_this();
+@@ -455,12 +455,12 @@
+ 
+     // (3.10) legacy_pull_supplier
+     if (USE_L_PULL_S) {
+-      cout << "Constructing legacy_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing legacy_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       l_pull_s =
+ 	LegacyPullSupplier_i::create(channel, num_sup_events, "legacy_pull_supplier",
+ 				     sample_supply_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_pull_s) {
+-	cerr << "Constructing legacy_pull_supplier failed" << endl;
++	std::cerr << "Constructing legacy_pull_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_l_pull_s = l_pull_s->_this();
+@@ -469,13 +469,13 @@
+ 
+     // (3.11) any_push_supplier
+     if (USE_A_PUSH_S) {
+-      cout << "Constructing any_push_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing any_push_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       a_push_s =
+ 	PushSupplier_i::create(orb, channel, num_sup_events, batch_size, "any_push_supplier",
+ 			       "", "", sample_supply_any_fn, sample_subscription_change_fn,
+ 			       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_push_s) {
+-	cerr << "Constructing any_push_supplier failed" << endl;
++	std::cerr << "Constructing any_push_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_a_push_s = a_push_s->_this();
+@@ -484,13 +484,13 @@
+ 
+     // (3.12) struct_push_supplier
+     if (USE_S_PUSH_S) {
+-      cout << "Constructing struct_push_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing struct_push_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       s_push_s =
+ 	StructuredPushSupplier_i::create(orb, channel, num_sup_events, batch_size, "struct_push_supplier",
+ 					 "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+ 					 &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_push_s) {
+-	cerr << "Constructing struct_push_supplier failed" << endl;
++	std::cerr << "Constructing struct_push_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_s_push_s = s_push_s->_this();
+@@ -499,13 +499,13 @@
+ 
+     // (3.13) batch_push_supplier
+     if (USE_B_PUSH_S) {
+-      cout << "Constructing batch_push_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing batch_push_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       b_push_s =
+ 	SequencePushSupplier_i::create(orb, channel, num_sup_events, batch_size, "batch_push_supplier",
+ 				       "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_push_s) {
+-	cerr << "Constructing batch_push_supplier failed" << endl;
++	std::cerr << "Constructing batch_push_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_b_push_s = b_push_s->_this();
+@@ -514,13 +514,13 @@
+ 
+     // (3.14) any_pull_supplier
+     if (USE_A_PULL_S) {
+-      cout << "Constructing any_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing any_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       a_pull_s =
+ 	PullSupplier_i::create(orb, channel, num_sup_events, batch_size, "any_pull_supplier",
+ 			       "", "", sample_supply_any_fn, sample_subscription_change_fn,
+ 			       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_pull_s) {
+-	cerr << "Constructing any_pull_supplier failed" << endl;
++	std::cerr << "Constructing any_pull_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_a_pull_s = a_pull_s->_this();
+@@ -529,13 +529,13 @@
+ 
+     // (3.15) struct_pull_supplier
+     if (USE_S_PULL_S) {
+-      cout << "Constructing struct_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing struct_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       s_pull_s =
+ 	StructuredPullSupplier_i::create(orb, channel, num_sup_events, batch_size, "struct_pull_supplier",
+ 					 "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+ 					 &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_pull_s) {
+-	cerr << "Constructing struct_pull_supplier failed" << endl;
++	std::cerr << "Constructing struct_pull_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_s_pull_s = s_pull_s->_this();
+@@ -544,13 +544,13 @@
+ 
+     // (3.16) batch_pull_supplier
+     if (USE_B_PULL_S) {
+-      cout << "Constructing batch_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing batch_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       b_pull_s =
+ 	SequencePullSupplier_i::create(orb, channel, num_sup_events, batch_size, "batch_pull_supplier",
+ 				       "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+ 				       &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_pull_s) {
+-	cerr << "Constructing batch_pull_supplier failed" << endl;
++	std::cerr << "Constructing batch_pull_supplier failed" << std::endl;
+ 	goto error_return; // failed to create a client
+       }
+       my_b_pull_s = b_pull_s->_this();
+@@ -558,116 +558,116 @@
+     }
+ 
+     // (4) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+ 
+     // (5) Connect clients to their proxies -- consumers first
+-    if (verbose) cout << "Connecting consumer clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl;
+ 
+     if (USE_L_PUSH_C) {
+       if (l_push_c->connect()) {
+-	cerr << "Connecting legacy_push_consumer failed" << endl;
++	std::cerr << "Connecting legacy_push_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_A_PUSH_C) {
+       if (a_push_c->connect()) {
+-	cerr << "Connecting any_push_consumer failed" << endl;
++	std::cerr << "Connecting any_push_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_S_PUSH_C) {
+       if (s_push_c->connect()) {
+-	cerr << "Connecting struct_push_consumer failed" << endl;
++	std::cerr << "Connecting struct_push_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_B_PUSH_C) {
+       if (b_push_c->connect()) {
+-	cerr << "Connecting batch_push_consumer failed" << endl;
++	std::cerr << "Connecting batch_push_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+ 
+     if (USE_L_PULL_C) {
+       if (l_pull_c->connect()) {
+-	cerr << "Connecting legacy_pull_consumer failed" << endl;
++	std::cerr << "Connecting legacy_pull_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_A_PULL_C) {
+       if (a_pull_c->connect()) {
+-	cerr << "Connecting any_pull_consumer failed" << endl;
++	std::cerr << "Connecting any_pull_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_S_PULL_C) {
+       if (s_pull_c->connect()) {
+-	cerr << "Connecting struct_pull_consumer failed" << endl;
++	std::cerr << "Connecting struct_pull_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_B_PULL_C) {
+       if (b_pull_c->connect()) {
+-	cerr << "Connecting batch_pull_consumer failed" << endl;
++	std::cerr << "Connecting batch_pull_consumer failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+ 
+-    if (verbose) cout << "Connecting supplier clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting supplier clients to proxies" << std::endl;
+ 
+     if (USE_L_PUSH_S) {
+       if (l_push_s->connect()) {
+-	cerr << "Connecting legacy_push_supplier failed" << endl;
++	std::cerr << "Connecting legacy_push_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_A_PUSH_S) {
+       if (a_push_s->connect()) {
+-	cerr << "Connecting any_push_supplier failed" << endl;
++	std::cerr << "Connecting any_push_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_S_PUSH_S) {
+       if (s_push_s->connect()) {
+-	cerr << "Connecting struct_push_supplier failed" << endl;
++	std::cerr << "Connecting struct_push_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_B_PUSH_S) {
+       if (b_push_s->connect()) {
+-	cerr << "Connecting batch_push_supplier failed" << endl;
++	std::cerr << "Connecting batch_push_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+ 
+     if (USE_L_PULL_S) {
+       if (l_pull_s->connect()) {
+-	cerr << "Connecting legacy_pull_supplier failed" << endl;
++	std::cerr << "Connecting legacy_pull_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_A_PULL_S) {
+       if (a_pull_s->connect()) {
+-	cerr << "Connecting any_pull_supplier failed" << endl;
++	std::cerr << "Connecting any_pull_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_S_PULL_S) {
+       if (s_pull_s->connect()) {
+-	cerr << "Connecting struct_pull_supplier failed" << endl;
++	std::cerr << "Connecting struct_pull_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+     if (USE_B_PULL_S) {
+       if (b_pull_s->connect()) {
+-	cerr << "Connecting batch_pull_supplier failed" << endl;
++	std::cerr << "Connecting batch_pull_supplier failed" << std::endl;
+ 	goto error_return;
+       }
+     }
+ 
+-    if (verbose) cout << "Waiting for all 16 clients to finish" << endl;
++    if (verbose) std::cout << "Waiting for all 16 clients to finish" << std::endl;
+ 
+     CORBA::Boolean l_push_c_err = 0, l_pull_c_err = 0, l_push_s_err = 0, l_pull_s_err = 0;
+     CORBA::Boolean a_push_c_err = 0, a_pull_c_err = 0, a_push_s_err = 0, a_pull_s_err = 0;
+@@ -745,13 +745,13 @@
+       s_pull_s_err ||
+       b_pull_s_err;
+     if (sup_com_err && (num_sup_events > 0)) {
+-      if (verbose) cout << "Supplier communication error -- probably did not supply desired # of events" << endl;
++      if (verbose) std::cout << "Supplier communication error -- probably did not supply desired # of events" << std::endl;
+     }
+     if (con_com_err && (num_con_events > 0)) {
+-      if (verbose) cout << "Consumer communication error -- probably did not consume desired # of events" << endl;
++      if (verbose) std::cout << "Consumer communication error -- probably did not consume desired # of events" << std::endl;
+     }
+ 
+-    if (verbose) cout << "Cleaning up" << endl;
++    if (verbose) std::cout << "Cleaning up" << std::endl;
+ 
+     if (USE_L_PUSH_C) {
+       if (!l_push_c_err) { l_push_c->cleanup(); }
+@@ -808,23 +808,23 @@
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "main caught CORBA::SystemException." << endl;  
++    std::cerr << "main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "main caught CORBA::Exception." << endl;        
++    std::cerr << "main caught CORBA::Exception." << std::endl;        
+   }                                                    
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;       
++  std::cerr << "main caught an exception." << std::endl;       
+  error_return:
+-  cerr << "QUITTING due to error" << endl;
++  std::cerr << "QUITTING due to error" << std::endl;
+   // orb->destroy();
+   return -1;
+  normal_return:
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/ten_any_pull_consumers.cc omniNotify-2.1.new/examples/ten_any_pull_consumers.cc
+--- omniNotify-2.1.orig/examples/ten_any_pull_consumers.cc	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/ten_any_pull_consumers.cc	2009-06-28 17:14:26.000000000 +0400
+@@ -32,7 +32,7 @@
+     PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
+ 
+     // (1) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+ 
+@@ -46,7 +46,7 @@
+     num_con_events = num_events;
+ 
+     // (3) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -56,14 +56,14 @@
+     }
+ 
+     // (4) Create all 12 CosNotify-style clients
+-    if (verbose) cout << "Creating 10 any_pull_consumer clients" << endl;
++    if (verbose) std::cout << "Creating 10 any_pull_consumer clients" << std::endl;
+ 
+     PullConsumer_i* a_pull_c[10];
+     CosNotifyComm::PullConsumer_var my_a_pull_c[10];
+     char buf[100];
+     for (i = 0; i < 10; i++) {
+       sprintf(buf, "any_pull_consumer%d", i);
+-      if (verbose) cout << "Creating " << buf << endl;
++      if (verbose) std::cout << "Creating " << buf << std::endl;
+       a_pull_c[i] =
+ 	PullConsumer_i::create(orb, channel, num_con_events, batch_size, CORBA::string_dup(buf),
+ 			       "", "", sample_consume_any_fn, sample_offer_change_fn,
+@@ -76,14 +76,14 @@
+     }
+ 
+     // (5) Connect clients to their proxies -- consumers first
+-    if (verbose) cout << "Connecting consumer clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl;
+ 
+     for (i = 0; i < 10; i++) {
+-      if (verbose) cout << "Connecting Client # " << i+1 << endl;
++      if (verbose) std::cout << "Connecting Client # " << i+1 << std::endl;
+       if (a_pull_c[i]->connect()) { goto error_return; }
+     }
+ 
+-    if (verbose) cout << "Waiting for all 10 clients to finish" << endl;
++    if (verbose) std::cout << "Waiting for all 10 clients to finish" << std::endl;
+ 
+     CORBA::Boolean a_com_err[10];
+     CORBA::Boolean com_err = 0;
+@@ -95,10 +95,10 @@
+     }
+ 
+     if (com_err && (num_events > 0)) {
+-      if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl;
++      if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl;
+     }
+ 
+-    if (verbose) cout << "Cleaning up" << endl;
++    if (verbose) std::cout << "Cleaning up" << std::endl;
+ 
+     for (i = 0; i < 10; i++) {
+       if (!a_com_err[i]) { a_pull_c[i]->cleanup(); }
+@@ -107,23 +107,23 @@
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "main caught CORBA::SystemException." << endl;  
++    std::cerr << "main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "main caught CORBA::Exception." << endl;        
++    std::cerr << "main caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;       
++  std::cerr << "main caught an exception." << std::endl;       
+  error_return:
+   // orb->destroy();
+   return -1;
+diff -Naur --exclude=CVS omniNotify-2.1.orig/include/ModFlexLexer.h omniNotify-2.1.new/include/ModFlexLexer.h
+--- omniNotify-2.1.orig/include/ModFlexLexer.h	2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/include/ModFlexLexer.h	2009-06-28 17:03:57.000000000 +0400
+@@ -31,10 +31,10 @@
+  
+ // XXX ModFlexLexer overrides the 2 yylex decls, from
+ // XXX        int yylex()
+-// XXX        int yylex( istream* new_in, ostream* new_out = 0 )
++// XXX        int yylex( std::istream* new_in, std::ostream* new_out = 0 )
+ // XXX to
+ // XXX        int yylex(YYSTYPE* lvalp, RDI_PCState* ps)
+-// XXX        int yylex(YYSTYPE* lvalp, RDI_PCState* ps, istream* new_in, ostream* new_out = 0 )
++// XXX        int yylex(YYSTYPE* lvalp, RDI_PCState* ps, std::istream* new_in, std::ostream* new_out = 0 )
+ // XXX 
+ // XXX It therefore requires these 2 lines:
+ #include "RDIConstraint.h"
+@@ -88,7 +88,8 @@
+ // Never included before - need to define base class.
+ #define __FLEX_LEXER_H
+ 
+-#include 
++#include 
++
+ 
+ extern "C++" {
+ 
+@@ -105,16 +106,16 @@
+ 	virtual void
+ 		yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
+ 	virtual struct yy_buffer_state*
+-		yy_create_buffer( istream* s, int size ) = 0;
++		yy_create_buffer( std::istream* s, int size ) = 0;
+ 	virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
+-	virtual void yyrestart( istream* s ) = 0;
++	virtual void yyrestart( std::istream* s ) = 0;
+ 
+ 	virtual int yylex(YYSTYPE* lvalp, RDI_PCState* ps) = 0;
+ 	//	virtual int yylex() = 0;
+ 
+ 	// Call yylex with new input/output sources.
+-	int yylex(YYSTYPE* lvalp, RDI_PCState* ps, istream* new_in, ostream* new_out = 0 )
+-	// int yylex( istream* new_in, ostream* new_out = 0 )
++	int yylex(YYSTYPE* lvalp, RDI_PCState* ps, std::istream* new_in, std::ostream* new_out = 0 )
++	// int yylex( std::istream* new_in, std::ostream* new_out = 0 )
+ 		{
+ 		switch_streams( new_in, new_out );
+ 		return yylex(lvalp, ps);
+@@ -122,8 +123,8 @@
+ 
+ 	// Switch to new input/output streams.  A nil stream pointer
+ 	// indicates "keep the current one".
+-	virtual void switch_streams( istream* new_in = 0,
+-					ostream* new_out = 0 ) = 0;
++	virtual void switch_streams( std::istream* new_in = 0,
++					std::ostream* new_out = 0 ) = 0;
+ 
+ 	int lineno() const		{ return yylineno; }
+ 
+@@ -150,17 +151,17 @@
+ public:
+ 	// arg_yyin and arg_yyout default to the cin and cout, but we
+ 	// only make that assignment when initializing in yylex().
+-	yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 );
++	yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
+ 
+ 	virtual ~yyFlexLexer();
+ 
+ 	void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
+-	struct yy_buffer_state* yy_create_buffer( istream* s, int size );
++	struct yy_buffer_state* yy_create_buffer( std::istream* s, int size );
+ 	void yy_delete_buffer( struct yy_buffer_state* b );
+-	void yyrestart( istream* s );
++	void yyrestart( std::istream* s );
+ 
+ 	virtual int yylex(YYSTYPE* lvalp, RDI_PCState* ps);
+-	virtual void switch_streams( istream* new_in, ostream* new_out );
++	virtual void switch_streams( std::istream* new_in, std::ostream* new_out );
+ 
+ protected:
+ 	virtual int LexerInput( char* buf, int max_size );
+@@ -171,7 +172,7 @@
+ 	int yyinput();
+ 
+ 	void yy_load_buffer_state();
+-	void yy_init_buffer( struct yy_buffer_state* b, istream* s );
++	void yy_init_buffer( struct yy_buffer_state* b, std::istream* s );
+ 	void yy_flush_buffer( struct yy_buffer_state* b );
+ 
+ 	int yy_start_stack_ptr;
+@@ -186,8 +187,8 @@
+ 	yy_state_type yy_try_NUL_trans( yy_state_type current_state );
+ 	int yy_get_next_buffer();
+ 
+-	istream* yyin;	// input source for default LexerInput
+-	ostream* yyout;	// output sink for default LexerOutput
++	std::istream* yyin;	// input source for default LexerInput
++	std::ostream* yyout;	// output sink for default LexerOutput
+ 
+ 	struct yy_buffer_state* yy_current_buffer;
+ 
+diff -Naur --exclude=CVS omniNotify-2.1.orig/lib/RDIParser_l.cc omniNotify-2.1.new/lib/RDIParser_l.cc
+--- omniNotify-2.1.orig/lib/RDIParser_l.cc	2003-10-23 08:39:12.000000000 +0400
++++ omniNotify-2.1.new/lib/RDIParser_l.cc	2009-06-28 17:06:28.000000000 +0400
+@@ -53,7 +53,7 @@
+ #ifdef __cplusplus
+ 
+ #include 
+-#include 
++#include 
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -172,7 +172,7 @@
+ 
+ struct yy_buffer_state
+ 	{
+-	istream* yy_input_file;
++	std::istream* yy_input_file;
+ 
+ 	char *yy_ch_buf;		/* input buffer */
+ 	char *yy_buf_pos;		/* current position in input buffer */
+@@ -1764,10 +1764,10 @@
+ 			yy_start = 1;	/* first start state */
+ 
+ 		if ( ! yyin )
+-			yyin = &cin;
++			yyin = &std::cin;
+ 
+ 		if ( ! yyout )
+-			yyout = &cout;
++			yyout = &std::cout;
+ 
+ 		if ( ! yy_current_buffer )
+ 			yy_current_buffer =
+@@ -2123,7 +2123,7 @@
+ 		} /* end of scanning one token */
+ 	} /* end of yylex */
+ 
+-yyFlexLexer::yyFlexLexer( istream* arg_yyin, ostream* arg_yyout )
++yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )
+ 	{
+ 	yyin = arg_yyin;
+ 	yyout = arg_yyout;
+@@ -2157,7 +2157,7 @@
+ 	yy_delete_buffer( yy_current_buffer );
+ 	}
+ 
+-void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out )
++void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )
+ 	{
+ 	if ( new_in )
+ 		{
+@@ -2497,7 +2497,7 @@
+ 	}
+ 
+ 
+-void yyFlexLexer::yyrestart( istream* input_file )
++void yyFlexLexer::yyrestart( std::istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+ 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+@@ -2541,7 +2541,7 @@
+ 	}
+ 
+ 
+-YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( istream* file, int size )
++YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )
+ 	{
+ 	YY_BUFFER_STATE b;
+ 
+@@ -2582,7 +2582,7 @@
+ 
+ 
+ extern "C" int isatty YY_PROTO(( int ));
+-void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file )
++void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )
+ 
+ 	{
+ 	yy_flush_buffer( b );
+@@ -2681,7 +2681,7 @@
+ 
+ void yyFlexLexer::LexerError( yyconst char msg[] )
+ 	{
+-	cerr << msg << '\n';
++	std::cerr << msg << '\n';
+ 	exit( YY_EXIT_FAILURE );
+ 	}
+ 
diff --git a/products/patches/opencv-2.4.6.1-gcc6.patch b/products/patches/opencv-2.4.6.1-gcc6.patch
new file mode 100644
index 0000000..79c8045
--- /dev/null
+++ b/products/patches/opencv-2.4.6.1-gcc6.patch
@@ -0,0 +1,131 @@
+diff -Naur opencv-2.4.6.1_SRC_orig/cmake/OpenCVPCHSupport.cmake opencv-2.4.6.1_SRC_modif/cmake/OpenCVPCHSupport.cmake
+--- opencv-2.4.6.1_SRC_orig/cmake/OpenCVPCHSupport.cmake	2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/cmake/OpenCVPCHSupport.cmake	2016-10-17 17:34:32.000000000 +0300
+@@ -19,7 +19,7 @@
+         ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
+         OUTPUT_VARIABLE gcc_compiler_version)
+     #MESSAGE("GCC Version: ${gcc_compiler_version}")
+-    IF(gcc_compiler_version VERSION_GREATER "4.2.-1")
++    IF(gcc_compiler_version VERSION_GREATER "4.2.-1" AND gcc_compiler_version VERSION_LESS "6.0.0")
+         SET(PCHSupport_FOUND TRUE)
+     ENDIF()
+ 
+diff -Naur opencv-2.4.6.1_SRC_orig/modules/contrib/src/chamfermatching.cpp opencv-2.4.6.1_SRC_modif/modules/contrib/src/chamfermatching.cpp
+--- opencv-2.4.6.1_SRC_orig/modules/contrib/src/chamfermatching.cpp	2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/modules/contrib/src/chamfermatching.cpp	2016-10-17 18:11:47.000000000 +0300
+@@ -959,10 +959,8 @@
+     for (int y=0;y(y,x)[0]=x;
+-                annotate_img.at(y,x)[1]=y;
+-            }
++	    annotate_img.at(y,x)[0]=x;
++            annotate_img.at(y,x)[1]=y;
+ 
+             uchar edge_val = edges_img.at(y,x);
+             if( (edge_val!=0) ) {
+@@ -1005,11 +1003,9 @@
+             if (dt==-1 || dt>dist) {
+                 dist_img.at(ny,nx) = dist;
+                 q.push(std::make_pair(nx,ny));
+-
+-                if (&annotate_img!=NULL) {
+-                    annotate_img.at(ny,nx)[0]=annotate_img.at(y,x)[0];
+-                    annotate_img.at(ny,nx)[1]=annotate_img.at(y,x)[1];
+-                }
++		
++		annotate_img.at(ny,nx)[0]=annotate_img.at(y,x)[0];
++		annotate_img.at(ny,nx)[1]=annotate_img.at(y,x)[1];
+             }
+         }
+     }
+@@ -1101,26 +1097,24 @@
+     float cost = (sum_distance/truncate_)/addr.size();
+ 
+ 
+-    if (&orientation_img!=NULL) {
+-        float* optr = orientation_img.ptr(y)+x;
+-        float sum_orientation = 0;
+-        int cnt_orientation = 0;
+-
+-        for (size_t i=0;iorientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) {
+-                    sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i])));
+-                    cnt_orientation++;
+-                }
+-            }
+-        }
+ 
+-        if (cnt_orientation>0) {
+-                        cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation);
+-        }
+-
+-    }
++    float* optr = orientation_img.ptr(y)+x;
++    float sum_orientation = 0;
++    int cnt_orientation = 0;
++    
++    for (size_t i=0;iorientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) {
++	  sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i])));
++	  cnt_orientation++;
++	}
++      }
++    }
++    
++    if (cnt_orientation>0) {
++      cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation);
++    }    
+ 
+     if(cost > 0){
+         ChamferMatcher::Match* istance = new ChamferMatcher::Match();
+diff -Naur opencv-2.4.6.1_SRC_orig/modules/legacy/src/dpstereo.cpp opencv-2.4.6.1_SRC_modif/modules/legacy/src/dpstereo.cpp
+--- opencv-2.4.6.1_SRC_orig/modules/legacy/src/dpstereo.cpp	2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/modules/legacy/src/dpstereo.cpp	2016-10-18 10:22:03.257968598 +0300
+@@ -76,8 +76,8 @@
+     uchar min_val, max_val;
+ } _CvRightImData;
+ 
+-#define CV_IMAX3(a,b,c) ((temp3 = (a) >= (b) ? (a) : (b)),(temp3 >= (c) ? temp3 : (c)))
+-#define CV_IMIN3(a,b,c) ((temp3 = (a) <= (b) ? (a) : (b)),(temp3 <= (c) ? temp3 : (c)))
++#define CV_IMAX3(a,b,c) (std::max(std::max((a), (b)), (c)))
++#define CV_IMIN3(a,b,c) (std::min(std::min((a), (b)), (c)))
+ 
+ static void icvFindStereoCorrespondenceByBirchfieldDP( uchar* src1, uchar* src2,
+                                                 uchar* disparities,
+@@ -87,7 +87,7 @@
+                                                 float  _param3, float _param4,
+                                                 float  _param5 )
+ {
+-    int     x, y, i, j, temp3;
++    int     x, y, i, j;
+     int     d, s;
+     int     dispH =  maxDisparity + 3;
+     uchar  *dispdata;
+diff -Naur opencv-2.4.6.1_SRC_orig/modules/ts/include/opencv2/ts/ts_perf.hpp opencv-2.4.6.1_SRC_modif/modules/ts/include/opencv2/ts/ts_perf.hpp
+--- opencv-2.4.6.1_SRC_orig/modules/ts/include/opencv2/ts/ts_perf.hpp	2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/modules/ts/include/opencv2/ts/ts_perf.hpp	2016-10-17 17:52:29.000000000 +0300
+@@ -475,9 +475,16 @@
+     INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\
+     void fixture##_##name::PerfTestBody()
+ 
++   #if defined(_MSC_VER) && (_MSC_VER <= 1400)
++    #define CV_PERF_TEST_MAIN_INTERNALS_ARGS(...)	\
++	while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/
++    #else
++    #define CV_PERF_TEST_MAIN_INTERNALS_ARGS(...) \
++	__VA_ARGS__;
++    #endif
+ 
+ #define CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, ...) \
+-    while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/\
++    CV_PERF_TEST_MAIN_INTERNALS_ARGS(__VA_ARGS__) \
+     ::perf::Regression::Init(#modulename);\
+     ::perf::TestBase::Init(std::vector(impls, impls + sizeof impls / sizeof *impls),\
+                            argc, argv);\
diff --git a/products/patches/opencv-3.2.0-ccache.patch b/products/patches/opencv-3.2.0-ccache.patch
new file mode 100644
index 0000000..dbae6cd
--- /dev/null
+++ b/products/patches/opencv-3.2.0-ccache.patch
@@ -0,0 +1,32 @@
+--- opencv_ref/cmake/OpenCVCompilerOptions.cmake	2019-07-16 15:47:28.000000000 +0200
++++ opencv/cmake/OpenCVCompilerOptions.cmake	2019-07-18 11:27:06.006424613 +0200
+@@ -6,7 +6,7 @@ if(ENABLE_CCACHE AND NOT CMAKE_COMPILER_
+     get_property(__OLD_RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
+     if(__OLD_RULE_LAUNCH_COMPILE)
+       message(STATUS "Can't replace CMake compiler launcher")
+-    else()
++    else(__OLD_RULE_LAUNCH_COMPILE)
+       set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
+       # NOTE: Actually this check doesn't work as expected.
+       # "RULE_LAUNCH_COMPILE" is ignored by CMake during try_compile() step.
+@@ -14,14 +14,14 @@ if(ENABLE_CCACHE AND NOT CMAKE_COMPILER_
+       set(IS_CCACHE_WORKS 1)
+       if(IS_CCACHE_WORKS)
+         set(CMAKE_COMPILER_IS_CCACHE 1)
+-      else()
++      else(IS_CCACHE_WORKS)
+         message(STATUS "Unable to compile program with enabled ccache, reverting...")
+         set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${__OLD_RULE_LAUNCH_COMPILE}")
+-      endif()
+-    else()
+-      message(STATUS "Looking for ccache - not found")
+-    endif()
+-  endif()
++      endif(IS_CCACHE_WORKS)
++    endif(__OLD_RULE_LAUNCH_COMPILE)
++  else(CCACHE_PROGRAM)
++    message(STATUS "Looking for ccache - not found")
++  endif(CCACHE_PROGRAM)
+ endif()
+ 
+ if((CMAKE_COMPILER_IS_CLANGCXX OR CMAKE_COMPILER_IS_CLANGCC OR CMAKE_COMPILER_IS_CCACHE) AND NOT CMAKE_GENERATOR MATCHES "Xcode")
diff --git a/products/patches/opencv-3.2.0_windows.patch b/products/patches/opencv-3.2.0_windows.patch
new file mode 100644
index 0000000..273408e
--- /dev/null
+++ b/products/patches/opencv-3.2.0_windows.patch
@@ -0,0 +1,22 @@
+--- opencv_ref/cmake/OpenCVDetectCXXCompiler.cmake
++++ opencv/cmake/OpenCVDetectCXXCompiler.cmake
+@@ -162,6 +162,8 @@
+     set(OpenCV_RUNTIME vc14)
+   elseif(MSVC_VERSION EQUAL 1910)
+     set(OpenCV_RUNTIME vc15)
++  elseif(MSVC_VERSION EQUAL 1916)
++    set(OpenCV_RUNTIME vc15)
+   endif()
+ elseif(MINGW)
+   set(OpenCV_RUNTIME mingw)
+--- opencv_ref/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
++++ opencv/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
+@@ -80,6 +80,8 @@
+     set(OpenCV_RUNTIME vc14)
+   elseif(MSVC_VERSION EQUAL 1910)
+     set(OpenCV_RUNTIME vc15)
++  elseif(MSVC_VERSION EQUAL 1916)
++    set(OpenCV_RUNTIME vc15)
+   endif()
+ elseif(MINGW)
+   set(OpenCV_RUNTIME mingw)
diff --git a/products/patches/opencv-with-ffmpeg.patch b/products/patches/opencv-with-ffmpeg.patch
new file mode 100644
index 0000000..69c1057
--- /dev/null
+++ b/products/patches/opencv-with-ffmpeg.patch
@@ -0,0 +1,13 @@
+--- opencv_ref/modules/videoio/src/cap_ffmpeg_api.hpp	2020-02-26 05:17:34.533150892 -0500
++++ opencv/modules/videoio/src/cap_ffmpeg_api.hpp	2020-02-26 05:17:19.668586898 -0500
+@@ -14,6 +14,10 @@
+ #   define OPENCV_FFMPEG_API
+ #endif
+ 
++#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
++#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
++#define AVFMT_RAWPICTURE 0x0020
++
+ enum
+ {
+     CV_FFMPEG_CAP_PROP_POS_MSEC=0,
diff --git a/products/patches/paraview.0003-ParaViewClient.patch b/products/patches/paraview.0003-ParaViewClient.patch
new file mode 100644
index 0000000..5245133
--- /dev/null
+++ b/products/patches/paraview.0003-ParaViewClient.patch
@@ -0,0 +1,10 @@
+--- ParaView-5.8.0-RC2.orig/CMake/ParaViewClient.cmake	2020-03-02 15:38:53.791382799 +0300
++++ ParaView-5.8.0-RC2.new/CMake/ParaViewClient.cmake	2020-03-02 18:31:04.304698442 +0300
+@@ -516,6 +516,7 @@
+     NAMES xmlpatterns-qt5 xmlpatterns
+     HINTS "${Qt5_DIR}/../../../bin"
+           "${Qt5_DIR}/../../../libexec/qt5/bin"
++    NO_CMAKE_PATH
+     DOC   "Path to xmlpatterns")
+   mark_as_advanced(qt_xmlpatterns_executable)
+ 
diff --git a/products/patches/paraview.0004-ParaView_hdf5.patch b/products/patches/paraview.0004-ParaView_hdf5.patch
new file mode 100644
index 0000000..699226f
--- /dev/null
+++ b/products/patches/paraview.0004-ParaView_hdf5.patch
@@ -0,0 +1,14 @@
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/ThirdParty/hdf5/CMakeLists.txt ParaView-5.8.0_SRC_modif/VTK/ThirdParty/hdf5/CMakeLists.txt
+--- ParaView-5.8.0_SRC_orig/VTK/ThirdParty/hdf5/CMakeLists.txt	2020-03-31 15:23:53.279485815 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/ThirdParty/hdf5/CMakeLists.txt	2020-03-31 13:59:17.768118278 +0300
+@@ -10,8 +10,8 @@
+   EXTERNAL
+     PACKAGE       HDF5
+     COMPONENTS    C HL
+-    TARGETS       hdf5::hdf5
+-                  hdf5::hdf5_hl
++    TARGETS       hdf5::hdf5-shared
++                  hdf5::hdf5_hl-shared
+     USE_VARIABLES HDF5_IS_PARALLEL
+     STANDARD_INCLUDE_DIRS)
+ 
diff --git a/products/patches/paraview.0005-ParaView_find_cgns.patch b/products/patches/paraview.0005-ParaView_find_cgns.patch
new file mode 100644
index 0000000..d636c32
--- /dev/null
+++ b/products/patches/paraview.0005-ParaView_find_cgns.patch
@@ -0,0 +1,15 @@
+diff -Naur ParaView-5.8.0_SRC_orig/CMake/FindCGNS.cmake ParaView-5.8.0_SRC_modif/CMake/FindCGNS.cmake
+--- ParaView-5.8.0_SRC_orig/CMake/FindCGNS.cmake	2020-03-23 13:27:34.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/CMake/FindCGNS.cmake	2020-04-09 16:21:57.263362265 +0300
+@@ -5,6 +5,11 @@
+ # CGNS_LIBRARIES   - List of fully qualified libraries to link against when using CGNS.
+ # CGNS_FOUND       - Do not attempt to use CGNS if "no" or undefined.
+ 
++SET(CGNS_ROOT_DIR $ENV{CGNS_ROOT_DIR} CACHE PATH "Path to the CGNS.")
++IF(CGNS_ROOT_DIR)
++  LIST(APPEND CMAKE_PREFIX_PATH "${CGNS_ROOT_DIR}")
++ENDIF(CGNS_ROOT_DIR)
++
+ find_path(CGNS_INCLUDE_DIR
+   NAMES
+     cgnslib.h
diff --git a/products/patches/paraview.0006-ParaView_find_libxml2.patch b/products/patches/paraview.0006-ParaView_find_libxml2.patch
new file mode 100644
index 0000000..a741d50
--- /dev/null
+++ b/products/patches/paraview.0006-ParaView_find_libxml2.patch
@@ -0,0 +1,14 @@
+--- ParaView-5.8.0_SRC_orig/VTK/CMake/FindLibXml2.cmake	2020-03-23 22:17:27.000000000 +0100
++++ ParaView-5.8.0_SRC_modif/VTK/CMake/FindLibXml2.cmake	2020-04-10 09:56:00.627562062 +0200
+@@ -53,6 +53,11 @@
+ PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
+ set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
+ 
++SET(LIBXML2_ROOT_DIR $ENV{LIBXML2_ROOT_DIR} CACHE PATH "Path to the LIBXML2.")
++IF(LIBXML2_ROOT_DIR)
++ LIST(APPEND CMAKE_PREFIX_PATH "${LIBXML2_ROOT_DIR}")
++ENDIF(LIBXML2_ROOT_DIR)
++
+ find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
+    HINTS
+    ${PC_LIBXML_INCLUDEDIR}
diff --git a/products/patches/paraview.0007-ParaView_find_freetype.patch b/products/patches/paraview.0007-ParaView_find_freetype.patch
new file mode 100644
index 0000000..04e86fa
--- /dev/null
+++ b/products/patches/paraview.0007-ParaView_find_freetype.patch
@@ -0,0 +1,15 @@
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/CMake/FindFreetype.cmake ParaView-5.8.0_SRC_modif/VTK/CMake/FindFreetype.cmake
+--- ParaView-5.8.0_SRC_orig/VTK/CMake/FindFreetype.cmake	2020-03-23 13:31:26.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/CMake/FindFreetype.cmake	2020-04-10 22:27:24.194525121 +0300
+@@ -63,6 +63,11 @@
+ # I'm going to attempt to cut out the middleman and hope
+ # everything still works.
+ 
++SET(FREETYPE_ROOT_DIR $ENV{FREETYPE_ROOT_DIR} CACHE PATH "Path to the FreeType.")
++IF(FREETYPE_ROOT_DIR)
++  LIST(APPEND CMAKE_PREFIX_PATH "${FREETYPE_ROOT_DIR}")
++ENDIF(FREETYPE_ROOT_DIR)
++
+ set(FREETYPE_FIND_ARGS
+   HINTS
+     ENV FREETYPE_DIR
diff --git a/products/patches/paraview.0008-ParaView_find_zlib.patch b/products/patches/paraview.0008-ParaView_find_zlib.patch
new file mode 100644
index 0000000..980dc1c
--- /dev/null
+++ b/products/patches/paraview.0008-ParaView_find_zlib.patch
@@ -0,0 +1,15 @@
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/CMake/patches/3.13/FindZLIB.cmake ParaView-5.8.0_SRC_modif/VTK/CMake/patches/3.13/FindZLIB.cmake
+--- ParaView-5.8.0_SRC_orig/VTK/CMake/patches/3.13/FindZLIB.cmake	2020-03-23 13:31:26.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/CMake/patches/3.13/FindZLIB.cmake	2020-04-13 14:13:11.214692753 +0300
+@@ -52,6 +52,11 @@
+ 
+ set(_ZLIB_SEARCHES)
+ 
++SET(ZLIB_ROOT_DIR $ENV{ZLIB_ROOT_DIR} CACHE PATH "PATH TO zlib.")
++IF(ZLIB_ROOT_DIR)
++  LIST(APPEND CMAKE_PREFIX_PATH "${ZLIB_ROOT_DIR}")
++ENDIF(ZLIB_ROOT_DIR)
++
+ # Search ZLIB_ROOT first if it is set.
+ if(ZLIB_ROOT)
+   set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
diff --git a/products/patches/paraview.0009-ParaView_volume_mapper.patch b/products/patches/paraview.0009-ParaView_volume_mapper.patch
new file mode 100644
index 0000000..2b424ee
--- /dev/null
+++ b/products/patches/paraview.0009-ParaView_volume_mapper.patch
@@ -0,0 +1,11 @@
+--- ParaView_origin/VTK/Rendering/VolumeOpenGL2/vtkOpenGLGPUVolumeRayCastMapper.cxx	2020-06-18 14:59:43.630941741 +0200
++++ ParaView/VTK/Rendering/VolumeOpenGL2/vtkOpenGLGPUVolumeRayCastMapper.cxx	2020-06-18 15:00:57.582622827 +0200
+@@ -2822,7 +2822,7 @@
+     this->VolumePropertyChanged |= property->GetMTime() > this->ShaderBuildTime.GetMTime();
+ 
+     auto it = this->Parent->AssembledInputs.find(port);
+-    if (it == this->Parent->AssembledInputs.cend())
++    if (it == this->Parent->AssembledInputs.cend() || it->second.Volume != vol)
+     {
+       // Create new input structure
+       auto texture = vtkSmartPointer::New();
diff --git a/products/patches/paraview.0010-ParaViewClient.patch b/products/patches/paraview.0010-ParaViewClient.patch
new file mode 100644
index 0000000..eebeef7
--- /dev/null
+++ b/products/patches/paraview.0010-ParaViewClient.patch
@@ -0,0 +1,17 @@
+diff -pruN ParaView_ref/CMake/ParaViewClient.cmake ParaView/CMake/ParaViewClient.cmake
+--- ParaView_ref/CMake/ParaViewClient.cmake	2020-03-23 22:06:19.000000000 +0100
++++ ParaView/CMake/ParaViewClient.cmake	2020-09-23 09:21:09.084725466 +0200
+@@ -513,10 +513,12 @@ function (paraview_client_documentation)
+ 
+   include("${_ParaViewClient_cmake_dir}/paraview-find-package-helpers.cmake" OPTIONAL)
+   find_program(qt_xmlpatterns_executable
+-    NAMES xmlpatterns-qt5 xmlpatterns
++    NAMES xmlpatterns
+     HINTS "${Qt5_DIR}/../../../bin"
+           "${Qt5_DIR}/../../../libexec/qt5/bin"
++    NO_CMAKE_PATH
+     DOC   "Path to xmlpatterns")
++        
+   mark_as_advanced(qt_xmlpatterns_executable)
+ 
+   if (NOT qt_xmlpatterns_executable)
diff --git a/products/patches/paraview.0010-VTKM_MPI.patch b/products/patches/paraview.0010-VTKM_MPI.patch
new file mode 100644
index 0000000..15e1590
--- /dev/null
+++ b/products/patches/paraview.0010-VTKM_MPI.patch
@@ -0,0 +1,11 @@
+--- ParaView_ref/./VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmDeviceAdapters.cmake	2020-07-20 14:51:20.129903776 +0200
++++ ParaView_new/./VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmDeviceAdapters.cmake	2020-07-20 14:57:01.681171900 +0200
+@@ -87,7 +87,7 @@ endif()
+ 
+ if(VTKm_ENABLE_OPENMP AND NOT TARGET vtkm::openmp)
+   cmake_minimum_required(VERSION 3.12...3.15 FATAL_ERROR)
+-  find_package(OpenMP 4.0 REQUIRED COMPONENTS CXX QUIET)
++  find_package(OpenMP 3.1 REQUIRED COMPONENTS CXX QUIET)
+ 
+   add_library(vtkm::openmp INTERFACE IMPORTED GLOBAL)
+   if(OpenMP_CXX_FLAGS)
diff --git a/products/patches/paravis_8_3_mpi_medinclude.patch b/products/patches/paravis_8_3_mpi_medinclude.patch
new file mode 100644
index 0000000..0822f02
--- /dev/null
+++ b/products/patches/paravis_8_3_mpi_medinclude.patch
@@ -0,0 +1,13 @@
+diff --git a/src/Insitu/VisualizationLibrary/CMakeLists.txt b/src/Insitu/VisualizationLibrary/CMakeLists.txt
+index 880976c..ad793c8 100644
+--- a/src/Insitu/VisualizationLibrary/CMakeLists.txt
++++ b/src/Insitu/VisualizationLibrary/CMakeLists.txt
+@@ -7,7 +7,7 @@ INCLUDE_DIRECTORIES(
+   ${MEDCOUPLING_INCLUDE_DIRS}
+   ${MPI_INCLUDE_PATH}
+   ${PARAVIS_INCLUDE_DIRS}
+-  ${MEDCOUPLING_INCLUDE_DIRS}
++  ${MEDFILE_INCLUDE_DIRS}
+   ${CMAKE_CURRENT_SOURCE_DIR}/../../Plugins/MEDReader/IO/
+ )
+ 
diff --git a/products/patches/patchPyQt496noPhonon.patch b/products/patches/patchPyQt496noPhonon.patch
new file mode 100755
index 0000000..425e4ea
--- /dev/null
+++ b/products/patches/patchPyQt496noPhonon.patch
@@ -0,0 +1,14 @@
+diff -pruN PyQt-4.9.6/configure.py PyQt-4.9.6_new/configure.py
+--- PyQt-4.9.6/configure.py	2012-12-08 10:51:13.000000000 +0100
++++ PyQt-4.9.6_new/configure.py	2013-03-12 10:04:55.000000000 +0100
+@@ -390,8 +390,8 @@ class ConfigurePyQt4:
+         if qt_version < 0x050000:
+             check_module("QtXmlPatterns", "qxmlname.h", "new QXmlName()")
+ 
+-        if qt_version < 0x050000: check_module("phonon", "phonon/videowidget.h",
+-                "new Phonon::VideoWidget()")
++        #if qt_version < 0x050000: check_module("phonon", "phonon/videowidget.h",
++        #        "new Phonon::VideoWidget()")
+         check_module("QtAssistant", "qassistantclient.h",
+                 "new QAssistantClient(\"foo\")", extra_lib_dirs=ass_lib_dirs,
+                 extra_libs=ass_libs)
diff --git a/products/patches/patch_shaper_cursor_cross.diff b/products/patches/patch_shaper_cursor_cross.diff
new file mode 100644
index 0000000..721992f
--- /dev/null
+++ b/products/patches/patch_shaper_cursor_cross.diff
@@ -0,0 +1,14 @@
+diff --git a/src/SHAPERGUI/resources/LightApp.xml.in b/src/SHAPERGUI/resources/LightApp.xml.in
+index 081f2b03e..c86d74b96 100644
+--- a/src/SHAPERGUI/resources/LightApp.xml.in
++++ b/src/SHAPERGUI/resources/LightApp.xml.in
+@@ -22,6 +22,9 @@
+     
+     
+   
++  
++ ++
+
+ + diff --git a/products/patches/pthreads-2.9.1_windows.patch b/products/patches/pthreads-2.9.1_windows.patch new file mode 100644 index 0000000..8c549dc --- /dev/null +++ b/products/patches/pthreads-2.9.1_windows.patch @@ -0,0 +1,23 @@ +--- pthreads_ref/pthread.h ++++ pthreads/pthread.h +@@ -204,6 +204,10 @@ + */ + typedef unsigned long DWORD_PTR; + typedef unsigned long ULONG_PTR; ++ ++#endif ++#if defined(_MSC_VER) && _MSC_VER >= 1900 && !defined(_CRT_NO_TIME_T) ++#define _TIMESPEC_DEFINED + #endif + + /* +--- pthreads_ref/pthread.vcxproj ++++ pthreads/pthread.vcxproj +@@ -22,6 +22,7 @@ + + + {12B9B46C-5D0F-4D41-9BCD-BFF77C6EC953} ++ 10.0.17134.0 + + + diff --git a/products/patches/pv_coincident.patch b/products/patches/pv_coincident.patch new file mode 100644 index 0000000..2c38df6 --- /dev/null +++ b/products/patches/pv_coincident.patch @@ -0,0 +1,161 @@ +diff -Naur ParaView-5.8.0_SRC_orig/Remoting/Views/Resources/utilities_remotingviews.xml ParaView-5.8.0_SRC_modif/Remoting/Views/Resources/utilities_remotingviews.xml +--- ParaView-5.8.0_SRC_orig/Remoting/Views/Resources/utilities_remotingviews.xml 2020-03-23 13:30:04.000000000 +0300 ++++ ParaView-5.8.0_SRC_modif/Remoting/Views/Resources/utilities_remotingviews.xml 2020-04-27 19:07:56.559333300 +0300 +@@ -31,7 +31,7 @@ + + + +@@ -51,7 +51,7 @@ + + + +@@ -66,7 +66,7 @@ + + + +diff -Naur ParaView-5.8.0_SRC_orig/VTK/Rendering/Core/vtkMapper.cxx ParaView-5.8.0_SRC_modif/VTK/Rendering/Core/vtkMapper.cxx +--- ParaView-5.8.0_SRC_orig/VTK/Rendering/Core/vtkMapper.cxx 2020-03-23 13:31:28.000000000 +0300 ++++ ParaView-5.8.0_SRC_modif/VTK/Rendering/Core/vtkMapper.cxx 2020-04-27 18:07:54.639203400 +0300 +@@ -35,11 +35,11 @@ + static double vtkMapperGlobalResolveCoincidentTopologyZShift = 0.01; + static int vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetFaces = 1; + +-static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetFactor = 0.0; +-static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetUnits = 0.0; +-static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetFactor = 0.0; +-static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetUnits = -4.0; +-static double vtkMapperGlobalResolveCoincidentTopologyPointOffsetUnits = -8.0; ++static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetFactor = 2.0; ++static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetUnits = 2.0; ++static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetFactor = 1.0; ++static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetUnits = 1.0; ++static double vtkMapperGlobalResolveCoincidentTopologyPointOffsetUnits = 0.0; + + // Construct with initial range (0,1). + vtkMapper::vtkMapper() +diff -Naur ParaView-5.8.0_SRC_orig/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx ParaView-5.8.0_SRC_modif/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx +--- ParaView-5.8.0_SRC_orig/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx 2020-03-23 13:31:28.000000000 +0300 ++++ ParaView-5.8.0_SRC_modif/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx 2020-04-27 18:12:49.486483700 +0300 +@@ -1963,7 +1963,6 @@ + float factor = 0.0; + float offset = 0.0; + this->GetCoincidentParameters(ren, actor, factor, offset); +- vtkOpenGLCamera* cam = (vtkOpenGLCamera*)(ren->GetActiveCamera()); + + // if we need an offset handle it here + // The value of .000016 is suitable for depth buffers +@@ -1974,23 +1973,26 @@ + { + std::string FSSource = shaders[vtkShader::Fragment]->GetSource(); + +- if (cam->GetParallelProjection()) ++ if (factor != 0.0) + { +- vtkShaderProgram::Substitute(FSSource, "//VTK::Coincident::Dec", "uniform float cCValue;"); ++ vtkShaderProgram::Substitute(FSSource, "//VTK::Coincident::Dec", ++ "uniform float cfactor;\n" ++ "uniform float coffset;"); + vtkShaderProgram::Substitute( +- FSSource, "//VTK::Depth::Impl", "gl_FragDepth = gl_FragCoord.z + cCValue;\n"); ++ FSSource, ++ "//VTK::UniformFlow::Impl", ++ "float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));\n" ++ " //VTK::UniformFlow::Impl\n" // for other replacements ++ ); ++ vtkShaderProgram::Substitute(FSSource, "//VTK::Depth::Impl", ++ "gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;\n"); + } + else + { + vtkShaderProgram::Substitute(FSSource, "//VTK::Coincident::Dec", +- "uniform float cCValue;\n" +- "uniform float cSValue;\n" +- "uniform float cDValue;"); +- vtkShaderProgram::Substitute(FSSource, "//VTK::Depth::Impl", +- "float Zdc = gl_FragCoord.z*2.0 - 1.0;\n" +- " float Z2 = -1.0*cDValue/(Zdc + cCValue) + cSValue;\n" +- " float Zdc2 = -1.0*cCValue - cDValue/Z2;\n" +- " gl_FragDepth = Zdc2*0.5 + 0.5;\n"); ++ "uniform float coffset;"); ++ vtkShaderProgram::Substitute( ++ FSSource, "//VTK::Depth::Impl", "gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;\n"); + } + shaders[vtkShader::Fragment]->SetSource(FSSource); + } +@@ -2110,14 +2112,12 @@ + // Have the renderpasses changed? + vtkMTimeType renderPassMTime = this->GetRenderPassStageMTime(actor); + +- vtkOpenGLCamera* cam = (vtkOpenGLCamera*)(ren->GetActiveCamera()); +- + // shape of input data changed? + float factor, offset; + this->GetCoincidentParameters(ren, actor, factor, offset); + unsigned int scv = (this->CurrentInput->GetPointData()->GetNormals() ? 0x01 : 0) + + (this->HaveCellScalars ? 0x02 : 0) + (this->HaveCellNormals ? 0x04 : 0) + +- ((cam->GetParallelProjection() != 0.0) ? 0x08 : 0) + ((offset != 0.0) ? 0x10 : 0) + ++ ((factor != 0.0) ? 0x08 : 0) + ((offset != 0.0) ? 0x10 : 0) + + (this->VBOs->GetNumberOfComponents("scalarColor") ? 0x20 : 0) + + ((this->VBOs->GetNumberOfComponents("tcoord") % 4) << 6); + +@@ -2381,6 +2381,19 @@ + lineWidth[1] = 2.0 * actor->GetProperty()->GetLineWidth() / vp[3]; + cellBO.Program->SetUniform2f("lineWidthNVC", lineWidth); + } ++ ++ // handle coincident ++ if (cellBO.Program->IsUniformUsed("coffset")) ++ { ++ float factor, offset; ++ this->GetCoincidentParameters(ren, actor,factor,offset); ++ cellBO.Program->SetUniformf("coffset",offset); ++ // cfactor isn't always used when coffset is. ++ if (cellBO.Program->IsUniformUsed("cfactor")) ++ { ++ cellBO.Program->SetUniformf("cfactor", factor); ++ } ++ } + } + + //----------------------------------------------------------------------------- +@@ -2436,25 +2449,6 @@ + } + } + +- // handle coincident +- if (cellBO.Program->IsUniformUsed("cCValue")) +- { +- float diag = actor->GetLength(); +- float factor, offset; +- this->GetCoincidentParameters(ren, actor, factor, offset); +- if (cam->GetParallelProjection()) +- { +- // one unit of offset is based on 1/1000 of bounding length +- cellBO.Program->SetUniformf("cCValue", -2.0 * 0.001 * diag * offset * vcdc->GetElement(2, 2)); +- } +- else +- { +- cellBO.Program->SetUniformf("cCValue", vcdc->GetElement(2, 2)); +- cellBO.Program->SetUniformf("cDValue", vcdc->GetElement(3, 2)); +- cellBO.Program->SetUniformf("cSValue", -0.001 * diag * offset); +- } +- } +- + // If the VBO coordinates were shifted and scaled, apply the inverse transform + // to the model->view matrix: + vtkOpenGLVertexBufferObject* vvbo = this->VBOs->GetVBO("vertexMC"); diff --git a/products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch b/products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch new file mode 100644 index 0000000..9b2e14b --- /dev/null +++ b/products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch @@ -0,0 +1,12 @@ +diff -rupN qt-4.8.4_old/configure qt-4.8.4_new/configure +--- qt-4.8.4_old/configure 2012-11-23 11:11:23.000000000 +0100 ++++ qt-4.8.4_new/configure 2015-07-02 10:04:54.286480668 +0200 +@@ -7666,7 +7666,7 @@ case "$XPLATFORM" in + *-g++*) + # Check gcc's version + case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in +- 4*|3.4*) ++ 4*|3.4*|5*) + ;; + 3.3*) + canBuildWebKit="no" diff --git a/products/patches/qt-463-gcc46.patch b/products/patches/qt-463-gcc46.patch new file mode 100755 index 0000000..d82e7c0 --- /dev/null +++ b/products/patches/qt-463-gcc46.patch @@ -0,0 +1,11 @@ +diff -ru qt-everywhere-opensource-src-4.6.3/config.tests/unix/stl/stltest.cpp Qt-463/config.tests/unix/stl/stltest.cpp +--- qt-everywhere-opensource-src-4.6.3/config.tests/unix/stl/stltest.cpp 2010-06-02 04:03:18.000000000 +0200 ++++ Qt-463/config.tests/unix/stl/stltest.cpp 2011-05-11 10:23:35.968238594 +0200 +@@ -49,6 +49,7 @@ + #include + #include + #include ++#include + + // something mean to see if the compiler and C++ standard lib are good enough + template diff --git a/products/patches/qt-5.5.1-qlockfile.patch b/products/patches/qt-5.5.1-qlockfile.patch new file mode 100644 index 0000000..fe863eb --- /dev/null +++ b/products/patches/qt-5.5.1-qlockfile.patch @@ -0,0 +1,116 @@ +diff -Naur --exclude=CVS --exclude=.git qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_p.h qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_p.h +--- qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_p.h 2015-10-13 07:35:31.000000000 +0300 ++++ qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_p.h 2016-01-29 11:53:10.000000000 +0300 +@@ -78,7 +78,7 @@ + static QString processNameByPid(qint64 pid); + + #ifdef Q_OS_UNIX +- static int checkFcntlWorksAfterFlock(); ++ static int checkFcntlWorksAfterFlock(const QString &fn); + #endif + + QString fileName; +diff -Naur --exclude=CVS --exclude=.git qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_unix.cpp qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_unix.cpp +--- qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_unix.cpp 2015-10-13 07:35:31.000000000 +0300 ++++ qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_unix.cpp 2016-01-29 11:53:10.000000000 +0300 +@@ -39,6 +39,10 @@ + #include "QtCore/qfileinfo.h" + #include "QtCore/qdebug.h" + #include "QtCore/qdatetime.h" ++#include "QtCore/qfileinfo.h" ++#include "QtCore/qcache.h" ++#include "QtCore/qglobalstatic.h" ++#include "QtCore/qmutex.h" + + #include "private/qcore_unix_p.h" // qt_safe_open + #include "private/qabstractfileengine_p.h" +@@ -89,10 +93,10 @@ + return pos; + } + +-int QLockFilePrivate::checkFcntlWorksAfterFlock() ++int QLockFilePrivate::checkFcntlWorksAfterFlock(const QString &fn) + { + #ifndef QT_NO_TEMPORARYFILE +- QTemporaryFile file; ++ QTemporaryFile file(fn); + if (!file.open()) + return 0; + const int fd = file.d_func()->engine()->handle(); +@@ -114,24 +118,34 @@ + #endif + } + +-static QBasicAtomicInt fcntlOK = Q_BASIC_ATOMIC_INITIALIZER(-1); ++// Cache the result of checkFcntlWorksAfterFlock for each directory a lock ++// file is created in because in some filesystems, like NFS, both locks ++// are the same. This does not take into account a filesystem changing. ++// QCache is set to hold a maximum of 10 entries, this is to avoid unbounded ++// growth, this is caching directories of files and it is assumed a low number ++// will be sufficient. ++typedef QCache CacheType; ++Q_GLOBAL_STATIC_WITH_ARGS(CacheType, fcntlOK, (10)); ++static QBasicMutex fcntlLock; + + /*! + \internal + Checks that the OS isn't using POSIX locks to emulate flock(). + OS X is one of those. + */ +-static bool fcntlWorksAfterFlock() ++static bool fcntlWorksAfterFlock(const QString &fn) + { +- int value = fcntlOK.load(); +- if (Q_UNLIKELY(value == -1)) { +- value = QLockFilePrivate::checkFcntlWorksAfterFlock(); +- fcntlOK.store(value); ++ QMutexLocker lock(&fcntlLock); ++ bool *worksPtr = fcntlOK->object(fn); ++ if (!worksPtr) { ++ worksPtr = new bool(QLockFilePrivate::checkFcntlWorksAfterFlock(fn)); ++ fcntlOK->insert(fn, worksPtr); + } +- return value == 1; ++ ++ return *worksPtr; + } + +-static bool setNativeLocks(int fd) ++static bool setNativeLocks(const QString &fileName, int fd) + { + #if defined(LOCK_EX) && defined(LOCK_NB) + if (flock(fd, LOCK_EX | LOCK_NB) == -1) // other threads, and other processes on a local fs +@@ -143,8 +157,10 @@ + flockData.l_start = 0; + flockData.l_len = 0; // 0 = entire file + flockData.l_pid = getpid(); +- if (fcntlWorksAfterFlock() && fcntl(fd, F_SETLK, &flockData) == -1) // for networked filesystems ++ if (fcntlWorksAfterFlock(QDir::cleanPath(QFileInfo(fileName).absolutePath()) + QString('/')) ++ && fcntl(fd, F_SETLK, &flockData) == -1) { // for networked filesystems + return false; ++ } + return true; + } + +@@ -171,8 +187,10 @@ + } + } + // Ensure nobody else can delete the file while we have it +- if (!setNativeLocks(fd)) +- qWarning() << "setNativeLocks failed:" << strerror(errno); ++ if (!setNativeLocks(fileName, fd)) { ++ const int errnoSaved = errno; ++ qWarning() << "setNativeLocks failed:" << qt_error_string(errnoSaved); ++ } + + if (qt_write_loop(fd, fileData.constData(), fileData.size()) < fileData.size()) { + close(fd); +@@ -193,7 +211,7 @@ + const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY, 0644); + if (fd < 0) // gone already? + return false; +- bool success = setNativeLocks(fd) && (::unlink(lockFileName) == 0); ++ bool success = setNativeLocks(fileName, fd) && (::unlink(lockFileName) == 0); + close(fd); + return success; + } diff --git a/products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch b/products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch new file mode 100644 index 0000000..ddbd3d9 --- /dev/null +++ b/products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch @@ -0,0 +1,10 @@ +--- qt_ref/qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.h 2020-09-17 15:55:49.189400916 +0200 ++++ qt/qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.h 2020-09-17 15:57:23.325190527 +0200 +@@ -37,6 +37,7 @@ + #ifndef SOCKETCANBACKEND_H + #define SOCKETCANBACKEND_H + ++#include + #include + #include + #include diff --git a/products/patches/qt-5.9.1-mapbox-FD32.patch b/products/patches/qt-5.9.1-mapbox-FD32.patch new file mode 100644 index 0000000..48829b2 --- /dev/null +++ b/products/patches/qt-5.9.1-mapbox-FD32.patch @@ -0,0 +1,33 @@ +diff -rupN qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp qt/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp +--- qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp 2020-09-22 09:51:10.824285795 +0200 ++++ qt/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp 2020-09-22 12:36:07.546531484 +0200 +@@ -3,7 +3,7 @@ + #include + #include + #include +- ++#include + namespace mbgl { + namespace util { + +diff -rupN qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp +--- qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp 2020-09-22 09:51:10.850286258 +0200 ++++ qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp 2020-09-22 12:39:55.042544429 +0200 +@@ -5,6 +5,7 @@ + #include + + #include ++#include + + namespace mbgl { + +diff -rupN qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp +--- qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp 2020-09-22 09:51:10.903287202 +0200 ++++ qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp 2020-09-22 12:40:52.602559767 +0200 +@@ -1,5 +1,5 @@ + #include +- ++#include + #include + + #include diff --git a/products/patches/qt_5.5.1-qwebengine.patch b/products/patches/qt_5.5.1-qwebengine.patch new file mode 100644 index 0000000..e6cc031 --- /dev/null +++ b/products/patches/qt_5.5.1-qwebengine.patch @@ -0,0 +1,25 @@ +diff -Naur qt-5.5.1_SRC_orig/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h qt-5.5.1_SRC_modif/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h +--- qt-5.5.1_SRC_orig/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h 2015-10-13 07:35:48.000000000 +0300 ++++ qt-5.5.1_SRC_modif/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h 2015-12-23 11:18:45.000000000 +0300 +@@ -66,10 +66,18 @@ + // Unlike the C++11 |alignas()|, |alignment| must be an integer. It may not be a + // type, nor can it be an expression like |MOJO_ALIGNOF(type)| (due to the + // non-C++11 MSVS version). +-#if __cplusplus >= 201103L ++#if defined(__GNUC__) ++ #if (__GNUC__<=4) and (_GNUC_MINOR__<= 7) ++ #define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment))) ++ #else ++ #if __cplusplus >= 201103L ++ #define MOJO_ALIGNAS(alignment) alignas(alignment) ++ #else ++ #define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment))) ++ #endif ++ #endif ++#elif __cplusplus >= 201103L + #define MOJO_ALIGNAS(alignment) alignas(alignment) +-#elif defined(__GNUC__) +-#define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment))) + #elif defined(_MSC_VER) + #define MOJO_ALIGNAS(alignment) __declspec(align(alignment)) + #else diff --git a/products/patches/remove-windows-python-subprojects.patch b/products/patches/remove-windows-python-subprojects.patch new file mode 100755 index 0000000..fcfba6d --- /dev/null +++ b/products/patches/remove-windows-python-subprojects.patch @@ -0,0 +1,69 @@ +diff -rupN Python-2.7.3/PCbuild/pcbuild.sln Python-2.7.3_NEW/PCbuild/pcbuild.sln +--- Python-2.7.3/PCbuild/pcbuild.sln 2012-04-10 01:07:35.000000000 +0200 ++++ Python-2.7.3_NEW/PCbuild/pcbuild.sln 2015-06-17 14:50:34.674755000 +0200 +@@ -38,12 +38,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C9 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection + EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{B4D38F3F-68FB-42EC-A45D-E00657BB3627}" +- ProjectSection(ProjectDependencies) = postProject +- {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} +- {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +- EndProjectSection +-EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{0E9791DB-593A-465F-98BC-681011311618}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +@@ -69,34 +63,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C9 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection + EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{13CECB97-4119-4316-9D42-8534019A5A44}" +- ProjectSection(ProjectDependencies) = postProject +- {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +- {A1A295E5-463C-437F-81CA-1F32367685DA} = {A1A295E5-463C-437F-81CA-1F32367685DA} +- EndProjectSection +-EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}" +- ProjectSection(ProjectDependencies) = postProject +- {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} +- {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480} +- {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +- EndProjectSection +-EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection + EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}" +- ProjectSection(ProjectDependencies) = postProject +- {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +- EndProjectSection +-EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}" +- ProjectSection(ProjectDependencies) = postProject +- {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +- EndProjectSection +-EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +@@ -114,17 +85,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C9 + EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" + EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}" +- ProjectSection(ProjectDependencies) = postProject +- {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} +- {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} +- EndProjectSection +-EndProject +-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}" +- ProjectSection(ProjectDependencies) = postProject +- {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} +- EndProjectSection +-EndProject + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcproj", "{9E48B300-37D1-11DD-8C41-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} diff --git a/products/patches/scipy-0.13.3.patch b/products/patches/scipy-0.13.3.patch new file mode 100755 index 0000000..f34f9d6 --- /dev/null +++ b/products/patches/scipy-0.13.3.patch @@ -0,0 +1,38 @@ +--- scipy-0.13.3.old/scipy/_build_utils/_fortran.py 2014-02-04 05:56:48.000000000 +0100 ++++ scipy-0.13.3/scipy/_build_utils/_fortran.py 2014-09-09 10:14:33.868172555 +0200 +@@ -9,12 +9,12 @@ __all__ = ['needs_g77_abi_wrapper', 'spl + + + def _uses_veclib(info): +- r_accelerate = re.compile("Accelerate|vecLib") ++ #r_accelerate = re.compile("Accelerate|vecLib") + +- extra_link_args = info.get('extra_link_args', '') +- for arg in extra_link_args: +- if r_accelerate.search(arg): +- return True ++ #extra_link_args = info.get('extra_link_args', '') ++ #for arg in extra_link_args: ++ # if r_accelerate.search(arg): ++ # return True + + return False + +@@ -22,12 +22,12 @@ def uses_accelerate(info): + return _uses_veclib(info) + + def uses_mkl(info): +- r_mkl = re.compile("mkl_core") ++ #r_mkl = re.compile("mkl_core") + +- libraries = info.get('libraries', '') +- for library in libraries: +- if r_mkl.search(library): +- return True ++ #libraries = info.get('libraries', '') ++ #for library in libraries: ++ # if r_mkl.search(library): ++ # return True + + return False + diff --git a/products/patches/scipy-0.14.1.patch b/products/patches/scipy-0.14.1.patch new file mode 100644 index 0000000..046c10b --- /dev/null +++ b/products/patches/scipy-0.14.1.patch @@ -0,0 +1,37 @@ +diff -rupN scipy-0.14.1_old/scipy/_build_utils/_fortran.py scipy-0.14.1_new/scipy/_build_utils/_fortran.py +--- scipy-0.14.1_old/scipy/_build_utils/_fortran.py 2014-11-23 21:41:04.000000000 +0100 ++++ scipy-0.14.1_new/scipy/_build_utils/_fortran.py 2015-04-02 10:04:31.334629000 +0200 +@@ -13,11 +13,11 @@ __all__ = ['needs_g77_abi_wrapper', 'spl + def uses_veclib(info): + if sys.platform != "darwin": + return False +- r_accelerate = re.compile("vecLib") +- extra_link_args = info.get('extra_link_args', '') +- for arg in extra_link_args: +- if r_accelerate.search(arg): +- return True ++ #r_accelerate = re.compile("vecLib") ++ #extra_link_args = info.get('extra_link_args', '') ++ #for arg in extra_link_args: ++ # if r_accelerate.search(arg): ++ # return True + return False + + +@@ -33,11 +33,11 @@ def uses_accelerate(info): + + + def uses_mkl(info): +- r_mkl = re.compile("mkl_core") +- libraries = info.get('libraries', '') +- for library in libraries: +- if r_mkl.search(library): +- return True ++ #r_mkl = re.compile("mkl_core") ++ #libraries = info.get('libraries', '') ++ #for library in libraries: ++ # if r_mkl.search(library): ++ # return True + + return False + diff --git a/products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch b/products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch new file mode 100644 index 0000000..bf4d4d5 --- /dev/null +++ b/products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch @@ -0,0 +1,5 @@ +diff -pruN sphinx_rtd_theme-0.1.9_OLD/requirements.txt sphinx_rtd_theme-0.1.9/requirements.txt +--- sphinx_rtd_theme-0.1.9_OLD/requirements.txt 2015-11-20 14:31:27.184306650 +0100 ++++ sphinx_rtd_theme-0.1.9/requirements.txt 2015-11-20 14:32:03.492486693 +0100 +@@ -1 +0,0 @@ +-sphinx>=1.3 diff --git a/products/patches/tbb-2019_U8_windows10.patch b/products/patches/tbb-2019_U8_windows10.patch new file mode 100644 index 0000000..7e8bb0e --- /dev/null +++ b/products/patches/tbb-2019_U8_windows10.patch @@ -0,0 +1,38 @@ +--- tbb_ref/build/build.py ++++ tbb/build/build.py +@@ -109,12 +109,10 @@ + if is_win and args.msbuild: + preview_release_dir = release_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Release') + if not args.no_rebuild or not os.path.isdir(release_dir): +- assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Release %s build/vs%s/makefile.sln'% \ +- (args.vs_platform, args.build_args, args.vs)) == 0 ++ assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Release %s build/vs%s/makefile.sln'%(args.vs_platform, args.build_args, args.vs)) == 0 + preview_debug_dir = debug_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Debug') + if not args.no_rebuild or not os.path.isdir(debug_dir): +- assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Debug %s build/vs%s/makefile.sln'% \ +- (args.vs_platform, args.build_args, args.vs)) == 0 ++ assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Debug %s build/vs%s/makefile.sln'%(args.vs_platform, args.build_args, args.vs)) == 0 + else: + release_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release') + debug_dir = jp(args.tbbroot, 'build', args.build_prefix+'_debug') +@@ -198,7 +196,7 @@ + paths = [os.path.abspath(d) for d in [args.prefix, inc_dir, irml_dir, lib_dir]+release_dirs] + os.environ["TBBROOT"] = paths[0] + # all the paths must be relative to python/ directory or be absolute +- assert system('python python/setup.py build -b%s build_ext -I%s -L%s install -f'% \ +- (paths[2], paths[1], ':'.join(paths[2:]))) == 0 ++ assert system('python python/setup.py build -b%s build_ext -I%s -L%s install -f --prefix=%s'% \ ++ (paths[2], paths[1], ':'.join(paths[2:]), args.prefix)) == 0 + + print("done") +--- tbb_ref/build/windows.inc ++++ tbb/build/windows.inc +@@ -12,7 +12,7 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-export SHELL = cmd ++export shell = cmd + + ifdef tbb_build_dir + test_dir:=$(tbb_build_dir) diff --git a/products/patches/tcl-8.6.9_windows.patch b/products/patches/tcl-8.6.9_windows.patch new file mode 100644 index 0000000..55fef34 --- /dev/null +++ b/products/patches/tcl-8.6.9_windows.patch @@ -0,0 +1,99 @@ +--- tcl_ref/pkgs/itcl4.1.2/win/rules.vc ++++ tcl/pkgs/itcl4.1.2/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/sqlite3.25.3/win/rules.vc ++++ tcl/pkgs/sqlite3.25.3/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/tdbc1.1.0/win/rules.vc ++++ tcl/pkgs/tdbc1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/tdbcmysql1.1.0/win/rules.vc ++++ tcl/pkgs/tdbcmysql1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/tdbcodbc1.1.0/win/rules.vc ++++ tcl/pkgs/tdbcodbc1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/tdbcpostgres1.1.0/win/rules.vc ++++ tcl/pkgs/tdbcpostgres1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/tdbcsqlite3-1.1.0/win/rules.vc ++++ tcl/pkgs/tdbcsqlite3-1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/pkgs/thread2.8.4/win/rules.vc ++++ tcl/pkgs/thread2.8.4/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcl_ref/win/rules.vc ++++ tcl/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug diff --git a/products/patches/tcltk-8.6.9_windows.patch b/products/patches/tcltk-8.6.9_windows.patch new file mode 100644 index 0000000..8daf339 --- /dev/null +++ b/products/patches/tcltk-8.6.9_windows.patch @@ -0,0 +1,110 @@ +--- tcltk_ref/tcl/pkgs/itcl4.1.2/win/rules.vc ++++ tcltk/tcl/pkgs/itcl4.1.2/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/sqlite3.25.3/win/rules.vc ++++ tcltk/tcl/pkgs/sqlite3.25.3/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/tdbc1.1.0/win/rules.vc ++++ tcltk/tcl/pkgs/tdbc1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/tdbcmysql1.1.0/win/rules.vc ++++ tcltk/tcl/pkgs/tdbcmysql1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/tdbcodbc1.1.0/win/rules.vc ++++ tcltk/tcl/pkgs/tdbcodbc1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/tdbcpostgres1.1.0/win/rules.vc ++++ tcltk/tcl/pkgs/tdbcpostgres1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/tdbcsqlite3-1.1.0/win/rules.vc ++++ tcltk/tcl/pkgs/tdbcsqlite3-1.1.0/win/rules.vc +@@ -994,7 +994,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/pkgs/thread2.8.4/win/rules.vc ++++ tcltk/tcl/pkgs/thread2.8.4/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tcl/win/rules.vc ++++ tcltk/tcl/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug +--- tcltk_ref/tk/win/rules.vc ++++ tcltk/tk/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug diff --git a/products/patches/tk-8.6.9_windows.patch b/products/patches/tk-8.6.9_windows.patch new file mode 100644 index 0000000..e60e501 --- /dev/null +++ b/products/patches/tk-8.6.9_windows.patch @@ -0,0 +1,11 @@ +--- tk_ref/win/rules.vc ++++ tk/win/rules.vc +@@ -992,7 +992,7 @@ + # PRJSTUBLIB - output path of the generated project stubs library + # RESFILE - output resource file (only if not static build) + +-SUFX = tsgx ++SUFX = + + !if $(DEBUG) + BUILDDIRTOP = Debug diff --git a/products/patches/xdata-0.9.11.patch b/products/patches/xdata-0.9.11.patch new file mode 100644 index 0000000..330c675 --- /dev/null +++ b/products/patches/xdata-0.9.11.patch @@ -0,0 +1,42 @@ +diff -Naur --exclude=CVS --exclude=.git xdata-0.9.11_SRC.orig/src/XDATA2SALOME/xsalome.py xdata-0.9.11_SRC/src/XDATA2SALOME/xsalome.py +--- xdata-0.9.11_SRC.orig/src/XDATA2SALOME/xsalome.py 2011-10-03 12:07:33.000000000 +0400 ++++ xdata-0.9.11_SRC/src/XDATA2SALOME/xsalome.py 2015-10-22 12:45:38.000000000 +0300 +@@ -8,6 +8,19 @@ + # -- + # + ++def getHostName(): ++ import os ++ try: ++ import socket ++ host = socket.gethostname() ++ except: ++ host = None ++ pass ++ if not host: host = os.getenv("HOSTNAME") ++ if not host: host = os.getenv("HOST") ++ if not host: host = "unknown" ++ return host ++ + def searchFreePort(): + print "Searching a free port for naming service:", + NSPORT=2810 +@@ -19,7 +32,7 @@ + status = os.system("netstat -ltn | grep -E :%s"%(NSPORT)) + if status: + home = os.environ['HOME'] +- hostname = os.environ['HOSTNAME'] ++ hostname = getHostName() + os.environ['OMNIORB_CONFIG'] = '%s/.omniORB_%s.cfg'%(home, NSPORT) + f = open(os.environ['OMNIORB_CONFIG'], "w") + f.write("ORBInitRef NameService=corbaname::%s:%s\n"%(hostname, NSPORT)) +@@ -163,7 +176,7 @@ + self.study_manager = study_manager + pass + # +- theComputer = os.getenv("HOSTNAME") ++ theComputer = getHostName() + computerSplitName = theComputer.split('.') + theComputer = computerSplitName[0] + # + diff --git a/products/patches/xdata-0.9.9.python2.7.patch b/products/patches/xdata-0.9.9.python2.7.patch new file mode 100755 index 0000000..cd2c68e --- /dev/null +++ b/products/patches/xdata-0.9.9.python2.7.patch @@ -0,0 +1,16 @@ +diff -Naur --exclude=CVS xdata-0.9.9-orig/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py xdata-0.9.9-patched/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py +--- xdata-0.9.9-orig/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py 2013-03-18 21:10:35.000000000 +0400 ++++ xdata-0.9.9-patched/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py 2013-08-02 15:10:25.000000000 +0400 +@@ -96,7 +96,11 @@ + try: + self.failUnlessEqual(exc_msg_lines[-1].strip(), 'TypeError: unsubscriptable object') + except AssertionError: +- self.failUnlessEqual(exc_msg_lines[-1].strip(), "TypeError: 'object' object is unsubscriptable") ++ try: ++ self.failUnlessEqual(exc_msg_lines[-1].strip(), "TypeError: 'object' object is unsubscriptable") ++ except AssertionError: ++ self.failUnlessEqual(exc_msg_lines[-1].strip(), "TypeError: 'object' object has no attribute '__getitem__'") ++ pass + pass + self.failUnlessEqual(exc_msg_lines[-2].strip(), 'res = a[43]') + pass diff --git a/products/patches/xdata_qt.patch b/products/patches/xdata_qt.patch new file mode 100644 index 0000000..0bdbe16 --- /dev/null +++ b/products/patches/xdata_qt.patch @@ -0,0 +1,23 @@ +--- xdata-0.9.11_orig/src/XDATAGUI/xqt.py 2010-09-30 16:27:40.000000000 +0200 ++++ xdata-0.9.11/src/XDATAGUI/xqt.py 2015-07-28 14:59:02.551760564 +0200 +@@ -568,9 +568,16 @@ + # --------------------- + + if QComboBox.insertItem.__name__ != "__x_insertItem": +- def __x_insertItem(self, text, index=-1): +- if index == -1: +- index = self.count() ++ def __x_insertItem(self, val1, val2=-1): ++ if isinstance(val1, int): ++ index = val1 ++ text = val2 ++ else: ++ index = val2 ++ text = val1 ++ if index == -1: ++ index = self.count() ++ pass + pass + result = QComboBox.insertItem_orig(self, index, text) + return result + diff --git a/products/patches/yacs_cea_v2.patch b/products/patches/yacs_cea_v2.patch new file mode 100644 index 0000000..abfcace --- /dev/null +++ b/products/patches/yacs_cea_v2.patch @@ -0,0 +1,12 @@ +diff -rupN YACS_orig/src/salomegui/resources/SalomeApp.xml.in YACS/src/salomegui/resources/SalomeApp.xml.in +--- YACS_orig/src/salomegui/resources/SalomeApp.xml.in 2011-09-16 08:24:47.000000000 +0200 ++++ YACS/src/salomegui/resources/SalomeApp.xml.in 2012-03-29 16:07:14.000000000 +0200 +@@ -38,7 +38,7 @@ +
+ + +- ++ + + + diff --git a/products/patches/yacs_without_expat.patch b/products/patches/yacs_without_expat.patch new file mode 100644 index 0000000..7cb412f --- /dev/null +++ b/products/patches/yacs_without_expat.patch @@ -0,0 +1,23 @@ +diff -pruN YACS-orig/adm/cmake/CMakeLists.txt YACS/adm/cmake/CMakeLists.txt +--- YACS-orig/adm/cmake/CMakeLists.txt 2014-06-23 14:36:42.695397292 +0200 ++++ YACS/adm/cmake/CMakeLists.txt 2014-06-23 14:37:01.907992394 +0200 +@@ -23,8 +23,6 @@ + + # These files are data, module or lib files + SET(_adm_data +- FindExpat.cmake +- FindSalomeExpat.cmake + FindQScintilla.cmake + FindSalomeQScintilla.cmake + FindSphinx.cmake +diff -pruN YACS-orig/adm/unix/config_files/CMakeLists.txt YACS/adm/unix/config_files/CMakeLists.txt +--- YACS-orig/adm/unix/config_files/CMakeLists.txt 2014-06-23 14:36:42.695397292 +0200 ++++ YACS/adm/unix/config_files/CMakeLists.txt 2014-06-23 14:36:54.691768877 +0200 +@@ -25,7 +25,6 @@ SET(_m4_data + check_boost.m4 + check_cas.m4 + check_cppunit.m4 +- check_expat.m4 + check_htmlgen.m4 + check_libxml.m4 + check_omniorb.m4 diff --git a/products/patches/yacsgen_7_8_med_medcoupling.patch b/products/patches/yacsgen_7_8_med_medcoupling.patch new file mode 100644 index 0000000..2286728 --- /dev/null +++ b/products/patches/yacsgen_7_8_med_medcoupling.patch @@ -0,0 +1,49 @@ +diff -rupN YACSGEN_ori/module_generator/gener.py YACSGEN_new/module_generator/gener.py +--- YACSGEN_ori/module_generator/gener.py 2017-01-18 15:12:06.603950115 +0100 ++++ YACSGEN_new/module_generator/gener.py 2017-01-20 11:00:42.912760405 +0100 +@@ -438,8 +438,30 @@ class Generator(object): + prefix = os.path.abspath(self.module.prefix) + component_libs = "".join(map(lambda x: x.libraryName()+" ", + module.components)) +- add_modules = "".join(map(lambda x:cmake_find_module.substitute(module=x), +- self.used_modules)) ++ add_modules = "" ++ for x in self.used_modules: ++ cmake_text = cmake_find_module.substitute(module=x) ++ if x == "MED": ++ cmake_text += """ ++ ++##################################### ++# FIND MEDCOUPLING ++##################################### ++SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to MEDCOUPLING module") ++IF(EXISTS ${MEDCOUPLING_ROOT_DIR}) ++ LIST(APPEND CMAKE_MODULE_PATH "${MEDCOUPLING_ROOT_DIR}/cmake_files") ++ FIND_PACKAGE(SalomeMEDCoupling REQUIRED) ++ ADD_DEFINITIONS(${MEDCOUPLING_DEFINITIONS}) ++ INCLUDE_DIRECTORIES(${MEDCOUPLING_INCLUDE_DIRS}) ++ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR}) ++ MESSAGE(FATAL_ERROR "We absolutely need MEDCOUPLING module, please define MEDCOUPLING_ROOT_DIR") ++ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR}) ++##################################### ++ ++""" ++ add_modules = add_modules + cmake_text ++ pass ++ + self.makeFiles({"CMakeLists.txt":cmake_root_cpp.substitute( + module=self.module.name, + module_min=self.module.name.lower(), +diff -rupN YACSGEN_ori/module_generator/hxxcompo.py YACSGEN_new/module_generator/hxxcompo.py +--- YACSGEN_ori/module_generator/hxxcompo.py 2017-01-18 15:12:06.608950285 +0100 ++++ YACSGEN_new/module_generator/hxxcompo.py 2017-01-20 11:00:42.913760396 +0100 +@@ -459,7 +459,8 @@ class HXX2SALOMEComponent(Component): + gui_xml_fr=hxxgui_xml_fr.substitute(component_name=self.name) + gui_xml_en=hxxgui_xml_en.substitute(component_name=self.name) + gui_salomeapp_gen=cppsalomeapp.substitute(module=self.name, +- lmodule=self.name.lower()) ++ lmodule=self.name.lower(), ++ version="V0") + # for a salome component generated by hxx2salome from a c++ component, + # the documentation points at the c++ component documentation + salome_doc_path=os.path.join("%"+self.name+"_ROOT_DIR%","share", diff --git a/products/patches/yacsgen_7_8_portage.patch b/products/patches/yacsgen_7_8_portage.patch new file mode 100644 index 0000000..bb881e3 --- /dev/null +++ b/products/patches/yacsgen_7_8_portage.patch @@ -0,0 +1,63 @@ +diff --git a/module_generator/gener.py b/module_generator/gener.py +index 3a001df..f03d799 100644 +--- a/module_generator/gener.py ++++ b/module_generator/gener.py +@@ -438,8 +438,30 @@ class Generator(object): + prefix = os.path.abspath(self.module.prefix) + component_libs = "".join(map(lambda x: x.libraryName()+" ", + module.components)) +- add_modules = "".join(map(lambda x:cmake_find_module.substitute(module=x), +- self.used_modules)) ++ add_modules = "" ++ for x in self.used_modules: ++ cmake_text = cmake_find_module.substitute(module=x) ++ if x == "MED": ++ cmake_text += """ ++ ++##################################### ++# FIND MEDCOUPLING ++##################################### ++SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to MEDCOUPLING module") ++IF(EXISTS ${MEDCOUPLING_ROOT_DIR}) ++ LIST(APPEND CMAKE_MODULE_PATH "${MEDCOUPLING_ROOT_DIR}/cmake_files") ++ FIND_PACKAGE(SalomeMEDCoupling REQUIRED) ++ ADD_DEFINITIONS(${MEDCOUPLING_DEFINITIONS}) ++ INCLUDE_DIRECTORIES(${MEDCOUPLING_INCLUDE_DIRS}) ++ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR}) ++ MESSAGE(FATAL_ERROR "We absolutely need MEDCOUPLING module, please define MEDCOUPLING_ROOT_DIR") ++ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR}) ++##################################### ++ ++""" ++ add_modules = add_modules + cmake_text ++ pass ++ + self.makeFiles({"CMakeLists.txt":cmake_root_cpp.substitute( + module=self.module.name, + module_min=self.module.name.lower(), +@@ -801,7 +823,10 @@ class Generator(object): + """ + for name, content in dic.items(): + filename = os.path.join(basedir, name) +- if isinstance(content, str): ++ if isinstance(content, basestring): ++ if isinstance(content, unicode): ++ # encodage to utf-8 if unicode string ++ content=content.encode('utf8') + fil = open(filename, 'w') + fil.write(content) + fil.close() +diff --git a/module_generator/hxxcompo.py b/module_generator/hxxcompo.py +index 738052e..46d2f13 100644 +--- a/module_generator/hxxcompo.py ++++ b/module_generator/hxxcompo.py +@@ -459,7 +459,8 @@ class HXX2SALOMEComponent(Component): + gui_xml_fr=hxxgui_xml_fr.substitute(component_name=self.name) + gui_xml_en=hxxgui_xml_en.substitute(component_name=self.name) + gui_salomeapp_gen=cppsalomeapp.substitute(module=self.name, +- lmodule=self.name.lower()) ++ lmodule=self.name.lower(), ++ version="V0") + # for a salome component generated by hxx2salome from a c++ component, + # the documentation points at the c++ component documentation + salome_doc_path=os.path.join("%"+self.name+"_ROOT_DIR%","share", diff --git a/products/patches/yacsgen_hxx.patch b/products/patches/yacsgen_hxx.patch new file mode 100644 index 0000000..b618e82 --- /dev/null +++ b/products/patches/yacsgen_hxx.patch @@ -0,0 +1,151 @@ +diff --git a/module_generator/hxx_tmpl.py b/module_generator/hxx_tmpl.py +index 48b7552..328b345 100644 +--- a/module_generator/hxx_tmpl.py ++++ b/module_generator/hxx_tmpl.py +@@ -25,7 +25,7 @@ except: + cxxCompo=""" + // this cxx file was generated by yacsgen + #include "${component}_i.hxx" +-#include "${component}.hxx" ++#include "${hxxfile}" + using namespace std; + #include + #include +diff --git a/module_generator/hxx_tmpl_gui.py b/module_generator/hxx_tmpl_gui.py +index cc5eff8..fae982f 100644 +--- a/module_generator/hxx_tmpl_gui.py ++++ b/module_generator/hxx_tmpl_gui.py +@@ -58,10 +58,10 @@ ${component_name}GUI::${component_name}GUI() : + } + + // Gets a reference to the module's engine +-${component_name}_ORB::${component_name}_Gen_ptr ${component_name}GUI::Init${component_name}Gen( SalomeApp_Application* app ) ++${module_name}_ORB::${component_name}_Gen_ptr ${component_name}GUI::Init${component_name}Gen( SalomeApp_Application* app ) + { + Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( "FactoryServer",COMPONENT_NAME ); +- ${component_name}_ORB::${component_name}_Gen_ptr clr = ${component_name}_ORB::${component_name}_Gen::_narrow(comp); ++ ${module_name}_ORB::${component_name}_Gen_ptr clr = ${module_name}_ORB::${component_name}_Gen::_narrow(comp); + ASSERT(!CORBA::is_nil(clr)); + return clr; + } +@@ -149,7 +149,7 @@ void ${component_name}GUI::OnMyNewItem() + void ${component_name}GUI::OnCallAction() + { + // Create a ${component_name} component +- ${component_name}_ORB::${component_name}_Gen_ptr ${component_name}gen = ${component_name}GUI::Init${component_name}Gen( getApp() ); ++ ${module_name}_ORB::${component_name}_Gen_ptr ${component_name}gen = ${component_name}GUI::Init${component_name}Gen( getApp() ); + + // Do the job... + // +@@ -256,7 +256,7 @@ hxxgui_h=""" + #include + + #include +-#include CORBA_CLIENT_HEADER(${component_name}) ++#include CORBA_CLIENT_HEADER(${module_name}) + + class SalomeApp_Application; + class ${component_name}GUI: public SalomeApp_Module +@@ -270,7 +270,7 @@ public: + QString engineIOR() const; + void windows( QMap& ) const; + +- static ${component_name}_ORB::${component_name}_Gen_ptr Init${component_name}Gen( SalomeApp_Application* ); ++ static ${module_name}_ORB::${component_name}_Gen_ptr Init${component_name}Gen( SalomeApp_Application* ); + + virtual void createPreferences(); + virtual void preferencesChanged( const QString&, const QString& ); +diff --git a/module_generator/hxxcompo.py b/module_generator/hxxcompo.py +index 46d2f13..b042ad7 100644 +--- a/module_generator/hxxcompo.py ++++ b/module_generator/hxxcompo.py +@@ -54,11 +54,15 @@ class HXX2SALOMEComponent(Component): + matches.append(os.path.join(path, filename)) + return matches + ++ assert cpplib[:3]=='lib' and cpplib[-3:]=='.so',\ ++ 'Error, library name %s does not conform to lib.so pattern' ++ cpplibname=cpplib[3:-3] + hxxfileful = search_file(hxxfile,cpp_path) + cpplibful = search_file(cpplib,cpp_path) + format_error = 'Error in HXX2SALOMEComponent : file %s not found in %s' + assert len(hxxfileful) > 0, format_error % (hxxfile, cpp_path) + assert len(cpplibful) > 0, format_error % (cpplib, cpp_path) ++ self.hxxfile=hxxfile # store it for cxxCompo template + hxxfile = hxxfileful[0] + cpplib = cpplibful[0] + +@@ -304,8 +308,8 @@ class HXX2SALOMEComponent(Component): + body=code, + ) ) + +- Includes = os.path.join(cpp_path, "include") +- Libs = [ Library( name=name+"CXX", path=os.path.join(cpp_path, "lib"))] ++ Includes = os.path.dirname(hxxfile) ++ Libs = [ Library( name=cpplibname, path=os.path.dirname(cpplib))] + Compodefs="" + Inheritedclass="" + self.inheritedconstructor="" +@@ -438,28 +442,30 @@ class HXX2SALOMEComponent(Component): + parameters=gen.makeArgs(serv), + body=serv.body % {"module":gen.module.name+"_ORB"} ) + services.append(service) +- return cxxCompo.substitute(component=self.name, ++ return cxxCompo.substitute(component=self.name, hxxfile=self.hxxfile, + inheritedconstructor=self.inheritedconstructor, + servicesdef="\n".join(defs), + servicesimpl="\n".join(services)) + + # ------------------------------------------------------------------------------ +- def getGUIfilesTemplate(self): ++ def getGUIfilesTemplate(self, module_name): + """generate in a temporary directory files for a generic GUI, + and return a list with file names. + it is the responsability of the user to get rid + of the temporary directory when finished + """ +- gui_cxx=hxxgui_cxx.substitute(component_name=self.name) +- gui_h=hxxgui_h.substitute(component_name=self.name) ++ gui_cxx=hxxgui_cxx.substitute(component_name=self.name, ++ module_name=module_name) ++ gui_h=hxxgui_h.substitute(component_name=self.name, ++ module_name=module_name) + gui_icon_ts=hxxgui_icon_ts.substitute(component_name=self.name) + gui_message_en=hxxgui_message_en.substitute(component_name=self.name) + gui_message_fr=hxxgui_message_fr.substitute(component_name=self.name) + gui_config=hxxgui_config.substitute(component_name=self.name) + gui_xml_fr=hxxgui_xml_fr.substitute(component_name=self.name) + gui_xml_en=hxxgui_xml_en.substitute(component_name=self.name) +- gui_salomeapp_gen=cppsalomeapp.substitute(module=self.name, +- lmodule=self.name.lower(), ++ gui_salomeapp_gen=cppsalomeapp.substitute(module=module_name, ++ lmodule=module_name.lower(), + version="V0") + # for a salome component generated by hxx2salome from a c++ component, + # the documentation points at the c++ component documentation +diff --git a/module_generator/hxxparacompo.py b/module_generator/hxxparacompo.py +index b093761..80aae50 100644 +--- a/module_generator/hxxparacompo.py ++++ b/module_generator/hxxparacompo.py +@@ -355,7 +355,7 @@ void *th_%(serv_name)s(void *s) + self.thread_func_decl.append(service_definition[serv]["thread_func_decl"]) + self.thread_str_decl.append(service_definition[serv]["thread_str_decl"]) + # Includes="-I${"+name+"CPP_ROOT_DIR}/include" +- Includes = os.path.join(cpp_path, "include") ++ Includes = os.path.dirname(hxxfileful) + # Libs="-L${"+name+"CPP_ROOT_DIR}/lib -l"+cpplibname + # Libs=[cpplibname+" PATH "+ os.path.join(cpp_path, "lib") ] + Libs = [ Library( name=cpplibname, path=os.path.join(cpp_path, "lib"))] +diff --git a/script/hxx2salome.py b/script/hxx2salome.py +index 053e697..7c28d82 100755 +--- a/script/hxx2salome.py ++++ b/script/hxx2salome.py +@@ -146,7 +146,7 @@ def hxx2salome(cppdir, + # if a graphical user interface is required, + # ask HXX2SALOMEComponent to generate template files + if do_gui: +- gui_files=salome_compo.getGUIfilesTemplate() ++ gui_files=salome_compo.getGUIfilesTemplate(salome_compo.name) + g=Generator(Module(salome_compo.name,components=[salome_compo], + prefix=module_root_dir, + gui=gui_files), diff --git a/products/perl.pyconf b/products/perl.pyconf new file mode 100644 index 0000000..0db1945 --- /dev/null +++ b/products/perl.pyconf @@ -0,0 +1,25 @@ +default : +{ + name : "perl" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + compile_time : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "perl-" + $APPLICATION.products.perl + "_windows.tar.gz"} +} diff --git a/products/petsc.pyconf b/products/petsc.pyconf new file mode 100644 index 0000000..a55aae0 --- /dev/null +++ b/products/petsc.pyconf @@ -0,0 +1,16 @@ +default : +{ + name : "petsc" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + diff --git a/products/planegcs.pyconf b/products/planegcs.pyconf new file mode 100644 index 0000000..08457c5 --- /dev/null +++ b/products/planegcs.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "planegcs" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['eigen','boost'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + diff --git a/products/pockets.pyconf b/products/pockets.pyconf new file mode 100644 index 0000000..0e018cd --- /dev/null +++ b/products/pockets.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "pockets" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python','six','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "pockets-" + $APPLICATION.products.pockets + "_windows.tar.gz"} +} diff --git a/products/pthreads.pyconf b/products/pthreads.pyconf new file mode 100755 index 0000000..9175b16 --- /dev/null +++ b/products/pthreads.pyconf @@ -0,0 +1,37 @@ +default : +{ + name : "pthreads" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "pthreads-" + $APPLICATION.products.pthreads + "_windows.tar.gz"} +} + +# needed in order to screen with windows version - see below +version_2_9_1: +{ + patches : [] +} + +version_2_9_1_win: +{ + patches : ["pthreads-2.9.1_windows.patch"] +} + diff --git a/products/pybind11.pyconf b/products/pybind11.pyconf new file mode 100644 index 0000000..416a430 --- /dev/null +++ b/products/pybind11.pyconf @@ -0,0 +1,20 @@ +default : +{ + name : "pybind11" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + } + depend : ['Python', 'setuptools'] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} \ No newline at end of file diff --git a/products/pyparsing.pyconf b/products/pyparsing.pyconf new file mode 100644 index 0000000..155e6be --- /dev/null +++ b/products/pyparsing.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "pyparsing" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-pyparsing"] + rpm_dev : [] + apt : ["python3-pyparsing"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "pyparsing-" + $APPLICATION.products.pyparsing + "_windows.tar.gz"} +} diff --git a/products/pyreadline.pyconf b/products/pyreadline.pyconf new file mode 100755 index 0000000..e666780 --- /dev/null +++ b/products/pyreadline.pyconf @@ -0,0 +1,39 @@ +default : +{ + name : "pyreadline" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["readline"] + rpm_dev : [] + apt : ["readline-common"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "no" # bug on linux : windows version returned! + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "pyreadline-" + $APPLICATION.products.pyreadline + "_windows.tar.gz"} # in case pip is set to 'no' + depend : ["Python","setuptools"] + properties: + { + incremental : "yes" + pip : "yes" + } +} diff --git a/products/pytz.pyconf b/products/pytz.pyconf new file mode 100644 index 0000000..c78b30d --- /dev/null +++ b/products/pytz.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "pytz" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-pytz"] + rpm_dev : [] + apt : ["python3-tz"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "pytz-" + $APPLICATION.products.pytz + "_windows.tar.gz"} +} diff --git a/products/qt.pyconf b/products/qt.pyconf new file mode 100644 index 0000000..8c26d05 --- /dev/null +++ b/products/qt.pyconf @@ -0,0 +1,76 @@ +default: +{ + name : "qt" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["qt5-devel"] + apt : ["build-essential"] + apt_dev : ["libgl1-mesa-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ["freetype"] + patches : [] + check_install : ["lib/libQt5DBus.so"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +default_win: +{ + check_install : [] +} + +version_4_8_4 : +{ + compil_script : "qt-4.8.4.sh" + patches : ["qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch"] + depend : [] + check_install : [] +} + +version_5_5_1: +{ + compil_script : "qt-5.5.1.sh" + patches : [ + "qt-5.5.1-qlockfile.patch" + "qt_5.5.1-qwebengine.patch" + ] + depend : [] +} + +version_4_6_3: +{ + compil_script : "qt-4.6.3.sh" + patches : ["qt-463-gcc46.patch"] + depend : [] + check_install : [] +} + +version_5_6_1_1: +{ + compil_script : "qt-5.6.1" + $VARS.scriptExtension + depend : [] +} + +version_test: +{ + compil_script : "qt-5.6.1_test.sh" + depend : [] +} + +version_5_9_1 : +{ + patches : [] +} diff --git a/products/qwt.pyconf b/products/qwt.pyconf new file mode 100644 index 0000000..1f8ff3c --- /dev/null +++ b/products/qwt.pyconf @@ -0,0 +1,59 @@ +default : +{ + name : "qwt" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['qt'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} + +version_6_1_0 : +{ + compil_script : "qwt-6.1.0.sh" + archive_info: + { + archive_name : "qwt-6.1.0.tar.bz2" + } +} + +version_6_1_2 : +{ + compil_script : "qwt-6.1.0.sh" + archive_info: + { + archive_name : "qwt-6.1.2.tar.bz2" + } + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +version_6_1_2_win : +{ + compil_script : "qwt-6.1.0.bat" + archive_info: + { + archive_name : "qwt-6.1.2.tar.gz" + } +} + +version_5_2_1 : +{ + archive_info: + { + archive_name : "qwt-5.2.1.tar.bz2" + } +} diff --git a/products/requests.pyconf b/products/requests.pyconf new file mode 100755 index 0000000..3ef8074 --- /dev/null +++ b/products/requests.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "requests" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-requests"] + rpm_dev : [] + apt : ["python3-requests"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools', 'certifi', 'urllib3', 'idna', 'chardet'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "requests-" + $APPLICATION.products.requests + "_windows.tar.gz"} +} diff --git a/products/root.pyconf b/products/root.pyconf new file mode 100644 index 0000000..a28efad --- /dev/null +++ b/products/root.pyconf @@ -0,0 +1,28 @@ +default : +{ + name : "root" + build_source : "cmake" + cmake_options : "" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['cmake', 'Python'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + } +} +version_6_16_00: +{} + +version_6_16_00_win: +{ + archive_info : {archive_name : "root_v6.16.00-windows.tar.gz"} + build_source : "script" + compil_script : "root.bat" +} \ No newline at end of file diff --git a/products/ruby.pyconf b/products/ruby.pyconf new file mode 100644 index 0000000..75bc32c --- /dev/null +++ b/products/ruby.pyconf @@ -0,0 +1,25 @@ +default : +{ + name : "ruby" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + compile_time : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "ruby-" + $APPLICATION.products.ruby + "_windows.tar.gz"} +} diff --git a/products/scipy.pyconf b/products/scipy.pyconf new file mode 100755 index 0000000..43f2241 --- /dev/null +++ b/products/scipy.pyconf @@ -0,0 +1,69 @@ +default : +{ + name : "scipy" + build_source : "script" + compil_script : "pip_install" + $VARS.scriptExtension + get_source : "archive" + patches : [] + system_info : + { + rpm : ["python3-scipy"] + rpm_dev : [] + apt : ["python3-scipy"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['numpy','lapack'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "scipy-" + $APPLICATION.products.scipy + "_windows.tar.gz"} +} + +version_1_3_0 : +{ +} + +version_1_3_0_win : +{ + compil_script : "scipy.bat" +} + +version_0_18_1 : +{ + compil_script : "scipy.sh" + # OP 29/03/2018 Suppress the dependency to setuptools + depend : ['numpy','lapack'] +} + +version_0_15_1 : +{ + compil_script : "scipy.sh" + depend : ['Python','numpy','lapack'] + patches : [ "scipy-0.14.1.patch" ] +} + +version_0_15_1_win : +{ + compil_script : "scipy.bat" +} + +version_0_13_3 : +{ + compil_script : "scipy.sh" + depend : ['numpy','lapack'] + patches : [ "scipy-0.13.3.patch" ] +} diff --git a/products/scons.pyconf b/products/scons.pyconf new file mode 100644 index 0000000..5a280ac --- /dev/null +++ b/products/scons.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "scons" + build_source : "script" + compil_script : "scons.sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [ + "Python" + ] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install : "base" + +} + diff --git a/products/scotch.pyconf b/products/scotch.pyconf new file mode 100644 index 0000000..ce6a726 --- /dev/null +++ b/products/scotch.pyconf @@ -0,0 +1,41 @@ +default : +{ + name : "scotch" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["scotch"] + rpm_dev : ["scotch-devel"] + apt : ["libscotch"] + apt_dev : ["libscotch-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + +version_5_1_12b : +{ + name : "scotch" + build_source : "script" + compil_script : $name + "-5.1.12.sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + + + diff --git a/products/setuptools.pyconf b/products/setuptools.pyconf new file mode 100644 index 0000000..31d7709 --- /dev/null +++ b/products/setuptools.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "setuptools" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "setuptools-" + $APPLICATION.products.setuptools + "_windows.tar.gz"} +} diff --git a/products/sip.pyconf b/products/sip.pyconf new file mode 100644 index 0000000..b84e52f --- /dev/null +++ b/products/sip.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sip" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["python3-sip-devel"] + apt : ["python3-sip"] + apt_dev : ["python3-sip-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'qt'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} diff --git a/products/six.pyconf b/products/six.pyconf new file mode 100644 index 0000000..d687fc3 --- /dev/null +++ b/products/six.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "six" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + patches : [] + system_info : + { + rpm : ["python3-six"] + rpm_dev : [] + apt : ["python3-six"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "six-" + $APPLICATION.products.six + "_windows.tar.gz"} +} diff --git a/products/snowballstemmer.pyconf b/products/snowballstemmer.pyconf new file mode 100644 index 0000000..13b7d96 --- /dev/null +++ b/products/snowballstemmer.pyconf @@ -0,0 +1,33 @@ +default : +{ + name : "snowballstemmer" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-snowballstemmer"] + rpm_dev : [] + apt : ["python3-snowballstemmer"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "snowballstemmer-" + $APPLICATION.products.snowballstemmer + "_windows.tar.gz"} +} diff --git a/products/solvespace.pyconf b/products/solvespace.pyconf new file mode 100644 index 0000000..72112c8 --- /dev/null +++ b/products/solvespace.pyconf @@ -0,0 +1,17 @@ +version_2_1 : +{ + name : "solvespace" + build_source : "script" + compil_script : $name + "-2.1.sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + diff --git a/products/sphinx_rtd_theme.pyconf b/products/sphinx_rtd_theme.pyconf new file mode 100644 index 0000000..4c93f6b --- /dev/null +++ b/products/sphinx_rtd_theme.pyconf @@ -0,0 +1,38 @@ +default : +{ + name : "sphinx_rtd_theme" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + system_info : + { + rpm : ["python3-sphinx_rtd_theme"] + rpm_dev : [] + apt : ["python3-sphinx-rtd-theme"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'Sphinx'] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +version_0_1_9: +{ + patches : [ 'sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch'] + properties: + { + incremental : "yes" + pip : "no" + } +} diff --git a/products/sphinxcontrib.pyconf b/products/sphinxcontrib.pyconf new file mode 100644 index 0000000..adccb5f --- /dev/null +++ b/products/sphinxcontrib.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "sphinxcontrib" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python','six','pockets','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + pip : "yes" + } +} diff --git a/products/sphinxcontrib_applehelp.pyconf b/products/sphinxcontrib_applehelp.pyconf new file mode 100644 index 0000000..f42048b --- /dev/null +++ b/products/sphinxcontrib_applehelp.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib-applehelp" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxcontrib_applehelp.py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_applehelp" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_applehelp" + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_applehelp-" + $APPLICATION.products.sphinxcontrib_applehelp + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_devhelp.pyconf b/products/sphinxcontrib_devhelp.pyconf new file mode 100644 index 0000000..b7d6d87 --- /dev/null +++ b/products/sphinxcontrib_devhelp.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib-devhelp" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxcontrib_devhelp.py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_devhelp" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_devhelp" + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_devhelp-" + $APPLICATION.products.sphinxcontrib_devhelp + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_htmlhelp.pyconf b/products/sphinxcontrib_htmlhelp.pyconf new file mode 100644 index 0000000..fe20a34 --- /dev/null +++ b/products/sphinxcontrib_htmlhelp.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib-htmlhelp" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxcontrib_htmlhelp.py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_htmlhelp" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_htmlhelp" + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_htmlhelp-" + $APPLICATION.products.sphinxcontrib_htmlhelp + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_jsmath.pyconf b/products/sphinxcontrib_jsmath.pyconf new file mode 100644 index 0000000..caac1c9 --- /dev/null +++ b/products/sphinxcontrib_jsmath.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib-jsmath" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxcontrib_jsmath.py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_jsmath" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_jsmath" + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_jsmath-" + $APPLICATION.products.sphinxcontrib_jsmath + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_napoleon.pyconf b/products/sphinxcontrib_napoleon.pyconf new file mode 100644 index 0000000..0a5c6ab --- /dev/null +++ b/products/sphinxcontrib_napoleon.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib_napoleon" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['Python','six','pockets','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_napoleon-" + $APPLICATION.products.sphinxcontrib_napoleon + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_qthelp.pyconf b/products/sphinxcontrib_qthelp.pyconf new file mode 100644 index 0000000..c782b10 --- /dev/null +++ b/products/sphinxcontrib_qthelp.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib-qthelp" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxcontrib_qthelp.py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_qthelp" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_qthelp" + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_qthelp-" + $APPLICATION.products.sphinxcontrib_qthelp + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_serializinghtml.pyconf b/products/sphinxcontrib_serializinghtml.pyconf new file mode 100644 index 0000000..eecbb99 --- /dev/null +++ b/products/sphinxcontrib_serializinghtml.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinxcontrib-serializinghtml" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxcontrib_serializinghtml.py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_serializinghtml-" + $APPLICATION.products.sphinxcontrib_serializinghtml + "_windows.tar.gz"} +} diff --git a/products/sphinxcontrib_websupport.pyconf b/products/sphinxcontrib_websupport.pyconf new file mode 100755 index 0000000..0e0cc8c --- /dev/null +++ b/products/sphinxcontrib_websupport.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "sphinxcontrib_websupport" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-sphinxcontrib-websupport"] + rpm_dev : [] + apt : ["python3-sphinxcontrib.websupport"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + single_install_dir : "no" + pip : "yes" + incremental : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinxcontrib_websupport-" + $APPLICATION.products.sphinxcontrib_websupport + "_windows.tar.gz"} +} diff --git a/products/sphinxintl.pyconf b/products/sphinxintl.pyconf new file mode 100644 index 0000000..5804a43 --- /dev/null +++ b/products/sphinxintl.pyconf @@ -0,0 +1,26 @@ +default : +{ + name : "sphinx_intl" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "sphinxintl.py" + } + depend : ['Python', 'setuptools', 'click', 'Sphinx','Babel','six','pytz'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "sphinx_intl-" + $APPLICATION.products.sphinxintl + "_windows.tar.gz"} +} diff --git a/products/subprocess32.pyconf b/products/subprocess32.pyconf new file mode 100644 index 0000000..82bc6f8 --- /dev/null +++ b/products/subprocess32.pyconf @@ -0,0 +1,19 @@ +default : +{ + name : "subprocess32" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + archive_info: + { + archive_name : $name + "-3.5.0rc1.tar.gz" + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python', 'setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} diff --git a/products/swig.pyconf b/products/swig.pyconf new file mode 100644 index 0000000..756b517 --- /dev/null +++ b/products/swig.pyconf @@ -0,0 +1,32 @@ +default : +{ + name : "swig" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : [] + rpm_dev : ["swig"] + apt : [] + apt_dev : ["swig"] + } + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + compile_and_runtime : "yes" + incremental : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "swig-" + $APPLICATION.products.swig + "_windows.tar.gz"} +} diff --git a/products/tbb.pyconf b/products/tbb.pyconf new file mode 100644 index 0000000..bae7f47 --- /dev/null +++ b/products/tbb.pyconf @@ -0,0 +1,42 @@ +default : +{ + name : "tbb" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["tbb"] + rpm_dev : ["tbb-devel"] + apt : ["libtbb"] + apt_dev : ["libtbb-dev"] + } + environ : + { + env_script : $name + ".py" + } + depend : ['llvm'] + build_depend : ["cmake"] + patches : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +version_2019_U8_win : +{ + archive_info : {archive_name : "tbb-2019_U8.tar.gz"} + patches : ['tbb-2019_U8_windows10.patch'] + depend : ['Python'] + opt_depend : ['ispc'] + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/products/tcl.pyconf b/products/tcl.pyconf new file mode 100644 index 0000000..501dcfc --- /dev/null +++ b/products/tcl.pyconf @@ -0,0 +1,43 @@ +default : +{ + name : "tcl" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["tcl"] + rpm_dev : ["tcl-devel"] + apt : ["libtcl"] + apt_dev : ["tcl-dev"] + } + environ : + { + env_script : $name + ".py" + } + patches: [] + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +default_win: +{ + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +version_8_6_9: +{ + patches : [] +} + diff --git a/products/tcltk.pyconf b/products/tcltk.pyconf new file mode 100644 index 0000000..b201478 --- /dev/null +++ b/products/tcltk.pyconf @@ -0,0 +1,40 @@ +default : +{ + name : "tcltk" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +default_win: +{ + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +# needed in order to screen with windows version - see below +version_8_6_9: +{ + patches : [] +} + +version_8_6_9_win: +{ + patches : ["tcltk-8.6.9_windows.patch"] +} diff --git a/products/tk.pyconf b/products/tk.pyconf new file mode 100644 index 0000000..8885b38 --- /dev/null +++ b/products/tk.pyconf @@ -0,0 +1,42 @@ +default : +{ + name : "tk" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["tk"] + rpm_dev : ["tk-devel"] + apt : ["libtk"] + apt_dev : ["tk-dev"] + } + environ : + { + env_script : $name + ".py" + } + patches : [] + depend : ["tcl"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + single_install_dir : "yes" + } +} + +default_win: +{ + properties : + { + incremental : "yes" + single_install_dir : "no" + } +} + +version_8_6_9: +{ + patches : [] +} diff --git a/products/typing.pyconf b/products/typing.pyconf new file mode 100644 index 0000000..649923e --- /dev/null +++ b/products/typing.pyconf @@ -0,0 +1,16 @@ +default : +{ + name : "typing" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ["Python"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + diff --git a/products/uranie_win.pyconf b/products/uranie_win.pyconf new file mode 100755 index 0000000..63a478c --- /dev/null +++ b/products/uranie_win.pyconf @@ -0,0 +1,15 @@ +default : +{ + name : "uranie_win" + build_source : "script" + compil_script : "uranie_win.sh" + get_source : "archive" + environ : + { + env_script : "uranie_win.py" + } + depend : [] + install_dir : $APPLICATION.workdir + $VARS.sep + 'INSTALL' + $VARS.sep + "uranie" + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "uranie" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "uranie" +} diff --git a/products/urllib3.pyconf b/products/urllib3.pyconf new file mode 100755 index 0000000..a1bf4b5 --- /dev/null +++ b/products/urllib3.pyconf @@ -0,0 +1,34 @@ +default : +{ + name : "urllib3" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + get_source : "archive" + system_info : + { + rpm : ["python3-urllib3"] + rpm_dev : [] + apt : ["python3-urllib3"] + apt_dev : [] + } + environ : + { + env_script : $name + ".py" + } + depend : ['Python','setuptools'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "yes" + } +} + +default_win : +{ + compil_script : 'pip_install_whl' + $VARS.scriptExtension + archive_info : {archive_name : "urllib3-" + $APPLICATION.products.urllib3 + "_windows.tar.gz"} + depend : ['Python','setuptools','idna'] +} diff --git a/products/vtk.pyconf b/products/vtk.pyconf new file mode 100644 index 0000000..32b9074 --- /dev/null +++ b/products/vtk.pyconf @@ -0,0 +1,17 @@ +default : +{ + name : "vtk" + build_source : "script" + compil_script : $name + ".sh" + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : ['tcl', 'tk', 'Python'] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' +} + diff --git a/products/zlib.pyconf b/products/zlib.pyconf new file mode 100755 index 0000000..0a6d9e6 --- /dev/null +++ b/products/zlib.pyconf @@ -0,0 +1,30 @@ +default : +{ + name : "zlib" + build_source : "script" + compil_script : $name + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : $name + ".py" + } + depend : [] + build_depend : ["cmake"] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties: + { + incremental : "yes" + } +} + +default_win : +{ + archive_info : {archive_name : "zlib-" + $APPLICATION.products.zlib + "_windows.tar.gz"} + properties: + { + incremental : "yes" + single_install_dir : "yes" + } +} diff --git a/salome-W10.pyconf b/salome-W10.pyconf new file mode 100644 index 0000000..1f80aae --- /dev/null +++ b/salome-W10.pyconf @@ -0,0 +1,34 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +project_path : $PWD + +# Where to search the archives of the products +ARCHIVEPATH : "\\\\terre\\data\\tmpsalome\\salome\\prerequis\\archives" +ARCHIVEFTP : "ftp.cea.fr/pub/salome/prerequisites" +# Where to search the pyconf of the applications +APPLICATIONPATH : $project_path + "\\applications\\" +# Where to search the pyconf of the products +PRODUCTPATH : $project_path + "\\products" +# Where to search the pyconf of the jobs of the project +JOBPATH : $project_path + r"\\jobs\\" +# Where to search for licences +LICENCEPATH : "\\\\terre\\data\\tmpsalome\\salome\\prerequis\\install\\LICENSE:/data/tmpsalome/salome/prerequis/install/LICENCE:/export/home/salome/prerequis/install/LICENCE:/volatile/salome/prerequis/install/LICENCE:/soft/commun/SALOME/LICENSE" + +git_info : +{ + default_git_server : "http://git.salome-platform.org/gitpub/" + default_git_server_dev : "https://codev-tuleap.cea.fr/plugins/git/salome/" +} + +test_bases : +[ + { + name : 'SALOME' + get_sources : 'git' + info : + { + base : 'https://codev-tuleap.cea.fr/plugins/git/spns/CEATESTBASE.git' + } + } +] diff --git a/salome.pyconf b/salome.pyconf new file mode 100644 index 0000000..c1b054e --- /dev/null +++ b/salome.pyconf @@ -0,0 +1,34 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +project_path : $PWD + +# Where to search the archives of the products +ARCHIVEPATH : "/data/tmpsalome/salome/prerequis/archives" +ARCHIVEFTP : "ftp.cea.fr/pub/salome/prerequisites" +# Where to search the pyconf of the applications +APPLICATIONPATH : $project_path + "/applications/" +# Where to search the pyconf of the products +PRODUCTPATH : $project_path + "/products/" +# Where to search the pyconf of the jobs of the project +JOBPATH : $project_path + "/jobs/" +# Where to search for licences +LICENCEPATH : "\\\\terre\\data\\tmpsalome\\salome\\prerequis\\install\\LICENSE:/data/tmpsalome/salome/prerequis/install/LICENCE:/export/home/salome/prerequis/install/LICENCE:/volatile/salome/prerequis/install/LICENCE:/soft/commun/SALOME/LICENSE" + +git_info : +{ + default_git_server : "http://git.salome-platform.org/gitpub/" + default_git_server_dev : "https://codev-tuleap.cea.fr/plugins/git/salome/" +} + +test_bases : +[ + { + name : 'SALOME' + get_sources : 'git' + info : + { + base : 'https://codev-tuleap.cea.fr/plugins/git/spns/CEATESTBASE.git' + } + } +] -- 2.39.2