From 836c34a4e2dd99f1f302a2c3ae93a51cd182368f Mon Sep 17 00:00:00 2001
From: prascle
Date: Mon, 13 Mar 2006 12:18:26 +0000
Subject: [PATCH] PR: merge from branch BR_auto_V310 tag
mergefrom_OCC_development_for_3_2_0a2_10mar06
---
AUTHORS | 0
COPYING | 340 ++++
ChangeLog | 0
Makefile.in => DEPRECATED/Makefile.in | 40 +-
.../configure.in.base | 0
make_config.in => DEPRECATED/make_config.in | 0
Makefile.am | 29 +
NEWS | 0
bin/Makefile.am | 60 +
bin/appliskel/killCurrentPort | 3 +-
bin/appliskel/runRemote.sh | 11 +-
bin/appliskel/runSession | 13 +-
bin/appliskel/runTests | 13 +-
bin/appliskel/searchFreePort.sh | 12 +-
bin/createAppli.sh | 4 +-
bin/killSalomeWithPort.py | 16 +-
bin/launchConfigureParser.py | 11 +
bin/{salome => }/runIDLparser.in | 8 +-
bin/runNS.sh | 2 +-
bin/runSalome.ksh | 77 +
bin/runSalome.py | 101 +-
build_configure | 270 +--
clean_configure | 23 +
configure.ac | 524 ++++++
doc/Makefile.am | 32 +
doc/Makefile.in | 40 -
doc/SALOME_Application.txt | 41 +-
doc/index.txt | 86 +
doc/kernel_resources.txt | 491 ++++++
doc/rst.css | 288 ++++
doc/salome/DevelopersGuide/Makefile.am | 33 +
doc/salome/DevelopersGuide/Makefile.in | 62 -
.../KernelResources/kernel_resources-1.html | 287 ----
.../KernelResources/kernel_resources-2.html | 167 --
.../KernelResources/kernel_resources-3.html | 87 -
.../KernelResources/kernel_resources.html | 56 -
.../KernelResources/kernel_resources.lyx | 976 -----------
doc/salome/Makefile.am | 20 +
doc/salome/Makefile.in | 44 -
doc/salome/gui/Makefile.am | 18 +
doc/salome/gui/Makefile.in | 33 -
doc/salome/kernel_resources.pdf | Bin 127655 -> 0 bytes
doc/salome/kernel_resources.ps | 1468 -----------------
doc/salome/tui/Makefile.am | 27 +
doc/salome/tui/Makefile.in | 45 -
doc/txt2html.sh | 36 +
doc/userguide.txt | 125 ++
idl/Makefile.am | 129 ++
idl/Makefile.in | 83 -
idl/SALOMEDS.idl | 28 +-
idl/SALOMEDS_Attributes.idl | 125 ++
resources/{ => DEPRECATED}/Plugin.in | 0
resources/Makefile.am | 26 +
salome_adm/Makefile.am | 1 +
salome_adm/Makefile.in | 47 -
salome_adm/unix/{ => DEPRECATED}/Doxyfile | 0
.../unix/{ => DEPRECATED}/F77config.h.in | 0
salome_adm/unix/{ => DEPRECATED}/config.h.in | 0
salome_adm/unix/{ => DEPRECATED}/depend.in | 0
salome_adm/unix/DEPRECATED/envScript.in | 26 +
.../unix/{ => DEPRECATED}/make_commence.in | 46 +-
.../unix/{ => DEPRECATED}/make_conclude.in | 10 +-
.../unix/{ => DEPRECATED}/make_module.in | 0
.../unix/{ => DEPRECATED}/make_omniorb.in | 0
salome_adm/unix/{ => DEPRECATED}/sstream.in | 0
salome_adm/unix/Makefile.am | 21 +
salome_adm/unix/SALOMEconfig.h.in | 22 +
.../{ => DEPRECATED}/ac_cc_warnings.m4 | 0
.../{ => DEPRECATED}/ac_cxx_bool.m4 | 0
.../{ => DEPRECATED}/ac_cxx_mutable.m4 | 0
.../ac_cxx_partial_specialization.m4 | 0
.../{ => DEPRECATED}/ac_cxx_typename.m4 | 0
.../{ => DEPRECATED}/check_Salome.m4 | 6 +-
.../{ => DEPRECATED}/check_java.m4 | 0
.../{ => DEPRECATED}/check_mico.m4 | 0
.../{ => DEPRECATED}/check_pthreads.m4 | 8 +-
.../{ => DEPRECATED}/config.guess | 0
.../config_files/{ => DEPRECATED}/config.sub | 0
.../config_files/{ => DEPRECATED}/install-sh | 2 +-
.../config_files/{ => DEPRECATED}/libtool.m4 | 0
.../config_files/{ => DEPRECATED}/ltconfig | 0
.../config_files/{ => DEPRECATED}/ltmain.sh | 0
.../config_files/{ => DEPRECATED}/missing | 0
.../{ => DEPRECATED}/mkinstalldirs | 0
salome_adm/unix/config_files/Makefile.am | 65 +
salome_adm/unix/config_files/ac_cxx_option.m4 | 9 +-
salome_adm/unix/config_files/acx_pthread.m4 | 207 +++
salome_adm/unix/config_files/check_boost.m4 | 138 +-
salome_adm/unix/config_files/check_cas.m4 | 47 +-
salome_adm/unix/config_files/check_cppunit.m4 | 16 +-
salome_adm/unix/config_files/check_hdf5.m4 | 2 +-
salome_adm/unix/config_files/check_htmlgen.m4 | 13 +
salome_adm/unix/config_files/check_lam.m4 | 5 +-
salome_adm/unix/config_files/check_local.m4 | 69 +
salome_adm/unix/config_files/check_lsf.m4 | 2 +-
salome_adm/unix/config_files/check_mpi.m4 | 11 +-
salome_adm/unix/config_files/check_mpich.m4 | 5 +-
salome_adm/unix/config_files/check_msg2qm.m4 | 57 -
salome_adm/unix/config_files/check_omniorb.m4 | 6 +
salome_adm/unix/config_files/check_opengl.m4 | 12 +-
salome_adm/unix/config_files/check_openpbs.m4 | 2 +
salome_adm/unix/config_files/check_pyqt.m4 | 307 ----
salome_adm/unix/config_files/check_qt.m4 | 1 +
salome_adm/unix/config_files/check_qwt.m4 | 151 --
salome_adm/unix/config_files/check_sip.m4 | 168 --
salome_adm/unix/config_files/check_swig.m4 | 2 +-
salome_adm/unix/config_files/check_vtk.m4 | 148 --
.../unix/config_files/enable_pthreads.m4 | 21 +-
salome_adm/unix/config_files/python.m4 | 32 +-
salome_adm/unix/envScript.in | 22 -
salome_adm/unix/make_common_starter.am | 30 +
src/Basics/BasicsGenericDestructor.cxx | 4 +-
src/Basics/{Makefile.in => Makefile.am} | 34 +-
src/Basics/Test/{Makefile.in => Makefile.am} | 46 +-
src/Batch/Batch_BatchManager_Local.cxx | 774 +++++++++
src/Batch/Batch_BatchManager_Local.hxx | 146 ++
src/Batch/Batch_BatchManager_Local_RSH.cxx | 126 ++
src/Batch/Batch_BatchManager_Local_RSH.hxx | 56 +
src/Batch/Batch_BatchManager_Local_SH.cxx | 93 ++
src/Batch/Batch_BatchManager_Local_SH.hxx | 56 +
src/Batch/Batch_BatchManager_Local_SSH.cxx | 126 ++
src/Batch/Batch_BatchManager_Local_SSH.hxx | 56 +
src/Batch/Batch_FactBatchManager_Local.cxx | 39 +
src/Batch/Batch_FactBatchManager_Local.hxx | 39 +
.../Batch_FactBatchManager_Local_RSH.cxx | 39 +
.../Batch_FactBatchManager_Local_RSH.hxx | 39 +
src/Batch/Batch_FactBatchManager_Local_SH.cxx | 39 +
src/Batch/Batch_FactBatchManager_Local_SH.hxx | 39 +
.../Batch_FactBatchManager_Local_SSH.cxx | 39 +
.../Batch_FactBatchManager_Local_SSH.hxx | 39 +
src/Batch/Batch_IOMutex.cxx | 17 +
src/Batch/Batch_IOMutex.hxx | 26 +
src/Batch/Batch_Job.cxx | 4 +-
src/Batch/Batch_JobInfo.cxx | 1 -
src/Batch/Batch_JobInfo.hxx | 16 +-
src/Batch/Batch_JobInfo_Local.cxx | 33 +
src/Batch/Batch_JobInfo_Local.hxx | 39 +
src/Batch/Batch_Job_Local.cxx | 81 +
src/Batch/Batch_Job_Local.hxx | 50 +
src/Batch/Batch_Parametre.cxx | 84 +-
src/Batch/Batch_Parametre.hxx | 95 +-
src/Batch/{Makefile.in => Makefile.am} | 132 +-
src/Batch_SWIG/Makefile.am | 86 +
src/CASCatch/CASCatch.hxx | 55 +
src/CASCatch/Makefile.am | 9 +
src/CASCatch/Makefile.in | 31 -
src/Communication/Makefile.am | 78 +
src/Communication/Makefile.in | 36 -
src/Communication_SWIG/Makefile.am | 100 ++
src/Communication_SWIG/Makefile.in | 24 -
src/Container/Container_i.cxx | 47 +-
src/Container/Container_init_python.cxx | 6 +-
src/Container/Makefile.am | 142 ++
src/Container/Makefile.in | 72 -
src/Container/SALOME_Container.cxx | 16 +-
.../SALOME_ContainerManagerServer.cxx | 3 +-
src/Container/SALOME_Container_i.hxx | 2 +-
src/DataTypeCatalog/Makefile.am | 113 ++
src/DataTypeCatalog/Makefile.in | 59 -
.../SALOME_DataTypeCatalog_Server.cxx | 2 -
src/GenericObj/Makefile.am | 27 +
src/GenericObj/Makefile.in | 46 -
src/HDFPersist/HDFdataset.cc | 2 +-
src/HDFPersist/{Makefile.in => Makefile.am} | 34 +-
.../Makefile.in => KERNEL_PY/Makefile.am} | 50 +-
src/KERNEL_PY/Makefile.in | 38 -
src/KERNEL_PY/iparameters.py | 199 +++
src/LifeCycleCORBA/Launchers.cxx | 7 +-
src/LifeCycleCORBA/Makefile.am | 119 ++
src/LifeCycleCORBA/Makefile.in | 61 -
src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx | 7 +-
src/LifeCycleCORBA/Test/Makefile.am | 103 ++
src/LifeCycleCORBA/Test/Makefile.in | 71 -
src/LifeCycleCORBA/Test_LifeCycleCORBA.cxx | 1 -
src/LifeCycleCORBA_SWIG/Makefile.am | 94 ++
src/LifeCycleCORBA_SWIG/Makefile.in | 52 -
src/LifeCycleCORBA_SWIG/TestLifeCycleCORBA.py | 67 +-
src/Logger/Makefile.am | 51 +
src/Logger/Makefile.in | 40 -
src/Logger/SALOME_Logger_Server.cxx | 104 --
src/Logger/SALOME_Logger_Server_main.cxx | 121 ++
src/Logger/Test/{Makefile.in => Makefile.am} | 44 +-
src/MPIContainer/MPIContainer_i.cxx | 2 +
src/MPIContainer/Makefile.am | 109 ++
src/MPIContainer/Makefile.in | 66 -
src/MPIContainer/SALOME_MPIContainer.cxx | 1 -
src/Makefile.am | 116 ++
src/Makefile.in | 86 -
src/ModuleCatalog/Makefile.am | 116 ++
src/ModuleCatalog/Makefile.in | 72 -
.../SALOME_ModuleCatalog_Server.cxx | 1 -
.../{Makefile.in => Makefile.am} | 18 +-
src/ModuleGenerator/testIDLparser.in | 2 +-
src/ModuleGenerator/tests/test1.sh | 2 +-
src/ModuleGenerator/tests/test1b.sh | 2 +-
src/ModuleGenerator/tests/test2.sh | 2 +-
src/ModuleGenerator/tests/test3.sh | 2 +-
src/ModuleGenerator/tests/test4.sh | 2 +-
src/ModuleGenerator/tests/test5.sh | 2 +-
src/NOTIFICATION_SWIG/Makefile.am | 62 +
src/NOTIFICATION_SWIG/Makefile.in | 51 -
.../{Makefile.in => Makefile.am} | 42 +-
src/NamingService/SALOME_NamingService.cxx | 26 +-
src/NamingService/Test/Makefile.am | 95 ++
src/NamingService/Test/Makefile.in | 70 -
src/Notification/Makefile.am | 72 +
src/Notification/Makefile.in | 53 -
src/Registry/Makefile.am | 73 +
src/Registry/Makefile.in | 60 -
src/Registry/SALOME_Registry_Server.cxx | 1 -
src/ResourcesManager/Makefile.am | 84 +
src/ResourcesManager/Makefile.in | 66 -
src/RessourcesCatalog/Makefile.am | 116 ++
src/RessourcesCatalog/Makefile.in | 62 -
.../SALOME_RessourcesCatalog_Server.cxx | 2 -
src/SALOMEDS/Makefile.am | 335 ++++
src/SALOMEDS/Makefile.in | 141 --
src/SALOMEDS/SALOMEDS.cxx | 62 +-
src/SALOMEDS/SALOMEDS_AttributeParameter.cxx | 481 ++++++
src/SALOMEDS/SALOMEDS_AttributeParameter.hxx | 77 +
.../SALOMEDS_AttributeParameter_i.cxx | 347 ++++
.../SALOMEDS_AttributeParameter_i.hxx | 89 +
src/SALOMEDS/SALOMEDS_Attributes.hxx | 5 +-
src/SALOMEDS/SALOMEDS_ClientAttributes.hxx | 8 +-
src/SALOMEDS/SALOMEDS_Driver_i.cxx | 107 +-
src/SALOMEDS/SALOMEDS_Driver_i.hxx | 34 +-
src/SALOMEDS/SALOMEDS_GenericAttribute_i.cxx | 2 +-
src/SALOMEDS/SALOMEDS_GenericAttribute_i.hxx | 2 +-
src/SALOMEDS/SALOMEDS_IParameters.cxx | 279 ++++
src/SALOMEDS/SALOMEDS_IParameters.hxx | 149 ++
src/SALOMEDS/SALOMEDS_SObject_i.cxx | 4 +-
src/SALOMEDS/SALOMEDS_SObject_i.hxx | 4 +-
src/SALOMEDS/SALOMEDS_Study.cxx | 37 +-
src/SALOMEDS/SALOMEDS_Study.hxx | 6 +-
src/SALOMEDS/SALOMEDS_StudyManager_i.cxx | 2 +-
src/SALOMEDS/SALOMEDS_StudyManager_i.hxx | 2 +-
src/SALOMEDS/SALOMEDS_Study_i.cxx | 52 +-
src/SALOMEDS/SALOMEDS_Study_i.hxx | 11 +-
src/SALOMEDS/SALOMEDS_TMPFile_i.cxx | 96 ++
src/SALOMEDS/SALOMEDS_TMPFile_i.hxx | 70 +
src/SALOMEDS/Test/Makefile.am | 110 ++
src/SALOMEDS/Test/SALOMEDSTest.cxx | 190 +++
src/SALOMEDS/Test/SALOMEDSTest.hxx | 48 +
src/SALOMEDS/Test/TestSALOMEDS.cxx | 35 +
src/SALOMEDS/Test/TestSALOMEDS.py | 29 +
.../{Makefile.in => Makefile.am} | 51 +-
src/SALOMEDSClient/SALOMEDSClient.hxx | 1 +
.../SALOMEDSClient_AttributeParameter.hxx | 71 +
.../SALOMEDSClient_ClientFactory.cxx | 112 ++
.../SALOMEDSClient_ClientFactory.hxx | 71 +
src/SALOMEDSClient/SALOMEDSClient_Study.hxx | 8 +-
src/SALOMEDSImpl/Makefile.am | 201 +++
src/SALOMEDSImpl/Makefile.in | 133 --
.../SALOMEDSImpl_AttributeComment.cxx | 3 +-
.../SALOMEDSImpl_AttributeDrawable.cxx | 3 +-
.../SALOMEDSImpl_AttributeExpandable.cxx | 3 +-
.../SALOMEDSImpl_AttributeIOR.cxx | 7 +-
.../SALOMEDSImpl_AttributeInteger.cxx | 3 +-
.../SALOMEDSImpl_AttributeParameter.cxx | 765 +++++++++
.../SALOMEDSImpl_AttributeParameter.hxx | 119 ++
src/SALOMEDSImpl/SALOMEDSImpl_Attributes.hxx | 5 +-
src/SALOMEDSImpl/SALOMEDSImpl_Driver.hxx | 33 +-
src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx | 361 ++++
src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx | 153 ++
src/SALOMEDSImpl/SALOMEDSImpl_Study.cxx | 76 +-
src/SALOMEDSImpl/SALOMEDSImpl_Study.hxx | 13 +-
.../SALOMEDSImpl_StudyManager.cxx | 45 +-
src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx | 40 +
src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx | 47 +
src/SALOMEDSImpl/Test/Makefile.am | 106 ++
src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx | 129 ++
src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx | 39 +
src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx | 31 +
src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py | 29 +
src/SALOMEDSImpl/testDS.cxx | 102 +-
src/SALOMELocalTrace/BaseTraceCollector.cxx | 6 +-
src/SALOMELocalTrace/LocalTraceBufferPool.cxx | 8 +-
.../{Makefile.in => Makefile.am} | 46 +-
src/SALOMELocalTrace/Test/Makefile.am | 78 +
src/SALOMELocalTrace/Test/Makefile.in | 62 -
src/SALOMETraceCollector/Makefile.am | 35 +
src/SALOMETraceCollector/Makefile.in | 52 -
src/SALOMETraceCollector/Test/Makefile.am | 90 +
src/SALOMETraceCollector/Test/Makefile.in | 64 -
src/TOOLSDS/Makefile.am | 55 +
src/TOOLSDS/Makefile.in | 36 -
src/TOOLSDS/SALOMEDS_Tool.cxx | 209 +--
src/TOOLSDS/SALOMEDS_Tool.hxx | 4 +
src/TestContainer/Makefile.am | 104 ++
src/TestContainer/Makefile.in | 52 -
src/TestContainer/TestComponentPy.py | 2 +-
src/TestContainer/TestContainer.cxx | 4 +-
src/TestContainer/TestLogger.py | 5 +
src/TestMPIContainer/Makefile.am | 106 ++
src/TestMPIContainer/Makefile.in | 39 -
src/TestMPIContainer/TestMPIContainer.cxx | 1 -
src/UnitTests/Makefile.am | 83 +
src/UnitTests/Makefile.in | 69 -
src/UnitTests/UnitTests.cxx | 4 +
src/Utils/{Makefile.in => Makefile.am} | 42 +-
src/Utils/Test/Makefile.am | 88 +
src/Utils/Test/Makefile.in | 64 -
src/Utils/Utils_SignalsHandler.cxx | 123 --
src/Utils/Utils_SignalsHandler.h | 63 -
304 files changed, 13920 insertions(+), 7557 deletions(-)
create mode 100644 AUTHORS
create mode 100644 COPYING
create mode 100644 ChangeLog
rename Makefile.in => DEPRECATED/Makefile.in (79%)
rename configure.in.base => DEPRECATED/configure.in.base (100%)
rename make_config.in => DEPRECATED/make_config.in (100%)
create mode 100644 Makefile.am
create mode 100644 NEWS
create mode 100644 bin/Makefile.am
rename bin/{salome => }/runIDLparser.in (84%)
create mode 100644 bin/runSalome.ksh
create mode 100755 clean_configure
create mode 100644 configure.ac
create mode 100644 doc/Makefile.am
delete mode 100644 doc/Makefile.in
create mode 100644 doc/index.txt
create mode 100644 doc/kernel_resources.txt
create mode 100644 doc/rst.css
create mode 100644 doc/salome/DevelopersGuide/Makefile.am
delete mode 100644 doc/salome/DevelopersGuide/Makefile.in
delete mode 100644 doc/salome/KernelResources/kernel_resources-1.html
delete mode 100644 doc/salome/KernelResources/kernel_resources-2.html
delete mode 100644 doc/salome/KernelResources/kernel_resources-3.html
delete mode 100644 doc/salome/KernelResources/kernel_resources.html
delete mode 100644 doc/salome/KernelResources/kernel_resources.lyx
create mode 100644 doc/salome/Makefile.am
delete mode 100644 doc/salome/Makefile.in
create mode 100644 doc/salome/gui/Makefile.am
delete mode 100644 doc/salome/gui/Makefile.in
delete mode 100644 doc/salome/kernel_resources.pdf
delete mode 100644 doc/salome/kernel_resources.ps
create mode 100644 doc/salome/tui/Makefile.am
delete mode 100644 doc/salome/tui/Makefile.in
create mode 100755 doc/txt2html.sh
create mode 100644 doc/userguide.txt
create mode 100644 idl/Makefile.am
delete mode 100644 idl/Makefile.in
rename resources/{ => DEPRECATED}/Plugin.in (100%)
create mode 100644 resources/Makefile.am
create mode 100644 salome_adm/Makefile.am
delete mode 100644 salome_adm/Makefile.in
rename salome_adm/unix/{ => DEPRECATED}/Doxyfile (100%)
rename salome_adm/unix/{ => DEPRECATED}/F77config.h.in (100%)
rename salome_adm/unix/{ => DEPRECATED}/config.h.in (100%)
rename salome_adm/unix/{ => DEPRECATED}/depend.in (100%)
create mode 100644 salome_adm/unix/DEPRECATED/envScript.in
rename salome_adm/unix/{ => DEPRECATED}/make_commence.in (78%)
rename salome_adm/unix/{ => DEPRECATED}/make_conclude.in (98%)
rename salome_adm/unix/{ => DEPRECATED}/make_module.in (100%)
rename salome_adm/unix/{ => DEPRECATED}/make_omniorb.in (100%)
rename salome_adm/unix/{ => DEPRECATED}/sstream.in (100%)
create mode 100644 salome_adm/unix/Makefile.am
rename salome_adm/unix/config_files/{ => DEPRECATED}/ac_cc_warnings.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/ac_cxx_bool.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/ac_cxx_mutable.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/ac_cxx_partial_specialization.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/ac_cxx_typename.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/check_Salome.m4 (94%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/check_java.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/check_mico.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/check_pthreads.m4 (92%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/config.guess (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/config.sub (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/install-sh (96%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/libtool.m4 (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/ltconfig (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/ltmain.sh (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/missing (100%)
rename salome_adm/unix/config_files/{ => DEPRECATED}/mkinstalldirs (100%)
create mode 100644 salome_adm/unix/config_files/Makefile.am
create mode 100644 salome_adm/unix/config_files/acx_pthread.m4
create mode 100755 salome_adm/unix/config_files/check_local.m4
delete mode 100755 salome_adm/unix/config_files/check_msg2qm.m4
delete mode 100644 salome_adm/unix/config_files/check_pyqt.m4
delete mode 100644 salome_adm/unix/config_files/check_qwt.m4
delete mode 100644 salome_adm/unix/config_files/check_sip.m4
delete mode 100644 salome_adm/unix/config_files/check_vtk.m4
delete mode 100644 salome_adm/unix/envScript.in
create mode 100644 salome_adm/unix/make_common_starter.am
rename src/Basics/{Makefile.in => Makefile.am} (71%)
rename src/Basics/Test/{Makefile.in => Makefile.am} (68%)
create mode 100644 src/Batch/Batch_BatchManager_Local.cxx
create mode 100644 src/Batch/Batch_BatchManager_Local.hxx
create mode 100644 src/Batch/Batch_BatchManager_Local_RSH.cxx
create mode 100644 src/Batch/Batch_BatchManager_Local_RSH.hxx
create mode 100644 src/Batch/Batch_BatchManager_Local_SH.cxx
create mode 100644 src/Batch/Batch_BatchManager_Local_SH.hxx
create mode 100644 src/Batch/Batch_BatchManager_Local_SSH.cxx
create mode 100644 src/Batch/Batch_BatchManager_Local_SSH.hxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local.cxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local.hxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local_RSH.cxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local_RSH.hxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local_SH.cxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local_SH.hxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local_SSH.cxx
create mode 100644 src/Batch/Batch_FactBatchManager_Local_SSH.hxx
create mode 100644 src/Batch/Batch_IOMutex.cxx
create mode 100644 src/Batch/Batch_IOMutex.hxx
create mode 100644 src/Batch/Batch_JobInfo_Local.cxx
create mode 100644 src/Batch/Batch_JobInfo_Local.hxx
create mode 100644 src/Batch/Batch_Job_Local.cxx
create mode 100644 src/Batch/Batch_Job_Local.hxx
rename src/Batch/{Makefile.in => Makefile.am} (55%)
create mode 100644 src/Batch_SWIG/Makefile.am
create mode 100644 src/CASCatch/CASCatch.hxx
create mode 100644 src/CASCatch/Makefile.am
delete mode 100644 src/CASCatch/Makefile.in
create mode 100644 src/Communication/Makefile.am
delete mode 100644 src/Communication/Makefile.in
create mode 100644 src/Communication_SWIG/Makefile.am
delete mode 100644 src/Communication_SWIG/Makefile.in
create mode 100644 src/Container/Makefile.am
delete mode 100644 src/Container/Makefile.in
create mode 100644 src/DataTypeCatalog/Makefile.am
delete mode 100644 src/DataTypeCatalog/Makefile.in
create mode 100644 src/GenericObj/Makefile.am
delete mode 100644 src/GenericObj/Makefile.in
rename src/HDFPersist/{Makefile.in => Makefile.am} (76%)
rename src/{Batch_SWIG/Makefile.in => KERNEL_PY/Makefile.am} (63%)
mode change 100644 => 100755
delete mode 100755 src/KERNEL_PY/Makefile.in
create mode 100755 src/KERNEL_PY/iparameters.py
create mode 100644 src/LifeCycleCORBA/Makefile.am
delete mode 100644 src/LifeCycleCORBA/Makefile.in
create mode 100644 src/LifeCycleCORBA/Test/Makefile.am
delete mode 100644 src/LifeCycleCORBA/Test/Makefile.in
create mode 100644 src/LifeCycleCORBA_SWIG/Makefile.am
delete mode 100644 src/LifeCycleCORBA_SWIG/Makefile.in
create mode 100644 src/Logger/Makefile.am
delete mode 100644 src/Logger/Makefile.in
create mode 100644 src/Logger/SALOME_Logger_Server_main.cxx
rename src/Logger/Test/{Makefile.in => Makefile.am} (67%)
create mode 100644 src/MPIContainer/Makefile.am
delete mode 100644 src/MPIContainer/Makefile.in
create mode 100644 src/Makefile.am
delete mode 100644 src/Makefile.in
create mode 100644 src/ModuleCatalog/Makefile.am
delete mode 100644 src/ModuleCatalog/Makefile.in
rename src/ModuleGenerator/{Makefile.in => Makefile.am} (81%)
create mode 100644 src/NOTIFICATION_SWIG/Makefile.am
delete mode 100644 src/NOTIFICATION_SWIG/Makefile.in
rename src/NamingService/{Makefile.in => Makefile.am} (65%)
create mode 100644 src/NamingService/Test/Makefile.am
delete mode 100644 src/NamingService/Test/Makefile.in
create mode 100644 src/Notification/Makefile.am
delete mode 100644 src/Notification/Makefile.in
create mode 100644 src/Registry/Makefile.am
delete mode 100644 src/Registry/Makefile.in
create mode 100755 src/ResourcesManager/Makefile.am
delete mode 100755 src/ResourcesManager/Makefile.in
create mode 100644 src/RessourcesCatalog/Makefile.am
delete mode 100644 src/RessourcesCatalog/Makefile.in
create mode 100644 src/SALOMEDS/Makefile.am
delete mode 100644 src/SALOMEDS/Makefile.in
create mode 100644 src/SALOMEDS/SALOMEDS_AttributeParameter.cxx
create mode 100644 src/SALOMEDS/SALOMEDS_AttributeParameter.hxx
create mode 100644 src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx
create mode 100644 src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx
create mode 100644 src/SALOMEDS/SALOMEDS_IParameters.cxx
create mode 100644 src/SALOMEDS/SALOMEDS_IParameters.hxx
create mode 100644 src/SALOMEDS/SALOMEDS_TMPFile_i.cxx
create mode 100644 src/SALOMEDS/SALOMEDS_TMPFile_i.hxx
create mode 100644 src/SALOMEDS/Test/Makefile.am
create mode 100644 src/SALOMEDS/Test/SALOMEDSTest.cxx
create mode 100644 src/SALOMEDS/Test/SALOMEDSTest.hxx
create mode 100644 src/SALOMEDS/Test/TestSALOMEDS.cxx
create mode 100644 src/SALOMEDS/Test/TestSALOMEDS.py
rename src/SALOMEDSClient/{Makefile.in => Makefile.am} (62%)
create mode 100644 src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx
create mode 100644 src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx
create mode 100644 src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx
create mode 100644 src/SALOMEDSImpl/Makefile.am
delete mode 100644 src/SALOMEDSImpl/Makefile.in
create mode 100644 src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx
create mode 100644 src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx
create mode 100644 src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx
create mode 100644 src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx
create mode 100644 src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx
create mode 100644 src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx
create mode 100644 src/SALOMEDSImpl/Test/Makefile.am
create mode 100644 src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx
create mode 100644 src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx
create mode 100644 src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx
create mode 100644 src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py
rename src/SALOMELocalTrace/{Makefile.in => Makefile.am} (59%)
create mode 100644 src/SALOMELocalTrace/Test/Makefile.am
delete mode 100644 src/SALOMELocalTrace/Test/Makefile.in
create mode 100644 src/SALOMETraceCollector/Makefile.am
delete mode 100644 src/SALOMETraceCollector/Makefile.in
create mode 100644 src/SALOMETraceCollector/Test/Makefile.am
delete mode 100644 src/SALOMETraceCollector/Test/Makefile.in
create mode 100644 src/TOOLSDS/Makefile.am
delete mode 100644 src/TOOLSDS/Makefile.in
create mode 100644 src/TestContainer/Makefile.am
delete mode 100644 src/TestContainer/Makefile.in
create mode 100644 src/TestContainer/TestLogger.py
create mode 100644 src/TestMPIContainer/Makefile.am
delete mode 100644 src/TestMPIContainer/Makefile.in
create mode 100644 src/UnitTests/Makefile.am
delete mode 100644 src/UnitTests/Makefile.in
rename src/Utils/{Makefile.in => Makefile.am} (67%)
create mode 100644 src/Utils/Test/Makefile.am
delete mode 100644 src/Utils/Test/Makefile.in
delete mode 100644 src/Utils/Utils_SignalsHandler.cxx
delete mode 100644 src/Utils/Utils_SignalsHandler.h
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 000000000..e69de29bb
diff --git a/COPYING b/COPYING
new file mode 100644
index 000000000..d60c31a97
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 000000000..e69de29bb
diff --git a/Makefile.in b/DEPRECATED/Makefile.in
similarity index 79%
rename from Makefile.in
rename to DEPRECATED/Makefile.in
index 42dedf940..39f1d1672 100644
--- a/Makefile.in
+++ b/DEPRECATED/Makefile.in
@@ -41,25 +41,11 @@ salome.launch \
envSalome.py \
salomeConsole.py \
showNS.py \
-addToKillList.py \
-NSparam.py
+addToKillList.py
# copy header files in common directory
-OWN_CONFIG_H=@OWN_CONFIG_H@
-
-ifeq ($(OWN_CONFIG_H),yes)
- ifeq ($(HAVE_SSTREAM),yes)
- include_list=include/salome/SALOMEconfig.h include/salome/config.h
- else
- include_list=include/salome/SALOMEconfig.h include/salome/config.h include/salome/sstream
- endif
-else
- ifeq ($(HAVE_SSTREAM),yes)
- include_list=include/salome/SALOMEconfig.h
- else
- include_list=include/salome/SALOMEconfig.h include/salome/sstream
- endif
-endif
+include_list=\
+ include/salome/SALOMEconfig.h
inc: idl $(include_list)
@@ -76,22 +62,20 @@ salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
cp -p $< $@; \
fi; \
-include/salome/config.h: salome_adm/unix/config.h
- -$(RM) $@
- $(LN_S) ../../$< $@
-
-include/salome/sstream: salome_adm/unix/sstream
- -$(RM) $@
- $(LN_S) ../../$< $@
-
depend: depend_idl
depend_idl:
(cd idl ; $(MAKE) $@) || exit 1
# doc is already build : if you want to had documents, go manually to doc and run 'make doc'
-#doc:
-# (cd doc && $(MAKE) $@) || exit 1
+
+
+DOCFILES=\
+ README.FIRST.html
+
+rstdoc: $(DOCFILES)
+ (cd doc && $(MAKE) $@) || exit 1
+
# Install make_commence make_conclude ... for other modules
install-make:
@@ -137,7 +121,7 @@ distclean: distclean-other
distclean-other:
-$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old
-$(RM) salome_adm/unix/make_*
- -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h salome_adm/unix/config.h
+ -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h
-$(RM) config.cache config.log config.status
@MODULE@
diff --git a/configure.in.base b/DEPRECATED/configure.in.base
similarity index 100%
rename from configure.in.base
rename to DEPRECATED/configure.in.base
diff --git a/make_config.in b/DEPRECATED/make_config.in
similarity index 100%
rename from make_config.in
rename to DEPRECATED/make_config.in
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 000000000..e8f17aa00
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,29 @@
+# -* Makefile *-
+#
+# Author : Guillaume BOULANT (CSSI)
+# Date : 09/11/2005
+# $Header$
+#
+
+if CORBA_GEN
+ IDLDIR = idl
+endif
+
+SUBDIRS = $(IDLDIR) src doc salome_adm bin resources
+
+DIST_SUBDIRS= idl src doc salome_adm bin resources
+
+DISTCLEANFILES = a.out
+
+EXTRA_DIST = \
+ build_configure \
+ clean_configure \
+ LICENCE \
+ README.FIRST.txt \
+ DEPRECATED
+
+dist-hook:
+ rm -rf `find $(distdir) -name CVS`
+
+userdoc:
+ (cd doc && $(MAKE) $(AM_MAKEFLAGS) userdoc)
\ No newline at end of file
diff --git a/NEWS b/NEWS
new file mode 100644
index 000000000..e69de29bb
diff --git a/bin/Makefile.am b/bin/Makefile.am
new file mode 100644
index 000000000..eecb208a3
--- /dev/null
+++ b/bin/Makefile.am
@@ -0,0 +1,60 @@
+# -* Makefile *-
+#
+# Author : Guillaume Boulant (CSSI)
+# Module : KERNEL
+# $Header$
+#
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# These files are data, module or lib files
+dist_salomescript_DATA= \
+ VERSION \
+ orbmodule.py \
+ salome.launch \
+ salomeConsole.py
+
+# These files are executable scripts
+dist_salomescript_SCRIPTS=\
+ envSalome.py \
+ runIDLparser \
+ runSalome.py \
+ killSalome.py \
+ killSalomeWithPort.py \
+ runSalome \
+ runSalome.csh \
+ runNS.sh \
+ createAppli.sh \
+ launchConfigureParser.py \
+ showNS.py \
+ addToKillList.py \
+ NSparam.py
+
+EXTRA_DIST = appliskel
+
+dist-hook:
+ rm -rf `find $(distdir)/appliskel -name CVS`
+
+DISTCLEANFILES = $(top_builddir)/bin/@PACKAGE@/Makefile.am
+
+clean-local:
+ rm -rf $(top_builddir)/bin/@PACKAGE@/appliskel
+ cd $(top_builddir)/bin/@PACKAGE@; \
+ rm -f $(dist_salomescript_DATA) $(dist_salomescript_SCRIPTS)
+
+# This is an ugly target to avoid exploring the appliskel subdirectory.
+install-exec-local:
+ $(INSTALL) -d $(salomescriptdir)
+ cp -r $(srcdir)/appliskel $(salomescriptdir)
+ find $(salomescriptdir) -name CVS | xargs rm -rf
+
+uninstall-local:
+ find $(salomescriptdir)/appliskel -exec chmod +w {} \;
+ rm -rf $(salomescriptdir)/appliskel
diff --git a/bin/appliskel/killCurrentPort b/bin/appliskel/killCurrentPort
index bca506068..5d0a547cc 100755
--- a/bin/appliskel/killCurrentPort
+++ b/bin/appliskel/killCurrentPort
@@ -14,7 +14,8 @@ myhost=`hostname`
fileOmniConfig=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
if [ -f $fileOmniConfig ]; then
- export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+ OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+ export OMNIORB_CONFIG
fi
currentPort=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py port`
diff --git a/bin/appliskel/runRemote.sh b/bin/appliskel/runRemote.sh
index 594616a07..293ecff6d 100755
--- a/bin/appliskel/runRemote.sh
+++ b/bin/appliskel/runRemote.sh
@@ -31,9 +31,12 @@
# --- set the OMNIORB_CONFIG file and environment relative to this run of SALOME
-export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_$1_$2.cfg
-export NSHOST=$1
-export NSPORT=$2
+OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_$1_$2.cfg
+export OMNIORB_CONFIG
+NSHOST=$1
+export NSHOST
+NSPORT=$2
+export NSPORT
initref="NameService=corbaname::"$1":$2"
echo "ORBInitRef $initref" > $OMNIORB_CONFIG
@@ -41,4 +44,4 @@ echo "ORBInitRef $initref" > $OMNIORB_CONFIG
shift 2
-${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile $HOME/$APPLI/.bashrc -c "$*"
+${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/sh --rcfile $HOME/$APPLI/.bashrc -c "$*"
diff --git a/bin/appliskel/runSession b/bin/appliskel/runSession
index 22d3fdd0f..c0a26ba13 100755
--- a/bin/appliskel/runSession
+++ b/bin/appliskel/runSession
@@ -19,19 +19,22 @@ myhost=`hostname`
fileOmniConfig=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
if [ -f $fileOmniConfig ]; then
- export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+ OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+ export OMNIORB_CONFIG
# --- set environment variables for port and hostname of NamingService
- export NSHOST=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py host`
- export NSPORT=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py port`
+ NSHOST=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py host`
+ export NSHOST
+ NSPORT=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py port`
+ export NSPORT
fi
# --- invoque shell with or without args
if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/sh --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
else
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/sh --rcfile ${HOME}/${APPLI}/.bashrc
fi
diff --git a/bin/appliskel/runTests b/bin/appliskel/runTests
index 755825d79..8e360b05d 100755
--- a/bin/appliskel/runTests
+++ b/bin/appliskel/runTests
@@ -21,13 +21,16 @@ searchFreePort() {
if [ -z "$aRes" ]; then
echo ${NSPORT} - Ok
local myhost=`hostname`
- export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
+ OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
+ export OMNIORB_CONFIG
export NSPORT
- export NSHOST=${myhost}
+ NSHOST=${myhost}
+ export NSHOST
local initref="NameService=corbaname::"`hostname`":$NSPORT"
#echo "ORBInitRef $initref" > $OMNIORB_CONFIG
echo "InitRef = $initref" > $OMNIORB_CONFIG
- export LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_test.cfg
+ LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_test.cfg
+ export LAST_RUNNING_CONFIG
rm ${LAST_RUNNING_CONFIG}
ln -s ${OMNIORB_CONFIG} ${LAST_RUNNING_CONFIG}
break
@@ -55,10 +58,10 @@ fi
searchFreePort
if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/sh --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
else
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/sh --rcfile ${HOME}/${APPLI}/.bashrc
fi
rm ${OMNIORB_CONFIG}
diff --git a/bin/appliskel/searchFreePort.sh b/bin/appliskel/searchFreePort.sh
index 8108a93dc..3fd3c0dd8 100755
--- a/bin/appliskel/searchFreePort.sh
+++ b/bin/appliskel/searchFreePort.sh
@@ -4,7 +4,8 @@
searchFreePort() {
echo -n "Searching for a free port for naming service: "
- export NSPORT=2810
+ NSPORT=2810
+ export NSPORT
local limit=$NSPORT
let limit=limit+100
while [ 1 ]
@@ -13,13 +14,16 @@ searchFreePort() {
if [ -z "$aRes" ]; then
echo ${NSPORT} - Ok
local myhost=`hostname`
- export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
+ OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
+ export OMNIORB_CONFIG
export NSPORT
- export NSHOST=${myhost}
+ NSHOST=${myhost}
+ export NSHOST
local initref="NameService=corbaname::"`hostname`":$NSPORT"
#echo "ORBInitRef $initref" > $OMNIORB_CONFIG
echo "InitRef = $initref" > $OMNIORB_CONFIG
- export LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+ LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+ export LAST_RUNNING_CONFIG
rm ${LAST_RUNNING_CONFIG}
ln -s ${OMNIORB_CONFIG} ${LAST_RUNNING_CONFIG}
break
diff --git a/bin/createAppli.sh b/bin/createAppli.sh
index 1ff6ed6de..36c6146b4 100755
--- a/bin/createAppli.sh
+++ b/bin/createAppli.sh
@@ -3,11 +3,11 @@
comName=`which $0`
rep=`dirname $comName`
-if [ $# -ne 1 ]
+if [ $# -ne 1 ]; then
echo "--- usage:"
echo $0 AppliName
echo "--- In which AppliName is a directory to create with SALOME application scripts"
-elif [ -d $1]
+elif [ -d $1 ]; then
echo $1 "directory already exists, nothing done"
else
mkdir -p $1
diff --git a/bin/killSalomeWithPort.py b/bin/killSalomeWithPort.py
index e52a25f88..9f0cd0dd9 100755
--- a/bin/killSalomeWithPort.py
+++ b/bin/killSalomeWithPort.py
@@ -34,7 +34,21 @@ def killMyPort(port):
pass
if found:
- a = os.system("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid >& /dev/null")
+ cmd = 'pid=`ps -eo pid,command | egrep "[0-9] omniNames -start '+str(port)+'"` ; echo $pid > /tmp/logs/'+os.getenv('USER')+"/_"+port+'_Pid_omniNames.log'
+ a = os.system(cmd)
+ try:
+ fpidomniNames=open('/tmp/logs/'+os.getenv('USER')+"/_"+port+'_Pid_omniNames.log')
+ prc = fpidomniNames.read()
+ fpidomniNames.close()
+ if prc != None :
+ for field in prc.split(" ") :
+ if field == "omniNames" :
+ if pidfield != "egrep" :
+ print 'stop process '+pidfield+' : omniNames'
+ os.system('kill -9 '+pidfield)
+ pidfield = field
+ except:
+ pass
try:
process_ids=pickle.load(fpid)
fpid.close()
diff --git a/bin/launchConfigureParser.py b/bin/launchConfigureParser.py
index a9d0c273c..99540b3f3 100755
--- a/bin/launchConfigureParser.py
+++ b/bin/launchConfigureParser.py
@@ -161,6 +161,17 @@ class xml_parser:
# - command line
config_var = appname+'Config'
+# set resources variables if not yet set
+if os.getenv("GUI_ROOT_DIR"):
+ if not os.getenv("SUITRoot"): os.environ["SUITRoot"] = os.getenv("GUI_ROOT_DIR") + "/share/salome"
+ if not os.getenv("SalomeAppConfig"): os.environ["SalomeAppConfig"] = os.getenv("GUI_ROOT_DIR") + "/share/salome/resources"
+ pass
+else :
+ if not os.getenv("SUITRoot"):
+ os.environ["SUITRoot"] = ""
+ if not os.getenv("SalomeAppConfig"):
+ os.environ["SalomeAppConfig"] = ""
+
dirs = os.environ[config_var]
dirs = re.split('[;|:]', dirs )
dirs.reverse() # reverse order, like in "path" variable - FILO-style processing
diff --git a/bin/salome/runIDLparser.in b/bin/runIDLparser.in
similarity index 84%
rename from bin/salome/runIDLparser.in
rename to bin/runIDLparser.in
index 9f3afa861..cb41a7488 100644
--- a/bin/salome/runIDLparser.in
+++ b/bin/runIDLparser.in
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
# print the help message ====================================
@@ -32,12 +32,6 @@ if test "$hh" = "1" ; then
fi
#============================================================
-# environment ==============================================
-@ENVSCRIPT@
-
-cd $DIR
-#============================================================
-
# omiidl ====================================================
omniidl -bIDLparser -I ${KERNEL_ROOT_DIR}/idl/salome $@
#============================================================
diff --git a/bin/runNS.sh b/bin/runNS.sh
index b5c155a6c..589d2db50 100755
--- a/bin/runNS.sh
+++ b/bin/runNS.sh
@@ -18,7 +18,7 @@ touch ${BaseDir}/logs/${Username}/dummy
echo "Name Service... "
aSedCommand="s/.*NameService=corbaname::`hostname`:\([[:digit:]]*\)/\1/"
-aPort=`sed -e"$aSedCommand" $OMNIORB_CONFIG`
+aPort=`cat $OMNIORB_CONFIG | grep NameService | sed -e"$aSedCommand"`
omniNames -start $aPort -logdir ${BaseDir}/logs/${Username} &
# In LifeCycleCORBA, FactoryServer is started with rsh on the requested
diff --git a/bin/runSalome.ksh b/bin/runSalome.ksh
new file mode 100644
index 000000000..970288626
--- /dev/null
+++ b/bin/runSalome.ksh
@@ -0,0 +1,77 @@
+#!/bin/ksh
+
+searchFreePort() {
+ echo -n "Searching for a free port for naming service: "
+ NSPORT=2810
+ export NSPORT
+ local limit=$NSPORT
+ let limit=limit+100
+ while [ 1 ]
+ do
+ aRes=`netstat -ltn | grep -E :${NSPORT}`
+ if [ -z "$aRes" ]; then
+ echo ${NSPORT} - Ok
+ local myhost=`hostname`
+ OMNIORB_CONFIG=${HOME}/.omniORB_${myhost}_${NSPORT}.cfg
+ export OMNIORB_CONFIG
+ local initref="NameService=corbaname::"`hostname`":$NSPORT"
+ export NSPORT
+ if [[ `python -c "import CORBA; print CORBA.ORB_ID"` = "omniORB4" ]]; then
+ echo "InitRef = $initref" > $OMNIORB_CONFIG
+ else
+ echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+ fi
+ break
+ fi
+ echo -n "${NSPORT} "
+ if [[ $NSPORT -eq $limit ]] ; then
+ echo
+ echo "Can't find a free port to launch omniNames"
+ echo "Try to kill the running servers and then launch SALOME again."
+ exit
+ fi
+ let NSPORT=NSPORT+1
+ done
+}
+
+searchFreePort
+
+if [[ "$*" = "-nothing" ]]; then
+ echo "port:$NSPORT"
+elif [ $# -ne 0 ] ; then
+ python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py $*
+else
+ python ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py
+fi
+
+# -----------------------------------------------------------------------------
+# examples:
+# ---------
+# $: ${KERNEL_ROOT_DIR}/bin/salome/runSalome
+#
+# - parameters for launching are taken from $HOME/.salome/salome.launch;
+# - if the config file does not exist, it is created with default values.
+#
+#
+# $: ${KERNEL_ROOT_DIR}/bin/salome/runSalome --modules=GEOM,SMESH,VISU,SUPERV,MED --embedded=registry,study,moduleCatalog,cppContainer --standalone=pyContainer,supervContainer --xterm --killall
+#
+# parameters from command line supersede those from $HOME/.salome/salome.launch
+#
+# Some CORBA servers can be launched in the SALOME_Session_Server's process
+# (embedded = same process) or in a separate process (standalone):
+# --> registry,study,moduleCatalog,cppContainer
+# Other CORBA servers could only be launched in separate process (standalone):
+# --> pyContainer,supervContainer
+#
+# $: ${KERNEL_ROOT_DIR}/bin/salome/runSalome -h
+# help
+# -----------------------------------------------------------------------------
+#
+# l'option -i permet de garder l'interpreteur python ouvert :
+# par defaut, les differents serveurs ouvrent des fenĂȘtres xterm
+# (cf. runSalome.py)
+# le serveur Logger n'est pas obligatoire (commenté dans runSalome.py)
+#
+# -----------------------------------------------------------------------------
+# Example on CCRT (without ihm) :
+# ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py --terminal --modules=MED,CALCULATOR,COMPONENT --standalone=registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer --killall
diff --git a/bin/runSalome.py b/bin/runSalome.py
index 98ff0a19f..8b19f288e 100755
--- a/bin/runSalome.py
+++ b/bin/runSalome.py
@@ -56,8 +56,9 @@ def get_config():
modules_list = []
if args.has_key("modules"):
modules_list += args["modules"]
- # KERNEL must be last in the list to locate it at the first place in PATH
- modules_list[:0] = ["GUI"]
+ # KERNEL must be last in the list to locate it at the first place in PATH
+ if args["gui"] :
+ modules_list[:0] = ["GUI"]
modules_list[:0] = ["KERNEL"]
modules_list.reverse()
@@ -103,7 +104,8 @@ def set_env(args, modules_list, modules_root_dir):
python_version="python%d.%d" % sys.version_info[0:2]
modules_root_dir_list = []
- modules_list = modules_list[:] + ["GUI"]
+ if args["gui"] :
+ modules_list = modules_list[:] + ["GUI"]
modules_list = modules_list[:] + ["KERNEL"]
for module in modules_list :
if modules_root_dir.has_key(module):
@@ -187,10 +189,10 @@ def set_env(args, modules_list, modules_root_dir):
# set environment for SUPERV module
os.environ["ENABLE_MACRO_NODE"]="1"
# set resources variables if not yet set
- if os.getenv("GUI_ROOT_DIR"):
- if not os.getenv("SUITRoot"): os.environ["SUITRoot"] = os.getenv("GUI_ROOT_DIR") + "/share/salome"
- if not os.getenv("SalomeAppConfig"): os.environ["SalomeAppConfig"] = os.getenv("GUI_ROOT_DIR") + "/share/salome/resources"
- pass
+ # Done now by launchConfigureParser.py
+ #if os.getenv("GUI_ROOT_DIR"):
+ #if not os.getenv("SUITRoot"): os.environ["SUITRoot"] = os.getenv("GUI_ROOT_DIR") + "/share/salome"
+ #if not os.getenv("SalomeAppConfig"): os.environ["SalomeAppConfig"] = os.getenv("GUI_ROOT_DIR") + "/share/salome/resources"
# set CSF_PluginDefaults variable only if it is not customized
# by the user
@@ -324,7 +326,11 @@ class CatalogServer(Server):
cata_path=[]
list_modules = modules_list[:]
list_modules.reverse()
- for module in ["KERNEL", "GUI"] + list_modules:
+ if self.args["gui"] :
+ list_modules = ["KERNEL", "GUI"] + list_modules
+ else :
+ list_modules = ["KERNEL"] + list_modules
+ for module in list_modules:
if modules_root_dir.has_key(module):
module_root_dir=modules_root_dir[module]
module_cata=module+"Catalog.xml"
@@ -389,7 +395,10 @@ class LoggerServer(Server):
class SessionServer(Server):
def __init__(self,args):
- self.args=args
+ self.args = args.copy()
+ # Bug 11512 (Problems with runSalome --xterm on Mandrake and Debian Sarge)
+ self.args['xterm']=0
+ #
self.initArgs()
self.SCMD1=['SALOME_Session_Server']
self.SCMD2=[]
@@ -417,7 +426,7 @@ class SessionServer(Server):
self.SCMD2+=['SUPERV']
if self.args['gui']:
self.SCMD2+=['GUI']
- if self.args['splash']:
+ if self.args['splash'] and self.args['gui']:
self.SCMD2+=['SPLASH']
if self.args['noexcepthandler']:
self.SCMD2+=['noexcepthandler']
@@ -431,7 +440,11 @@ class SessionServer(Server):
cata_path=[]
list_modules = modules_list[:]
list_modules.reverse()
- for module in ["KERNEL", "GUI"] + list_modules:
+ if self.args["gui"] :
+ list_modules = ["KERNEL", "GUI"] + list_modules
+ else :
+ list_modules = ["KERNEL"] + list_modules
+ for module in list_modules:
module_root_dir=modules_root_dir[module]
module_cata=module+"Catalog.xml"
#print " ", module_cata
@@ -439,7 +452,7 @@ class SessionServer(Server):
glob.glob(os.path.join(module_root_dir,"share",
salome_subdir,"resources",
module_cata)))
- if 'moduleCatalog' in self.args['embedded']:
+ if (self.args["gui"]) & ('moduleCatalog' in self.args['embedded']):
self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
else:
self.CMD=self.SCMD1 + self.SCMD2
@@ -452,23 +465,26 @@ class ContainerManagerServer(Server):
self.initArgs()
self.SCMD1=['SALOME_ContainerManagerServer']
self.SCMD2=[]
- if 'registry' in self.args['embedded']:
- self.SCMD1+=['--with','Registry',
- '(','--salome_session','theSession',')']
- if 'moduleCatalog' in self.args['embedded']:
- self.SCMD1+=['--with','ModuleCatalog','(','-common']
- self.SCMD2+=['-personal',
- '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
- if 'study' in self.args['embedded']:
- self.SCMD2+=['--with','SALOMEDS','(',')']
- if 'cppContainer' in self.args['embedded']:
- self.SCMD2+=['--with','Container','(','FactoryServer',')']
+ if args["gui"] :
+ if 'registry' in self.args['embedded']:
+ self.SCMD1+=['--with','Registry',
+ '(','--salome_session','theSession',')']
+ if 'moduleCatalog' in self.args['embedded']:
+ self.SCMD1+=['--with','ModuleCatalog','(','-common']
+ self.SCMD2+=['-personal',
+ '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
+ if 'study' in self.args['embedded']:
+ self.SCMD2+=['--with','SALOMEDS','(',')']
+ if 'cppContainer' in self.args['embedded']:
+ self.SCMD2+=['--with','Container','(','FactoryServer',')']
def setpath(self,modules_list,modules_root_dir):
cata_path=[]
list_modules = modules_list[:]
list_modules.reverse()
- for module in ["KERNEL", "GUI"] + list_modules:
+ if self.args["gui"] :
+ list_modules = ["GUI"] + list_modules
+ for module in ["KERNEL"] + list_modules:
if modules_root_dir.has_key(module):
module_root_dir=modules_root_dir[module]
module_cata=module+"Catalog.xml"
@@ -479,7 +495,7 @@ class ContainerManagerServer(Server):
module_cata)))
pass
pass
- if 'moduleCatalog' in self.args['embedded']:
+ if (self.args["gui"]) & ('moduleCatalog' in self.args['embedded']):
self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
else:
self.CMD=self.SCMD1 + self.SCMD2
@@ -503,7 +519,13 @@ class NotifyServer(Server):
def startGUI():
"""Salome Session Graphic User Interface activation"""
+ import Engines
import SALOME
+ import SALOMEDS
+ import SALOME_ModuleCatalog
+ reload(Engines)
+ reload(SALOME)
+ reload(SALOMEDS)
import SALOME_Session_idl
session=clt.waitNS("/Kernel/Session",SALOME.Session)
session.GetInterface()
@@ -544,7 +566,7 @@ def startSalome(args, modules_list, modules_root_dir):
# attente de la disponibilite du Registry dans le Naming Service
#
- if 'registry' not in args['embedded']:
+ if ('registry' not in args['embedded']) | (args["gui"] == 0) :
myServer=RegistryServer(args)
myServer.run()
clt.waitNSPID("/Registry",myServer.PID)
@@ -555,7 +577,7 @@ def startSalome(args, modules_list, modules_root_dir):
#
- if 'moduleCatalog' not in args['embedded']:
+ if ('moduleCatalog' not in args['embedded']) | (args["gui"] == 0):
cataServer=CatalogServer(args)
cataServer.setpath(modules_list,modules_root_dir)
cataServer.run()
@@ -568,7 +590,7 @@ def startSalome(args, modules_list, modules_root_dir):
#
#print "ARGS = ",args
- if 'study' not in args['embedded']:
+ if ('study' not in args['embedded']) | (args["gui"] == 0):
print "RunStudy"
myServer=SalomeDSServer(args)
myServer.run()
@@ -629,17 +651,24 @@ def startSalome(args, modules_list, modules_root_dir):
# Lancement Session Server
#
- mySessionServ = SessionServer(args)
- mySessionServ.setpath(modules_list,modules_root_dir)
- mySessionServ.run()
+ if args["gui"]:
+ mySessionServ = SessionServer(args)
+ mySessionServ.setpath(modules_list,modules_root_dir)
+ mySessionServ.run()
##----------------
- # Attente de la disponibilite du Session Server dans le Naming Service
- #
+ # Attente de la disponibilite du Session Server dans le Naming Service
+ #
- import SALOME
- import SALOME_Session_idl
- session=clt.waitNSPID("/Kernel/Session",mySessionServ.PID,SALOME.Session)
+ import Engines
+ import SALOME
+ import SALOMEDS
+ import SALOME_ModuleCatalog
+ reload(Engines)
+ reload(SALOME)
+ reload(SALOMEDS)
+ import SALOME_Session_idl
+ session=clt.waitNSPID("/Kernel/Session",mySessionServ.PID,SALOME.Session)
end_time = os.times()
print
diff --git a/build_configure b/build_configure
index d3294fb59..c682f1fad 100755
--- a/build_configure
+++ b/build_configure
@@ -1,224 +1,84 @@
-#!/bin/bash
-
-#
-# Tool for updating list of .in file for the SALOME project
-# and regenerating configure script
-#
-# Author : Marc Tajchman - CEA
-# Date : 10/10/2002
-# $Header$
-#
-
-ORIG_DIR=`pwd`
-CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
-
-########################################################################
-# find_in - utility function
-#
-# usage :
-# find_in directory filename
+#!/bin/sh
+# ====================================================================
+# This script is just here to illustrate the procedure for preparing
+# the configure process. It creates configuration files (ex:
+# ltmain.sh) using libtoolize, the aclocal macro, the configure script
+# using autoconf and some scripts used in building process (ex:
+# install-sh) using automake. Automake is used here to creates the
+# files Makefile.in from the files Makefile.am.
+# ====================================================================
#
-# Finds files following the *.in pattern, recursively in the
-# directory (first argument).
-# Results are appended into the file (second argument)
-#
-# Difference from the standard unix find is that files are tested
-# before directories
-#
-
-find_in()
-{
-#CCRT
- #local i
- i=0
- #local f=$2
- f=$2
-
-# if the first argument is not a directory, returns
-
- if [ ! -d "$1" ] ; then
- return
- fi
-
-# dont look in the CVS directories
-
- case $1 in
- */CVS) return ;;
- *) ;;
- esac
-
-# for each regular file contained in the directory
-# test if it's a .in file
- for i in "$1"/*
- do
- if [ -f "$i" ] ; then
- case $i in
- *.in) echo " "$i" \\" >> $f;;
- *) ;;
- esac
- fi
- done
-# for each subdirectory of the first argument, proceeds recursively
+# ____________________________________________________________________
+# aclocal creates the aclocal.m4 file from the standard macro and the
+# custom macro embedded in the directory salome_adm/unix/config_files.
+# output:
+# aclocal.m4
+# autom4te.cache (directory)
+echo "====================================================== aclocal"
- for i in "$1"/*
- do
- if [ -d "$i" ] ; then
- find_in "$i" "$f"
- fi
- done
-}
+aclocal -I salome_adm/unix/config_files || exit 1
-#######################################################################
-# Generate list of .in files (Makefile.in, config.h.in, etc)
-# appending it in file configure.in
+# ____________________________________________________________________
+# libtoolize creates some configuration files (ltmain.sh,
+# config.guess and config.sub). It only depends on the libtool
+# version. The files are created in the directory specified with the
+# AC_CONFIG_AUX_DIR() tag (see configure.ac).
+# output:
+# salome_adm/unix/config_files/config.guess
+# salome_adm/unix/config_files/config.sub
+# salome_adm/unix/config_files/ltmain.sh
+echo "====================================================== libtoolize"
-cd ${CONF_DIR}
-ABS_CONF_DIR=`pwd`
+libtoolize --force --copy --automake || exit 1
-#
-# Common part of the configure.in file
-#
-chmod u+w configure.in.base
-#CCRT
-#if ! \cp -f configure.in.base configure.in_tmp1
-if \cp -f configure.in.base configure.in_tmp1
-then
- echo
-else
- echo
- echo "error : can't create files in" ${CONF_DIR}
- echo "aborting ..."
- chmod u-w configure.in.base
- exit
-fi
-chmod u-w configure.in.base
-#############################################
-echo '' >> configure.in_tmp1
-echo 'export TEMPO=${KERNEL_ROOT_DIR}' >> configure.in_tmp1
-echo 'export KERNEL_ROOT_DIR=${ROOT_SRCDIR}' >> configure.in_tmp1
-#############################################
+# ____________________________________________________________________
+# autoconf creates the configure script from the file configure.ac (or
+# configure.in if configure.ac doesn't exist)
+# output:
+# configure
+echo "====================================================== autoconf"
-echo "" >> configure.in_tmp1
-echo "AC_OUTPUT([ \\" >> configure.in_tmp1
+autoconf
-#
-# List of .in files in the adm/unix directory
-# These files MUST be on top of AC_OUTPUT list so we
-# put them "manually"
-#
+# ____________________________________________________________________
+# autoheader creates config.h.in
+# output:
+# configure
+#echo "====================================================== autoheader"
-echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/make_omniorb \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/make_commence \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1
-echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1
-echo " ./salome_adm/Makefile \\" >> configure.in_tmp1
+#autoheader
-\rm -f configure.in_tmp2 configure.in_tmp3
-touch configure.in_tmp2
-find_in . configure.in_tmp2
-sed '/^...salome_adm/d' configure.in_tmp2 > configure.in_tmp3
-sed '/configure.in/d;/make_config.in/d' configure.in_tmp3 > configure.in_tmp2
-sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
+# ____________________________________________________________________
+# automake creates some scripts used in building process
+# (install-sh, missing, ...). It only depends on the automake
+# version. The files are created in the directory specified with the
+# AC_CONFIG_AUX_DIR() tag (see configure.ac). This step also
+# creates the Makefile.in files from the Makefile.am files.
+# output:
+# salome_adm/unix/config_files/compile
+# salome_adm/unix/config_files/depcomp
+# salome_adm/unix/config_files/install-sh
+# salome_adm/unix/config_files/missing
+# salome_adm/unix/config_files/py-compile
+# Makefile.in (from Makefile.am)
+echo "====================================================== automake"
-echo "])" >> configure.in_tmp1
+automake --add-missing --copy --gnu
-#############################################
-echo 'export KERNEL_ROOT_DIR=${TEMPO}' >> configure.in_tmp1
-#############################################
-\mv configure.in_tmp1 configure.in_new
-\rm -f configure.in_tmp2 configure.in_tmp3
-
-
-########################################################################
-# Create new (or replace old) configure.in file
-# Print a message if the file is write protected
+# ____________________________________________________________________
#
-
-echo
-if test ! -f configure.in
-then
- echo -n "Creating new file 'configure.in' ... "
- if \mv configure.in_new configure.in >& /dev/null
- then
- echo "done"
- else
- echo "error, check your file permissions"
- fi
-else
- echo -n "Updating 'configure.in' file ... "
-#CCRT
-# if ! \cp configure.in configure.in_old >& /dev/null
- if \cp configure.in configure.in_old >& /dev/null
- then
- echo
- else
- echo
- echo
- echo "Can't backup previous configure.in"
- echo -n "Continue (you will not be able to revert) - (Y/N) ? "
- read R
- case "x$R" in
- xn*) exit;;
- xN*) exit;;
- esac
- echo
- echo -n " "
- fi
- if \cp configure.in_new configure.in >& /dev/null
- then
- echo "done"
- else
- echo
- echo "error, can't update previous configure.in"
- fi
-fi
-
-########################################################################
-# Use autoconf to rebuild the configure script
+# Note that automake could be executed at last after autoconf. The
+# order doesn't matter.
#
-
-if test -f configure
-then
- echo -n "Updating 'configure' script ... "
-else
- echo -n "Creating 'configure' script ... "
-fi
-
-aclocal --acdir=adm_local/unix/config_files -I salome_adm/unix/config_files
-if autoconf
-then
- echo "done"
-else
- echo "failed (check file permissions and/or user quotas ...)"
-fi
-
-###############################################################
-# Creating make_config
+# When modifying a Makefile.am file, after a first step of
+# configure+make, you just have to :
+# - go to the top source directory and run automake, to rebuild the Makefile.in,
+# - go to the top build directory and run config.status to rebuild the
+# Makefile from the Makefile.in,
+# - go to the source directory being modified, and then run make.
#
-if test -f make_config
-then
- echo -n "Updating 'make_config' script ... "
-else
- echo -n "Creating 'make_config' script ... "
-fi
-
-if autoconf -o make_config make_config.in
-then
- echo "done"
-else
- echo "failed (check file permissions and/or user quotas ...)"
-fi
-
-cd ${ORIG_DIR}
-
-echo
diff --git a/clean_configure b/clean_configure
new file mode 100755
index 000000000..a0073fb98
--- /dev/null
+++ b/clean_configure
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+rm -rf autom4te.cache aclocal.m4 configure make_config
+find . -name "*~" -print -exec rm {} \;
+find . -name "*.pyc" -print -exec rm {} \;
+#exit
+# ==================== ON SORT AVANT
+
+here=`pwd`
+libdir=salome_adm/unix/config_files
+cd $libdir
+# Files created by libtoolize
+rm -f config.guess config.sub ltmain.sh
+# Files created by automake
+rm -rf install-sh missing compile depcomp py-compile
+cd $here
+find bin -name Makefile.in | xargs rm -f
+find doc -name Makefile.in | xargs rm -f
+find idl -name Makefile.in | xargs rm -f
+find resources -name Makefile.in | xargs rm -f
+find salome_adm -name Makefile.in | xargs rm -f
+find src -name Makefile.in | xargs rm -f
+rm -f Makefile.in
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 000000000..7fe63445c
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,524 @@
+#
+# ================================================================
+# Process this file with autoconf to produce a configure script
+# ================================================================
+#
+#AC_PREREQ(2.59)
+#AC_INIT(src)
+AC_INIT([Salome2 Project], [3.1.0], [gboulant@CS], [salome])
+
+# AC_CONFIG_AUX_DIR defines an alternative directory where to find the auxiliary
+# scripts such as config.guess, install-sh, ...
+AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AM_INIT_AUTOMAKE
+#AC_CONFIG_HEADER([config.h])
+
+PACKAGE=salome
+AC_SUBST(PACKAGE)
+
+VERSION=3.1.0
+AC_SUBST(VERSION)
+
+
+echo
+echo ---------------------------------------------
+echo Initialize source and build root directories
+echo ---------------------------------------------
+echo
+
+#
+# This function return on stdout the absolute path of the filename in
+# argument. Exemple:
+# $ filename="../KERNEL_SRC/configure
+# $ absfilename=`absolute_path $filename`
+function absolute_path {
+ filename=$1
+ here=`pwd`
+ apath=`dirname $filename`
+ cd $apath
+ apath=`pwd`
+ cd $here
+ echo $apath
+}
+
+# Build directory, where the configure script is executed.
+ROOT_BUILDDIR=`pwd`
+# Source directory, where the configure script is located.
+ROOT_SRCDIR=`absolute_path $0`
+
+AC_SUBST(ROOT_SRCDIR)
+AC_SUBST(ROOT_BUILDDIR)
+
+echo
+echo Source root directory : $ROOT_SRCDIR
+echo Build root directory : $ROOT_BUILDDIR
+
+# ----------------------------------------------------------------------------
+# --- test options
+
+AC_ARG_ENABLE(corba_gen,
+ [AC_HELP_STRING([--enable-corba-gen],[Generate CORBA stuff [default=yes]])],
+ [case "${enableval}" in
+ yes) corba_gen=true ;;
+ no) corba_gen=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-corba-gen) ;;
+ esac],[corba_gen=true])
+AM_CONDITIONAL(CORBA_GEN, test x$corba_gen = xtrue)
+
+# ----------------------------------------------------------------------------
+
+echo
+echo
+echo ============================================================
+echo testing general mandatory products - for all configurations
+echo ============================================================
+echo
+
+dnl Modification B. Secher portage sur osf
+AC_CHECK_PROG(SHELL,sh)
+AC_SUBST(SHELL)
+
+if test -z "$AR"; then
+ AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+echo
+echo ---------------------------------------------
+echo testing make
+echo ---------------------------------------------
+echo
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+echo
+echo ---------------------------------------------
+echo Configuring production
+echo ---------------------------------------------
+echo
+# production.m4
+AC_ENABLE_DEBUG(yes)
+AC_DISABLE_PRODUCTION
+
+echo
+echo ---------------------------------------------
+echo testing libtool
+echo ---------------------------------------------
+echo
+
+dnl first, we set static to no!
+dnl if we want it, use --enable-static
+AC_ENABLE_STATIC(no)
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
+
+echo
+echo ---------------------------------------------
+echo testing C/C++
+echo ---------------------------------------------
+echo
+
+cc_ok=no
+AC_PROG_CC
+AC_PROG_CXX
+AC_CXX_WARNINGS
+AC_CXX_TEMPLATE_OPTIONS
+AC_DEPEND_FLAG
+# AC_CC_WARNINGS([ansi])
+cc_ok=yes
+
+dnl Library libdl :
+AC_CHECK_LIB(dl,dlopen)
+
+dnl Library librt : for alpha/osf
+AC_CHECK_LIB(rt,nanosleep)
+
+dnl add library libm :
+AC_CHECK_LIB(m,ceil)
+
+# _CS_gbo We should add all dependent libraries
+
+AC_CXX_USE_STD_IOSTREAM
+
+AC_CXX_HAVE_SSTREAM
+
+# Testing linker
+AC_LINKER_OPTIONS
+
+echo
+echo ---------------------------------------------
+echo testing threads
+echo ---------------------------------------------
+echo
+
+ENABLE_PTHREADS
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+echo
+echo ---------------------------------------------
+echo testing swig
+echo ---------------------------------------------
+echo
+
+dnl _CS_gbo We should use here a variable given from the CHECK_PYTHON
+AM_PATH_PYTHON(2.3)
+CHECK_SWIG
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+# ----------------------------------------------------------------------------
+# --- test corba
+
+if test x$corba_gen = xtrue; then
+
+echo
+echo ============================================================
+echo testing mandatory products for CORBA configurations
+echo ============================================================
+echo
+
+dnl
+dnl ---------------------------------------------
+dnl testing sockets
+dnl ---------------------------------------------
+dnl
+
+CHECK_SOCKETS
+
+echo
+echo ---------------------------------------------
+echo Configuration of the ORB
+echo ---------------------------------------------
+echo
+
+echo Testing OMNIORB ...
+CHECK_OMNIORB
+
+echo Selecting the default ORB
+DEFAULT_ORB=omniORB
+echo DEFAULT_ORB : $DEFAULT_ORB
+CHECK_CORBA
+
+CORBA=salome_adm/unix/make_$ORB
+AC_SUBST_FILE(CORBA)
+
+# _CS_gbo:
+# The CORBA variable defines the file name that
+# implements the building rules to be included by Makefile to process
+# idl files and CORBA specific dependencies (ex: the file
+# salome_adm/unix/make_omniorb is the default for SALOME). The value
+# of ORB is defined by CHECK_CORBA.
+
+# Note that this checking process is no longer relevant for SALOME
+# because the possibility of changing the ORB as a plugin is probably
+# deprecated. The software configuration is clearly omniorb for CORBA
+# communication. This could be simplify in a near futur.
+
+echo
+echo ---------------------------------------------
+echo Testing QT
+echo ---------------------------------------------
+echo
+# Qt must be kept because kernel makes use of qxml and some other
+# non-graphical stuff.
+CHECK_QT
+
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
+fi
+# --- end test corba
+# ----------------------------------------------------------------------------
+
+echo
+echo ============================================================
+echo testing optionnal products
+echo ============================================================
+echo
+
+echo
+echo ---------------------------------------------
+echo checking if MPI is requested by user
+echo ---------------------------------------------
+echo
+
+CHECK_MPI
+
+echo
+echo ---------------------------------------------
+echo Testing Batch
+echo ---------------------------------------------
+echo
+
+dnl Several batch systems (OpenPBS, LSF, ...) can be operated using
+dnl the Batch classes library integrated in the KERNEL module. The
+dnl checking process tests here the presence of underlying batch
+dnl softwares. If none is detected, the KERNEL is declared to be
+dnl "without batch".
+
+echo testing OpenPBS
+echo ---------------
+openpbs_ok=no
+CHECK_OPENPBS
+dnl openpbs_ok is set to yes by CHECK_OPENPBS
+
+echo testing LSF
+echo -----------
+lsf_ok=no
+CHECK_LSF
+dnl lsf_ok is set to yes by CHECK_LSF
+echo lsf = $lsf_ok
+
+echo testing Local batch system
+echo --------------------------
+localbatch_ok=no
+CHECK_LOCAL
+dnl localbatch_ok is set to yes by CHECK_LOCAL
+
+WITH_BATCH=no
+test x$openpbs_ok = xyes || test x$lsf_ok = xyes || test x$localbatch_ok = xyes && WITH_BATCH=yes
+AC_SUBST(WITH_BATCH)
+AM_CONDITIONAL(WITH_BATCH, [test x"$WITH_BATCH" = xyes])
+
+echo
+echo ----------------------------------------------
+echo testing CPPUNIT only required for unit testing
+echo ----------------------------------------------
+echo
+CHECK_CPPUNIT
+
+echo
+echo ============================================================
+echo testing products required only for documentation generation
+echo ============================================================
+echo
+
+echo
+echo ---------------------------------------------
+echo Testing html generators
+echo ---------------------------------------------
+echo
+
+CHECK_HTML_GENERATORS
+
+echo
+echo ============================================================
+echo Summary
+echo ============================================================
+echo
+
+# This function displays the values of each variable given in arguments
+function summary {
+ variables=$*
+ for var in $variables
+ do
+ eval toto=\$$var
+ if test x$toto != "x"; then
+ printf " %10s : " `echo \$var | sed -e "s,_ok,,"`
+ eval echo \$$var
+ fi
+ done
+}
+
+# --------------------------------------
+
+function check_fatal_error {
+ variables=$*
+ for var in $variables
+ do
+ eval toto=\$$var
+ if test x$toto != "xyes"; then
+ echo "FATAL ERROR: some mandatory products are missing."
+ echo "Installing the missing products is required before running the configure script".
+ exit 1
+ fi
+ done
+}
+
+# --------------------------------------
+
+basic_mandatory_products="cc_ok threads_ok python_ok swig_ok hdf5_ok occ_ok"
+echo --- General mandatory products - Light configuration:
+summary $basic_mandatory_products
+check_fatal_error $basic_mandatory_products
+echo
+
+corba_mandatory_products="omniORB_ok qt_ok boost_ok"
+if test x$corba_gen = xtrue; then
+ echo --- CORBA mandatory products - default configuration:
+ summary $corba_mandatory_products
+ check_fatal_error $corba_mandatory_products
+else
+ echo --- CORBA products not required - option --disable-corba-gen
+fi
+echo
+
+if test x$MPIREQUESTED = xyes; then
+ requested_products="mpi_ok"
+ echo --- products requested by user
+ summary $requested_products
+ check_fatal_error $requested_products
+ echo
+fi
+
+optional_products="cppunit_ok openpbs_ok lsf_ok"
+echo --- Optional products:
+echo [" These products are optional because the KERNEL functions"]
+echo [" using them are built only if the products are detected."]
+summary $optional_products
+echo
+
+htmldoc_products="doxygen_ok graphviz_ok rst2html_ok"
+
+echo --- Html documentation products: only required for doc production
+summary $htmldoc_products
+echo
+
+echo
+echo "Default ORB : $DEFAULT_ORB"
+echo
+
+dnl generals files which could be included in every makefile
+
+AC_SUBST_FILE(COMMENCE) COMMENCE=salome_adm/unix/make_commence
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
+
+dnl les dependences
+AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
+
+dnl We don t need to say when we re entering directories if we re using
+dnl GNU make becuase make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+ AC_SUBST(SETX) SETX=":"
+else
+ AC_SUBST(SETX) SETX="set -x"
+fi
+
+echo
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and
+echo xml files
+echo ---------------------------------------------
+echo
+
+
+mkdir -p bin/salome
+cd bin/salome
+for i in `find $ROOT_SRCDIR/bin`
+do
+ local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR/bin,.,"`
+ case "$local_bin" in
+ *.in | *~) ;;
+ . | */CVS | */CVS/* | ./salome) ;;
+ ./appliskel |./appliskel/env.d) $INSTALL -d $local_bin ; echo $local_bin ;;
+ *) $INSTALL $i $local_bin; echo $local_bin ;;
+ esac
+done
+cd $ROOT_BUILDDIR
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+AC_OUTPUT_COMMANDS([ \
+ chmod +x ./bin/*; \
+ chmod +x ./bin/salome/* \
+])
+
+# This list is initiated using autoscan and must be updated manually
+# when adding a new file .in to manage. When you execute
+# autoscan, the Makefile list is generated in the output file configure.scan.
+# This could be helpfull to update de configuration.
+AC_OUTPUT([ \
+ ./salome_adm/unix/SALOMEconfig.h \
+ ./salome_adm/Makefile \
+ ./salome_adm/unix/Makefile \
+ ./salome_adm/unix/config_files/Makefile \
+ ./Makefile \
+ ./bin/Makefile \
+ ./bin/runIDLparser \
+ ./doc/Makefile \
+ ./doc/salome/Makefile \
+ ./doc/salome/DevelopersGuide/DevelopersGuide.tex \
+ ./doc/salome/DevelopersGuide/Makefile \
+ ./doc/salome/gui/Makefile \
+ ./doc/salome/tui/Makefile \
+ ./idl/Makefile \
+ ./resources/Makefile \
+ ./src/Makefile \
+ ./src/Basics/Makefile \
+ ./src/Basics/Test/Makefile \
+ ./src/Batch/Makefile \
+ ./src/Batch_SWIG/Makefile \
+ ./src/CASCatch/Makefile \
+ ./src/Communication/Makefile \
+ ./src/Communication_SWIG/Makefile \
+ ./src/Container/Makefile \
+ ./src/DataTypeCatalog/Makefile \
+ ./src/GenericObj/Makefile \
+ ./src/HDFPersist/Makefile \
+ ./src/KERNEL_PY/Makefile \
+ ./src/LifeCycleCORBA/Makefile \
+ ./src/LifeCycleCORBA/Test/Makefile \
+ ./src/LifeCycleCORBA_SWIG/Makefile \
+ ./src/Logger/Makefile \
+ ./src/Logger/Test/Makefile \
+ ./src/ModuleCatalog/Makefile \
+ ./src/ModuleGenerator/Makefile \
+ ./src/ModuleGenerator/testIDLparser \
+ ./src/MPIContainer/Makefile \
+ ./src/NamingService/Makefile \
+ ./src/NamingService/Test/Makefile \
+ ./src/Notification/Makefile \
+ ./src/NOTIFICATION_SWIG/Makefile \
+ ./src/Registry/Makefile \
+ ./src/ResourcesManager/Makefile \
+ ./src/RessourcesCatalog/Makefile \
+ ./src/SALOMEDS/Makefile \
+ ./src/SALOMEDS/Test/Makefile \
+ ./src/SALOMEDSClient/Makefile \
+ ./src/SALOMEDSImpl/Makefile \
+ ./src/SALOMEDSImpl/Test/Makefile \
+ ./src/SALOMELocalTrace/Makefile \
+ ./src/SALOMELocalTrace/Test/Makefile \
+ ./src/SALOMETraceCollector/Makefile \
+ ./src/SALOMETraceCollector/Test/Makefile \
+ ./src/TestContainer/Makefile \
+ ./src/TestMPIContainer/Makefile \
+ ./src/TOOLSDS/Makefile \
+ ./src/UnitTests/Makefile \
+ ./src/Utils/Makefile \
+ ./src/Utils/Test/Makefile \
+])
+
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 000000000..30c621e67
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,32 @@
+# -* Makefile *-
+#
+# Author : Paul RASCLE (EDF)
+# Date : 06/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+SUBDIRS = salome
+
+doc_DATA = \
+ index.html \
+ UnitTests.html \
+ SALOME_Application.html \
+ INSTALL.html \
+ kernel_resources.html
+
+EXTRA_DIST=$(doc_DATA)
+
+
+# Building html from restructured text files
+STYLESHEET=rst.css
+RST2HTML=@RST2HTML@
+RSTOPTS=--output-encoding=latin1 --stylesheet=$(STYLESHEET)
+#RSTOPTS=--output-encoding=latin1
+
+%.html: $(srcdir)/%.txt
+ $(RST2HTML) $(RSTOPTS) $< $@
+
+userdoc:
+ (cd salome && $(MAKE) $(AM_MAKEFLAGS) userdoc)
\ No newline at end of file
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644
index 7295ede75..000000000
--- a/doc/Makefile.in
+++ /dev/null
@@ -1,40 +0,0 @@
-
-# -* Makefile *-
-#
-# Author : Patrick GOLDBRONN (CEA)
-# Date : 30/11/2001
-# $Header$
-#
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-SUBDIRS= salome
-
-@COMMENCE@
-
-docs:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-clean:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-
-distclean: clean
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-
-install:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-
-uninstall:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
diff --git a/doc/SALOME_Application.txt b/doc/SALOME_Application.txt
index 590bf2c8f..83e016276 100644
--- a/doc/SALOME_Application.txt
+++ b/doc/SALOME_Application.txt
@@ -5,7 +5,7 @@ SALOME Application Concept. Configuration for one or more computers
*html version of this document is produced with docutils*::
- rest2html < doc.txt > doc.html
+ rst2html doc.txt > doc.html
This document corresponds to SALOME2 3.1. (alpha version)
@@ -16,23 +16,12 @@ This document corresponds to SALOME2 3.1. (alpha version)
The following explains how to configure your own application with your list of
modules, how to define and run this application on one or more computers.
-Summary
--------
+.. contents::
+.. sectnum::
-`1. General principles`_
-`2. Application Directory`_
-
-`2.1 Proposal for env.d scripts`_
-
-`2.2 User run scripts`_
-
-`2.3 SALOME internal run script`_
-
-`2.4 Other configuration files`_
-
-1. General principles
----------------------
+General principles
+------------------
A SALOME application is defined by a set of modules (GEOM, SMESH, ASTER...).
@@ -63,8 +52,8 @@ account@computer is via rsh or ssh and must be configured for use without
password (key exchange for ssh). Account may be different on each
computer.
-2. Application Directory
-------------------------
+Application Directory
+---------------------
The script createAppli.sh in ${KERNEL_ROOT_DIR}/bin/salome creates an
application directory with the given path in parameter. ${APPLI} is a path
@@ -94,8 +83,8 @@ alphanumeric order (after edition, think to remove backup files). the envd
script is used by run scripts.
-2.1 Proposal for env.d scripts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Proposal for env.d scripts
+~~~~~~~~~~~~~~~~~~~~~~~~~~
Each user **must define** his own configuration for these scripts, following
the above rules. **The following is only an example not working as it is**.
@@ -117,8 +106,8 @@ envSALOME.sh
Note that ${APPLI} is already defined by the calling scripts when
env.d/envSalome.sh is sourced.
-2.2 User run scripts
-~~~~~~~~~~~~~~~~~~~~
+User run scripts
+~~~~~~~~~~~~~~~~
The SALOME user can use 4 scripts:
@@ -143,8 +132,8 @@ runTests
and port number), runTests defines a new configuration for naming service
(new port number).
-2.3 SALOME internal run scripts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+SALOME internal run scripts
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
envd
Sets SALOME application environment, envd is sourced by other scripts.
@@ -156,8 +145,8 @@ runRemote.sh
define the hostname and port userd for naming service, the remaining
arguments define the command to execute.
-2.4 Other configuration files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Other configuration files
+~~~~~~~~~~~~~~~~~~~~~~~~~
SalomeApp.xml
This file is similar to the default given
diff --git a/doc/index.txt b/doc/index.txt
new file mode 100644
index 000000000..aebc24f86
--- /dev/null
+++ b/doc/index.txt
@@ -0,0 +1,86 @@
+
+=================================================================
+General information, for developpers and users
+=================================================================
+
+.. contents::
+.. sectnum::
+
+
+*html version of this document is produced with docutils*::
+
+ rst2html < doc.txt > doc.html
+
+This document corresponds to SALOME2 3.1. (alpha version)
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+Developpers and users, which documentation ?
+============================================
+
+Following your kind of usage of SALOME, you will find some specific
+introductory documentation, listed below.
+
+Module maintainer
+-----------------
+Module maintainers are in charge of the development and debug of the SALOME
+modules. Each SALOME module is stored in a CVS base. CVS bases are organised
+in separate branches for developments and debug. All official or development
+releases are identified by a CVS tag.
+
+
+Application Integrator
+----------------------
+
+Applications integrators are in charge of configuration and installation of
+specific SALOME applications over a local network. Application Integrators
+built SALOME modules binaries from sources tarballs.
+
+End user
+--------
+
+The end user may have to configure his own SALOME applicatin by selection of a
+subset of availables SALOME modules. He also may want to install his
+application on several computers.
+
+
+Documentation for developpers and module maintainers
+====================================================
+
+Source code structuration and Unit Tests
+----------------------------------------
+
+See UnitTests_ for general information on code directories structure,
+unit tests associated to the different kind of classes, and how to run
+the unit tests.
+
+.. _UnitTests: ./UnitTests.html
+
+Documentation for application integrators and adminstrators
+===========================================================
+
+How to install SALOME
+---------------------
+
+See INSTALL_ for general information on required configuration and
+prerequisites, compilation procedure, setting environment principles.
+
+.. _INSTALL: ./INSTALL.html
+
+How to run SALOME on one or more computers, SALOME Application concept
+----------------------------------------------------------------------
+
+See SALOME_Application_ to define your own configuration of SALOME and run it
+on one or several computers. This is the recommended way of configuration.
+
+.. _SALOME_Application: ./SALOME_Application.html
+
+
+End User documentation
+======================
+
+link to end user documentation.
+
+
diff --git a/doc/kernel_resources.txt b/doc/kernel_resources.txt
new file mode 100644
index 000000000..2c65d2236
--- /dev/null
+++ b/doc/kernel_resources.txt
@@ -0,0 +1,491 @@
+======================================================================
+SALOME Kernel resources for developer
+======================================================================
+
+*html version of this document is produced with docutils*::
+
+ rst2html doc.txt > doc.html
+
+:Authors:
+ Antoine Yessayan,
+ Paul Rascle
+
+:Version: 0.3 - february 17, 2006
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+**Abstract**
+
+This document describes the development environment for
+C++ and Python. Makefiles generation and usage are
+introduced in another document: "using the SALOME
+configuration and building system environment".
+Development environment is intended here as: trace and
+debug macros usage; SALOME exceptions usage, in C++ and
+Python; user CORBA exceptions usage, in C++ and Python,
+with and without Graphical User Interface; some general
+purpose services such as singleton, used for CORBA
+connection and disconnection.
+
+.. contents::
+.. sectnum::
+
+Trace and debug Utilities
+=========================
+
+During the development process, an execution log is
+useful to identify problems. This log contains
+messages, variables values, source files names and line
+numbers. It is recommended to verify assertions on
+variables values and if necessary, to stop the
+execution at debug time, in order to validate all parts
+of code.
+
+Two modes: debug and release
+----------------------------
+
+The goal of debug mode is to check as many features as
+possible during the early stages of the development
+process. The purpose of the utilities provided in
+SALOME is to help the developer to add detailed traces
+and check variables values, without writing a lot of code.
+
+When the code is assumed to be valid, the release mode
+optimizes execution, in terms of speed, memory, and
+display only user level messages.
+
+But, some informations must always be displayed in both
+modes: especially messages concerning environment or
+internal errors, with version identification. When an
+end user is confronted to such a message, he may refer
+to a configuration documentation or send the message to
+the people in charge of SALOME installation, or to the
+development team, following the kind of error.
+
+C++ Macros for trace and debug
+------------------------------
+
+SALOME provides C++ macros for trace and debug. These
+macros are in::
+
+ KERNEL_SRC/src/SALOMELocalTrace/utilities.h
+
+This file must be included in C++ source. Some
+macros are activated only in debug mode, others are
+always activated. To activate the debug mode, ``_DEBUG_``
+must be defined, which is the case when SALOME
+Makefiles are generated from configure, without
+options. When ``_DEBUG_`` is undefined (release mode:
+``configure --disable-debug --enable-production``), the
+debug mode macros are defined empty (they do nothing).
+So, when switching from debug to release, it is
+possible (and recommended) to let the macro calls
+unchanged in the source.
+
+All the macros generate trace messages, stored in a
+circular buffer pool. A separate thread reads the
+messages in the buffer pool, and, depending on options
+given at SALOME start, writes the messages on the
+standard output, a file, or send them via CORBA, in
+case of a multi machine configuration.
+
+Three informations are systematically added in front of
+the information displayed:
+
+* the thread number from which the message come from;
+
+* the name of the source file in which the macros is set;
+
+* the line number of the source file at which the macro
+ is set.
+
+Macros defined in debug and release modes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**INFOS_COMPILATION**
+ The C++ macro INFOS_COMPILATION writes on the trace
+ buffer pool informations about the compiling process:
+
+ * the name of the compiler : g++, KCC, CC, pgCC;
+
+ * the date and the time of the compiling processing process.
+
+ This macro INFOS_COMPILATION does not have any
+ argument. Moreover, it is defined in both compiling
+ mode : _DEBUG_ and _RELEASE_.
+
+ Example::
+
+ #include "utilities.h"
+ int main(int argc , char **argv)
+ {
+ INFOS_COMPILATION;
+ ...
+ }
+ INFOS(str)
+
+**INFOS**
+ In both compiling mode _DEBUG_ and _RELEASE_, The C++
+ macro INFOS writes on the trace buffer pool the string
+ which has been passed in argument by the user.
+
+ Example::
+
+ #include "utilities.h"
+ int main(int argc , char **argv)
+ {
+ ...
+ INFOS("NORMAL END OF THE PROCESS");
+ return 0;
+ }
+
+ displays::
+
+ main.cxx [5] : NORMAL END OF THE PROCESS
+
+
+**INTERRUPTION(str)**
+ In both compiling mode _DEBUG_ and _RELEASE_, The C++
+ macro INTERRUPTION writes on the trace buffer pool the
+ string, with a special ABORT type. When the thread in
+ charge of collecting messages finds this message, it
+ terminates the application, after message treatment.
+
+**IMMEDIATE_ABORT(str)**
+ In both compiling mode _DEBUG_ and _RELEASE_, The C++
+ macro IMMEDIATE_ABORT writes the message str immediately on
+ standard error and exits the application. Remaining
+ messages not treated by the message collector thread
+ are lost.
+
+Macros defined only in debug mode
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**MESSAGE(str)**
+ In _DEBUG_ compiling mode only, the C++ macro MESSAGE
+ writes on the trace buffer pool the string which has
+ been passed in argument by the user. In _RELEASE_
+ compiling mode, this macro is blank.
+
+ Example::
+
+ #include "utilities.h"
+ #include
+
+ using namespace std;
+
+ int main(int argc , char **argv)
+ {
+ ...
+ const char *str = "Salome";
+ MESSAGE(str);
+ ... const string st;
+ st = "Aster";
+ MESSAGE(c_str(st+" and CASTEM"));
+ return 0;
+ }
+
+ displays::
+
+ - Trace main.cxx [8] : Salome
+ - Trace main.cxx [12] : Aster and CASTEM
+
+**BEGIN_OF(func_name)**
+ In _DEBUG_ compiling mode, The C++ macro BEGIN_OF
+ appends the string "Begin of " to the one passed in
+ argument by the user and displays the result on the
+ trace buffer pool. In _RELEASE_ compiling mode, this
+ macro is blank.
+
+ Example::
+
+ #include "utilities.h"
+ int main(int argc , char **argv)
+ {
+ BEGIN_OF(argv[0]);
+ return 0;
+ }
+
+ displays::
+
+ - Trace main.cxx [3] : Begin of a.out
+
+
+**END_OF(func_name)**
+ In _DEBUG_ compiling mode, The C++ macro END_OF appends
+ the string "Normal end of " to the one passed in
+ argument by the user and displays the result on the
+ trace buffer pool. In _RELEASE_ compiling mode, this
+ macro is blank.
+
+ Example::
+
+ #include "utilities.h"
+ int main(int argc , char **argv)
+ {
+ END_OF(argv[0]);
+ return 0;
+ }
+
+ displays::
+
+ - Trace main.cxx [4] : Normal end of a.out
+
+**SCRUTE(var)**
+ In _DEBUG_ compiling mode, The C++ macro SCRUTE
+ displays its argument which is an application variable
+ followed by the value of the variable. In _RELEASE_
+ compiling mode, this macro is blank.
+
+ Example::
+
+ #include "utilities.h"
+ int main(int argc , char **argv)
+ {
+ const int i=999;
+ if( i > 0 ) SCRUTE(i) ; i=i+1;
+ return 0;
+ }
+
+ displays::
+
+ - Trace main.cxx [5] : i=999
+
+**ASSERT(condition)**
+ In _DEBUG_ compiling mode only, The C++ macro ASSERT
+ checks the expression passed in argument to be not
+ NULL. If it is NULL the condition is written with the
+ macro INTERRUPTION (see above). The process exits after
+ trace of this last message. In _RELEASE_ compiling
+ mode, this macro is blank. N.B. : if ASSERT is already
+ defined, this macro is ignored.
+
+ Example::
+
+ #include "utilities.h"
+ ...
+ const char *ptrS = fonc();
+ ASSERT(ptrS!=NULL);
+ cout << strlen(ptrS);
+ float table[10];
+ int k;
+ ...
+ ASSERT(k<10);
+ cout << table[k];
+
+Exceptions
+==========
+
+C++ exceptions: class SALOME_Exception
+--------------------------------------
+
+definition
+~~~~~~~~~~
+
+The class SALOME_Exception provides a generic method to
+send a message, with optional source file name and line
+number. This class is intended to serve as a base class
+for all kinds of exceptions SALOME code. All the
+exceptions derived from SALOME_Exception could be
+handled in a single catch, in which the message
+associated to the exception is displayed, or sent to a
+log file.
+
+The class SALOME_Exception inherits its behavior from
+the STL class exception.
+
+usage
+~~~~~
+
+The header SALOME/src/utils/utils_SALOME_Exception.hxx
+must be included in the C++ source, when raised or trapped::
+
+ #include "utils_SALOME_Exception.hxx"
+
+The SALOME_Exception constructor is::
+
+ SALOME_Exception( const char *text,
+ const char *fileName=0,
+ const unsigned int lineNumber=0 );
+
+The exception is raised like this::
+
+ throw SALOME_Exception("my pertinent message");
+
+or like this::
+
+ throw SALOME_Exception(LOCALIZED("my pertinent message"));
+
+where LOCALIZED is a macro provided with
+``utils_SALOME_Exception.hxx`` which gives file name and
+line number.
+
+The exception is handled like this::
+
+ try
+ {
+ ...
+ }
+ catch (const SALOME_Exception &ex)
+ {
+ cerr << ex.what() <::Instance() ;
+ assert(ptrPoint!=NULL) ;
+
+No need to delete ptrPoint. Deletion is achieved
+automatically at exit. If the user tries to create more
+than one singleton by using the class method
+SINGLETON_::Instance(), the pointer is returned
+with the same value even if this is done in different
+functions (threads ?)::
+
+ POINT *p1=SINGLETON_::Instance() ;
+ ...
+ POINT *p2=SINGLETON_::Instance() ;
+
+ assert(p1==p2)
+
+Design description
+~~~~~~~~~~~~~~~~~~
+
+Here are the principles features of the singleton
+design:
+
+* the user creates an object of class TYPE by using the
+ class method ``SINGLETON_::Instance()`` which
+ returns a pointer to the single object ;
+
+* to create an object, ``SINGLETON_::Instance()``
+ uses the default constructor of class TYPE ;
+
+* at the same time, this class method creates a
+ destructor object which is added to the generic list
+ of destructor objects to be executed at the end of
+ the application (atexit) ;
+
+* at the end of the application process all the
+ deletions are performed by the ``Nettoyage()`` C function
+ which executes the destruction objects end then
+ deletes the destructions objects themselves ;
+
+* the ``Nettoyage()`` C function using ``atexit()`` C function
+ is embedded in a static single object ``ATEXIT_()``.
diff --git a/doc/rst.css b/doc/rst.css
new file mode 100644
index 000000000..eb02941b5
--- /dev/null
+++ b/doc/rst.css
@@ -0,0 +1,288 @@
+/*
+:Authors: David Goodger, David Abrahams
+:Contact: goodger@users.sourceforge.net, dave@boost-consulting.com
+:date: $Date$
+:version: $Revision$
+:copyright: This stylesheet has been placed in the public domain.
+
+This stylesheet is for the use of ReStructuredText in a Boost context.
+It is basically an agglomeration of boost.css and the default.css that
+comes from docutils.
+
+ */
+
+.first {
+ margin-top: 0 }
+
+.last {
+ margin-bottom: 0 }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: #00008B }
+
+dd {
+ margin-bottom: 0.5em }
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.attention, div.caution, div.danger, div.error, div.hint,
+div.important, div.note, div.tip, div.warning, div.admonition {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.hint p.admonition-title, div.important p.admonition-title,
+div.note p.admonition-title, div.tip p.admonition-title,
+div.admonition p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em }
+
+div.footer, div.header {
+ font-size: smaller }
+
+div.sidebar {
+ margin-left: 1em ;
+ border: medium outset ;
+ padding: 0em 1em ;
+ background-color: #ffffee ;
+ width: 40% ;
+ float: right ;
+ clear: right }
+
+div.sidebar p.rubric {
+ font-family: sans-serif ;
+ font-size: medium }
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+H1.title
+{
+ FONT-SIZE: 200%;
+ COLOR: #00008B;
+ text-align: center
+}
+H1
+{
+ FONT-SIZE: 150%;
+}
+H2
+{
+ FONT-SIZE: 125%;
+}
+h2.subtitle {
+ text-align: center }
+H3
+{
+ FONT-SIZE: 108%;
+}
+BODY
+{
+ FONT-SIZE: 100%;
+ BACKGROUND-COLOR: #ffffff;
+}
+PRE
+{
+ MARGIN-LEFT: 2em;
+ FONT-FAMILY: Courier;
+}
+CODE
+{
+ FONT-FAMILY: Courier;
+ white-space: pre;
+}
+.pre
+{
+ FONT-FAMILY: Courier;
+ white-space: pre;
+}
+.index
+{
+ TEXT-ALIGN: left;
+}
+.page-index
+{
+ TEXT-ALIGN: left;
+}
+.definition
+{
+ TEXT-ALIGN: left;
+}
+.footnote
+{
+ FONT-SIZE: 66%;
+ VERTICAL-ALIGN: super;
+ TEXT-DECORATION: none;
+}
+.function-semantics
+{
+ CLEAR: left;
+}
+
+hr {
+ width: 75% }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p.attribution {
+ text-align: right ;
+ margin-left: 50% }
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: smaller }
+
+p.label {
+ white-space: nowrap }
+
+p.rubric {
+ font-weight: bold ;
+ font-size: larger ;
+ color: maroon ;
+ text-align: center }
+
+p.sidebar-title {
+ font-family: sans-serif ;
+ font-weight: bold ;
+ font-size: larger }
+
+p.sidebar-subtitle {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+p.topic-title {
+ font-weight: bold }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+ font-size: 100% }
+
+pre.line-block {
+ font-family: serif ;
+ font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em ;
+ font-size: 80%;
+ border: solid thin gray ;
+ background-color: #eeeeee }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option {
+ white-space: nowrap }
+
+span.option-argument {
+ font-style: italic }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+table {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.citation {
+ border-left: solid thin gray ;
+ padding-left: 0.5ex }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.footnote {
+ border-left: solid thin black ;
+ padding-left: 0.5ex }
+
+td, th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+th.docinfo-name, th.field-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap }
+
+/*
+ dwa 2003/7/29 -- commented out so that it wouldn't override earlier
+ styles from boost.css
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ font-size: 100% }
+*/
+
+ul.auto-toc {
+ list-style-type: none }
diff --git a/doc/salome/DevelopersGuide/Makefile.am b/doc/salome/DevelopersGuide/Makefile.am
new file mode 100644
index 000000000..05493e641
--- /dev/null
+++ b/doc/salome/DevelopersGuide/Makefile.am
@@ -0,0 +1,33 @@
+# -* Makefile *-
+#
+# Author : Paul RASCLE (EDF)
+# Date : 16/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+TEX=DevelopersGuide.tex
+TEX_PS=$(TEX:%.tex=%.ps)
+TEX_PDF=$(TEX:%.tex=%.pdf)
+
+#userdoc: $(TEX_PS) $(TEX_PDF)
+userdoc:
+ @echo document tex a revoir
+
+clean:
+ \rm -f *~ *.bak *.aux *.log *.dvi *.toc $(TEX:%.tex=%.out)
+ \rm -f dummy thumb*
+
+
+SUFFIXES = .tex .dvi .ps .pdf
+
+#implicits rules
+.tex.dvi: clean
+ $(LATEX) $<
+
+.dvi.ps:
+ $(DVIPS) $< -o $@
+
+.tex.pdf: clean
+ $(PDFLATEX) $<
diff --git a/doc/salome/DevelopersGuide/Makefile.in b/doc/salome/DevelopersGuide/Makefile.in
deleted file mode 100644
index be472d9a6..000000000
--- a/doc/salome/DevelopersGuide/Makefile.in
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : Makefile.in
-# Author : Patrick GOLDBRONN (CEA)
-# Module : doc
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-TEX=DevelopersGuide.tex
-TEX_PS=$(TEX:%.tex=%.ps)
-TEX_PDF=$(TEX:%.tex=%.pdf)
-
-.SUFFIXES: .tex .dvi .ps .pdf
-
-docs: $(TEX_PS) clean $(TEX_PDF) clean
-
-clean:
- \rm -f *~ *.bak *.aux *.log *.dvi *.toc $(TEX:%.tex=%.out)
- \rm -f dummy thumb*
-
-distclean: clean
- \rm -f $(TEX_PS) $(TEX_PDF)
-
-install:
-
-#implicits rules
-.tex.dvi: clean
- @[ "x@LATEX@" != "x" ] && [ latex $< ] || \
- echo "Can'not execute .tex.dvi rule"
-
-.dvi.ps:
- @[ "x@DVIPS@" != "x" ] && [ dvips $< -o $@ ] || \
- echo "Can'not execute .dvi.ps rule"
-
-.tex.pdf: clean
- @[ "x@PDFLATEX@" != "x" ] && [ pdflatex $< ] || \
- echo "Can'not execute .tex.pdf rule"
-
diff --git a/doc/salome/KernelResources/kernel_resources-1.html b/doc/salome/KernelResources/kernel_resources-1.html
deleted file mode 100644
index 562ffa05b..000000000
--- a/doc/salome/KernelResources/kernel_resources-1.html
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
- SALOME Kernel resources for developer: Trace and debug Utilities
-
-
-
-
-
-Next
-Previous
-Contents
-
-
-
-During the development process, an execution log is useful to
-identify problems. This log contains messages, variables values,
-source files names and line numbers. It is recommended to verify
-assertions on variables values and if necessary, to stop the execution
-at debug time, in order to validate all parts of code.
-
-
-
-The goal of debug mode is to check as many features as possible
-during the early stages of the development process. The purpose of
-the utilities provided in SALOME is to help the developer to add
-detailed traces and check variables values, without writing a lot
-of code.
-
-When the code is assumed to be valid, the release mode optimizes
-execution, in terms of speed, memory, and display only user level
-messages.
-
-But, some informations must always be displayed in both modes:
-especially messages concerning environment or internal errors, with
-version identification. When an end user is confronted to such a
-message, he may refer to a configuration documentation or send the
-message to the people in charge of SALOME installation, or to the
-development team, following the kind of error.
-
-
-
-SALOME provides C++ macros for trace and debug. These macros
-are in SALOME/src/SALOMELocalTrace/utilities.h
and this file must
-be included in C++ source. Some macros are activated only in debug
-mode, others are always activated. To activate the debug mode, _DEBUG_
-must be defined, which is the case when SALOME Makefiles are generated
-from configure, without options. When _DEBUG_
is undefined (release
-mode: configure --disable-debug --enable-production
), the debug mode
-macros are defined empty (they do nothing). So, when switching from
-debug to release, it is possible (and recommended) to let the macro
-calls unchanged in the source.
-
-All the macros generate trace messages, stored in a circular
-buffer pool. A separate thread reads the messages in the buffer pool,
-and, depending on options given at SALOME start, writes the messages
-on the standard output, a file, or send them via CORBA, in case of
-a multi machine configuration.
-
-Three informations are systematically added in front of the information
-displayed:
-
-
-
-the thread number from which the message come from;
-the name of the source file in which the macros is set;
-the line number of the source file at which the macro is set.
-
-
-
-Macros defined in debug and release modes
-
-INFOS_COMPILATION
-
-The C++ macro INFOS_COMPILATION
writes on the trace buffer pool
-informations about the compiling process:
-
-
-
-the name of the compiler : g++, KCC, CC, pgCC
;
-the date and the time of the compiling processing process.
-
-
-
-This macro INFOS_COMPILATION
does not have any argument. Moreover,
-it is defined in both compiling mode : _DEBUG_
and _RELEASE_
.
-
-Example :
-
-
-
-#include "utilities.h"
-int main(int argc , char **argv)
-{
- INFOS_COMPILATION;
- ...
-}
-
-
-INFOS(str)
-
-In both compiling mode _DEBUG_
and _RELEASE_
, The C++ macro INFOS
-writes on the trace buffer pool the string which has been passed
-in argument by the user.
-
-Example :
-
-
-
-#include "utilities.h"
-int main(int argc , char **argv)
-{
- ...
- INFOS("NORMAL END OF THE PROCESS");
- return 0;
-}
-
-
-displays :
-
-
-
-main.cxx [5] : NORMAL END OF THE PROCESS
-
-
-
-INTERRUPTION(str)
-
-In both compiling mode _DEBUG_
and _RELEASE_
, The C++ macro INTERRUPTION
-writes on the trace buffer pool the string, with a special ABORT
-type. When the thread in charge of collecting messages finds this
-message, it terminates the application, after message treatment.
-
-IMMEDIATE_ABORT(str)
-
-In both compiling mode _DEBUG_
and _RELEASE_
, The C++ macro IMMEDIATE_ABORT
-writes the message immediately on standard error and exits the application.
-Remaining messages not treated by the message collector thread are
-lost.
-
-Macros defined only in debug mode
-
-MESSAGE(str)
-
-In _DEBUG_
compiling mode only, the C++ macro MESSAGE
writes
-on the trace buffer pool the string which has been passed in argument
-by the user. In _RELEASE_
compiling mode, this macro is blank.
-
-Example :
-
-
-
-#include "utilities.h"
-#include <string>
-using namespace std;
-int main(int argc , char **argv)
-{
- ...
- const char *str = "Salome";
- MESSAGE(str);
- ... const string st;
- st = "Aster";
- MESSAGE(c_str(st+" and CASTEM"));
- return 0;
-}
-
-
-displays :
-
-
-
-- Trace main.cxx [8] : Salome
-- Trace main.cxx [12] : Aster and CASTEM
-
-
-BEGIN_OF(func_name)
-
-In _DEBUG_
compiling mode, The C++ macro BEGIN_OF
appends the
-string "Begin of "
to the one passed in argument by the
-user and displays the result on the trace buffer pool. In _RELEASE_
-compiling mode, this macro is blank.
-
-Example :
-
-
-
-#include "utilities.h"
-int main(int argc , char **argv)
-{
- BEGIN_OF(argv[0]);
- return 0;
-}
-
-
-displays :
-
-
-
-- Trace main.cxx [3] : Begin of a.out
-
-
-END_OF(func_name)
-
-In _DEBUG_
compiling mode, The C++ macro END_OF
appends the string
-"Normal end of "
to the one passed in argument by the user
-and displays the result on the trace buffer pool. In _RELEASE_
compiling
-mode, this macro is blank.
-
-Example :
-
-
-
-#include "utilities.h"
-int main(int argc , char **argv)
-{
- END_OF(argv[0]);
- return 0;
-}
-
-
-displays :
-
-
-
-- Trace main.cxx [4] : Normal end of a.out
-
-
-SCRUTE(var)
-
-In _DEBUG_
compiling mode, The C++ macro SCRUTE
displays its
-argument which is an application variable followed by the value of
-the variable. In _RELEASE_
compiling mode, this macro is blank.
-
-Example :
-
-
-
-#include "utilities.h"
-int main(int argc , char **argv)
-{
- const int i=999;
- if( i > 0 ) SCRUTE(i) ; i=i+1;
- return 0;
-}
-
-
-displays :
-
-
-
-- Trace main.cxx [5] : i=999
-
-
-ASSERT(condition)
-
-In _DEBUG_
compiling mode only, The C++ macro ASSERT
checks the
-expression passed in argument to be not NULL. If it is NULL the condition
-is written with the macro INTERRUPTION
(see above). The process exits
-after trace of this last message. In _RELEASE_
compiling mode, this
-macro is blank. N.B. : if ASSERT
is already defined, this macro is
-ignored.
-
-Example :
-
-
-
-#include "utilities.h"
-...
-const char *ptrS = fonc();
-ASSERT(ptrS!=NULL);
-cout << strlen(ptrS);
-float table[10];
-int k;
-...
-ASSERT(k<10);
-cout << table[k];
-
-
-
-Next
-Previous
-Contents
-
-
diff --git a/doc/salome/KernelResources/kernel_resources-2.html b/doc/salome/KernelResources/kernel_resources-2.html
deleted file mode 100644
index 62acf8ca3..000000000
--- a/doc/salome/KernelResources/kernel_resources-2.html
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
- SALOME Kernel resources for developer: Exceptions
-
-
-
-
-
-Next
-Previous
-Contents
-
-
-
-
-
-definition
-
-The class SALOME_Exception
provides a generic method to send
-a message, with optional source file name and line number. This class
-is intended to serve as a base class for all kinds of exceptions
-SALOME code. All the exceptions derived from SALOME_Exception
could
-be handled in a single catch, in which the message associated to
-the exception is displayed, or sent to a log file.
-
-The class SALOME_Exception
inherits its behavior from the STL
-class exception.
-
-usage
-
-The header SALOME/src/utils/utils_SALOME_Exception.hxx
must be
-included in the C++ source, when raised or trapped:
-
-#include
"utils_SALOME_Exception.hxx
"
-
-The SALOME_Exception
constructor is:
-
-
-
-SALOME_Exception( const char *text,
- const char *fileName=0,
- const unsigned int lineNumber=0 );
-
-
-The exception is raised like this:
-
-
-
-throw SALOME_Exception("my pertinent message");
-
-
-or like this:
-
-
-
-throw SALOME_Exception(LOCALIZED("my pertinent message"));
-
-
-where LOCALIZED is a macro provided with utils_SALOME_Exception.hxx
-which gives file name and line number.
-
-The exception is handled like this:
-
-
-
-try
- {
- ...
- }
-catch (const SALOME_Exception &ex)
- {
- cerr << ex.what() <<endl;
- }
-
-
-The what()
method overrides the one defined in the STL exception
-class.
-
-
-
-definition
-
-The idl SALOME_Exception
provides a generic CORBA exception for
-SALOME, with an attribute that gives an exception type,a message,
-plus optional source file name and line number.
-
-This idl is intended to serve for all user CORBA exceptions raised
-in SALOME code, as IDL specification does not support exception inheritance.
-So, all the user CORBA exceptions from SALOME could be handled in
-a single catch.
-
-The exception types defined in idl are:
-
-
-
-COMM CORBA communication problem,
-BAD_PARAM Bad User parameters,
-INTERNAL_ERROR application level problem (often irrecoverable).
-
-
-
-CORBA system and user exceptions already defined in the packages
-used within SALOME, such as OmniORB exceptions, must be handled separately.
-
-usage
-
-CORBA servant, C++
-
-The CORBA Server header for SALOME_Exception
and a macro to throw
-the exception are provided with the header SALOME/src/Utils/Utils_CorbaException.hxx
:
-
-
-
-#include "Utils_CorbaException.hxx"
-
-
-The exception is raised with a macro which appends file name
-and line number.
-
-
-
-if (myStudyName.size() == 0)
- THROW_SALOME_CORBA_EXCEPTION("No Study Name given", \
- SALOME::BAD_PARAM);
-
-
-CORBA Client, GUI Qt C++
-
-The CORBA Client header for SALOME_Exception
and a Qt function
-header that displays a message box are provided in SALOME/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx
:
-
-
-
-#include "SALOMEGUI_QtCatchCorbaException.hxx"
-
-
-A typical exchange with a CORBA Servant will be:
-
-
-
-try
- {
- ... // one ore more CORBA calls
- }
-catch (const SALOME::SALOME_Exception & S_ex)
- {
- QtCatchCorbaException(S_ex);
- }
-
-
-
-CORBA Client, C++, without GUI
-
-Nothing specific has been provided to the developer yet. See
-the idl or the Qt function SALOMEGUI_QtCatchCorbaException.hxx
to
-see how to get the information given by the exception object.
-
-
-Next
-Previous
-Contents
-
-
diff --git a/doc/salome/KernelResources/kernel_resources-3.html b/doc/salome/KernelResources/kernel_resources-3.html
deleted file mode 100644
index 27f61e78f..000000000
--- a/doc/salome/KernelResources/kernel_resources-3.html
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
- SALOME Kernel resources for developer: Miscellaneous tools
-
-
-
-
-Next
-Previous
-Contents
-
-
-
-
-
-Definition
-
-A singleton is an application data which is created and deleted
-only once at the end of the application process. The C++ compiler
-allows the user to create a static singleton data before the first
-executable statement. They are deleted after the last statement execution.
-
-The SINGLETON_
template class deals with dynamic singleton. It
-is useful for functor objects. For example, an object that connects
-the application to a system at creation and disconnects the application
-at deletion.
-
-Usage
-
-To create a single instance a POINT object :
-
-
-
-# include "Utils_SINGLETON.hxx"
-...
-POINT *ptrPoint=SINGLETON_<POINT>::Instance() ;
-assert(ptrPoint!=NULL) ;
-
-
-No need to delete ptrPoint. Deletion is achieved automatically
-at exit. If the user tries to create more than one singleton by using
-the class method SINGLETON_<TYPE>::Instance()
, the pointer
-is returned with the same value even if this is done in different
-functions (threads ?).
-
-
-
-POINT *p1=SINGLETON_<POINT>::Instance() ;
-...
-POINT *p2=SINGLETON_<POINT>::Instance() ;
-assert(p1==p2)
-
-
-Design description
-
-Here are the principles features of the singleton design :
-
-
-
-the user creates an object of class TYPE
by using the class method
-SINGLETON_<TYPE>::Instance()
which returns a pointer to the
-single object ;
-to create an object, SINGLETON_<TYPE>::Instance()
uses
-the default constructor of class TYPE
;
-at the same time, this class method creates a destructor object
-which is added to the generic list of destructor objects to be executed
-at the end of the application (atexit
) ;
-at the end of the application process all the deletions are performed
-by the Nettoyage()
C function which executes the destruction objects
-end then deletes the destructions objects themselves ;
-the Nettoyage()
C function using atexit() C function is embedded
-in a static single object ATEXIT_()
.
-
-
-
-
-
-
-
-Next
-Previous
-Contents
-
-
diff --git a/doc/salome/KernelResources/kernel_resources.html b/doc/salome/KernelResources/kernel_resources.html
deleted file mode 100644
index e3819dc56..000000000
--- a/doc/salome/KernelResources/kernel_resources.html
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
- SALOME Kernel resources for developer
-
-
-
-
-
-Next
-Previous
-Contents
-
-SALOME Kernel resources for developer
-
-Antoine Yessayan, Paul Rascle Version 0.2 January 28, 2005
-
-ABSTRACT
-
-
-This document describes the development environment for C++ and
- Python. Makefiles generation and usage are introduced in another
- document: "using the SALOME configuration and building system environment".
- Development environment is intended here as: trace and debug macros
- usage; SALOME exceptions usage, in C++ and Python; user CORBA exceptions
- usage, in C++ and Python, with and without Graphical User Interface;
- some general purpose services such as singleton, used for CORBA connection
- and disconnection.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Next
-Previous
-Contents
-
-
diff --git a/doc/salome/KernelResources/kernel_resources.lyx b/doc/salome/KernelResources/kernel_resources.lyx
deleted file mode 100644
index 2c5935eab..000000000
--- a/doc/salome/KernelResources/kernel_resources.lyx
+++ /dev/null
@@ -1,976 +0,0 @@
-#LyX 1.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 221
-\textclass linuxdoc
-\language english
-\inputencoding default
-\fontscheme default
-\graphics default
-\paperfontsize 10
-\spacing single
-\papersize Default
-\paperpackage a4
-\use_geometry 0
-\use_amsmath 0
-\use_natbib 0
-\use_numerical_citations 0
-\paperorientation portrait
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\quotes_times 2
-\papercolumns 1
-\papersides 1
-\paperpagestyle default
-
-\layout Title
-\added_space_top vfill \added_space_bottom vfill
-SALOME Kernel resources for developer
-\layout Author
-
-Antoine Yessayan, Paul Rascle
-\layout Date
-
-Version 0.2 January 28, 2005
-\layout Abstract
-
-ABSTRACT
-\layout Abstract
-
-This document describes the development environment for C++ and Python.
- Makefiles generation and usage are introduced in another document:
-\begin_inset Quotes eld
-\end_inset
-
-using the SALOME configuration and building system environment
-\begin_inset Quotes erd
-\end_inset
-
-.
- Development environment is intended here as: trace and debug macros usage;
- SALOME exceptions usage, in C++ and Python; user CORBA exceptions usage,
- in C++ and Python, with and without Graphical User Interface; some general
- purpose services such as singleton, used for CORBA connection and disconnection.
-\layout Standard
-
-
-\begin_inset LatexCommand \tableofcontents{}
-
-\end_inset
-
-
-\layout Section
-
-Trace and debug Utilities
-\layout Standard
-
-During the development process, an execution log is useful to identify problems.
- This log contains messages, variables values, source files names and line
- numbers.
- It is recommended to verify assertions on variables values and if necessary,
- to stop the execution at debug time, in order to validate all parts of
- code.
-\layout Subsection
-
-Two modes: debug and release
-\layout Standard
-
-The goal of debug mode is to check as many features as possible during the
- early stages of the development process.
- The purpose of the utilities provided in SALOME is to help the developer
- to add detailed traces and check variables values, without writing a lot
- of code.
-\layout Standard
-
-When the code is assumed to be valid, the release mode optimizes execution,
- in terms of speed, memory, and display only user level messages.
-\layout Standard
-
-But, some informations must always be displayed in both modes: especially
- messages concerning environment or internal errors, with version identification.
- When an end user is confronted to such a message, he may refer to a configurati
-on documentation or send the message to the people in charge of SALOME installat
-ion, or to the development team, following the kind of error.
-\layout Subsection
-
-C++ Macros for trace and debug
-\layout Standard
-
-SALOME provides C++ macros for trace and debug.
- These macros are in
-\family typewriter
-SALOME/src/SALOMELocalTrace/utilities.h
-\family default
- and this file must be included in C++ source.
- Some macros are activated only in debug mode, others are always activated.
- To activate the debug mode,
-\family typewriter
-_DEBUG_
-\family default
- must be defined, which is the case when SALOME Makefiles are generated
- from configure, without options.
- When
-\family typewriter
-_DEBUG_
-\family default
- is undefined (release mode:
-\family typewriter
-configure --disable-debug --enable-production
-\family default
-), the debug mode macros are defined empty (they do nothing).
- So, when switching from debug to release, it is possible (and recommended)
- to let the macro calls unchanged in the source.
-\layout Standard
-
-All the macros generate trace messages, stored in a circular buffer pool.
- A separate thread reads the messages in the buffer pool, and, depending
- on options given at SALOME start, writes the messages on the standard output,
- a file, or send them via CORBA, in case of a multi machine configuration.
-\layout Standard
-
-Three informations are systematically added in front of the information
- displayed:
-\layout Itemize
-
-the thread number from which the message come from;
-\layout Itemize
-
-the name of the source file in which the macros is set;
-\layout Itemize
-
-the line number of the source file at which the macro is set.
-\layout Subsubsection
-
-Macros defined in debug and release modes
-\layout Paragraph
-
-INFOS_COMPILATION
-\layout Standard
-
-The C++ macro
-\family typewriter
-INFOS_COMPILATION
-\family default
- writes on the trace buffer pool informations about the compiling process:
-
-\layout Itemize
-
-the name of the compiler :
-\family typewriter
-g++, KCC, CC, pgCC
-\family default
-;
-\layout Itemize
-
-the date and the time of the compiling processing process.
-\layout Standard
-
-This macro
-\family typewriter
-INFOS_COMPILATION
-\family default
- does not have any argument.
- Moreover, it is defined in both compiling mode :
-\family typewriter
-_DEBUG_
-\family default
- and
-\family typewriter
-_RELEASE_
-\family default
-.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-int main(int argc , char **argv)
-\layout Verbatim
-
-{
-\layout Verbatim
-
- INFOS_COMPILATION;
-\layout Verbatim
-
- ...
-\layout Verbatim
-
-}
-\layout Paragraph
-
-INFOS(str)
-\layout Standard
-
-In both compiling mode
-\family typewriter
-_DEBUG_
-\family default
- and
-\family typewriter
-_RELEASE_
-\family default
-, The C++ macro
-\family typewriter
-INFOS
-\family default
- writes on the trace buffer pool the string which has been passed in argument
- by the user.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-int main(int argc , char **argv)
-\layout Verbatim
-
-{
-\layout Verbatim
-
- ...
-
-\layout Verbatim
-
- INFOS("NORMAL END OF THE PROCESS");
-\layout Verbatim
-
- return 0;
-\layout Verbatim
-
-}
-\layout Standard
-
-displays :
-\layout Verbatim
-
-main.cxx [5] : NORMAL END OF THE PROCESS
-\layout Verbatim
-
-\layout Paragraph
-
-
-\family roman
-INTERRUPTION(str)
-\layout Standard
-
-In both compiling mode
-\family typewriter
-_DEBUG_
-\family default
- and
-\family typewriter
-_RELEASE_
-\family default
-, The C++ macro
-\family typewriter
-INTERRUPTION
-\family default
- writes on the trace buffer pool the string, with a special
-\family typewriter
-ABORT
-\family default
- type.
- When the thread in charge of collecting messages finds this message, it
- terminates the application, after message treatment.
-\layout Paragraph
-
-IMMEDIATE_ABORT(str)
-\layout Standard
-
-In both compiling mode
-\family typewriter
-_DEBUG_
-\family default
- and
-\family typewriter
-_RELEASE_
-\family default
-, The C++ macro
-\family typewriter
-IMMEDIATE_ABORT
-\family default
- writes the message immediately on standard error and exits the application.
- Remaining messages not treated by the message collector thread are lost.
-\layout Subsubsection
-
-Macros defined only in debug mode
-\layout Paragraph
-
-MESSAGE(str)
-\layout Standard
-
-In
-\family typewriter
-_DEBUG_
-\family default
- compiling mode only, the C++ macro
-\family typewriter
-MESSAGE
-\family default
- writes on the trace buffer pool the string which has been passed in argument
- by the user.
- In
-\family typewriter
-_RELEASE_
-\family default
- compiling mode, this macro is blank.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-#include
-\layout Verbatim
-
-using namespace std;
-\layout Verbatim
-
-int main(int argc , char **argv)
-\layout Verbatim
-
-{
-\layout Verbatim
-
- ...
-
-\layout Verbatim
-
- const char *str = "Salome";
-\layout Verbatim
-
- MESSAGE(str);
-\layout Verbatim
-
- ...
- const string st;
-\layout Verbatim
-
- st = "Aster";
-\layout Verbatim
-
- MESSAGE(c_str(st+" and CASTEM"));
-\layout Verbatim
-
- return 0;
-\layout Verbatim
-
-}
-\layout Standard
-
-displays :
-\layout Verbatim
-
-- Trace main.cxx [8] : Salome
-\layout Verbatim
-
-- Trace main.cxx [12] : Aster and CASTEM
-\layout Paragraph
-
-BEGIN_OF(func_name)
-\layout Standard
-
-In
-\family typewriter
-_DEBUG_
-\family default
- compiling mode, The C++ macro
-\family typewriter
-BEGIN_OF
-\family default
- appends the string
-\family typewriter
-"Begin of "
-\family default
- to the one passed in argument by the user and displays the result on the
- trace buffer pool.
- In
-\family typewriter
-_RELEASE_
-\family default
- compiling mode, this macro is blank.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-int main(int argc , char **argv)
-\layout Verbatim
-
-{
-\layout Verbatim
-
- BEGIN_OF(argv[0]);
-\layout Verbatim
-
- return 0;
-\layout Verbatim
-
-}
-\layout Standard
-
-displays :
-\layout Verbatim
-
-- Trace main.cxx [3] : Begin of a.out
-\layout Paragraph
-
-END_OF(func_name)
-\layout Standard
-
-In
-\family typewriter
-_DEBUG_
-\family default
- compiling mode, The C++ macro
-\family typewriter
-END_OF
-\family default
- appends the string
-\family typewriter
-"Normal end of "
-\family default
- to the one passed in argument by the user and displays the result on the
- trace buffer pool.
- In
-\family typewriter
-_RELEASE_
-\family default
- compiling mode, this macro is blank.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-int main(int argc , char **argv)
-\layout Verbatim
-
-{
-\layout Verbatim
-
- END_OF(argv[0]);
-\layout Verbatim
-
- return 0;
-\layout Verbatim
-
-}
-\layout Standard
-
-displays :
-\layout Verbatim
-
-- Trace main.cxx [4] : Normal end of a.out
-\layout Paragraph
-
-SCRUTE(var)
-\layout Standard
-
-In
-\family typewriter
-_DEBUG_
-\family default
- compiling mode, The C++ macro
-\family typewriter
-SCRUTE
-\family default
- displays its argument which is an application variable followed by the
- value of the variable.
- In
-\family typewriter
-_RELEASE_
-\family default
- compiling mode, this macro is blank.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-int main(int argc , char **argv)
-\layout Verbatim
-
-{
-\layout Verbatim
-
- const int i=999;
-\layout Verbatim
-
- if( i > 0 ) SCRUTE(i) ; i=i+1;
-\layout Verbatim
-
- return 0;
-\layout Verbatim
-
-}
-\layout Standard
-
-displays :
-\layout Verbatim
-
-- Trace main.cxx [5] : i=999
-\layout Paragraph
-
-ASSERT(condition)
-\layout Standard
-
-In
-\family typewriter
-_DEBUG_
-\family default
- compiling mode only, The C++ macro
-\family typewriter
-ASSERT
-\family default
- checks the expression passed in argument to be not NULL.
- If it is NULL the condition is written with the macro
-\family typewriter
-INTERRUPTION
-\family default
- (see above).
- The process exits after trace of this last message.
- In
-\family typewriter
-_RELEASE_
-\family default
- compiling mode, this macro is blank.
- N.B.
- : if
-\family typewriter
-ASSERT
-\family default
- is already defined, this macro is ignored.
-\layout Standard
-
-Example :
-\layout Verbatim
-
-#include "utilities.h"
-\layout Verbatim
-
-...
-
-\layout Verbatim
-
-const char *ptrS = fonc();
-\layout Verbatim
-
-ASSERT(ptrS!=NULL);
-\layout Verbatim
-
-cout << strlen(ptrS);
-\layout Verbatim
-
-float table[10];
-\layout Verbatim
-
-int k;
-\layout Verbatim
-
-...
-
-\layout Verbatim
-
-ASSERT(k<10);
-\layout Verbatim
-
-cout << table[k];
-\layout Section
-
-Exceptions
-\layout Subsection
-
-C++ exceptions: class SALOME_Exception
-\layout Subsubsection
-
-definition
-\layout Standard
-
-The class
-\family typewriter
-SALOME_Exception
-\family default
- provides a generic method to send a message, with optional source file
- name and line number.
- This class is intended to serve as a base class for all kinds of exceptions
- SALOME code.
- All the exceptions derived from
-\family typewriter
-SALOME_Exception
-\family default
- could be handled in a single catch, in which the message associated to
- the exception is displayed, or sent to a log file.
-\layout Standard
-
-The class
-\family typewriter
-SALOME_Exception
-\family default
- inherits its behavior from the STL class exception.
-\layout Subsubsection
-
-usage
-\layout Standard
-
-The header
-\family typewriter
-SALOME/src/utils/utils_SALOME_Exception.hxx
-\family default
- must be included in the C++ source, when raised or trapped:
-\layout Standard
-
-
-\family typewriter
-#include
-\family default
-"
-\family typewriter
-utils_SALOME_Exception.hxx
-\family default
-"
-\layout Standard
-
-The
-\family typewriter
-SALOME_Exception
-\family default
- constructor is:
-\layout Verbatim
-
-SALOME_Exception( const char *text,
-\layout Verbatim
-
- const char *fileName=0,
-\layout Verbatim
-
- const unsigned int lineNumber=0 );
-\layout Standard
-
-The exception is raised like this:
-\layout Verbatim
-
-throw SALOME_Exception("my pertinent message");
-\layout Standard
-
-or like this:
-\layout Verbatim
-
-throw SALOME_Exception(LOCALIZED("my pertinent message"));
-\layout Standard
-
-where LOCALIZED is a macro provided with
-\family typewriter
-utils_SALOME_Exception.hxx
-\family default
- which gives file name and line number.
-\layout Standard
-
-The exception is handled like this:
-\layout Verbatim
-
-try
-\layout Verbatim
-
- {
-\layout Verbatim
-
- ...
-\layout Verbatim
-
- }
-\layout Verbatim
-
-catch (const SALOME_Exception &ex)
-\layout Verbatim
-
- {
-\layout Verbatim
-
- cerr << ex.what() <::Instance() ;
-\layout Verbatim
-
-assert(ptrPoint!=NULL) ;
-\layout Standard
-
-No need to delete ptrPoint.
- Deletion is achieved automatically at exit.
- If the user tries to create more than one singleton by using the class
- method
-\family typewriter
-SINGLETON_::Instance()
-\family default
-, the pointer is returned with the same value even if this is done in different
- functions (threads ?).
-\layout Verbatim
-
-POINT *p1=SINGLETON_::Instance() ;
-\layout Verbatim
-
-...
-
-\layout Verbatim
-
-POINT *p2=SINGLETON_::Instance() ;
-\layout Verbatim
-
-assert(p1==p2)
-\layout Subsubsection
-
-Design description
-\layout Standard
-
-Here are the principles features of the singleton design :
-\layout Itemize
-
-the user creates an object of class
-\family typewriter
-TYPE
-\family default
- by using the class method
-\family typewriter
-SINGLETON_::Instance()
-\family default
- which returns a pointer to the single object ;
-\layout Itemize
-
-to create an object,
-\family typewriter
-SINGLETON_::Instance()
-\family default
- uses the default constructor of class
-\family typewriter
-TYPE
-\family default
- ;
-\layout Itemize
-
-at the same time, this class method creates a destructor object which is
- added to the generic list of destructor objects to be executed at the end
- of the application (
-\family typewriter
-atexit
-\family default
-) ;
-\layout Itemize
-
-at the end of the application process all the deletions are performed by
- the
-\family typewriter
-Nettoyage()
-\family default
- C\SpecialChar ~
-function which executes the destruction objects end then deletes the destructi
-ons objects themselves ;
-\layout Itemize
-
-the
-\family typewriter
-Nettoyage()
-\family default
- C \SpecialChar ~
-function using atexit() C \SpecialChar ~
-function is embedded in a static single object
-
-\family typewriter
-ATEXIT_()
-\family default
-.
-\the_end
diff --git a/doc/salome/Makefile.am b/doc/salome/Makefile.am
new file mode 100644
index 000000000..f718bbc07
--- /dev/null
+++ b/doc/salome/Makefile.am
@@ -0,0 +1,20 @@
+# -* Makefile *-
+#
+# Author : Paul RASCLE (EDF)
+# Date : 16/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+SUBDIRS= tui DevelopersGuide gui
+
+index_html:
+ $(INSTALL) -d $(docdir);
+ cp -f $(srcdir)/KERNEL_index.html $(docdir)
+
+userdoc: index_html
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making userdoc in $$subdir"; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) userdoc) \
+ done;
diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in
deleted file mode 100644
index a57414a82..000000000
--- a/doc/salome/Makefile.in
+++ /dev/null
@@ -1,44 +0,0 @@
-
-# -* Makefile *-
-#
-# Author : Patrick GOLDBRONN (CEA)
-# Date : 30/11/2001
-# $Header$
-#
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-SUBDIRS= tui DevelopersGuide gui
-
-@COMMENCE@
-
-docs:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done; \
- cp -f $(srcdir)/KERNEL_index.html KERNEL_index.html
-
-clean:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-
-distclean: clean
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-
-install:
- $(MAKE) docs
- (cd tui && $(MAKE) install);
- (cd gui && $(MAKE) install);
- cp -f KERNEL_index.html $(docdir)
-
-uninstall:
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done; \
- rm -fr $(docdir)/KERNEL_index.html
diff --git a/doc/salome/gui/Makefile.am b/doc/salome/gui/Makefile.am
new file mode 100644
index 000000000..635272aec
--- /dev/null
+++ b/doc/salome/gui/Makefile.am
@@ -0,0 +1,18 @@
+# -* Makefile *-
+#
+# Author : Paul RASCLE (EDF)
+# Date : 16/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+EXTRA_DIST = $(srcdir)/KERNEL
+
+dist-hook:
+ rm -rf `find $(distdir) -name CVS`
+
+userdoc:
+ $(INSTALL) -d $(docdir)/gui;
+ cp -fr $(srcdir)/KERNEL $(docdir)/gui;
+ rm -rf `find $(docdir)/gui -name CVS`
diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in
deleted file mode 100644
index ec67d8086..000000000
--- a/doc/salome/gui/Makefile.in
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2003 CEA/DEN, EDF R&D
-#
-#
-#
-# File : Makefile.in
-# Author : Vasily Rusyaev (Open Cascade NN)
-# Module : doc
-# $Header:
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-docs:
- cp -fr $(srcdir)/KERNEL ./
- -find $(PWD) -name CVS -exec rm -rf {} \;
-
-clean:
- rm -fr `ls | grep -v "Makefile"`
-
-distclean: clean
- rm -fr KERNEL
-
-install:
- mkdir -p $(docdir)/gui
- cp -rf KERNEL $(docdir)/gui
- -find $(PWD) -name CVS -exec rm -rf {} \;
-
-uninstall:
- rm -rf $(docdir)/gui/KERNEL
diff --git a/doc/salome/kernel_resources.pdf b/doc/salome/kernel_resources.pdf
deleted file mode 100644
index b29cb2c04edc6aa1e2d2d971646dfec77a8845a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 127655
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