From: admin Date: Thu, 8 Jun 2006 10:49:43 +0000 (+0000) Subject: This commit was generated by cvs2git to create branch 'WPdev'. X-Git-Tag: LAST_STABLE_VERSION_21_09_2006_ON_3_2_0~34 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=600f140b12950e86c245df70d5c29f5a55a6130e;p=modules%2Fkernel.git This commit was generated by cvs2git to create branch 'WPdev'. Cherrypick from master 2006-06-08 10:49:38 UTC prascle 'PR: typo': AUTHORS COPYING ChangeLog DEPRECATED/Makefile.in DEPRECATED/configure.in.base DEPRECATED/make_config.in KERNEL_version.h.in Makefile.am NEWS bin/Makefile.am bin/VERSION.in bin/appli_clean.sh bin/appli_install.sh bin/runIDLparser.in bin/runSalome.ksh bin/salome_session.py bin/virtual_salome.py clean_configure configure.ac doc/KERNEL_Services.txt doc/Makefile.am doc/index.txt doc/kernel_resources.txt doc/rst.css doc/salome/Batch.texi doc/salome/Makefile.am doc/salome/tui/KERNEL/doxydev.in doc/salome/tui/KERNEL/doxyfile.in doc/salome/tui/KERNEL/doxyuser.in doc/salome/tui/KERNEL/sources/doxygen.css doc/salome/tui/KERNEL/sources/footer.html doc/salome/tui/KERNEL/sources/html_comments.gif doc/salome/tui/KERNEL/sources/static/tree.js.in doc/salome/tui/Makefile.am doc/salome/version.texi doc/txt2html.sh doc/userguide.txt idl/Makefile.am resources/CatalogResources.xml.in resources/DEPRECATED/Plugin.in resources/KERNELCatalog.xml.in resources/Makefile.am salome_adm/Makefile.am salome_adm/unix/DEPRECATED/Doxyfile salome_adm/unix/DEPRECATED/F77config.h.in salome_adm/unix/DEPRECATED/config.h.in salome_adm/unix/DEPRECATED/depend.in salome_adm/unix/DEPRECATED/envScript.in salome_adm/unix/DEPRECATED/make_commence.in salome_adm/unix/DEPRECATED/make_conclude.in salome_adm/unix/DEPRECATED/make_module.in salome_adm/unix/DEPRECATED/make_omniorb.in salome_adm/unix/DEPRECATED/sstream.in salome_adm/unix/Makefile.am salome_adm/unix/SALOMEconfig.ref.in salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4 salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4 salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4 salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4 salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4 salome_adm/unix/config_files/DEPRECATED/check_Salome.m4 salome_adm/unix/config_files/DEPRECATED/check_java.m4 salome_adm/unix/config_files/DEPRECATED/check_mico.m4 salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4 salome_adm/unix/config_files/DEPRECATED/config.guess salome_adm/unix/config_files/DEPRECATED/config.sub salome_adm/unix/config_files/DEPRECATED/install-sh salome_adm/unix/config_files/DEPRECATED/libtool.m4 salome_adm/unix/config_files/DEPRECATED/ltconfig salome_adm/unix/config_files/DEPRECATED/ltmain.sh salome_adm/unix/config_files/DEPRECATED/missing salome_adm/unix/config_files/DEPRECATED/mkinstalldirs salome_adm/unix/config_files/Makefile.am salome_adm/unix/config_files/acx_pthread.m4 salome_adm/unix/config_files/check_local.m4 salome_adm/unix/make_common_starter.am src/Basics/Makefile.am src/Basics/Test/Makefile.am src/Batch/Batch_BatchManager_Local.cxx src/Batch/Batch_BatchManager_Local.hxx src/Batch/Batch_BatchManager_Local_RSH.cxx src/Batch/Batch_BatchManager_Local_RSH.hxx src/Batch/Batch_BatchManager_Local_SH.cxx src/Batch/Batch_BatchManager_Local_SH.hxx src/Batch/Batch_BatchManager_Local_SSH.cxx src/Batch/Batch_BatchManager_Local_SSH.hxx src/Batch/Batch_FactBatchManager_Local.cxx src/Batch/Batch_FactBatchManager_Local.hxx src/Batch/Batch_FactBatchManager_Local_RSH.cxx src/Batch/Batch_FactBatchManager_Local_RSH.hxx src/Batch/Batch_FactBatchManager_Local_SH.cxx src/Batch/Batch_FactBatchManager_Local_SH.hxx src/Batch/Batch_FactBatchManager_Local_SSH.cxx src/Batch/Batch_FactBatchManager_Local_SSH.hxx src/Batch/Batch_IOMutex.cxx src/Batch/Batch_IOMutex.hxx src/Batch/Batch_JobInfo_Local.cxx src/Batch/Batch_JobInfo_Local.hxx src/Batch/Batch_Job_Local.cxx src/Batch/Batch_Job_Local.hxx src/Batch/Makefile.am src/Batch_SWIG/Makefile.am src/CASCatch/CASCatch.hxx src/CASCatch/Makefile.am src/Communication/Makefile.am src/Communication/MatrixClient.cxx src/Communication/MatrixClient.hxx src/Communication/SALOME_Matrix_i.cxx src/Communication/SALOME_Matrix_i.hxx src/Communication_SWIG/Makefile.am src/Container/Makefile.am src/Container/SALOME_FileRef_i.cxx src/Container/SALOME_FileRef_i.hxx src/Container/SALOME_FileTransfer_i.cxx src/Container/SALOME_FileTransfer_i.hxx src/GenericObj/Makefile.am src/HDFPersist/Makefile.am src/KERNEL_PY/Makefile.am src/KERNEL_PY/iparameters.py src/KERNEL_PY/salome_version.py src/LifeCycleCORBA/Makefile.am src/LifeCycleCORBA/SALOME_FileTransferCORBA.cxx src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx src/LifeCycleCORBA/Test/Makefile.am src/LifeCycleCORBA_SWIG/Makefile.am src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py src/LifeCycleCORBA_SWIG/Test/Makefile.am src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py src/Logger/Makefile.am src/Logger/SALOME_Logger_Server_main.cxx src/Logger/Test/Makefile.am src/MPIContainer/Makefile.am src/Makefile.am src/ModuleCatalog/Makefile.am src/ModuleGenerator/Makefile.am src/NOTIFICATION_SWIG/Makefile.am src/NamingService/Makefile.am src/NamingService/Test/Makefile.am src/Notification/Makefile.am src/Registry/Makefile.am src/ResourcesManager/Makefile.am src/SALOMEDS/Makefile.am src/SALOMEDS/SALOMEDS_AttributeParameter.cxx src/SALOMEDS/SALOMEDS_AttributeParameter.hxx src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx src/SALOMEDS/SALOMEDS_IParameters.cxx src/SALOMEDS/SALOMEDS_IParameters.hxx src/SALOMEDS/SALOMEDS_TMPFile_i.cxx src/SALOMEDS/SALOMEDS_TMPFile_i.hxx src/SALOMEDS/Test/Makefile.am src/SALOMEDS/Test/SALOMEDSTest.cxx src/SALOMEDS/Test/SALOMEDSTest.hxx src/SALOMEDS/Test/TestSALOMEDS.cxx src/SALOMEDS/Test/TestSALOMEDS.py src/SALOMEDSClient/Makefile.am src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx src/SALOMEDSImpl/Makefile.am src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx src/SALOMEDSImpl/Test/Makefile.am src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py src/SALOMELocalTrace/Makefile.am src/SALOMELocalTrace/Test/Makefile.am src/SALOMETraceCollector/Makefile.am src/SALOMETraceCollector/Test/Makefile.am src/TOOLSDS/Makefile.am src/TestContainer/Makefile.am src/TestContainer/TestLogger.py src/TestMPIContainer/Makefile.am src/UnitTests/Makefile.am src/Utils/Makefile.am src/Utils/Test/Makefile.am --- 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/DEPRECATED/Makefile.in b/DEPRECATED/Makefile.in new file mode 100644 index 000000000..3ec8c192e --- /dev/null +++ b/DEPRECATED/Makefile.in @@ -0,0 +1,151 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# 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 +# + http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com# +# -* Makefile *- +# +# Author : Patrick GOLDBRONN (CEA) +# Date : 28/06/2001 +# $Header$ +# + +# source path +top_srcdir=@top_srcdir@ +top_builddir=. +srcdir=@srcdir@ +VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top_srcdir@/idl + + +@COMMENCE@ + +SUBDIRS = idl src doc salome_adm + +RESOURCES_FILES = \ +CatalogDataType.xml \ +KERNELCatalog.xml \ +CatalogResources.xml \ +close.png \ +config \ +channel.cfg \ +SALOMEDS_Resources + +BIN_SCRIPT= \ +runIDLparser \ +VERSION \ +orbmodule.py \ +runSalome.py \ +killSalome.py \ +killSalomeWithPort.py \ +runSalome \ +runSalome.csh \ +runNS.sh \ +createAppli.sh \ +launchConfigureParser.py \ +salome.launch \ +envSalome.py \ +salomeConsole.py \ +showNS.py \ +addToKillList.py + +# copy header files in common directory +include_list=\ + include/salome/SALOMEconfig.h + +inc: idl $(include_list) + +include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref + -$(RM) $@ + $(LN_S) ../../$< $@ + +# test if SALOMEconfig.h has changed (contents) +salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h + @if ! [ -a $@ ]; then \ + cp -p $< $@; \ + fi; \ + if ! cmp $< $@; then \ + cp -p $< $@; \ + fi; \ + +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' + + +DOCFILES=\ + README.FIRST.html + +rstdoc: $(DOCFILES) + (cd doc && $(MAKE) $@) || exit 1 + + +# Install make_commence make_conclude ... for other modules +install-make: + ($(INSTALL) -d $(incmakedir) || exit 1); + (sed 's/^prefix=/#prefix=/' $(top_builddir)/salome_adm/unix/make_commence > $(incmakedir)/make_commence || exit 1); + (sed 's/^prefix=/#prefix=/' $(top_builddir)/salome_adm/unix/make_conclude > $(incmakedir)/make_conclude || exit 1); + + +install-end: +# finish libtool install +# @$(LT) --mode=finish $(libdir) + +install-include: $(include_list) + $(INSTALL) -d $(includedir) + @for f in X $(include_list); do \ + if test $$f != X; then \ + (cp -p $$f $(includedir) || exit 1); \ + fi; \ + done + +# install script in $(bindir) : +install-appliskel: + $(INSTALL) -d $(bindir) + if test -d $(top_builddir)/bin/salome/appliskel; then \ + cp -rp $(top_builddir)/bin/salome/appliskel $(bindir); \ + fi; + +install-bin: $(BIN_SCRIPT) + $(INSTALL) -d $(bindir) + $(INSTALL_PROGRAM) $^ $(bindir) + +# install Plugin file +install-plugin: $(top_builddir)/share/salome/resources/Plugin + ($(INSTALL_DATA) $^ $(datadir)/resources/. || exit 1); \ + +uninstall: uninstall-idl + +uninstall-idl: + $(RM) $(idldir)/*.idl + +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 + -$(RM) config.cache config.log config.status + +@MODULE@ + +$(top_builddir)/share/salome/resources/Plugin: resources/Plugin + cp -f $< $@ ; \ + +resources: $(top_builddir)/share/salome/resources/Plugin + +install: install-bin install-appliskel install-include install-make install-plugin install-end diff --git a/DEPRECATED/configure.in.base b/DEPRECATED/configure.in.base new file mode 100644 index 000000000..1567a6394 --- /dev/null +++ b/DEPRECATED/configure.in.base @@ -0,0 +1,487 @@ +# +# PLEASE DO NOT MODIFY configure.in FILE +# +# ALL CHANGES WILL BE DISCARDED BY THE NEXT +# build_configure COMMAND +# +# CHANGES MUST BE MADE IN configure.in.base FILE +# +# +# Author : Marc Tajchman (CEA) +# Date : 28/06/2001 +# Modified by : Patrick GOLDBRONN (CEA) +# Modified by : Marc Tajchman (CEA) +# +# Created from configure.in.base +# +AS_SHELL_SANITIZES +AC_INIT(src) +AC_CONFIG_AUX_DIR(salome_adm/unix/config_files) +AC_CANONICAL_HOST + +PACKAGE=salome +AC_SUBST(PACKAGE) + +VERSION=3.2.0 +AC_SUBST(VERSION) +XVERSION=0x030200 +AC_SUBST(XVERSION) + +dnl +dnl Initialize source and build root directories +dnl + +ROOT_BUILDDIR=`pwd` +ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` +cd $ROOT_SRCDIR +ROOT_SRCDIR=`pwd` +cd $ROOT_BUILDDIR + +AC_SUBST(ROOT_SRCDIR) +AC_SUBST(ROOT_BUILDDIR) +dnl ########################################################## +AC_SUBST(KERNEL_ROOT_DIR) +dnl ########################################################## + + +echo +echo Source root directory : $ROOT_SRCDIR +echo Build root directory : $ROOT_BUILDDIR +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) + +dnl Export the AR macro so that it will be placed in the libtool file +dnl correctly. +export AR + +echo +echo --------------------------------------------- +echo testing make +echo --------------------------------------------- +echo + +AC_PROG_MAKE_SET +AC_PROG_INSTALL +dnl +dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques ! + +AC_ENABLE_DEBUG(yes) +AC_DISABLE_PRODUCTION + +echo --------------------------------------------- +echo testing libtool +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 + +dnl Fix up the INSTALL macro if it s a relative path. We want the +dnl full-path to the binary instead. +case "$INSTALL" in + *install-sh*) + INSTALL="${ROOT_SRCDIR}/salome_adm/unix/config_files/install-sh -c" + ;; +esac + +echo +echo --------------------------------------------- +echo testing C/C++ +echo --------------------------------------------- +echo + +cc_ok=no +dnl inutil car libtool +dnl 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) + +AC_CXX_USE_STD_IOSTREAM +AC_CXX_HAVE_SSTREAM + +dnl +dnl --------------------------------------------- +dnl testing linker +dnl --------------------------------------------- +dnl + +AC_LINKER_OPTIONS + +echo +echo --------------------------------------------- +echo testing threads +echo --------------------------------------------- +echo + +ENABLE_PTHREADS + +dnl +dnl --------------------------------------------- +dnl testing WITHIHM +dnl --------------------------------------------- +dnl + +CHECK_WITHIHM + +echo +echo --------------------------------------------- +echo BOOST Library +echo --------------------------------------------- +echo + +CHECK_BOOST + +dnl +dnl --------------------------------------------- +dnl testing MPI +dnl --------------------------------------------- +dnl + +CHECK_MPI + +dnl +dnl --------------------------------------------- +dnl testing sockets +dnl --------------------------------------------- +dnl + +CHECK_SOCKETS + +dnl +dnl --------------------------------------------- +dnl testing OpenPBS +dnl --------------------------------------------- +dnl + +echo +echo --------------------------------------------- +echo testing OpenPBS +echo --------------------------------------------- +echo + +openpbs_ok=no +CHECK_OPENPBS +dnl openpbs_ok is set to yes by CHECK_OPENPBS + +dnl +dnl --------------------------------------------- +dnl testing LSF +dnl --------------------------------------------- +dnl + +echo +echo --------------------------------------------- +echo testing LSF +echo --------------------------------------------- +echo + +lsf_ok=no +CHECK_LSF +dnl lsf_ok is set to yes by CHECK_LSF + +dnl +dnl --------------------------------------------- +dnl testing Batch +dnl --------------------------------------------- +dnl + +WITH_BATCH=no +test x$openpbs_ok = xyes || test x$lsf_ok = xyes && WITH_BATCH=yes +AC_SUBST(WITH_BATCH) + +echo +echo --------------------------------------------- +echo testing LEX \& YACC +echo --------------------------------------------- +echo + +lex_yacc_ok=no +AC_PROG_YACC +AC_PROG_LEX +lex_yacc_ok=yes + +echo +echo --------------------------------------------- +echo testing python +echo --------------------------------------------- +echo + +CHECK_PYTHON + +dnl echo +dnl echo --------------------------------------------- +dnl echo testing java +dnl echo --------------------------------------------- +dnl echo + +dnl CHECK_JAVA + +echo +echo --------------------------------------------- +echo testing swig +echo --------------------------------------------- +echo + +CHECK_SWIG + +echo +echo --------------------------------------------- +echo testing omniORB +echo --------------------------------------------- +echo + +CHECK_OMNIORB + +dnl echo +dnl echo --------------------------------------------- +dnl echo testing mico +dnl echo --------------------------------------------- +dnl echo + +dnl CHECK_MICO + +echo +echo --------------------------------------------- +echo default ORB : omniORB +echo --------------------------------------------- +echo + +DEFAULT_ORB=omniORB +CHECK_CORBA + +AC_SUBST_FILE(CORBA) +corba=make_$ORB +CORBA=salome_adm/unix/$corba + + +echo +echo --------------------------------------------- +echo testing QT +echo --------------------------------------------- +echo + +CHECK_QT + +echo +echo ---------------------------------------------- +echo testing CPPUNIT only required for unit testing +echo ---------------------------------------------- +echo + +CHECK_CPPUNIT + +if test "X$WITHIHM" = "Xyes"; then + echo + echo --------------------------------------------- + echo Testing sip + echo --------------------------------------------- + echo + + CHECK_SIP + + echo + echo --------------------------------------------- + echo testing openGL + echo --------------------------------------------- + echo + + CHECK_OPENGL + + echo + echo --------------------------------------------- + echo testing VTK + echo --------------------------------------------- + echo + + CHECK_VTK + + echo + echo --------------------------------------------- + echo Testing pyqt + echo --------------------------------------------- + echo + + CHECK_PYQT + + echo + echo --------------------------------------------- + echo Testing qwt + echo --------------------------------------------- + echo + + CHECK_QWT +fi + +echo +echo --------------------------------------------- +echo testing HDF5 +echo --------------------------------------------- +echo + +CHECK_HDF5 + +echo +echo --------------------------------------------- +echo Testing OpenCascade +echo --------------------------------------------- +echo + +CHECK_CAS + +echo +echo --------------------------------------------- +echo Testing html generators +echo --------------------------------------------- +echo + +CHECK_HTML_GENERATORS + +echo +echo --------------------------------------------- +echo Summary +echo --------------------------------------------- +echo + +echo Configure +variables="cc_ok boost_ok lex_yacc_ok mpi_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok" + +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 +echo "---Optional:" +variables="cppunit_ok openpbs_ok lsf_ok" + +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 + +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 + +# make other build directories +for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl +do +# if test ! -d $rep ; then +# eval mkdir $rep +# fi + $INSTALL -d $rep +done + +echo +echo --------------------------------------------- +echo copying resource files, shell scripts, and +echo xml files +echo --------------------------------------------- +echo + + +dnl copy resources directories + +#for i in `find $ROOT_SRCDIR -name 'resources' -print` +#do +# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` +# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` +# mkdir -p $local_res_dir +# cd $local_res_dir +# ln -fs $i +# echo $local_res +# cd $ROOT_BUILDDIR +#done + +dnl copy shells and utilities contained in the bin directory +dnl excluding .in files (treated in AC-OUTPUT below) and CVS +dnl directory + +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 + +AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript + +dnl copy xml files to the build tree (lib directory) +dnl pourquoi ???? + +#cd lib +#for i in `find $ROOT_SRCDIR -name "*.xml" -print` +#do +# ln -fs $i +# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"` +#done +#cd $ROOT_BUILDDIR + +echo +echo --------------------------------------------- +echo generating Makefiles and configure files +echo --------------------------------------------- +echo + +AC_OUTPUT_COMMANDS([ \ + chmod +x ./bin/*; \ + chmod +x ./bin/salome/* \ +]) + +## do not delete this line + diff --git a/DEPRECATED/make_config.in b/DEPRECATED/make_config.in new file mode 100755 index 000000000..64b47c344 --- /dev/null +++ b/DEPRECATED/make_config.in @@ -0,0 +1,75 @@ +# make_config.in: template for make_config script +# make_config is used by check_cas.m4 to generate +# config.h file in case it cannot be found in OCC +# and SALOME include paths +#================================================= +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(salome_adm/unix) +AC_CONFIG_SRCDIR(salome_adm/unix/config.h.in) +AC_CONFIG_AUX_DIR(salome_adm/unix/config_files) +AC_CANONICAL_HOST + +AC_CONFIG_HEADERS(./salome_adm/unix/config.h) + +AC_ISC_POSIX +AC_C_BIGENDIAN + +dnl Checks for programs. +AC_PROG_CXX +AC_PROG_CC_C_O + +AC_PROG_AWK +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_YACC +AC_PROG_MAKE_SET + +dnl Replace `main' with a function in -le: +AC_CHECK_LIB(e, main) + +dnl Replace `main' with a function in -links: +AC_CHECK_LIB(inks, main) + +dnl Checks for X window system directories. +AC_PATH_X +if test "x$ac_x_includes" = "x"; then + X_INCLUDE="" +else + X_INCLUDE="-I$ac_x_includes" +fi +if test "x$ac_x_libraries" = "x"; then + X_LIBS="-lXt -lX11" +else + X_LIBS="-L$ac_x_libraries -lXt -lX11" +fi + +dnl Checks for header files. + +AC_HEADER_STDC +AC_LANG([C]) +AC_MSG_CHECKING([ for C header files ]) +AC_CHECK_HEADERS(dlfcn.h dl.h ieeefp.h time.h sys/time.h pwd.h) +AC_CHECK_HEADERS(sys/statvfs.h sys/vfs.h sys/param.h osfcn.h netdb.h) +AC_CHECK_HEADERS(sys/ioctl.h net/if.h sys/systeminfo.h sys/utsname.h) +AC_CHECK_HEADERS(sysent.h unistd.h sys/unistd.h sys/socket.h) +AC_CHECK_HEADERS(ndir.h sys/ndir.h sys/dir.h signal.h sys/signal.h) +AC_CHECK_HEADERS(sigfpe.h floatingpoint.h sys/machsig.h sys/siginfo.h) +AC_CHECK_HEADERS(malloc.h strings.h sys/stat.h sys/sem.h sys/ipc.h) +AC_CHECK_HEADERS(sys/times.h dirent.h getopt.h sys/vnode.h) + + +AC_LANG([C++]) +AC_MSG_CHECKING([ for C++ header files ]) +AC_CHECK_HEADERS(istream ostream istream fstream ios iomanip iostream ) +AC_CHECK_HEADERS(stream.h strstream.h istream.h ostream.h fstream.h stdlib.h ios.h iostream.h) +AC_CHECK_HEADERS(iomanip.h limits.h values.h float.h) +AC_CHECK_HEADERS(siginfo.h bits/sigset.h bstring.h sys/types.h sys/select.h) +AC_CHECK_HEADERS(X11/extensions/transovl.h X11/extensions/readdisplay.h) +AC_CHECK_HEADERS(X11/extensions/multibuf.h) +AC_CHECK_HEADERS(sys/filio.h sys/mman.h libc.h) + +dnl Checks for library functions. +AC_TYPE_SIGNAL + +AC_OUTPUT() diff --git a/KERNEL_version.h.in b/KERNEL_version.h.in new file mode 100644 index 000000000..8ca12918d --- /dev/null +++ b/KERNEL_version.h.in @@ -0,0 +1,34 @@ +// Copyright (C) 2005 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.salome-platform.org/ +// +// File : KERNEL_version.h +// Author : Vadim SANDLER +// Module : SALOME + +#if !defined(__KERNEL_VERSION_H__) +#define __KERNEL_VERSION_H__ + +/* + KERNEL_VERSION is (major << 16) + (minor << 8) + patch. +*/ + +#define KERNEL_VERSION_STR "@VERSION@" +#define KERNEL_VERSION @XVERSION@ + +#endif // __KERNEL_VERSION_H__ diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 000000000..7b025f034 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,55 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# 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 +# +# http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# -* Makefile *- +# +# Author : Guillaume BOULANT (CSSI) +# Date : 09/11/2005 +# $Header$ +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +if CORBA_GEN + IDLDIR = idl +endif + +SUBDIRS = $(IDLDIR) salome_adm src doc bin resources + +DIST_SUBDIRS= idl salome_adm src doc bin resources + +DISTCLEANFILES = a.out + +salomeinclude_DATA = KERNEL_version.h + +EXTRA_DIST = \ + build_configure \ + clean_configure \ + LICENCE \ + README.FIRST.txt \ + DEPRECATED + +dist-hook: + rm -rf `find $(distdir) -name CVS` + +usr_docs: + (cd doc && $(MAKE) $(AM_MAKEFLAGS) usr_docs) + +docs:usr_docs + +dev_docs: + (cd doc && $(MAKE) $(AM_MAKEFLAGS) dev_docs) \ 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..2120709f6 --- /dev/null +++ b/bin/Makefile.am @@ -0,0 +1,81 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# -* 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 \ + salomeConsole.py \ + salome_session.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 \ + appli_install.sh \ + appli_clean.sh \ + virtual_salome.py \ + 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) + $(RM) -rf $(salomescriptdir)/appliskel 1> /dev/null 2>&1 + cp -r $(srcdir)/appliskel $(salomescriptdir) + find $(salomescriptdir) -name CVS -prune -exec rm -rf {} \; + +uninstall-local: + find $(salomescriptdir)/appliskel -exec chmod +w {} \; + rm -rf $(salomescriptdir)/appliskel diff --git a/bin/VERSION.in b/bin/VERSION.in new file mode 100755 index 000000000..bd8de56f2 --- /dev/null +++ b/bin/VERSION.in @@ -0,0 +1 @@ +THIS IS SALOME - KERNEL VERSION: @VERSION@ diff --git a/bin/appli_clean.sh b/bin/appli_clean.sh new file mode 100644 index 000000000..c8cadf964 --- /dev/null +++ b/bin/appli_clean.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +#clean appli +rm -rf bin lib share doc envd setAppliPath.sh searchFreePort.sh runAppli runConsole runSession env.d diff --git a/bin/appli_install.sh b/bin/appli_install.sh new file mode 100644 index 000000000..3e7c53f70 --- /dev/null +++ b/bin/appli_install.sh @@ -0,0 +1,88 @@ +#!/bin/sh + +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +SALOME_ROOT=${HOME}/SALOME2 +INSTALL_ROOT=${SALOME_ROOT}/Install + +APPLI_ROOT=`pwd` + +# --- clean appli +rm -rf bin lib share doc envd setAppliPath.sh searchFreePort.sh runAppli runConsole runSession env.d + +# --- install appli + +mkdir -p env.d +ln -fs bin/salome/appliskel/envd . +ln -fs bin/salome/appliskel/setAppliPath.sh . +ln -fs bin/salome/appliskel/searchFreePort.sh . +ln -fs bin/salome/appliskel/runRemote.sh . +ln -fs bin/salome/appliskel/runAppli . +ln -fs bin/salome/appliskel/runConsole . +ln -fs bin/salome/appliskel/runSession . +ln -fs bin/salome/appliskel/runTests . +ln -fs bin/salome/appliskel/.bashrc . + +# --- prerequisites + +if [ x${PREREQUISITE_SH} != x ]; then + cp ${PREREQUISITE_SH} env.d/envProducts.sh; +else + # --- unless PREREQUISITE_SH defines the prerequisite script, + # edit and uncomment the following line to set it, and comment the echo and exit lines + #ln -fs myPathForSalomePrerequisiteScriptToBeSourced env.d/envProducts.sh + echo "The file to source for SALOME prerequisite definition is not known:" + echo "--> Edit the corresponding line in " $0 ",Comment this message and the following exit command," + exit 1; +fi + +# --- symbolic links creation, from modules_root_dir + +VERSION=V3_2_0 + +for module in KERNEL MED GUI GEOM SMESH VISU SUPERV LIGHT NETGENPLUGIN PYCALCULATOR; +do + echo " ========= " ${module}; + python virtual_salome.py -v --prefix="." --module=$INSTALL_ROOT/${module}_${VERSION} + echo "export ${module}_ROOT_DIR=$APPLI_ROOT" >> env.d/configSalome.sh +done + +# --- HELLO module + +echo " ========= HELLO1"; +python virtual_salome.py -v --prefix="." --module=$INSTALL_ROOT/HELLO1_${VERSION} +echo "export HELLO_ROOT_DIR=$APPLI_ROOT" >> env.d/configSalome.sh + +# --- PYHELLO module + +echo " ========= PYHELLO1"; +python virtual_salome.py -v --prefix="." --module=$INSTALL_ROOT/PYHELLO1_${VERSION} +echo "export PYHELLO_ROOT_DIR=$APPLI_ROOT" >> env.d/configSalome.sh + +# --- GUI config + +echo "export config_var=$APPLI_ROOT:$APPLI_ROOT/share/salome/resources" >> env.d/configGUI.sh +echo "export SUITRoot=$APPLI_ROOT/share/salome" >> env.d/configGUI.sh + +# --- SAMPLES directory + +echo "export DATA_DIR=$INSTALL_ROOT/SAMPLES/${VERSION}/SAMPLES_SRC" >> env.d/configSalome.sh + +# --- diff --git a/bin/runIDLparser.in b/bin/runIDLparser.in new file mode 100644 index 000000000..cb41a7488 --- /dev/null +++ b/bin/runIDLparser.in @@ -0,0 +1,37 @@ +#! /bin/sh + +# print the help message ==================================== + +# test $@="-h" -o -z $@ + +hh=0 + +if test "$#" = "0";then + hh=1 +else + for a in $@; do + if test "$a" = "-h"; then + hh=1 + fi + done +fi + +if test "$hh" = "1" ; then + echo "" + echo "Usage : " + echo "" + echo " to run IDLparser:" + echo "" + echo " $0 -Wbcatalog=[,icon=][,version=][,author=][,name=][,multistudy=][,remove=component_name] " + echo "" + echo " to have omniidl help:" + echo "" + echo " $0 -u " + echo "" + exit 1 +fi +#============================================================ + +# omiidl ==================================================== +omniidl -bIDLparser -I ${KERNEL_ROOT_DIR}/idl/salome $@ +#============================================================ diff --git a/bin/runSalome.ksh b/bin/runSalome.ksh new file mode 100644 index 000000000..cbee4003d --- /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 SalomeApp.xml; +# - 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 SalomeApp.xml +# +# 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/salome_session.py b/bin/salome_session.py new file mode 100644 index 000000000..d43e144a7 --- /dev/null +++ b/bin/salome_session.py @@ -0,0 +1,106 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import os +import sys +import string +import socket + +_session = None + +def startSession(modules=[]): + global _session + if _session: return + searchFreePort() + _session = SalomeSession(modules) + return + +def getShortHostName(): + """ + gives Hostname without domain extension. + SALOME naming service needs short Hostnames (without domain extension). + HOSTNAME is not allways defined in environment, + socket.gethostname() gives short or complete Hostname, depending on + defined aliases. + """ + return string.split(socket.gethostname(),'.')[0] + +def searchFreePort(): + print "Searching a free port for naming service:", + NSPORT=2810 + limit=NSPORT + limit=limit+100 + while 1: + print "%s "%(NSPORT), + status = os.system("netstat -ltn | grep -E :%s"%(NSPORT)) + if status: + home = os.environ['HOME'] + appli=os.environ.get("APPLI") + if appli is None: + #Run outside application context + home=home + else: + home='%s/%s'%(home,appli) + hostname=getShortHostName() + omniorb_config = '%s/.omniORB_%s_%s.cfg'%(home,hostname, NSPORT) + os.environ['OMNIORB_CONFIG'] = omniorb_config + f = open(omniorb_config, "w") + f.write("ORBInitRef NameService=corbaname::%s:%s\n"%(hostname, NSPORT)) + f.close() + last_running_config = '%s/.omniORB_%s_last.cfg'%(home, hostname) + os.environ['LAST_RUNNING_CONFIG'] = last_running_config + if os.access(last_running_config,os.F_OK): + os.unlink(last_running_config) + pass + os.symlink(omniorb_config,last_running_config) + # LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg + print "- Ok" + break + if NSPORT == limit: + msg = "" + msg += "I Can't find a free port to launch omniNames\n" + msg += "I suggest you to kill the running servers and try again.\n" + raise msg + NSPORT=NSPORT+1 + pass + os.environ['NSHOST']=hostname + os.environ['NSPORT']=str(NSPORT) + return NSPORT + + +class SalomeSession(object): + import runSalome + import killSalomeWithPort + import killSalome + def __init__(self, modules): + import runSalome + sys.argv = ["dummy.py"] + sys.argv += ["--terminal"] + if modules: + sys.argv += ['--modules=%s'%(",".join(modules))] + pass + runSalome.clt, runSalome.args = runSalome.main() + import salome + salome.salome_init() + return + def __del__(self): + import runSalome + runSalome.killLocalPort() + return + pass diff --git a/bin/virtual_salome.py b/bin/virtual_salome.py new file mode 100644 index 000000000..edbfbe193 --- /dev/null +++ b/bin/virtual_salome.py @@ -0,0 +1,199 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Create a virtual Salome installation + +Based on a script created by Ian Bicking. + +Typical use:: + + python virtual_salome.py -v --prefix="." --module=/local/chris/SALOME2/RELEASES/Install/KERNEL_V3_1_0b1 + +install module KERNEL in the current directory +""" + +import sys, os, optparse, shutil,glob,fnmatch +py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1]) + +def mkdir(path): + """Create a directory and all the intermediate directories if path does not exist""" + if not os.path.exists(path): + print 'Creating %s' % path + os.makedirs(path) + else: + if verbose: + print 'Directory %s already exists' % path + pass + pass + +def symlink(src, dest): + """Create a link if it does not exist""" + if not os.path.exists(dest): + if verbose: + print 'Creating symlink %s' % dest + pass + os.symlink(src, dest) + else: + print 'Symlink %s already exists' % dest + pass + pass + +def rmtree(dir): + """Remove (recursive) a directory if it exists""" + if os.path.exists(dir): + print 'Deleting tree %s' % dir + shutil.rmtree(dir) + else: + if verbose: + print 'Do not need to delete %s; already gone' % dir + pass + pass + pass + +def main(): + usage="""usage: %prog [options] +Typical use is: + python virtual_salome.py -v --prefix="." --module=/local/chris/SALOME2/RELEASES/Install/KERNEL_V3_1_0b1 +""" + parser = optparse.OptionParser(usage=usage) + + parser.add_option('-v', '--verbose', action='count', dest='verbose', + default=0, help="Increase verbosity") + + parser.add_option('--prefix', dest="prefix", default='.', + help="The base directory to install to (default .)") + + parser.add_option('--module', dest="module", + help="The module directory to install in (mandatory)") + + parser.add_option('--clear', dest='clear', action='store_true', + help="Clear out the install and start from scratch") + + options, args = parser.parse_args() + global verbose + + if not options.module: + print "Option module is mandatory" + return + + module_dir=options.module + if not os.path.exists(module_dir): + print "Module %s does not exist" % module_dir + return + + home_dir = os.path.expanduser(options.prefix) + + #module_dir="/local/chris/SALOME2/RELEASES/Install/KERNEL_V3_1_0b1" + module_bin_dir=os.path.join(module_dir,'bin','salome') + module_lib_dir=os.path.join(module_dir,'lib','salome') + module_lib_py_dir=os.path.join(module_dir,'lib',py_version,'site-packages','salome') + module_lib_py_shared_dir=os.path.join(module_dir,'lib',py_version, + 'site-packages','salome','shared_modules') + module_share_dir=os.path.join(module_dir,'share','salome','resources') + module_doc_gui_dir=os.path.join(module_dir,'doc','salome','gui') + module_doc_tui_dir=os.path.join(module_dir,'doc','salome','tui') + module_doc_dir=os.path.join(module_dir,'doc','salome') + + if not os.path.exists(module_lib_py_dir): + print "Python directory %s does not exist" % module_lib_py_dir + return + + bin_dir=os.path.join(home_dir,'bin','salome') + lib_dir=os.path.join(home_dir,'lib','salome') + lib_py_dir=os.path.join(home_dir,'lib',py_version,'site-packages','salome') + lib_py_shared_dir=os.path.join(home_dir,'lib',py_version, + 'site-packages','salome','shared_modules') + share_dir=os.path.join(home_dir,'share','salome','resources') + doc_gui_dir=os.path.join(home_dir,'doc','salome','gui') + doc_tui_dir=os.path.join(home_dir,'doc','salome','tui') + doc_dir=os.path.join(home_dir,'doc','salome') + + verbose = options.verbose + + if options.clear: + rmtree(bin_dir) + rmtree(lib_dir) + rmtree(share_dir) + rmtree(doc_dir) + pass + + #directory bin/salome : create it and link content + mkdir(bin_dir) + for fn in os.listdir(module_bin_dir): + # if os.path.splitext(fn)[1] not in (".pyc",".pyo"): #Compiled python are excluded + symlink(os.path.join(module_bin_dir, fn), os.path.join(bin_dir, fn)) + pass + + #directory lib/salome : create it and link content + mkdir(lib_dir) + for fn in os.listdir(module_lib_dir): + symlink(os.path.join(module_lib_dir, fn), os.path.join(lib_dir, fn)) + + #directory lib/py_version/site-packages/salome : create it and link content + mkdir(lib_py_shared_dir) + for fn in os.listdir(module_lib_py_dir): + # if os.path.splitext(fn)[1] not in (".pyc",".pyo"): #Compiled python are excluded + if os.path.split(fn)[1] != "shared_modules": + symlink(os.path.join(module_lib_py_dir, fn), os.path.join(lib_py_dir, fn)) + pass + pass + if os.path.exists(module_lib_py_shared_dir): + for fn in os.listdir(module_lib_py_shared_dir): + # if os.path.splitext(fn)[1] not in (".pyc",".pyo"): #Compiled python are excluded + symlink(os.path.join(module_lib_py_shared_dir, fn), os.path.join(lib_py_shared_dir, fn)) + pass + pass + else: + print module_lib_py_shared_dir, " doesn't exist" + pass + + + #directory share/salome/resources : create it and link content + mkdir(share_dir) + for fn in os.listdir(module_share_dir): + symlink(os.path.join(module_share_dir, fn), os.path.join(share_dir, fn)) + + #html files in doc/salome directory + if os.path.exists(module_doc_dir): + mkdir(doc_dir) + for fn in os.listdir(module_doc_dir): + if fn == 'gui':continue + if fn == 'tui':continue + symlink(os.path.join(module_doc_dir, fn), os.path.join(doc_dir, fn)) + pass + pass + + #directory doc/salome/gui : create it and link content + if os.path.exists(module_doc_gui_dir): + mkdir(doc_gui_dir) + for fn in os.listdir(module_doc_gui_dir): + symlink(os.path.join(module_doc_gui_dir, fn), os.path.join(doc_gui_dir, fn)) + pass + pass + + #directory doc/salome/tui : create it and link content + if os.path.exists(module_doc_tui_dir): + mkdir(doc_tui_dir) + for fn in os.listdir(module_doc_tui_dir): + symlink(os.path.join(module_doc_tui_dir, fn), os.path.join(doc_tui_dir, fn)) + pass + pass + +if __name__ == '__main__': + main() + pass 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..0161290f1 --- /dev/null +++ b/configure.ac @@ -0,0 +1,552 @@ +# +# ================================================================ +# Process this file with autoconf to produce a configure script +# ================================================================ +# +#AC_PREREQ(2.59) +#AC_INIT(src) +AC_INIT([Salome2 Project], [3.2.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.2.0 +XVERSION=0x030200 +AC_SUBST(VERSION) +AC_SUBST(XVERSION) + +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_ARG_ENABLE(batch, + [AC_HELP_STRING([--enable-batch],[Batch [default=yes]])], + [case "${enableval}" in + yes) test x$openpbs_ok = xyes || test x$lsf_ok = xyes || test x$localbatch_ok = xyes && WITH_BATCH=yes;; + no) WITH_BATCH=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-batch) ;; + esac],[test x$openpbs_ok = xyes || test x$lsf_ok = xyes || test x$localbatch_ok = xyes && WITH_BATCH=yes]) + +echo Batch mode = $WITH_BATCH + +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 +} + +# -------------------------------------- + +if test x$corba_gen = xtrue; then + basic_mandatory_products="cc_ok threads_ok python_ok swig_ok hdf5_ok occ_ok" +else + basic_mandatory_products="cc_ok threads_ok hdf5_ok occ_ok" +fi + +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 + if test x"$WITH_BATCH" = xyes; then + echo --- BATCH mode mandatory products - default configuration: + summary "python_ok" + check_fatal_error "python_ok" + else + echo --- Python not required - option --enable-batch=no + fi +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([ \ + ./KERNEL_version.h \ + ./salome_adm/unix/SALOMEconfig.ref \ + ./salome_adm/Makefile \ + ./salome_adm/unix/Makefile \ + ./salome_adm/unix/config_files/Makefile \ + ./Makefile \ + ./bin/Makefile \ + ./bin/VERSION \ + ./bin/runIDLparser \ + ./doc/Makefile \ + ./doc/salome/Makefile \ + ./doc/salome/tui/Makefile \ + ./doc/salome/tui/INPUT/doxyuser:./doc/salome/tui/KERNEL/doxyuser.in \ + ./doc/salome/tui/INPUT/doxydev:./doc/salome/tui/KERNEL/doxydev.in \ + ./doc/salome/tui/INPUT/sources/static/tree.js:./doc/salome/tui/KERNEL/sources/static/tree.js.in \ + ./idl/Makefile \ + ./resources/Makefile \ + ./resources/KERNELCatalog.xml \ + ./resources/CatalogResources.xml \ + ./resources/DEPRECATED/Plugin \ + ./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/GenericObj/Makefile \ + ./src/HDFPersist/Makefile \ + ./src/KERNEL_PY/Makefile \ + ./src/LifeCycleCORBA/Makefile \ + ./src/LifeCycleCORBA/Test/Makefile \ + ./src/LifeCycleCORBA_SWIG/Makefile \ + ./src/LifeCycleCORBA_SWIG/Test/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/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/KERNEL_Services.txt b/doc/KERNEL_Services.txt new file mode 100644 index 000000000..b348fcad3 --- /dev/null +++ b/doc/KERNEL_Services.txt @@ -0,0 +1,305 @@ +================================================================= +KERNEL Services for end user (Python interface) +================================================================= + +*html version of this document is produced with docutils*:: + + rst2html < doc.txt > doc.html + +This document corresponds to SALOME2 3.2.0 + +.. contents:: +.. sectnum:: + ++-------------------------------------------+ +| **WORK in PROGRESS, INCOMPLETE DOCUMENT** | ++-------------------------------------------+ + +------------------------------------------------------------------------------- + +In a SALOME application, distributed components, servers and clients use +the CORBA middleware for comunication. CORBA interfaces are defined via idl +files. All the different CORBA interfaces are available for users in Python, +see CORBA interfaces below. + +For some general purpose services, CORBA interfaces have been encapsulated +in order to provide a simple interface (encapsulation is generally done in +C++ classes, and a Python SWIG interface is also generated from C++, to +ensure a consistent behavior between C++ modules and Python modules or user +script). + +General purpose services +======================== + +SALOME services access from a Python shell +------------------------------------------ +See SALOME_Application_ for detailed instructions to launch a Python +interpreter with full acces to the SALOME environment and services. + +.. _SALOME_Application: ./SALOME_Application.html + +You can use the embedded Python interpreter in Grahic User Interface, or an +external interpreter, with:: + + ./runSession + python + +In either cases, SALOME services access is done with:: + + import salome + salome.salome_init() + +In the embedded interpreter, it is already done, but there is no problem to +do it several times, so it is preferable to add these instructions +systematically in your scripts, to allow them to work in all configurations. + +Container and component instanciation +------------------------------------- + +See LifeCycleCORBA_ for the C++ interface (Python interface obtained with SWIG +is very similar). + +.. _LifeCycleCORBA: ./tui/KERNEL/classSALOME__LifeCycleCORBA.html + + +In the following example, a test component provided in KERNEL is launched +in the local container, "FactoryServer", created when SALOME starts:: + + import salome + salome.salome_init() + + import LifeCycleCORBA + lcc = LifeCycleCORBA.LifeCycleCORBA() + obj=lcc.FindOrLoad_Component("FactoryServer","SalomeTestComponent") + + import Engines + comp=obj._narrow(Engines.TestComponent) + + comp.Coucou(1) + +The answer is something like:: + + 'TestComponent_i : L = 1' + +The _narrow() instruction is not always mandatory in Python, but sometimes +useful to be sure you have got the right type of object. Here, Testcomponent_ +interface is defined in CORBA module Engines. With this example, it works also +without the _narrow() instruction:: + + obj.Coucou(1) + +.. _Testcomponent: ./tui/KERNEL/interfaceEngines_1_1TestComponent.html + + +In the next example, a component instance is created in a specific Container +defined by it's computer hostname and it's name. Here we use the local +computer. Note that in Utils_Identity_, getShortHostName() gives the short +hostname of the computer, without domain suffixes, which is used in SALOME. +The container process is created here if it does not exists, and a new +component instance is created:: + + import salome + salome.salome_init() + import LifeCycleCORBA + lcc = LifeCycleCORBA.LifeCycleCORBA() + + import Utils_Identity + host = Utils_Identity.getShortHostName() + + import Engines + params={} + params['hostname']=host + params['container_name']='myContainer' + comp=lcc.LoadComponent(params,'SalomeTestComponent') + comp.Coucou(1) + +.. _Utils_Identity: ./tui/KERNEL/namespaceUtils__Identity.html + +If you want to get a list of containers and component instances, client object +from orbmodule_ provides a list:: + + import orbmodule + clt=orbmodule.client() + clt.showNS() + +.. _orbmodule: ./tui/KERNEL/classorbmodule_1_1client.html + +The list looks like:: + + Logger. + ContainerManager.object + Containers.dir + cli70ac.dir + FactoryServerPy.object + SuperVisionContainer.object + FactoryServer.object + FactoryServer.dir + SalomeTestComponent_inst_1.object + myContainer.object + myContainer.dir + SalomeTestComponent_inst_1.object + SalomeTestComponent_inst_2.object + Registry.object + Kernel.dir + ModulCatalog.object + Session.object + Study.dir + Study2.object + extStudy_1.object + extStudy_2.object + extStudy_3.object + myStudyManager.object + SalomeAppEngine.object + + +File transfer service +--------------------- + +See FileTransferCORBA_ for the C++ interface (Python interface obtained with +SWIG is very similar). + +.. _FileTransferCORBA: ./tui/KERNEL/classSALOME__FileTransferCORBA.html + +The following example shows how to transfer a file from a remote host to the +client computer. Remote hostname is 'cli76cc', we would like to copy +'tkcvs_8_0_3.tar.gz' from remote to local computer. A full pathname is +required. A container is created on remote computer if it does not exist, +to handle the file transfer:: + + import salome + salome.salome_init() + + import LifeCycleCORBA + remotefile="/home/prascle/tkcvs_8_0_3.tar.gz" + aFileTransfer=LifeCycleCORBA.SALOME_FileTransferCORBA('cli76cc',remotefile) + localFile=aFileTransfer.getLocalFile() + + +CORBA Naming service access +--------------------------- + +See SALOME_NamingService_ for the C++ interface. The Python interface +SALOME_NamingServicePy_ is not yet derived from the C++ interface and offers +only the most useful functions. + +.. _SALOME_NamingService: ./tui/KERNEL/classSALOME__NamingService.html +.. _SALOME_NamingServicePy: ./tui/KERNEL/classSALOME__NamingServicePy_1_1SALOME__NamingServicePy__i.html + +Batch services +-------------- + +See Batch_ documentation (in french only). + +.. _Batch: ./Batch.html/index.html + +All IDL Interfaces +================== + +Containers and component life cycle, File transfer service +---------------------------------------------------------- + ++-----------------------------+-----------------------------------------------+ +| Engines_ | Engines CORBA module. | ++=============================+===============================================+ +| Component_ | Generic component interface. | +| | All SALOME components inherit this interface | ++-----------------------------+-----------------------------------------------+ +| Container_ | Container: host for C++ and Python components | +| | components instances | ++-----------------------------+-----------------------------------------------+ +| FileTransfer_ | Agent for file transfer created by a container| +| | copy a local file to a distent client | ++-----------------------------+-----------------------------------------------+ +| FileRef_ | Reference to a file, used by a container for | +| | file transfers | ++-----------------------------+-----------------------------------------------+ +| ContainerManager_ | Unique instance, in charge of container | +| | creation on remote computers | ++-----------------------------+-----------------------------------------------+ +| MPIContainer_ | An exemple of parallel implementation for | +| | containers and components | ++-----------------------------+-----------------------------------------------+ +| MPIObject_ | | ++-----------------------------+-----------------------------------------------+ + +Study management +---------------- + ++-----------------------------+-----------------------------------------------+ +| SALOMEDS_ | SALOMEDS CORBA module | ++=============================+===============================================+ +| SALOMEDSidl_ | | ++-----------------------------+-----------------------------------------------+ +| SALOMEDS_Attributes_ | | ++-----------------------------+-----------------------------------------------+ + +High speed transfer, object life cycle, exceptions, GUI interface... +-------------------------------------------------------------------- + ++-----------------------------+-----------------------------------------------+ +| SALOME_ | SALOME CORBA module | ++=============================+===============================================+ +| SALOME_Comm_ | | ++-----------------------------+-----------------------------------------------+ +| SALOME_GenericObj_ | | ++-----------------------------+-----------------------------------------------+ +| SALOME_Exception_ | | ++-----------------------------+-----------------------------------------------+ +| SALOME_Session_ | | ++-----------------------------+-----------------------------------------------+ + +Miscelleanous +------------- ++-----------------------------+-----------------------------------------------+ +| | other CORBA modules | ++=============================+===============================================+ +| SALOME_ModuleCatalog_ | | ++-----------------------------+-----------------------------------------------+ +| SALOME_RessourcesCatalog_ | | ++-----------------------------+-----------------------------------------------+ +| SALOME_Registry_ | | ++-----------------------------+-----------------------------------------------+ +| Logger_ | | ++-----------------------------+-----------------------------------------------+ + +**Other idl for test purposes** +nstest.idl +SALOME_TestComponent.idl +SALOME_TestModuleCatalog.idl +SALOME_TestMPIComponent.idl +TestNotif.idl + +.. _Engines: ./tui/KERNEL/namespaceEngines.html +.. _Component: ./tui/KERNEL/interfaceEngines_1_1Component.html +.. _Container: ./tui/KERNEL/interfaceEngines_1_1Container.html +.. _fileTransfer: ./tui/KERNEL/interfaceEngines_1_1fileTransfer.html +.. _fileRef: ./tui/KERNEL/interfaceEngines_1_1fileRef.html +.. _ContainerManager: ./tui/KERNEL/interfaceEngines_1_1ContainerManager.html +.. _MPIContainer: ./tui/KERNEL/interfaceEngines_1_1MPIContainer.html +.. _MPIObject: ./tui/KERNEL/interfaceEngines_1_1MPIObject.html +.. _SALOME: ./tui/KERNEL/namespaceSALOME.html +.. _SALOMEDS: ./tui/KERNEL/namespaceSALOMEDS.html +.. _SALOME_Component: ./tui/KERNEL/SALOME__Component_8idl.html +.. _SALOME_ContainerManager: ./tui/KERNEL/SALOME__ContainerManager_8idl.html +.. _SALOMEDSidl: ./tui/KERNEL/SALOMEDS_8idl.html +.. _SALOMEDS_Attributes: ./tui/KERNEL/SALOMEDS__Attributes_8idl.html +.. _SALOME_ModuleCatalog: ./tui/KERNEL/SALOME__ModuleCatalog_8idl.html +.. _SALOME_RessourcesCatalog: ./tui/KERNEL/SALOME__RessourcesCatalog_8idl.html +.. _SALOME_Registry: ./tui/KERNEL/SALOME__Registry_8idl.html +.. _Logger: ./tui/KERNEL/Logger_8idl.html +.. _SALOME_Comm: ./tui/KERNEL/SALOME__Comm_8idl.html +.. _SALOME_GenericObj: ./tui/KERNEL/SALOME__GenericObj_8idl.html +.. _SALOME_Exception: ./tui/KERNEL/SALOME__Exception_8idl.html +.. _SALOME_Session: ./tui/KERNEL/SALOME__Session_8idl.html +.. _SALOME_MPIContainer: ./tui/KERNEL/SALOME__MPIContainer_8idl.html +.. _SALOME_MPIObject: ./tui/KERNEL/SALOME__MPIObject_8idl.html + + +------------------------------------------------------------------------------- + ++----------------------------------+------------------------------------------+ +| `General KERNEL documentation`_ | `End User KERNEL Doxygen documentation`_ | ++----------------------------------+------------------------------------------+ + +.. _`General KERNEL documentation`: ./index.html +.. _`End User KERNEL Doxygen documentation`: ./tui/KERNEL/index.html diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 000000000..c504425be --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,58 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# -* Makefile *- +# +# Author : Paul RASCLE (EDF) +# Date : 06/02/2006 +# $Header$ +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +SUBDIRS = salome + +doc_DATA = + +if RST2HTML_IS_OK + doc_DATA += \ + index.html \ + UnitTests.html \ + SALOME_Application.html \ + INSTALL.html \ + kernel_resources.html \ + KERNEL_Services.html +endif + +EXTRA_DIST=$(doc_DATA) + + +# Building html from restructured text files +STYLESHEET=$(srcdir)/rst.css +RST2HTML=@RST2HTML@ +RSTOPTS=--output-encoding=latin1 --stylesheet=$(STYLESHEET) +#RSTOPTS=--output-encoding=latin1 + +%.html: $(srcdir)/%.txt + $(RST2HTML) $(RSTOPTS) $< $@ + +usr_docs: + (cd salome && $(MAKE) $(AM_MAKEFLAGS) usr_docs) + +dev_docs: + (cd salome && $(MAKE) $(AM_MAKEFLAGS) dev_docs) \ No newline at end of file diff --git a/doc/index.txt b/doc/index.txt new file mode 100644 index 000000000..0120b1d9c --- /dev/null +++ b/doc/index.txt @@ -0,0 +1,113 @@ +================================================================= +KERNEL common Services +================================================================= + +*html version of this document is produced with docutils*:: + + rst2html < doc.txt > doc.html + +*This document corresponds to SALOME2 3.2.0* + +.. contents:: +.. sectnum:: + ++-------------------------------------------+ +| **WORK in PROGRESS, INCOMPLETE DOCUMENT** | ++-------------------------------------------+ + +------------------------------------------------------------------------------- + +**General information, for users, integrators and developers** + +**Users, integrators and developers, which documentation ?** + +Following your kind of usage of SALOME, you will find some specific +introductory documentation, listed below. + +End user +======== + +How to configure a SALOME application +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The end user may have to configure his own SALOME application by selection of a +subset of availables SALOME modules. He also may want to install his +application on several computers. + +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 + + +How to launch SALOME in a SALOME application +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +See SALOME_Application_. + +How to use KERNEL services in Python scripts +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The SALOME KERNEL offers offers a list of services available in Python. + +See KERNEL_Services_. + +.. _KERNEL_Services: ./KERNEL_Services.html + +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. + +How to install SALOME +~~~~~~~~~~~~~~~~~~~~~ + +See INSTALL_ for general information on required configuration and +prerequisites, compilation procedure, setting environment principles. + +.. _INSTALL: ./INSTALL.html + +How to configure a SALOME application +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +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 + + +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. + +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 + +Some development utilities +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +See kernel_resources_ for information on basic utilities for C++ and Python +development, like trace and debug, exceptions, singleton. + +.. _kernel_resources: ./kernel_resources.html + +------------------------------------------------------------------------------- + ++----------------------------------+------------------------------------------+ +| `General KERNEL documentation`_ | `End User KERNEL Doxygen documentation`_ | ++----------------------------------+------------------------------------------+ + +.. _`General KERNEL documentation`: ./index.html +.. _`End User KERNEL Doxygen documentation`: ./tui/KERNEL/index.html diff --git a/doc/kernel_resources.txt b/doc/kernel_resources.txt new file mode 100644 index 000000000..0bc9700da --- /dev/null +++ b/doc/kernel_resources.txt @@ -0,0 +1,507 @@ +====================================================================== +SALOME Kernel resources for developer +====================================================================== + +*html version of this document is produced with docutils*:: + + rst2html doc.txt > doc.html + +*This document corresponds to SALOME2 3.2.0* + +: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_()``. + + +------------------------------------------------------------------------------- + ++----------------------------------+------------------------------------------+ +| `General KERNEL documentation`_ | `End User KERNEL Doxygen documentation`_ | ++----------------------------------+------------------------------------------+ + +.. _`General KERNEL documentation`: ./index.html +.. _`End User KERNEL Doxygen documentation`: ./tui/KERNEL/index.html diff --git a/doc/rst.css b/doc/rst.css new file mode 100644 index 000000000..38bd7dcab --- /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: 150%; + COLOR: #00008B; + text-align: center +} +H1 +{ + FONT-SIZE: 125%; +} +H2 +{ + FONT-SIZE: 108%; +} +h2.subtitle { + text-align: center } +H3 +{ + FONT-SIZE: 100%; +} +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/Batch.texi b/doc/salome/Batch.texi new file mode 100755 index 000000000..817e5b996 --- /dev/null +++ b/doc/salome/Batch.texi @@ -0,0 +1,4962 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename Batch.info +@settitle Documentation de Batch +@setchapternewpage odd +@iftex +@afourpaper +@end iftex + +@include version.texi + +@dircategory Bibliotheque de classes Batch +@direntry +* Batch: (Batch); Documentation de la bibliotheque de classes Batch. +@end direntry + +@c %**end of header + + + +@titlepage +@sp 10 +@comment The title is printed in a large font. +@title Bibliotheque de classes Batch +@subtitle Documentation - version @value{VERSION} +@subtitle @value{UPDATED} +@author Ivan DUTKA-MALEN - EDF R&D + +@c The following two commands start the copyright page. +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 2003-2004 EDF R&D sous licence GPL +@end titlepage + +@contents + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Top, Description, Index , (dir) +@comment node-name, next, previous, up +@ifinfo +Copyright @copyright{} 2003-2004 EDF R&D sous licence GPL +@end ifinfo + +@unnumbered Introduction + +Ceci est la documentation de la bibliotheque de classes Batch version +@value{VERSION}. + +Ce manuel est normalement disponible sous la forme de fichiers +@file{.info}, PostScript @file{.ps}, PDF @file{.pdf} et HTML +@file{.html}. Merci a Texinfo. + + +@menu +* Description:: Le batch, c'est quoi ? Ca sert a quoi ? +* Classes:: Une description des classes internes. +* Utilisation:: Comment on s'en sert ? Quelques exemples. +* Installation de la bibliotheque:: Comment ca s'installe ? +* Divers:: D'autres petits details. +* Index:: Index generaux. +@end menu + + + + + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Description, Classes, Top, Top +@comment node-name, next, previous, up +@chapter Description Generale +@cindex description + +Dans le domaine du batch, nombreux sont les gestionnaires qui sont +apparus et se sont popularises en fonction des plates-formes et des +constructeurs. On peut notamment citer NQS, le premier de tous, LSF, +LoadLeveler, PBS (et ses derives OpenPBS et PBS Pro), etc. qui se +prevalent tous d'une compatibilite avec NQS. + +Si l'ensemble de ces produits offrent les fonctionnalites de base de +NQS, a savoir soumission, controle, destruction, modification, etc. de +travaux batch, ils se distinguent tous par leur incompatibilite mutuelle +et par les syntaxes de fichiers et les appels de fonction specifiques +qu'ils ont developpes. + +Or il est interessant de pouvoir acceder d'une facon homogene et +generique aux fonctionnalites de ces gestionnaires quitte a se +restreindre a un sous-ensemble minimal mais essentiel de leurs +possibilites. + +La bibliotheque de classes Batch fournit ce moyen de soumettre et +controler des travaux batch depuis une machine cliente sans s'occuper du +type de gestionnaire present sur le serveur sur lequel se deroule +l'execution du travail. Seul doit etre precise le nom du serveur sur +lequel sera soumis le travail batch et le type de gestionnaire qui s'y +trouve. Tout le reste est generique et ne depend plus de l'implementation. + + + + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classes, Terminologie, Description, Top +@comment node-name, next, previous, up +@chapter Classes Internes +@cindex classe + +Les classes de la bibliotheque reposent sur des concepts issus du monde +de la gestion de batch, qui meritent d'etre reprecises pour ne pas +introduire d'ambiguite semantique dans le discours. + +@menu +* Terminologie:: Description des termes employes. +* Classes generiques:: Les classes communes a tous les gestionnaires. +* Classes specifiques:: Les classes d'implementation. +@end menu + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Terminologie, Batch, Classes, Classes +@comment node-name, next, previous, up +@section Terminologie +@cindex terminologie + +Pour les non-inities aux mysteres de la gestion de batch, un petit +glossaire des termes employes dans cette documentation, assaisonne a la +sauce de la bibliotheque de classes Batch. + +@menu +* Batch:: Gestion par lots, execution differee. +* BatchManager:: Gestionnaire de batch. +* Job:: Travail. +* Parametre:: Configuration de l'execution. +* Environnement:: Environnement d'execution. +* JobId:: Identifiant de travail. +* JobInfo:: Informations sur le travail. +@end menu + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Batch, BatchManager, Terminologie, Terminologie +@comment node-name, next, previous, up +@subsection Batch +@cindex batch + +Le traitement batch (batch processing en anglais), ou traitement par +lot, fait reference au mode de sequencage et d'utilisation des +ressources d'un calculateur tel qu'il a ete premierement employe dans +les debuts de l'ere informatique. Mais il faut preciser que cette +anteriorite ne condamne pas le traitement batch aux oubliettes au motif +d'une quelconque obsolescence. Si le traitement par lot a vu le jour et +existe encore aujourd'hui, c'est parce qu'il repond de maniere +satisfaisante a une certaine utilisation des ressources d'un +calculateur, et que cette utilisation est encore d'actualite. Present +depuis plus de quarante ans, le batch est encore largement utilise sur +les grands serveurs, et le sera vraisemblablement pour quelques annees +encore. + +Le traitement par lot se distingue de l'execution interactive par le +fait que les travaux a effectuer sont places dans une file d'attente +avec une indication pour chaque lot des ressources dont il doit disposer +pour aboutir correctement. Une fois les travaux inscrits dans la file, +c'est au systeme de traitement batch (@xref{BatchManager}.) de veiller a +leur bonne execution en leur fournissant les ressources demandees. Tout +travail qui ne disposerait pas des ressources adequates ne peut pas etre +active. + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node BatchManager, Job, Batch, Terminologie +@comment node-name, next, previous, up +@subsection Batch Manager +@cindex batch manager +@cindex gestionnaire + +Le role du gestionnaire de batch, ou batch manager en anglais, est +d'executer et eventuellement d'ordonner les travaux places en file +d'attente en leur allouant exclusivement les ressources necessaires a +leur execution. Son objectif est d'optimiser les ressources du systeme +dont il a la charge de maniere a ecouler le maximum de travaux en un +minimum de temps et un minimum de ressources materielles. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Job, Parametre, BatchManager, Terminologie +@comment node-name, next, previous, up +@subsection Job +@cindex Job +@cindex travail + +Le travail, ou job en anglais, est l'unite elementaire de traitement qui +peut etre soumis au gestionnaire de batch. Il peut s'agir d'une simple +commande systeme, comme d'une application ou bien meme de l'enchainement +complexe mais indivisible de plusieurs applications ou commandes. + +Pour s'executer correctement, c'est-a-dire sans erreur, le job doit +disposer de certaines ressources --- de la memoire, du temps, de +l'espace disque @dots{} --- pendant toute la duree de son +execution. C'est au gestionnaire de batch (@xref{BatchManager}.) de +garantir au job la presence et la persistence de ces ressources pendant +l'execution du job. + +Par contre c'est a l'utilisateur qui soumet le job d'informer le +gestionnaire de batch des ressources necessaires au job. Pour des +raisons evidentes de bonne gestion des ressources, le job ne peut +consommer plus de ressources que celles qu'il a demande et obtenu du +gestionnaire de batch sans etre arrete ou reclasse. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Parametre, Environnement, Job, Terminologie +@comment node-name, next, previous, up +@subsection Parametre +@cindex parametre + +Le premier type de ressource necessaire a un job concerne les elements +materiels ou temporels, en un mot, physiques. Parmi ces ressources, on +trouve le temps de calcul, le temps de presence en machine, l'espace +disque, la quantite de memoire vive, l'architecture du calculateur, etc. + +Dans la terminologie de la bibliotheque de classes Batch, tous ces +elements ont ete regroupes sous le terme de @emph{Parametre}. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Environnement, JobId, Parametre, Terminologie +@comment node-name, next, previous, up +@subsection Environnement +@cindex environnement + +Le second type de ressource necessaire a un job concerne les elements +logiciels. Cela se traduit le plus souvent, et particulierement, dans +les systemes Unix par la notion de variable d'environnement. Lorsque le +job s'execute, il doit pouvoir trouver l'ensemble des commandes et des +applications auquel il souhaite faire appel. Les variables +d'environnement decrivent donc les localisations des ces +programmes. Elles peuvent egalement contenir des informations influant +sur le comportement des programmes. + +Dans la terminologie de la bibliotheque de classes Batch, tous ces +elements on ete regroupes sous le terme de @emph{Environnement}. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node JobId, JobInfo, Environnement, Terminologie +@comment node-name, next, previous, up +@subsection JobId +@cindex jobid +@cindex identifier + +Si un job (@xref{Job}.) decrit les actions qui doivent etre effectues +par le systeme sous le controle du gestionnaire de batch, il est clair +qu'il est possible de soumettre plusieurs fois de suite le meme job, et +par la-meme d'executer plusieurs fois (et parfois simultanement) ces +memes actions. On a donc plusieurs instances du meme job qui sont +presentes en machine. Chaque instance peut etre distinguee des autres +par un identifiant unique qui lui est propre : c'est le @emph{jobId}. + +Le JobId est determine par le gestionnaire de batch au moment de la +soumission. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node JobInfo, Classes generiques, JobId, Terminologie +@comment node-name, next, previous, up +@subsection JobInfo +@cindex jobinfo + + +Des qu'un job (@xref{Job}.) est soumis donc des qu'il dispose d'un +JobId (@xref{JobId}.), il est possible d'interroger le gestionnaire de +batch pour etre informe de son comportement, de son evolution au sein du +systeme pendant son execution. + +On peut ainsi connaitre les parametres reellement consommes par rapport +aux parametres alloues, ainsi que l'environnement d'execution du job. + +Le JobInfo est une structure qui collecte ses informations sur l'etat du +job. + + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classes generiques, Namespace, JobInfo, Classes +@comment node-name, next, previous, up +@section Classes generiques +@cindex classes generiques + +Schematiquement, les classes composant la bibliotheque sont regroupees +en trois categories. Celles appartenant au groupe @emph{Types de base} +ne servent que de support au fonctionnement des classes de plus haut +niveau, egalement appellees @emph{Classes utilisateur}. Seules ces +dernieres sont vraiment interessantes pour l'utilisateur de la +bibliotheque. Les exceptions sont regroupees dans une categorie qui leur +est propre. + +@menu +* Namespace:: Espace de noms pour la bibliotheque. +* Types de base:: Les classes elementaires. +* Classes utilisateur:: Les classes de haut-niveau. +* Exceptions:: Les exceptions de la bibliotheque. +@end menu + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Namespace, Types de base, Classes generiques, Classes generiques +@comment node-name, next, previous, up +@subsection Namespace +@cindex namespace + +Toutes les classes de la bibliotheque sont regroupees dans un unique +namespace nomme @emph{Batch} afin de ne pas introduire de conflit avec +d'autres classes de meme nom. + +Ainsi lorsque par exemple on cite la classe @emph{BatchManager}, il +faudra declarer un objet @emph{Batch::BatchManager} ou bien faire appel +au namespace @emph{Batch} en C++. En Python, les objets sont regroupes +dans un module nomme @emph{libBatch_Swig}. + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Types de base, Classe Couple, Namespace, Classes generiques +@comment node-name, next, previous, up +@subsection Types de base +@cindex types de base + +Les classes decrites ici sont toutes utilisees ou utilisables par les +classes utilisateur de la bibliotheque, et en particulier par la classe +Versatile. @xref{Classe Versatile}. + +Ces classes implementent sous forme d'objet les types de base du langage +C++. Ainsi la classe @emph{Booltype} implemente le type de base +@emph{bool}. Certains types de base n'existant pas dans le langage ont +ete crees et encapsules dans une classe : c'est le cas notamment du type +de base @emph{Date} et de la classe @emph{DateType}, et du type de base +@emph{Couple} et de la classe @emph{CoupleType}. + +Tous les classes heritent de la classe generique @emph{GenericType}. + +@menu +-- Types de base -- + +* Classe Couple:: Association de fichiers. +* Classe Date:: Type elementaire de date. + +-- Classes d'implementation des types de base -- + +* Classe GenericType:: Classe-mere de tous les types. +* Classe BoolType:: Encapsulation du type bool. +* Classe CharType:: Encapsulation du type char. +* Classe CoupleType:: Encapsulation du type Couple. +* Classe DateType:: Encapsulation du type Date. +* Classe IntType:: Encapsulation du type int. +* Classe LongType:: Encapsulation du type long. +* Classe StringType:: Encapsulation du type string. + +@end menu + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe Couple, Classe Date, Types de base, Types de base +@comment node-name, next, previous, up +@page +@subsubsection Couple +@findex Couple + +La classe @emph{Couple} implemente le comportement d'un couple de deux +chaines de type @emph{string} qui sont respectivement nommees +@emph{local} et @emph{remote}. + +Cette classe est utilisee essentiellement pour la designation des +fichiers a transferer lors des soumissions de travaux, d'ou les noms +employes. + +@cartouche +Il faut toutefois faire attention a designer correctement ce qui est +local ou distant. Ainsi dans la bibliotheque de classes Batch, on a +adopte la convention qu'un fichier dit @emph{local} est celui present +sur la machine qui execute la bibliotheque de classes Batch, alors qu'un +fichier dit @emph{remote} (ou distant) est celui present sur le serveur +du gestionnaire de batch. +L'approche est donc clairement orientee utilisateur plutot que serveur. +@end cartouche + +@itemize @bullet{} +@item Entete + +@example +class Couple +@{ + public: + // Constructeur standard + Couple(const string & local, const string & remote); + + // Constructeur par recopie + Couple(const Couple & C); + + // Operateur pour l'affichage sur un stream + friend ostream & operator << (ostream & os, const Couple & cp); + + // Operateur d'affectation + virtual Couple & operator =(const Couple &); + + // Conversion en chaine + virtual string str() const; + + // Accesseurs + virtual string getLocal() const; + virtual string getRemote() const; + + protected: + string _local; // chemin d'acces au fichier local + string _remote; // chemin d'acees au fichier distant + + private: + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe Date, Classe GenericType, Classe Couple, Types de base +@comment node-name, next, previous, up +@page +@subsubsection Date +@findex Date + +La classe @emph{Date} sert a stocker n'importe quelle information de +temps et peut la representer sous une forme plus lisible a l'utilisateur +que le traditionnel appel a la fonction @emph{ctime}. @xref{(*manpages*)ctime}. + +@itemize @bullet{} +@item Entete + +@example +class Date +@{ + public: + // Constructeur standard (a partir d'une valeur epoch) + Date(const long l=0); + + // Constructeur a partir d'une chaine hh:mm:ss + Date(const string s); + + // Operateurs portant sur les Dates + virtual Date & operator =(long l); + virtual Date & operator +(long l); + virtual Date & operator -(long l); + virtual Date & operator +=(long l); + virtual Date & operator -=(long l); + virtual Date & operator =(const string & s); + + // Conversions en types standards + virtual string str() const; + virtual long epoch() const; + + protected: + int _day, _month, _year; + int _hour, _min, _sec; + + private: + +@}; +@end example +@end itemize + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe GenericType, Classe BoolType, Classe Date, Types de base +@comment node-name, next, previous, up +@page +@subsubsection GenericType +@findex GenericType + +La classe @emph{GenericType} est la classe-mere de toutes les classes +utilisees par la classe @emph{Versatile}. @xref{Classe Versatile}. + +Elle definit une interface que @emph{Versatile} utilise pour controler +les objets : constructeur simple et destructeur, operateur sur +@emph{ostream}, conversion en chaine et surtout methode @emph{clone}. + +La methode @emph{clone} permet de recuperer un nouvel objet identique au +premier qui sera automatiquement alloue sur le tas par un appel a +@emph{new}. Il est important de noter ici que le nouvel objet @strong{DEVRA} +etre desalloue par un appel a @emph{delete}. Cette desallocation est a +la charge de l'utilisateur de l'objet sans quoi une fuite memoire en +resultera. + +@itemize @bullet{} +@item Entete + +@example +class GenericType +@{ + public: + // Constructeur et destructeur + GenericType(); + virtual ~GenericType(); + + // Operateur pour l'affichage sur un stream + friend ostream & operator << (ostream & os, + const GenericType & obj); + + // Conversion en chaine + virtual string affiche() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + // Retourne le nombre d'objets GenericType et al. + static int getNb(); + + protected: + + private: + static int _nb; // nombre total d'objets GenericType et al. + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe BoolType, Classe CharType, Classe GenericType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection BoolType +@findex BoolType + +Cette classe encapsule le type C++ @emph{bool} dans un objet herite de +@emph{GenericType} de maniere a pouvoir le stocker aisement dans un +objet de classe @emph{Versatile}. + +@itemize @bullet{} +@item Entete + +@example +class BoolType : public GenericType +@{ + public: + // Constructeur + BoolType(const bool b=false); + + // Conversion en chaine + virtual string affiche() const; + + // Operateur d'affectation + virtual BoolType & operator =(bool); + + // Conversion en bool + virtual operator bool() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + bool _data; + + private: + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe CharType, Classe CoupleType, Classe BoolType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection CharType +@findex CharType + +Cette classe encapsule le type C++ @emph{char} dans un objet herite de +@emph{GenericType} de maniere a pouvoir le stocker aisement dans un +objet de classe @emph{Versatile}. + + +@itemize @bullet{} +@item Entete + +@example +class CharType : public GenericType +@{ + public: + // Constructeur + CharType(const char c=0); + + // Conversion en chaine + virtual string affiche() const; + + // Operateur d'affectation + virtual CharType & operator =(char); + + // Conversion en char + virtual operator char() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + char _data; + + private: + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe CoupleType, Classe DateType, Classe CharType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection CoupleType +@findex CoupleType + +Cette classe encapsule le type interne @emph{Couple} dans un objet herite de +@emph{GenericType} de maniere a pouvoir le stocker aisement dans un +objet de classe @emph{Versatile}. + + +@itemize @bullet{} +@item Entete + +@example +class CoupleType : public GenericType +@{ + public: + // Constructeur + CoupleType(const Couple & C); + + // Conversion en chaine + virtual string affiche() const; + virtual operator string() const; + + // Operateur d'affectation + virtual CoupleType & operator =(const Couple & C); + + // Conversion en char + virtual operator Couple() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + Couple _data; + + private: + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe DateType, Classe IntType, Classe CoupleType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection DateType +@findex DateType + +Cette classe encapsule le type interne @emph{Date} dans un objet herite de +@emph{GenericType} de maniere a pouvoir le stocker aisement dans un +objet de classe @emph{Versatile}. + + +@itemize @bullet{} +@item Entete + +@example +class DateType : public GenericType +@{ + public: + // Constructeur + DateType(const Date & d); + + // Conversion en chaine + virtual string affiche() const; + + // Operateur d'affectation + virtual DateType & operator =(const Date &); + + // Conversion en Date + virtual operator Date() const; + + // Conversion en long + virtual operator long() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + Date _data; + + private: +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe IntType, Classe LongType, Classe DateType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection IntType +@findex IntType + +Cette classe encapsule le type C++ @emph{int} dans un objet herite de +@emph{GenericType} de maniere a pouvoir le stocker aisement dans un +objet de classe @emph{Versatile}. + + +@itemize @bullet{} +@item Entete + +@example +class IntType : public GenericType +@{ + public: + // Constructeur + IntType(const int i=0); + + // Conversion en chaine + virtual string affiche() const; + + // Operateur d'affectation + virtual IntType & operator =(int); + + // Conversion en int + virtual operator int() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + int _data; + + private: + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe LongType, Classe StringType, Classe IntType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection LongType +@findex LongType + +Cette classe encapsule le type C++ @emph{long} dans un objet herite de +@emph{GenericType} de maniere a pouvoir le stocker aisement dans un +objet de classe @emph{Versatile}. + +@itemize @bullet{} +@item Entete + +@example +class LongType : public GenericType +@{ + public: + // Constructeur + LongType(const long l=0L); + + // Conversion en chaine + virtual string affiche() const; + + // Operateur d'affectation + virtual LongType & operator =(long); + + // Conversion en long + virtual operator long() const; + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + long _data; + + private: + +@}; +@end example +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe StringType, Classes utilisateur, Classe LongType, Types de base +@comment node-name, next, previous, up +@page +@subsubsection StringType +@findex StringType + +Cette classe encapsule le type C++ @emph{string} de la STL dans un objet +herite de @emph{GenericType} de maniere a pouvoir le stocker aisement +dans un objet de classe @emph{Versatile}. + +@itemize @bullet{} +@item Entete + +@example +class StringType : public GenericType +@{ + public: + // Constructeur + StringType(const string & s=""); + + // Conversion en chaine + virtual string affiche() const; + virtual operator string() const; + + // Operateur d'affectation + virtual StringType & operator =(string); + + // Clone duplique l'objet et en fabrique un nouveau a l'aide de new + // qu'il faudra detruire ensuite manuellement + virtual GenericType * clone() const; + + protected: + string _data; + + private: + +@}; +@end example +@end itemize + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classes utilisateur, Exemple, Classe StringType, Classes generiques +@comment node-name, next, previous, up +@page +@subsection Classes utilisateur +@cindex classes utilisateur + +Les classes dites classes utilisateur sont en realite les classes de +plus haut niveau de la biliotheque de classes Batch. Ces classes +remplissent les unes avec les autres l'ensemble des fonctionnalites +proposees par la bibliotheque. L'utilisateur trouvera donc dans cette +section la description des possibilites de la bibliotheque et le moyen +de les mettre en oeuvre. + +La premiere section montre un exemple complet de soumission et de +controle d'un job soumis a travers les classes de la biliotheque. Les +sections suivantes reprennent les elements de l'exemple pour le +detailler et le completer. + +@menu +* Exemple:: Exemple simple mais complet d'utilisation. +* Classe BatchManagerCatalog:: Description de la classe BatchManagerCatalog. +* Classe FactBatchManager:: Description de la classe FactBatchManager. +* Classe BatchManager:: Description de la classe BatchManager. +* Classe Environnement:: Description de la classe Environnement. +* Classe Job:: Description de la classe Job. +* Classe JobId:: Description de la classe JobId. +* Classe JobInfo:: Description de la classe JobInfo. +* Classe Parametre:: Description de la classe Parametre. +* Classe Versatile:: Description de la classe Versatile. +@end menu + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Exemple, Classe BatchManagerCatalog, Classes utilisateur, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection Exemple +@cindex exemple + +Cet exemple decrit le processus type de creation et de soumission d'un +job a travers les classes de la bibliotheque. + +Il faut toutefois penser que les appels aux methodes peuvent lever des +exceptions qu'il faudra intercepter et gerer. @xref{Exceptions}. + +@example + @dots{} + + // On instancie le catalogue de gestionnaires de batch + Batch::BatchManagerCatalog cata; + + // On cree un BatchManager qui se connecte au veritable gestionnaire + // de batch + Batch::BatchManager & bm = (* cata("PBS"))("monserver.mondomaine.fr"); + + // Pour fabriquer un Job, on doit d'abord creer un objet Parametre et + // un objet Environnement qui contiennent respectivement la liste des + // parametres du job au sein du gestionnaire de batch et la liste des + // variables d'environnement necessaires au fonctionnement du job + Batch::Parametre param; + + param[EXECUTABLE] = "/home/user/mon_application/executable"; + param[NAME] = "MonJob"; + param[ACCOUNT] = "MonProjet"; // code d'imputation/facturation + param[MAXCPUTIME] = 360L; // 6min + param[MAXWALLTIME] = 480L; // 8min + param[INFILE] = Batch::Couple("/tmp/infich1", rempath+"/infich1"); + param[OUTFILE] = Batch::Couple("/tmp/outfich1", rempath+"/outfich1"); + param[OUTFILE] += Batch::Couple("stderr", path + "/STDERR"); + param[OUTFILE] += Batch::Couple("stdout", path + "/STDOUT"); + param[MAIL] = "user@@domaine.fr"; + param[USER] = "user"; + + Batch::Environnement env; + env["DEBUG"] = "3"; // un niveau de debug exige par l'application + env["MYAPP_FILE"] = "/home/user/mon_application/data/mydatafile"; + + // Creation du job + Batch::Job job(param, env); + + // On soumet le Job au BatchManager qui le relaie jusqu'au veritable + // gestionnaire de batch sur le serveur. En retour on obtient un + // identifiant unique de notre job (JobId). + const Batch::JobId jobid = bm.submitJob(job); + + // On interroge le BatchManager pour connaitre l'etat du Job + const Batch::JobInfo jinfo = jobid.queryJob(); + cout << jinfo << endl; + + // On detruit l'objet BatchManager + delete &bm; + + @dots{} +@end example + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe BatchManagerCatalog, Classe FactBatchManager, Exemple, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection BatchManagerCatalog +@findex BatchManagerCatalog + +La classe @emph{BatchManagerCatalog} definit une interface d'acces au +catalogue de fabriques de BatchManager. @xref{Classe FactBatchManager}. + +Pourquoi utiliser une fabrique et ne pas instancier directement un objet +@emph{BatchManager} en fonction de sa classe ? C'est l'option qui avait ete +choisie dans la premiere version de la bibliotheque de classes +Batch. Cette facon de proceder est simple, aussi bien pour le +developpeur de la classe que pour l'utilisateur, mais elle se revele a +terme penalisante dans la souplesse d'utilisation des classes. Elle +permet aussi moins facilement de mettre en place une strategie de +singleton pour les objets @emph{BatchManager}, ce qui peut se reveler utile non +pas en termes de performance mais plutot en termes de genericite et +toujours de souplesse. + +En resume, l'utilisation de fabiques permet d'acceder a la genericite, +qui rappelons-le est l'objet de cette biliotheque, a la souplesse et a +la performance au prix d'une legere complication pour le developpeur +mais pas pour l'utilisateur. + +Le catalogue de fabriques est une @emph{map}, ou tableau associatif, +auquel on passe le nom d'une fabrique et qui retourne un pointeur sur +une instance de cette fabrique. + +Le catalogue est renseigne statiquement par les fabriques declarees +elles-memes statiquement dans la biliotheque. Il est donc precharge avec +les fabriques correspondant a chacune des API disponibles. Comme le +catalogue n'est pas declare constant, il est possible de rajouter ou de +supprimer des fabriques dans le catalogue dynamiquement. + +@itemize @bullet{} +@item Entete + +@example +class BatchManagerCatalog +@{ +public: + // Constructeur + BatchManagerCatalog(); + // Destructeur + virtual ~BatchManagerCatalog(); + + // Accesseurs + static FactBatchManager * getFactBatchManager(const char * type); + static void addFactBatchManager(const char * type, + FactBatchManager * pFBM); + virtual FactBatchManager * operator() (const char * type) const; + + // Wrapping Python + virtual map * dict() const; + virtual string __repr__() const; + +protected: + // Le catalogue est gere en singleton et en multi-thread + static map * _p_catalog; + static pthread_mutex_t _mutex; + +private: + +@}; +@end example + +@item Exemple + +@example +@dots{} + +// On instancie le catalogue de gestionnaires de batch +Batch::BatchManagerCatalog cata; + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{BatchManagerCatalog()} + +Le constructeur par defaut permet d'obtenir une instance de +@emph{BatchManagerCatalog} qui permet de manipuler un objet statique +interne. Cet objet interne est le veritable catalogue et se trouve etre +un singleton. + + +@item +@b{~BatchManagerCatalog()} + +Le destructeur n'a pas d'action particuliere. + +@item +@b{static FactBatchManager * getFactBatchManager(const char * type)} + +Cet accesseur retourne un pointeur sur un objet de type +@emph{FactBatchManager} en fonction du nom (le type) sous lequel il +s'est enregistre dans le catalogue. + +Cette fonction est statique et peut donc etre utilisee pour interroger +le catalogue depuis des objets statiques. + +@item +@b{static void addFactBatchManager(const char * type, FactBatchManager * pFBM)} + +Cet accesseur enregistre dans le catalogue un pointeur sur un objet de type +@emph{FactBatchManager} sous le nom (le type) passe en argument. + +Cette fonction est statique et peut donc etre utilisee pour enregistrer +des objets statiques dans le catalogue. + +@item +@b{FactBatchManager * operator() (const char * type) const} + +Cet accesseur retourne un pointeur sur un objet de type +@emph{FactBatchManager} en fonction du nom (le type) sous lequel il +s'est enregistre dans le catalogue. + +Cette fonction non statique est utilisable sur une instance de +@emph{BatchManagerCatalog}. + +@item +@b{map * dict() const} + +Cette methode utilisable depuis Python permet de recuperer un +dictionnaire decrivant le contenu du catalogue. + +@item +@b{string __repr__() const} + +Cette methode utilisable depuis Python retourne une description de +l'objet @emph{BatchManagerCatalog}. + +@end itemize + + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe FactBatchManager, Classe BatchManager, Classe BatchManagerCatalog, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection FactBatchManager +@findex FactBatchManager + +La classe @emph{FactBatchManager} est abstraite. Elle definit une interface +qui doit etre implementee par des classes specialisees en fonction du +gestionnaire de batch et de son API de communication. @xref{Classes specifiques}. + +Les objets repondant a l'interface de @emph{FactBatchManager} sont +automatiquement inseres dans le catalogue des fabriques de +@emph{BatchManager} a la construction de l'objet. Il est ainsi possible +de definir statiquement des objets de ce type qui enrichiront le +catalogue des la compilation. @xref{Classe +BatchManagerCatalog}. @xref{Classe BatchManager}. + +Les objets de la classe @emph{FactBatchManager} ou de ses derivees sont +des functors et renvoient au moment de l'appel un pointeur sur un objet +gestionnaire de batch @emph{BatchManager} associe a un +serveur. L'allocation de l'objet est faite sur le tas et celui-ci doit +donc etre desalloue manuellement par l'utilisateur de la bibliotheque au +moment opportun. + +@itemize @bullet{} +@item Entete + +@example +class FactBatchManager +@{ +public: + // Constructeur + FactBatchManager(const string & type); + + // Destructeur + virtual ~FactBatchManager(); + + // Functor + virtual BatchManager * operator() (const char * hostname) const = 0; + + // Accesseur au type interne + string getType() const; + + // Wrapping Python + string __repr__() const; + +protected: + string type; // Le type interne + +private: + +@}; +@end example + +@item Exemple + +@example +@dots{} + +// On instancie le catalogue de gestionnaires de batch +Batch::BatchManagerCatalog cata; + +// On cree une fabrique de BatchManager de type PBS +Batch::FactBatchManager & fbm = * cata("PBS"); + +@dots{} +@end example + +@item Methodes +@itemize @minus{} + +@item +@b{FactBatchManager(const string & type)} + +Le constructeur de la classe prend un type qui doit identifer de maniere +unique la fabrique au sein du catalogue de fabrique. Ce type sert de cle au +catalogue. @xref{Classe BatchManagerCatalog}. + +@item +@b{~FactBatchManager()} + +Le destructeur de la classe n'a pas d'action particuliere. + +@item +@b{BatchManager * operator() (const char * hostname) const} + +Cette methode est virtuelle pure. Elle doit etre surchargee dans les +classes derivees et doit retourner un pointeur sur un objet de type +@emph{BatchManager} correpondant au type de la classe et oeuvrant sur la +machine passee en argument. Le @emph{hostname} est soit alphabetique +soit numerique et doit etre soit un nom de machine valide soit une +adresse IP valide. Aucun controle n'est a priori realise et cet argument +est passe tel quel a l'API du gestionnaire de batch. + +Cet objet agit comme @emph{parent} vis-a-vis de l'objet +@emph{BatchManager} qu'il retourne. + +@item +@b{string getType() const} + +Cette methode renvoie le type interne de l'objet, c'est-a-dire la cle +sous lequel il est enregistre dans le catalogue. + +@item +@b{string __repr__() const} + +Cette methode utilisable depuis Python retourne une description de +l'objet @emph{FactBatchManager}. + +@end itemize + + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe BatchManager, Classe Environnement, Classe FactBatchManager, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection BatchManager +@findex BatchManager + +La classe @emph{BatchManager} est abstraite. Elle definit une interface +qui doit etre implementee par des classes specialisees en fonction du +gestionnaire de batch et de son API de communication. @xref{Classes +specifiques}. + +Toute action a destination du gestionnaire de batch doit etre precedee +de l'instanciation d'un objet derivant de la classe @emph{BatchManager} +puisque c'est a travers cet objet que l'on aura acces a l'interface du +gestionnaire. + +Cette instanciation est realisee par une fabrique de gestionnaire de +batch, instance elle-meme derivee de la classe abstraite +FactBatchManager. @xref{Classe FactBatchManager}. + +@itemize @bullet{} +@item Entete + +@example +class BatchManager +@{ + public: + // Constructeur et destructeur + BatchManager(const FactBatchManager * parent, + const char * host="localhost") + throw(InvalidArgumentException); + virtual ~BatchManager(); + + // Recupere l'identifiant d'un job deja soumis au BatchManager + virtual const JobId getJobIdByReference(const string & ref); + + // Methodes pour le controle des jobs : virtuelles pures + // soumet un job au gestionnaire + virtual const JobId submitJob(const Job & job) = 0; + + // retire un job du gestionnaire + virtual void deleteJob(const JobId & jobid) = 0; + + // suspend un job en file d'attente + virtual void holdJob(const JobId & jobid) = 0; + + // relache un job suspendu + virtual void releaseJob(const JobId & jobid) = 0; + + // modifie un job en file d'attente + virtual void alterJob(const JobId & jobid, + const Parametre & param, + const Environnement & env) = 0; + virtual void alterJob(const JobId & jobid, + const Parametre & param) = 0; + virtual void alterJob(const JobId & jobid, + const Environnement & env) = 0; + + // renvoie l'etat du job + virtual JobInfo queryJob(const JobId & jobid) = 0; + + // wrapping Python + virtual string __repr__() const; + + protected: + string _hostname; // serveur ou tourne le BatchManager + const FactBatchManager * _parent; // fabrique qui a produit l'instance + + private: + +@}; +@end example + +@item Exemple + +@example +@dots{} + +// On instancie le catalogue de gestionnaires de batch +Batch::BatchManagerCatalog cata; + +// On cree un BatchManager qui se connecte au veritable gestionnaire +// de batch +Batch::BatchManager & bm = (* cata("PBS"))("monserver.mondomaine.fr"); + +// Maintenant, on peut utiliser toutes les fonctionnalites du +// gestionnaire de batch a travers le variable myBM + +// On detruit l'objet BatchManager +delete &bm; + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{BatchManager(const FactBatchManager * parent,$* +const char * host="localhost") throw(InvalidArgumentException)} + +Excepte un pointeur sur la fabrique qui a produit l'objet, @xref{Classe FactBatchManager}, + le constructeur accepte zero ou un argument de type +@emph{string} decrivant soit le nom de domaine completement qualifie +(FQDN, @i{fully qualified domain name}) du serveur de batch, soit son +adresse IP dans un format decimal "aaa.bbb.ccc.ddd". + +Une resolution du nom ou de l'adresse peut etre realisee en fonction des +capacites de la plate-forme pour s'assurer que le serveur est connu et +joignable. En cas d'echec, une exception InvalidArgumentException est +levee. @xref{Classe InvalidArgumentException}. A priori, aucune +verification n'est faite par defaut. + +Ceci fait, une connexion est etablie avec le gestionnaire de batch qui +est maintenue jusqu'a destruction de l'objet, si le gestionnaire le permet. + +@item +@b{~BatchManager()} + +Le destructeur supprime la connexion precedemment etablie par le +constructeur lorsque celle-ci a reussi. + +@item +@b{const JobId submitJob(const Job & job)} + +Cette methode soumet le job passe en argument au gestionnaire de +batch. Etant donne que le job ne peut pas etre envoye tel quel puisqu'il +a un format generique au sein de la bibliotheque de classes Batch, cette +methode est chargee de le convertir dans un format adapte au +gestionnaire de batch sous-jacent. + +Ce n'est que lorsque cette conversion est realisee que le job est soumis +au gestionnaire a travers son API. L'identifiant propose par le +gestionnaire est alors renvoye a l'appelant. Si la soumission echoue +pour une raison ou une autre, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + +@item +@b{void deleteJob(const JobId & jobid)} + +Cette methode retire le job dont l'identifiant est passe en argument de +la file d'attente du gestionnaire, ou bien l'arrete s'il est en cours +d'execution. Cette methode est inoperante sur des travaux deja termines, +auquel cas une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + + +@item +@b{void holdJob(const JobId & jobid)} + +Cette methode suspend le job dont l'identifiant est passe en argument au +sein de la file d'attente du gestionnaire. Cette methode est inoperante +sur des travaux en cours d'execution ou deja termines, ainsi que sur des +travaux deja suspendus. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + +@item +@b{void releaseJob(const JobId & jobid)} + +Cette methode relache un job precedemment suspendu en file +d'attente dont l'identifiant est passe en argument. Elle est inoperante +sur des travaux deja relaches, en cours d'execution ou termines. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + + +@item +@b{void alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)@* +void alterJob(const JobId & jobid, const Parametre & param)@* +void alterJob(const JobId & jobid, const Environnement & env)} + +Ces methodes permettent de modifier les parametres d'execution et +d'environnement d'un job dont l'identifiant est passe en +argument. @xref{Classe Parametre}. @xref{Classe Environnement}. Il +est important de noter que le job doit etre encore place en file +d'attente sinon la methode est inoperante. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + +@item +@b{JobInfo queryJob(const JobId & jobid)} + +Cette methode permet de recuperer les informations concernant le job +dont l'identifiant est passe en argument dans un objet de classe +@emph{JobInfo}. @xref{Classe JobInfo}. On y retrouve les parametres +d'execution et d'environnement du job tels qu'ils ont ete passes au +gestionnaire au moment de la soumission, ainsi que des informations +concernant l'execution du job comme par exemple la machine d'execution, +le temps consomme, la memoire consommee, etc. + +Il n'est pas toujours possible d'interroger un job deja termine. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + + +@item +@b{const JobId getJobIdByReference(const string & ref)} + +Cette methode permet de recuperer au sein de la classe un identifiant de +job a partir d'une chaine de caracteres obtenue par un biais +externe. Cet identifiant pourra etre utilise par la suite au sein de la +biliotheque de classes pour controler le job comme s'il avait ete cree +et soumis depuis la biliotheque-meme. + +@end itemize + + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe Environnement, Classe Job, Classe BatchManager, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection Environnement +@findex Environnement + +La classe @emph{Environnement} permet de definir les variables +d'environnement necessaires a l'execution d'un job. Ces variables seront +creees automatiquement dans l'environnement du job lorsque celui-ci +debutera son execution sur la machine. + +Une variable d'environnement est traditionnellement composee d'un nom et +d'une valeur qui peut etre vide ou absente. L'ensemble des variables +d'environnement peut ainsi etre represente sous la forme d'une table +associative dans laquelle le nom de la variable correspond a la clef de la +table, et la valeur de la variable correspond a la valeur de la table +pour la clef donnee. + +Chaque objet de la classe @emph{Environnement} se comporte comme une +table associative telle que decrite auparavant. + +@itemize @bullet{} +@item Entete + +@example +typedef map < string, string > Environnement; +@end example + + +@item Exemple +@example +@dots{} + +Environnement env; +env["MYAPP_ROOTDIR"] = "/home/user/myapplication"; +env["MYAPP_LICENSEFILE"] = env["MYAPP_ROOTDIR"] + "/license.dat"; +env["CXX"] = "g++"; +env["CXXFLAGS"] = "-g -O2"; + +@dots{} +@end example + +@item Methodes + +Compte tenu de la definition actuelle de la classe @emph{Environnement} +en tant que map STL, elle beneficie de toutes les fonctionnalites +classiques des maps STL. + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe Job, Classe JobId, Classe Environnement, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection Job +@findex Job + +La classe @emph{Job} represente la notion de travail, ou job, dans la +bibliotheque de classes Batch. Elle se comporte essentiellement comme +une collection de parametres et de variables necessaires a la +description des actions qui doivent etre realisees dans des conditions +precisees. + +Elle se repose sur deux autres classes qui distinguent la notion de +parametre d'execution et celle de variable d'environnement : les classes +@emph{Parametre} et @emph{Environnement}. @xref{Classe +Parametre}. @xref{Classe Environnement}. + +Son role est de preparer la soumission qui aura lieu et qui concretisera +l'incarnation du job dans le gestionnaire de batch. Tant que le job n'a +pas ete soumis, on ne peut pas vraiment considerer son existence et de +fait les interactions qu'on peut avoir avec l'objet sont tres limitees. + +@itemize @bullet{} +@item Entete + +@example +class Job +@{ + public: + // Constructeurs et destructeur + Job(); + Job(Parametre param); + Job(Environnement env); + Job(Parametre param, Environnement env); + virtual ~Job(); + + // Operateur pour l'affichage sur un stream + friend ostream & operator <<(ostream & os, const Job & job); + + // Accesseurs + Parametre getParametre() const; + void setParametre(const Parametre &); + + // Accesseurs + Environnement getEnvironnement() const; + void setEnvironnement(const Environnement &); + + // Methodes pour l'interfacage avec Python (SWIG) + string __repr__() const; + + protected: + Parametre _param; // table des parametres batch du job + Environnement _env; // table des variables d'environnement + + private: + +@}; +@end example + + +@item Exemple +@example +@dots{} + +@dots{} (ici on cree un BatchManager bm) +Parametre param; +Environnement env; + +@dots{} (ici on cree les parametres du job) + +Job job(param, env); +JobId jobid = bm.sumbitJob(job); + +@dots{} +@end example + +@item Methodes +@itemize @minus{} + +@item +@b{Job()$* +Job(Parametre param)$* +Job(Environnement env)$* +Job(Parametre param, Environnement env)} + +Le constructeur, en plus de creer l'objet, peut faire des verifications +sur la coherence des objets passes en argument s'il y en a. + +@item +@b{~Job()} + +Le destructeur libere simplement les espaces alloues. + +@item +@b{ostream & operator <<(ostream & os, const Job & job)} + +Cette methode permet a l'utilisateur d'afficher sur un stream le contenu +d'un objet de classe @emph{Job}. + +@item +@b{Parametre getParametre() const} + +Un accesseur pour recuperer l'objet Parametre passe en argument du +constructeur. + +@item +@b{void setParametre(const Parametre &)} + +Cette methode permet de positionner @i{a posteriori} l'objet +@emph{Parametre}. Des tests complementaires peuvent etre faits pour +verifier la coherence de l'objet. + +@item +@b{Environnement getEnvironnement() const} + +Un accesseur pour recuperer l'objet Environnement passe en argument du constructeur. + +@item +@b{void setEnvironnement(const Environnement &)} + +Cette methode permet de positionner @i{a posteriori} l'objet +@emph{Environnement}. Des tests complementaires peuvent etre faits pour +verifier la coherence de l'objet. + +@item +@b{string __repr__() const} + +Cette methode sert dans l'interfacage Python de l'objet et permet d'en +realiser l'affichage a travers l'interpreteur Python. + +@end itemize +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe JobId, Classe JobInfo, Classe Job, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection JobId +@findex JobId + +La classe @emph{JobId} represente l'incarnation d'un objet de classe +@emph{Job} une fois soumis au travers du gestionnaire de batch. A chaque +objet @emph{JobId} correspond une et une seule soumission d'un objet +@emph{Job}. Ainsi un meme objet @emph{Job} peut etre soumis plusieurs +fois de suite a un ou plusieurs gestionnaires de batch et produira +autant d'objets @emph{JobId}. + +L'objet @emph{JobId} assure le controle et la gestion du job au travers +du gestionnaire de batch. Chaque objet @emph{JobId} est associe a un +gestionnaire particulier aupres duquel il relaie les actions qu'on lui +soumet. + + +@itemize @bullet{} +@item Entete + +@example +class JobId +@{ + friend class BatchManager; + + public: + // Constructeur standard et destructeur + JobId(); + virtual ~JobId(); + + // Constructeur avec le pointeur sur le BatchManager associe + // et avec une reference + JobId(BatchManager *, string ref); + + // Operateur d'affectation entre objets + virtual JobId & operator =(const JobId &); + + // Constructeur par recopie + JobId(const JobId &); + + // Accesseur pour la reference interne + virtual string getReference() const; + + // Methodes pour le controle du job + // retire un job du gestionnaire + virtual void deleteJob() const; + + // suspend un job en file d'attente + virtual void holdJob() const; + + // relache un job suspendu + virtual void releaseJob() const; + + // modifie un job en file d'attente + virtual void alterJob(const Parametre & param, + const Environnement & env) const; + virtual void alterJob(const Parametre & param) const; + virtual void alterJob(const Environnement & env) const; + + // modifie un job en file d'attente + virtual void setParametre(const Parametre & param); + virtual void setEnvironnement(const Environnement & env); + + // renvoie l'etat du job + virtual Batch::JobInfo queryJob() const; + + // Methodes pour l'interfacage avec Python (SWIG) + string __str__() const; // SWIG : affichage en Python + string __repr__() const; // SWIG : affichage en Python + + protected: + BatchManager * _p_batchmanager; // pointeur sur le BatchManager + // qui controle le job + string _reference; // reference du job au sein du BatchManager + + private: + +@}; +@end example + + +@item Exemple +@example +@dots{} (ici on cree un BatchManager bm et un Job job) + +// On soumet le job et on recupere un identifiant +JobId jobid = bm.submitJob(job); + +// Ce qui permet d'interroger l'etat du job en cours +JobInfo jinfo = jobid.queryJob(); + +@dots{} +@end example + +@item Methodes + +@itemize @minus{} +@item +@b{JobId()@* +JobId(BatchManager *, string ref)} + +Le constructeur par defaut cree un @emph{JobId} qui devra etre complete +par la suite. Ceci n'est pas directement realisable par l'utilisateur +mais sert pour certaines classes amies de la classe @emph{JobId}. + +D'un point de vue utilisateur la construction d'un objet @emph{JobId} +necessite un pointeur sur un gestionnaire de batch existant et une +chaine de caractere representant une reference au sein de ce +gestionnaire de batch. + +Ces parametres sont en general issus de la +communication avec l'API du gestionnaire de batch et ne peuvent etre +aisement deduits. C'est pourquoi il est recommande de passer par une +classe d'implementation pour fabriquer un objet @emph{JobId}. + + +@item +@b{~JobId()} + +Le destructeur libere l'espace occupe par l'objet. + +@item +@b{JobId & operator =(const JobId &)} + +L'affectation d'un objet @emph{JobId} duplique les donnees internes de +l'objet passe en argument. Les deux objets sont totalement independants +a l'issue de l'affectation et designent chacun la meme instance du job +dans le meme gestionnaire de batch. Le controle du job peut etre realise +avec l'un ou l'autre des objets. + +@item +@b{JobId(const JobId &)} + +De meme que l'affectation le constructeur par recopie produit un objet +@emph{JobId} totalement independant de l'objet passe en argument et qui +designe le meme job dans le meme gestionnaire de batch. Le controle du +job peut etre realise avec l'un ou l'autre des objets. + +@item +@b{string getReference() const} + +Cet accesseur retourne la reference du job pour le gestionnaire de batch +qui a produit l'objet. + +@item +@b{void deleteJob() const} + +Cette methode relaie aupres au gestionnaire de batch qui a produit +l'objet la demande d'arret du job. + +@item +@b{void holdJob() const} + +Cette methode relaie aupres au gestionnaire de batch qui a produit +l'objet la demande de suspension du job. + +@item +@b{void releaseJob() const} + +Cette methode relaie aupres au gestionnaire de batch qui a produit +l'objet la demande de liberation du job. + +@item +@b{void alterJob(const Parametre & param, const Environnement & env) const@* +void alterJob(const Parametre & param) const@* +void alterJob(const Environnement & env) const} + +Ces methodes relaient aupres du gestionnaire de batch qui a produit +l'objet la demande de modification des parametres et/ou des variables +d'environnement du job. + +@item +@b{void setParametre(const Parametre & param)} + +Cette methode n'est utile que pour l'interfacage avec Python, car Python +ne sait pas gerer la surcharge de methode, et de fait leve des +exceptions lors d'appels a de telles methodes. + +Elle est equivalente a la methode @samp{void alterJob(const Parametre & param) const}. + + +@item +@b{void setEnvironnement(const Environnement & env)} + +Cette methode n'est utile que pour l'interfacage avec Python, car Python +ne sait pas gerer la surcharge de methode, et de fait leve des +exceptions lors d'appels a de telles methodes. + +Elle est equivalente a la methode @samp{void alterJob(const Environnement & env) const}. + +@item +@b{Batch::JobInfo queryJob() const} + +Cette methode relaie aupres du gestionnaire de batch qui a produit +l'objet la demande d'interrogation de l'etat du job. + +@item +@b{string __str__() const} + +Cette methode n'est utile que pour l'interfacage avec Python. Elle +permet d'afficher l'etat de l'objet @emph{JobId}. + +@item +@b{string __repr__() const} + +Cette methode n'est utile que pour l'interfacage avec Python. Elle +permet d'afficher l'etat de l'objet @emph{JobId}. + +@end itemize +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe JobInfo, Classe Parametre, Classe JobId, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection JobInfo +@findex JobInfo + +Un objet de classe @emph{JobInfo} represente l'ensemble des informations +disponibles sur un travail actif, c'est-a-dire soumis au gestionnaire de +batch, a un instant donne. + +Cet objet reprend des informations issues du job tel qu'il a ete soumis, +@xref{Classe Job}, mais aussi des informations produites par le +gestionnaire de batch a partir de la soumission et du transit du job en +son sein : nom de la queue dans laquelle le job est inscrit, duree +d'execution, date de soumission, etc. + +Ces informations sont disponibles aupres de l'utilisateur de la classe a +travers les objets @emph{Parametre} et @emph{Environnement} que l'objet +@emph{JobInfo} peut fournir. + +@itemize @bullet{} +@item Entete + +@example +class JobInfo +@{ + public: + // Constructeur standard et destructeur + JobInfo(); + virtual ~JobInfo(); + + // Constructeur par recopie + JobInfo(const JobInfo & jinfo); + + // Operateur pour l'affichage sur un stream + friend ostream & operator <<(ostream & os, const JobInfo & ji); + + // Accesseurs + virtual Parametre getParametre() const; + virtual Environnement getEnvironnement() const; + + // Methodes pour l'interfacage avec Python (SWIG) + string __str__() const; // SWIG : affichage en Python + string __repr__() const; // SWIG : affichage en Python + + protected: + Parametre _param; // parametres du job + Environnement _env; // variables d'environnement du job + + private: +@}; +@end example + + +@item Exemple +@example +@dots{} (ici on cree un BatchManager bm et un Job job) + +// On soumet le job et on recupere un identifiant +JobId jobid = bm.submitJob(job); + +// Ce qui permet d'interroger l'etat du job en cours +JobInfo jinfo = jobid.queryJob(); + +// On recupere l'objet Parametre interne modifie +// par le gestionnaire de batch +Parametre param = jinfo.getParametre(); + +// On recupere l'objet Environnement interne modifie +// par le gestionnaire de batch +Environnement env = jinfo.getEnvironnement(); + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{JobInfo()} + +Ce constructeur cree un objet @emph{JobInfo} vide. + +@item +@b{~JobInfo()} + +Le destructeur libere l'espace memoire alloue par l'objet. + +@item +@b{JobInfo(const JobInfo & jinfo)} + +Le constructeur par recopie produit un objet identique a celui passe en +argument. Les deux objets sont totalement independants l'un de l'autre. + +@item +@b{ostream & operator <<(ostream & os, const JobInfo & ji)} + +Cet operateur permet de voir le contenu de l'objet sur un flot de sortie. + +@item +@b{Parametre getParametre() const} + +Cet accesseur retourne l'objet interne @emph{Parametre} modifie par le +gestionnaire de batch. En particulier on y retrouve toutes les clefs et +les valeurs correspondant aux informations produites dynamiquement par +le gestionnaire (duree d'execution, machine d'execution, etc.). +Il n'est pas garanti que les valeurs passees au moment de la soumission +soient inchangees car des modifications ont pu etre apportees a ces +valeurs pendant le traitement du job par le gestionnaire. + +@item +@b{Environnement getEnvironnement() const} + +Cet accesseur retourne l'objet interne @emph{Environnement} modifie par le +gestionnaire de batch. En particulier on y retrouve toutes les clefs et +les valeurs correspondant aux informations produites dynamiquement par +le gestionnaire (chemin d'acces, variables d'environnement specifiques a +la machine d'execution, etc.). +Il n'est pas garanti que les valeurs passees au moment de la soumission +soient inchangees car des modifications ont pu etre apportees a ces +valeurs pendant le traitement du job par le gestionnaire. + +@item +@b{string __str__() const} + +Cette methode n'est utile que pour l'interfacage avec Python. Elle +permet d'afficher l'etat de l'objet @emph{JobInfo}. + +@item +@b{string __repr__() const} + +Cette methode n'est utile que pour l'interfacage avec Python. Elle +permet d'afficher l'etat de l'objet @emph{JobInfo}. + +@end itemize + +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe Parametre, Classe Versatile, Classe JobInfo, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection Parametre +@findex Parametre + +Les objets de la classe @emph{Parametre} se comportent comme des maps +STL, dont ils ont les fonctionnalites, decrivant les parametres +d'execution du job. + +Contrairement aux variables d'environnement qui sont decrites par les +objets de la classe @emph{Environnement}, les parametres d'execution +servent a preciser les contraintes qui pesent sur le job, comme par +exemple la duree maximale d'execution autorisee, la quantite maximale de +memoire utilisable ou la queue de soumission, ou bien a renseigner le +job avec des informations specifiques a l'utilisateur, comme son +username, son adresse email, le code d'imputation du job, etc. + +En raison du caractere tres specifique et precis des informations qui +doivent etre fournies au gestionnaire de batch, une nomenclature est +proposee par la classe @emph{Parametre} qu'il est vivement conseille de +suivre. De plus tout a ete fait pour rendre cette ecriture naturelle et +facile, donc il ne devrait pas y avoir de probleme pour l'utiliser. + +Ainsi, a titre d'exemple, pour preciser le temps maximal autorise pour +un job, il faut creer une clef de nom @var{maxcputime} dans un objet de +classe @emph{Parametre} qui sera ensuite passe au job. Et pour preciser +le code d'imputation du job, il faut creer une clef de nom @var{account}. + +Mais cet exemple simple montre que la valeur associee a la clef +@var{maxcputime} est semantiquement une duree, et que la valeur associee a +la clef @var{account} est semantiquement un nom. On a donc un probleme de +type puisque dans la definition d'une map STL le type de la valeur doit +etre le meme, et ce meme si les valeurs doivent par la suite avoir des +types semantiques differents. C'est pourquoi on a definit une classe +@emph{Versatile} qui encapsule des types differents. @xref{Classe +Versatile}. + +Quoiqu'il en soit toute la mecanique est cachee et seul importe pour +l'utilisateur de savoir que les valeurs associees aux clefs sont typees +et que ces types sont definis dans l'enumeration @emph{DiscriminatorType}. +@xref{Classe Versatile}. + + +@itemize @bullet{} +@item Entete + +@example +class Parametre : public map< string, Versatile > +@{ + public: + // Constructeur standard + Parametre(); + + // Constructeur par recopie + Parametre(const Parametre & PM); + + // Operateur de recherche dans la map + Versatile & operator [] (const string &); + const Versatile & operator [] (const string &) const; + + // Operateur d'affectation + Parametre & operator =(const Parametre & PM); + + // Declarations statique des clefs de la map + static const string ACCOUNT; + static const string CHECKPOINT; + static const string CKPTINTERVAL; + static const string CREATIONTIME; + static const string EGROUP; + static const string ELIGIBLETIME; + static const string EUSER; + static const string EXECUTABLE; + static const string EXECUTIONHOST; + static const string HOLD; + static const string ID; + static const string INFILE; + static const string MAIL; + static const string MAXCPUTIME; + static const string MAXDISKSIZE; + static const string MAXRAMSIZE; + static const string MAXWALLTIME; + static const string MODIFICATIONTIME; + static const string NAME; + static const string OUTFILE; + static const string PID; + static const string QUEUE; + static const string QUEUEDTIME; + static const string SERVER; + static const string STARTDATE; + static const string STATE; + static const string TEXT; + static const string TMPDIR; + static const string USEDCPUTIME; + static const string USEDDISKSIZE; + static const string USEDRAMSIZE; + static const string USEDWALLTIME; + static const string USER; + + protected: + // map interne servant a controler le type + // de la valeur associee a chaque clef + map< string, TypeParam > TypeMap; + + private: + +@}; +@end example + + +@item Exemple +@example +@dots{} + +Parametre param; + +param[EXECUTABLE] = "/home/user/mon_application/executable"; +param[NAME] = "MonJob"; +param[ACCOUNT] = "MonProjet"; // code d'imputation/facturation +param[MAXCPUTIME] = 360L; // 6min +param[MAXWALLTIME] = 480L; // 8min +param[INFILE] = Couple("/tmp/infich1", rempath + "/infich1"); +param[OUTFILE] = Couple("/tmp/outfich1", rempath + "/outfich1"); +param[OUTFILE] += Couple("stderr", path + "/STDERR"); +param[OUTFILE] += Couple("stdout", path + "/STDOUT"); +param[MAIL] = "user@@domaine.fr"; +param[USER] = "user"; + +@dots{} +@end example + +@item Methodes +@itemize @minus{} + +@item +@b{Parametre()} + +Le constructeur par defaut initialise l'objet @emph{Parametre} et cree +la table des types internes. Par contre l'objet ne contient aucune valeur. + +@item +@b{Parametre(const Parametre & PM)} + +Le constructeur par recopie cree un objet @emph{Parametre} a l'image de +celui qui lui est passe en argument. La table des types internes est +dupliquee ainsi que tous les objets correspondant a chacune des clefs. + +@item +@b{Versatile & operator [] (const string &)} + +Cet operateur permet de recuperer la valeur designee par la clef passee +en argument. Cette valeur est de classe @emph{Versatile} qui encapsule +tous les types de base utilisables dans la bibliotheque en tant que +parametre. @xref{Classe Versatile}. + + +@item +@b{const Versatile & operator [] (const string &) const} + +A l'image de l'operateur precedent, cet operateur permet de recuperer la +valeur designee par la clef passee en argument mais uniquement pour des +objets constants. + +@item +@b{Parametre & operator =(const Parametre & PM)} + +L'operateur d'affectation remplace l'ensemble du contenu de l'objet +@emph{Parametre} par le contenu de l'objet passe en argument. Les +valeurs sont dupliquees par rapport a l'objet @var{pm}. + +@end itemize + +@item Description des clefs + +Selon les gestionnaires de batch utilises, certaines clefs sont actives +ou inactives. Une definition superflue ne pose pas de probleme et se +trouve ignoree au moment de la soumission. Par contre l'absence d'un +clef peut empecher la soumission d'aboutir et lever une exception. + +@itemize @minus{} +@item ACCOUNT : type STRING + +Le code de facturation sur lequel le job doit s'imputer. + +@item CHECKPOINT : type LONG + +Une valeur non nulle indique au gestionnaire de batch que le job est +@dfn{checkpointable}, c'est-a-dire interruptible pour une reprise +ulterieure. + +@item CKPTINTERVAL : type LONG + +En liaison avec la clef @var{CHECKPOINT}, la clef @var{CKPTINTERVAL} +indique l'intervalle en secondes entre deux interruptions du code +(@dfn{checkpoint}). + +@item CREATIONTIME : type LONG + +La date a laquelle le job a ete cree (soumis) dans le gestionnaire de batch. + +@item EGROUP : type STRING + +Le groupe effectif au sens Unix du terme dans lequel le job s'execute. + +@item ELIGIBLETIME : type LONG + +La date a laquelle le job a pu disposer des ressources necessaires a son +execution. + +@item EUSER : type STRING + +L'utilisateur effectif au sens Unix du terme pour lequel le job s'execute. + +@item EXECUTABLE : type STRING + +Le chemin d'acces absolu a l'executable sur la machine qui soumet le job. + +@item EXECUTIONHOST : type STRING + +Le nom de la machine qui execute le job. + +@item HOLD : type LONG + +Une valeur non nulle indique au gestionnaire de batch que le job doit +etre place dans l'etat suspendu. Une valeur nulle libere le job. + +@item ID : type STRING + +L'identifiant unique du job pour le gestionnaire de batch. + +@item INFILE : type liste de COUPLE + +La clef @var{infile} liste les fichiers qui seront envoyes au job avant +son execution. Chaque fichier peut avoir un nom different sur la machine +cliente --- qui soumet le job --- et sur le serveur. C'est pourquoi +chaque fichier a envoyer est represente par un couple dont le nom @var{local} +est le chemin absolu du fichier sur la machine cliente et le nom +@var{remote} est le chemin absolu du fichier sur le +serveur. @xref{Classe Couple}. + +Si le nom @var{remote} vaut @samp{stdin}, alors le contenu du fichier +designe par le nom @var{local} est envoye sur l'entree standard du job +au moment de son execution. + +@item MAIL : type STRING + +L'adresse email de l'utilisateur ou lui seront envoyes les eventuels +messages d'information et d'alerte du gestionnaire de batch. + +@item MAXCPUTIME : type LONG + +Le temps de calcul (@i{CPU time}) en secondes que ne devra pas depasser le job. + +@item MAXDISKSIZE : type LONG + +L'espace disque en octets que ne devra pas depasser le job. + +@item MAXRAMSIZE : type LONG + +La quantite de memoire vive en octets que ne devra pas depasser le job. + +@item MAXWALLTIME : type LONG + +Le temps reel (@i{elapsed time}) en secondes que ne devra pas depasser le job. + +@item MODIFICATIONTIME : type LONG + +La date a laquelle le job a ete modifie pour la derniere fois dans le +gestionnaire de batch. Cette date correspond le plus souvent a la +derniere operation realisee par le gestionnaire dans la gestion du job : +routage au sein des files, suspension ou reprise, etc. + +@item NAME : type STRING + +Le nom du job tel qu'il apparait a l'utilisateur dans son dialogue avec +le gestionnaire de batch. Ce nom n'a pas besoin d'etre unique et ne +remplace pas l'identifiant (ID). Il n'est la que pour informer +l'utilisateur de la nature de son job. + +@item OUTFILE : type liste de COUPLE + +La clef @var{outfile} liste les fichiers qui sont produits par le job et +qui seront recuperes sur la machine locale de l'utilisateur apres +son execution. Chaque fichier peut avoir un nom different sur la machine +cliente --- qui soumet le job --- et sur le serveur. C'est pourquoi +chaque fichier a recuperer est represente par un couple dont le nom @var{local} +est le chemin absolu du fichier sur la machine cliente et le nom +@var{remote} est le chemin absolu du fichier sur le +serveur. @xref{Classe Couple}. + +Si le nom @var{local} vaut @samp{stdout}, alors le contenu du fichier +designe par le nom @var{local} contient la sortie standard du job +au moment de son execution. + +Si le nom @var{local} vaut @samp{stderr}, alors le contenu du fichier +designe par le nom @var{local} contient la sortie d'erreur du job +au moment de son execution. + +@item PID : type LONG + +La valeur du PID (@i{process identifier}) du job sur la machine sur +lqsuelle il s'execute. + +@item QUEUE : type STRING + +Le nom de la queue, aussi appelee classe ou file suivant les +terminologies, qui accueille le job. + +@item QUEUEDTIME : type LONG + +La date depuis laquelle le job a ete place en queue dans le gestionnaire +de batch. + +@item SERVER : type STRING + +Le nom complet du serveur qui recoit les soumissions de job. + +@item STARTDATE : type LONG + +La date a partir de laquelle l'utilisateur desire que le job soit +execute. L'execution ne demarrera qu'au dela de cette date et a +condition que toutes les conditions de ressources soient remplies. + +@item STATE : type STRING + +L'etat actuel du job. + +ATTENTION : Ces valeurs ne sont pas encore normalisees. + +@item TEXT : type STRING + +Un texte d'information que le gestionnaire peut emettre a destination de +l'utilisateur lorsque l'ensemble des parametres n'est pas suffisant pour +traduire l'etat reel du job. Par exemple, ce message peut informer +l'utilisateur de la raison qui maintient un job dans un etat suspendu ou +qui l'empeche de s'executer. + +@item TMPDIR : type STRING + +Un chemin d'acces absolu a un repertoire qui sera cree au demarrage du +job et qui isolera le job des autres travaux en cours d'execution sur la +meme machine. + +@item USEDCPUTIME : type LONG + +Le temps de calcul (@i{CPU time}) en secondes reellement consomme par le job. + +@item USEDDISKSIZE : type LONG + +L'espace disque en octets reellement consomme par le job. + +@item USEDRAMSIZE : type LONG + +L'espace disque en octets reellement consommee par le job. + +@item USEDWALLTIME : type LONG + +Le temps reel (@i{elapsed time}) en secondes reellement consomme par le job. + +@item USER : type STRING + +Le nom de l'utilisateur (@i{username}) sous lequel le job devra tourner +sur la machine d'execution. Ce parametre est utile lorsque l'utilisateur +possede des comptes differents sur les machines sur lequel il soumet et calcule. + +@end itemize + + +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe Versatile, Exceptions, Classe Parametre, Classes utilisateur +@comment node-name, next, previous, up +@page +@subsubsection Versatile +@findex Versatile + +Cette classe est normalement invisible en tant que telle a l'utilsateur +de la bibliotheque de classes Batch. Mais il est tout de meme utile de +la presenter car son action est visible, notamment dans son interaction +fine avec la classe @emph{Parametre}. @xref{Classe Parametre}. + +Comme il a ete precise dans la descrption de la classe @emph{Parametre}, +la classe @emph{Versatile} a ete concue pour encapsuler les valeurs de +la map @emph{Parametre} qui peuvent etre de types effectifs differents. + +Ces types, decrits par l'enumeration @emph{DiscriminatorType}, sont +actuellement au nombre de trois : @var{long}, @var{string} et +@var{couple}. Ces types correpondent au types de base du langage C++ ou +de la biliotheque de classes Batch. @xref{Types de base}. + +Le type special @var{undefined} ne sert que pour l'objet +@emph{Versatile} juste cree mais non encore affecte d'une valeur et donc +d'un type. La premiere affection d'une valeur a un objet +@emph{Versatile} non encore affecte lui donne automatiquement le type de +la valeur. + +Les objets de classe @emph{Versatile} peuvent se comporter soit comme +des variables scalaires, c'est-a-dire ne contenant qu'une valeur unique, +soit comme des listes, auquel cas elles utilisent l'interface des +@emph{list} de la STL. Toutefois afin de faciliter l'ecriture pour +l'utilisateur basique de la classe @emph{Versatile} --- et de la classe +@emph{Parametre} ---, des operateurs de concatenation @samp{+=} et +@samp{,} ont ete ajoutes. + + +@itemize @bullet{} +@item Entete + +@example +// Les types autorises +enum DiscriminatorType @{ UNDEFINED, LONG, STRING, COUPLE @}; + +typedef struct @{ + DiscriminatorType type; // le type de l'element interne + int maxelem; // le nombre d'elements autorises +@} TypeParam; + +class Versatile : public list< GenericType * > +@{ + public: + // Constructeur standard et destructeur + Versatile(); + virtual ~Versatile(); + + // Constructeur par recopie + Versatile(const Versatile & V); + + // Constructeur depuis le type de "base" + Versatile(long l); + Versatile(const string & s); + Versatile(const Couple & c); + + // Operateur d'affectation et de concatenation + // a partir d'un type de "base" + Versatile & operator = (const long l) + throw(TypeMismatchException); + Versatile & operator = (const string & ch) + throw(TypeMismatchException); + Versatile & operator +=(const string & ch) + throw(TypeMismatchException,ListIsFullException); + Versatile & operator , (const string & ch) + throw(TypeMismatchException,ListIsFullException); + Versatile & operator = (const Couple & cp) + throw(TypeMismatchException); + Versatile & operator +=(const Couple & cp) + throw(TypeMismatchException,ListIsFullException); + Versatile & operator , (const Couple & cp) + throw(TypeMismatchException,ListIsFullException); + + // Operateur d'affectation entre objets + Versatile & operator = (const Versatile & V) + throw(TypeMismatchException); + + // Conversion de type vers un type de "base" + operator long() const throw(TypeMismatchException); + operator string() const throw(TypeMismatchException); + operator Couple() const throw(TypeMismatchException); + string str() const throw(TypeMismatchException); + + // Operateur pour l'affichage sur un stream + friend ostream & operator << (ostream & os, const Versatile & ); + + // Positionnement et recuperation du type de l'element interne + void setType(DiscriminatorType) throw(TypeMismatchException); + DiscriminatorType getType() const; + + // Positionnement et recuperation du nombre d'elements internes + void setMaxSize(int i); + int getMaxSize() const; + + // Positionnement et recuperation du nom de l'objet + string getName() const; + void setName(const string & name); + + protected: + // Efface tous les elements internes de l'objet + virtual void eraseAll(); + + DiscriminatorType _discriminator; // type de l'element interne + int _maxsize; // nombre max d'elements internes + string _name; // nom de l'objet (sert pour les exceptions) + + private: + +@}; +@end example + + +@item Exemple +@example +@dots{} + +// On cree un objet Versatile non encore affecte (scalaire) +Versatile Vlong; + +// L'affectation d'un long lui donne le type LONG +Vlong = 1024L * 1024L * 1024L; +cout << "Versatile long (must be 1073741824) : " << Vlong << endl; + +// On cree un objet Versatile non encore affecte (scalaire) +Versatile Vstring; + +// L'affectation d'une string (const char * promu en string) +// lui donne le type STRING +Vstring = "UneChaine"; +cout << "Versatile string (must be UneChaine) : " << Vstring << endl; + +try + @{ + // L'affectation d'un autre type leve une exception. + // Il n'y a pas de retypage dynamique. + Vlong = ""; + cout << "ERR : No TypeMismatchException catched for Versatile long" + << endl; + @} +catch (TypeMismatchException & ex) + @{ + cout << "OK : TypeMismatchException catched for Versatile long" + << endl; + @} + +// Reaffectation avec le meme type +Vlong = 1024L * 1024L; +cout << "Versatile long (must be 1048576) : " << Vlong << endl; + +// On cree un objet Versatile non encore affecte (scalaire) ... +Versatile Vcat1; + +// ... que l'on transforme en liste (non limitee) +Vcat1.setMaxSize(0); + +// On affecte la premiere valeur ... +Vcat1 = "A"; + +// ... puis les suivantes par concatenation +Vcat1 += "B"; +Vcat1 += "C"; +Vcat1 += "D"; +Vcat1 += "E"; +cout << "Versatile string concatenation (must be A B C D E) : " + << Vcat1 << endl; + +// Idem que pour Vcat1, mais avec une limite a 5 elements dans la liste +Versatile Vcat2; +Vcat2.setMaxSize(5); +Vcat2 = "a", "b", "c", "d", "e"; +cout << "Versatile string concatenation (must be a b c d e) : " + << Vcat2 << endl; + +// On tronque les 2 derniers elements de la liste (il en reste 3) +Vcat2.setMaxSize(3); +cout << "Versatile string concatenation (must be a b c) : " + << Vcat2 << endl; + + +Versatile Vcopy2(Vcat2); +cout << "Versatile copy (must be a b c) : " << Vcopy2 << endl; + +Versatile Vaffect; +Vaffect = Vcat1; +cout << "Versatile affect (must be A B C D E) : " << Vaffect << endl; +Vaffect = Vcat2; +cout << "Versatile affect (must be a b c) : " << Vaffect << endl; + +try + @{ + // Retypage dynamique interdit + Vaffect = Vlong; + cout << "ERR : No TypeMismatchException catched for Versatile" + << endl; + @} +catch (TypeMismatchException & ex) + @{ + cout << "OK : TypeMismatchException catched for Versatile string" + << endl; + @} + +try + @{ + // Concatenation au dela de la limite interdit + Vcat2 += "En trop"; + cout << "ERR : No ListIsFullException catched for Versatile string" + << endl; + @} +catch (ListIsFullException & ex) + @{ + cout << "OK : ListIsFullException catched for Versatile string" + << endl; + @} + +// Les objets Versatile se comportent (presque) comme des objets +// standards du langage +long L = Vlong; +cout << "Long value of Versatile long (must be 1048576) : " + << L << endl; + +string S = Vstring; +cout << "String value of Versatile (must be EncoreUneAutreChaine):" + << S << endl; + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{Versatile()} + +Le constructeur par defaut fabrique un objet scalaire de type +@var{undefined} et de nom @samp{undefined}. + +@item +@b{~Versatile()} + +Le destructeur efface tout le contenu de l'objet si celui-ci avait ete affecte. + +@item +@b{Versatile(const Versatile & V)} + +Le constructeur par recopie duplique l'objet passe en argument ainsi que +les valeurs qu'il contient. Le nouvel objet est totalement independant +de son geniteur. + +@item +@b{Versatile(long l)@* +Versatile(const string & s)@* +Versatile(const Couple & c)} + +Ces constructeurs fabriquent des objets scalaires @emph{Versatile} a partir des +types de base passes en argument. Chaque objet acquerera definitivement +le type correspondant au type de base : @var{long} pour @samp{long}, +@var{string} pour @samp{string} et @var{couple} pour @samp{Couple}. + +@item +@b{Versatile & operator = (const long l) throw(TypeMismatchException)@* +Versatile & operator = (const string & ch) throw(TypeMismatchException)@* +Versatile & operator = (const Couple & cp) throw(TypeMismatchException)} + +Ces operateurs affectent ou reaffectent la valeur passee en argument a +l'objet. Le type de la valeur doit correspondre au type de l'objet si +celui-ci a deja ete affecte, sinon une exception @emph{TypeMismatchException} est +levee. @xref{Classe TypeMismatchException}. + +L'ancienne valeur de l'objet est perdue. + +@item +@b{Versatile & operator += (const string & ch) + throw(TypeMismatchException, ListIsFullException)@* +Versatile & operator , (const string & ch) + throw(TypeMismatchException, ListIsFullException)@* +Versatile & operator += (const Couple & cp) + throw(TypeMismatchException, ListIsFullException)@* +Versatile & operator , (const Couple & cp) + throw(TypeMismatchException, ListIsFullException)} + +Ces operateurs concatenent la valeur passee en argument a l'objet. Le +type de la valeur doit correspondre au type interne de l'objet si +celui-ci a deja ete affecte, sinon une exception @emph{TypeMismatchException} est +levee. @xref{Classe TypeMismatchException}. + +Si la taille maximale de la liste est depasse, une exception @emph{ListIsFullException} est +levee. @xref{Classe ListIsFullException}. + +@item +@b{Versatile & operator = (const Versatile & V) throw(TypeMismatchException)} + +L'operateur d'affectation duplique l'objet passe en argument dans +l'objet. Toutes les valeurs internes sont dupliquees de maniere a avoir +une independance totale entre les deux objets a l'issue de +l'affectation. + +Il est a noter qu'il est possible d'affecter a un objet un objet +possedant un type different, auquel cas l'objet courant change de type +pour acquerir celui de l'objet passe en argument. C'est le seul cas de +changement de type autorise pour un objet. + +@item +@b{operator long() const throw(TypeMismatchException)@* +operator string() const throw(TypeMismatchException)@* +operator Couple() const throw(TypeMismatchException)@* +string str() const throw(TypeMismatchException)} + +Ces operateur de conversion dans les types de base permettent de +recuperer la valeur interne de l'objet. Lorsque le type interne est +incompatible avec la conversion une exception @emph{TypeMismatchException} est +levee. @xref{Classe TypeMismatchException}. + +@item +@b{ostream & operator << (ostream & os, const Versatile & )} + +Cet operateur permet de voir le contenu de l'objet sur un flot de sortie. + +@item +@b{void setType(DiscriminatorType) throw(TypeMismatchException)} + +Cette methode change le type interne de l'objet en celui passe en +argument. Ceci n'est possible que pour un objet non encore affecte. Si +le nouveau type est different du type actuel une exception @emph{TypeMismatchException} est +levee. @xref{Classe TypeMismatchException}. + +@item +@b{DiscriminatorType getType() const} + +Cet accesseur renvoie le type interne de l'objet. + +@item +@b{void setMaxSize(int i)} + +Cette methode permet de changer le nombre d'elements que l'objet est +capable de stocker. Par defaut ce nombre est 1 a la construction de +l'objet, signifiant qu'il ne peut contenir qu'une seule valeur a la fois +(scalaire). + +Si ce nombre est superieur a 1 alors il represente une +limite qui ne pourra etre depassee par l'objet sans lever d'exception +@emph{ListIsFullException}. @xref{Classe ListIsFullException}. + +Si ce nombre vaut 0 (zero) alors il n'y a aucune limite superieure au +nombre d'element dans l'objet. + +@item +@b{int getMaxSize() const} + +Cet accesseur renvoie la taille maximale admise par l'objet. + +@item +@b{void setName(const string & name)} + +Cette methode permet de positionner le nom de l'objet. Par defaut ce nom +vaut @samp{undefined} a la construction de l'objet. + +Il est interessant de positionner le nom a une valeur significative +comme par exemple le nom de la variable contenant l'objet car lorsqu'une +exception est levee ce nom apparait en clair et aide au debugging. + +@item +@b{string getName() const} + +Cet accesseur renvoie le nom interne de l'objet. + +@end itemize + +@end itemize + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Exceptions, Classe APIInternalFailureException, Classe Versatile, Classes generiques +@comment node-name, next, previous, up +@page +@subsection Exceptions +@cindex exceptions + +La bibliotheque de classes Batch definit un certain nombre d'exceptions +qui sont levees par les classes lors d'evenements qui traduisent un +comportement anormal de la bibliotheque. + +@menu +* Classe APIInternalFailureException:: Erreur d'utilisation de l'API. +* Classe ConnexionFailureException:: Probleme de connexion de l'API. +* Classe GenericException:: Classe-mere de toutes les exceptions. +* Classe InvalidArgumentException:: Parametre errone d'une methode. +* Classe InvalidKeyException:: Clef erronee d'une map. +* Classe ListIsFullException:: Debordement de taille d'une liste. +* Classe NotYetImplementedException:: Methodes non encore implementee. +* Classe RunTimeException:: Erreur d'execution imprevue. +* Classe TypeMismatchException:: Probleme de conversion de type. +@end menu + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe APIInternalFailureException, Classe ConnexionFailureException, Exceptions, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection APIInternalFailureException +@findex APIInternalFailureException + +Cette exception est levee par les classes d'implementation de la +bibliotheque lorsqu'une erreur est detectee au moment de la +communication avec l'API du gestionnaire de batch. En general l'erreur +renvoyee par l'API est incluse dans le message de l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class APIInternalFailureException : public GenericException +@{ + public: + // Constructeur + APIInternalFailureException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{APIInternalFailureException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{APIInternalFailureException}. + +@end itemize + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe ConnexionFailureException, Classe GenericException, Classe APIInternalFailureException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection ConnexionFailureException +@findex ConnexionFailureException + +Cette exception est levee par les classes d'implementation de la +bibliotheque lorsqu'une erreur est detectee au moment de la +connexion au gestionnaire de batch. En general l'erreur +renvoyee par l'API de connexion est incluse dans le message de l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class ConnexionFailureException : public GenericException +@{ + public: + // Constructeur + ConnexionFailureException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{ConnexionFailureException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{ConnexionFailureException}. + +@end itemize + +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe GenericException, Classe InvalidArgumentException, Classe ConnexionFailureException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection GenericException +@findex GenericException + +Cette classe est generique comme son nom l'indique et definit une +interface commune pour toutes les exceptions de la +bibliotheque. + +Cette exception definit uniquement un constructeur et deux membres +publics constants : @emph{type} et @emph{message}. @xref{Classe +GenericException}. + + +@itemize @bullet{} +@item Entete + +@example +class GenericException +@{ + public: + const string type; // la nature de l'exception + const string message; // la raison de l'exception + + // Constructeur + GenericException(const string tp = "GenericException", + const string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{GenericException(const string tp = "GenericException", const string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le parametre +@emph{tp} qui contient generalement le nom de la classe. + +@end itemize + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe InvalidArgumentException, Classe InvalidKeyException, Classe GenericException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection InvalidArgumentException +@findex InvalidArgumentException + +Cette exception est levee par les classes de la bibliotheque lorsqu'un +parametre erronne est passe en argument a une methode. En general +le nom de l'arguement erronne est inclus dans le message de +l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class InvalidArgumentException : public GenericException +@{ + public: + // Constructeur + InvalidArgumentException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{InvalidArgumentException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{InvalidArgumentException}. + +@end itemize + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe InvalidKeyException, Classe ListIsFullException, Classe InvalidArgumentException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection InvalidKeyException +@findex InvalidKeyException + + +Cette exception est levee par les methodes de la classe @emph{Parametre} +lorsqu'une clef erronnee est utilisee. En general le nom de la clef +erronnee est inclus dans le message de l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class InvalidKeyException : public GenericException +@{ + public: + // Constructeur + InvalidKeyException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{InvalidKeyException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{InvalidKeyException}. + +@end itemize + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe ListIsFullException, Classe NotYetImplementedException, Classe InvalidKeyException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection ListIsFullException +@findex ListIsFullException + +Cette exception est levee par les methodes de la classe @emph{Versatile} +lorsque la taille maximale de la liste interne est depasse. En general +le nom de l'objet en erreur est inclus dans le message de l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class ListIsFullException : public GenericException +@{ + public: + // Constructeur + ListIsFullException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{ListIsFullException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{ListIsFullException}. + +@end itemize + +@end itemize + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe NotYetImplementedException, Classe RunTimeException, Classe ListIsFullException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection NotYetImplementedException +@findex NotYetImplementedException + +Cette exception est levee par les classes de la bibliotheque lorsqu'une +methode declaree mais non encore implementee est utilisee. En general +le nom de l'objet en erreur est inclus dans le message de l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class NotYetImplementedException : public GenericException +@{ + public: + // Constructeur + NotYetImplementedException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{NotYetImplementedException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{NotYetImplementedException}. + +@end itemize + +@end itemize + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe RunTimeException, Classe TypeMismatchException, Classe NotYetImplementedException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection RunTimeException +@findex RunTimeException + +Cette exception est levee par les classes de la bibliotheque lorsqu'une +erreur inconnue et imprevue apparait. Cette exception est le +comportement par defaut que doit gerer le gestionnaire d'exception en ce +qui concerne les classes de la bibliotheque. En general le nom de +l'objet en erreur est inclus dans le message de l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class RunTimeException : public GenericException +@{ + public: + // Constructeur + RunTimeException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{RunTimeException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{RunTimeException}. + +@end itemize + +@end itemize + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe TypeMismatchException, Classes specifiques, Classe RunTimeException, Exceptions +@comment node-name, next, previous, up +@page +@subsubsection TypeMismatchException +@findex TypeMismatchException + +Cette exception est levee par les methodes de la classe @emph{Versatile} +lorsque qu'une erreur de type est rencontree dans un objet. Ce genre +d'erreur survient lorsqu'on essaie d'affecter une valeur d'un type +different du type interne de l'objet @emph{Versatile} a ce meme objet, +ou bien lorsqu'on ajoute une valeur d'un type different a une liste. En +general le nom de l'objet en erreur est inclus dans le message de +l'exception. + +Cette exception herite de la classe @emph{GenericException} qui definit +uniquement un constructeur et deux membres publics constants : @emph{type} et +@emph{message}. @xref{Classe GenericException}. + +@itemize @bullet{} +@item Entete + +@example +class TypeMismatchException : public GenericException +@{ + public: + // Constructeur + TypeMismatchException(string msg = "undefined"); +@}; +@end example + + +@item Methodes +@itemize @minus{} +@item +@b{TypeMismatchException(string msg = "undefined")} + +Ce contructeur prend la chaine @emph{msg} comme message d'erreur a +renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le +membre public constant @emph{message}. + +Le membre public constant @emph{type} est initialise avec le nom de la +classe, soit @emph{TypeMismatchException}. + +@end itemize + +@end itemize + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classes specifiques, Classes PBS, Classe TypeMismatchException, Classes +@comment node-name, next, previous, up +@page +@section Classes specifiques +@cindex classes specifiques + +Afin de pouvoir se connecter aux gestionnaires de batch reels a travers +leurs API, les classes generiques ont ete derivees pour offrir une +implementation correspondant a l'interface qu'elles definissent. + +Pour traduire a la fois le fait que les nouvelles classes derivent d'une +classe generique et qu'elles sont une implementation d'une API +particuliere, on adopte la convention de nom suivante : la classe se +nomme comme sa classe generique mais est suffixee par le nom de l'API du +gestionnaire de batch, les deux termes etant separes par un caractere +@kbd{_} (souligne). + +Actuellement, seul le gestionnaire de batch OpenPBS, @xref{Prerequis}, est +supporte. Mais ce catalogue devrait s'enrichir par la suite. + +Les classes de la bibliotheque sont egalement accessibles a travers un +interpreteur Python, ce qui a necessite la creation de certaines classes +d'interface avec l'interpreteur. + +@menu +* Classes PBS:: Classes d'implementation pour OpenPBS +* Classes Python:: Classes d'interfacage avec Python. +@end menu + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classes PBS, Classe FactBatchManager_PBS, Classes specifiques, Classes specifiques +@comment node-name, next, previous, up +@page +@subsection Classes PBS +@cindex classes PBS + +Actuellement seules les classes @emph{BatchManager}, @emph{JobInfo} et +@emph{Job} ont besoin d'etre derivees pour implementer la communication +et l'interfacage avec l'API du gestionnaire de batch OpenPBS. + + +@menu +* Classe FactBatchManager_PBS:: Description de la classe FactBatchManager_PBS. +* Classe BatchManager_PBS:: Description de la classe BatchManager_PBS. +* Classe JobInfo_PBS:: Description de la classe JobInfo_PBS. +* Classe Job_PBS:: Description de la classe Job_PBS. +@end menu + + +@node Classe FactBatchManager_PBS, Classe BatchManager_PBS, Classes PBS, Classes PBS +@comment node-name, next, previous, up +@subsubsection FactBatchManager_PBS +@cindex FactBatchManager_PBS + +Cette classe derive de la classe generique @emph{FactBatchManager}, +@xref{Classe FactBatchManager}. + +Les objets de la classe @emph{BatchManager_PBS} realisent l'interface de +la bibliotheque avec l'API du gestionnaire de batch OpenPBS. + +@itemize @bullet{} +@item Entete + +@example +class FactBatchManager_PBS : public FactBatchManager +@{ +public: + // Constructeur et destructeur + FactBatchManager_PBS(); + virtual ~FactBatchManager_PBS(); + + virtual BatchManager_PBS * operator() (const char * hostname) const; + +protected: + +private: + +@}; +@end example + +@item Exemple + +@example +@dots{} + +// On instancie le catalogue de gestionnaires de batch +Batch::BatchManagerCatalog cata; + +// On cree une fabrique de BatchManager de type PBS +Batch::FactBatchManager & fbm = * cata("PBS"); + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{FactBatchManager_PBS()} + +Ce constructeur instancie un objet de la classe +@emph{FactBatchManager_PBS} et l'enregistre automatiquement aupres du +catalogue de fabrique. @xref{Classe BatchManagerCatalog}. + +Le type est positionne a la valeur PBS. + +@item +@b{~FactBatchManager_PBS()} + +Le destructeur ne fait rien de particulier. + +@item +@b{BatchManager_PBS * operator() (const char * hostname) const} + +Cet operateur renvoie un objet nouvellement cree de type +@emph{BatchManager_PBS} derivant de @emph{BatchManager} et oeuvrant sur +la machine @emph{hostname}. La destruction de l'objet est a la charge de +l'appelant. + +@end itemize + +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classe BatchManager_PBS, Classe JobInfo_PBS, Classe FactBatchManager_PBS, Classes PBS +@comment node-name, next, previous, up +@page +@subsubsection BatchManager_PBS +@cindex BatchManager_PBS + +Cette classe derive de la classe generique @emph{BatchManager}, +@xref{Classe BatchManager}. + +Les objets de la classe @emph{BatchManager_PBS} realisent l'interface de +la bibliotheque avec l'API du gestionnaire de batch OpenPBS. + +@itemize @bullet{} +@item Entete + +@example +class BatchManager_PBS : public BatchManager +@{ + public: + // Constructeur et destructeur + BatchManager_PBS(FactBatchManager * parent, + const char * host) throw(InvalidArgumentException); + virtual ~BatchManager_PBS(); + + // Recupere le nom du serveur par defaut + static string getDefaultServer(); + + // Recupere le l'identifiant d'un job deja soumis au BatchManager + virtual const JobId getJobIdByReference(const string & ref); + + // Methodes pour le controle des jobs : virtuelles pures + // soumet un job au gestionnaire + virtual const JobId submitJob(const Job & job); + + // retire un job du gestionnaire + virtual void deleteJob(const JobId & jobid); + + // suspend un job en file d'attente + virtual void holdJob(const JobId & jobid); + + // relache un job suspendu + virtual void releaseJob(const JobId & jobid); + + // modifie un job en file d'attente + virtual void alterJob(const JobId & jobid, + const Parametre & param, + const Environnement & env); + virtual void alterJob(const JobId & jobid, + const Parametre & param); + virtual void alterJob(const JobId & jobid, + const Environnement & env); + + // renvoie l'etat du job + virtual JobInfo queryJob(const JobId & jobid); + + // modifie un job en file d'attente + virtual void setParametre(const JobId & jobid, + const Parametre & param); + virtual void setEnvironnement(const JobId & jobid, + const Environnement & env); + + protected: + string _hostname; // serveur ou tourne le BatchManager + + private: + +@}; +@end example + +@item Exemple + +@example +@dots{} + +// On instancie le catalogue de gestionnaires de batch +Batch::BatchManagerCatalog cata; + +// On cree une fabrique de BatchManager de type PBS +Batch::BatchManager & myBM = (* cata("PBS"))("serveur.domaine.fr") + +// Maintenant, on peut utiliser toutes les fonctionnalites du +// gestionnaire de batch a travers le variable myBM + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{BatchManager_PBS(FactBatchManager * parent, +const char * host) throw(InvalidArgumentException)} + +Excepte un pointeur sur la fabrique qui a produit l'objet, le +constructeur accepte zero ou un argument de type @emph{string} decrivant +soit le nom de domaine completement qualifie (FQDN, @i{fully qualified +domain name}) du serveur de batch, soit son adresse IP dans un format +decimal "aaa.bbb.ccc.ddd". + +Si aucun parametre n'est passe au constructeur, celui-ci prend le +serveur par defaut tel que renvoye par la methode @emph{getDefaultServer}. + +Une resolution du nom ou de l'adresse peut etre realisee en fonction des +capacites de la plate-forme pour s'assurer que le serveur est connu et +joignable. En cas d'echec, une exception InvalidArgumentException est +levee. @xref{Classe InvalidArgumentException}. + +Ceci fait, une connexion est etablie avec le gestionnaire de batch qui +est maintenue jusqu'a destruction de l'objet. + +@item +@b{~BatchManager()} + +Le destructeur supprime la connexion precedemment etablie par le +constructeur lorsque celle-ci a reussi. + +@item +@b{const JobId submitJob(const Job & job)} + +Cette methode soumet le job passe en argument au gestionnaire de +batch. Etant donne que le job ne peut pas etre envoye tel quel puisqu'il +a un format generique au sein de la bibliotheque de classes Batch, cette +methode est chargee de le convertir dans un format adapte au +gestionnaire de batch sous-jacent. + +La methode opere ici une conversion du job de la classe @emph{Job} en @emph{Job_PBS}. + +Ce n'est que lorsque cette conversion est realisee que le job est soumis +au gestionnaire a travers son API. L'identifiant propose par le +gestionnaire est alors renvoye a l'appelant. Si la soumission echoue +pour une raison ou une autre, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + +@item +@b{void deleteJob(const JobId & jobid)} + +Cette methode retire le job dont l'identifiant est passe en argument de +la file d'attente du gestionnaire, ou bien l'arrete en cours +d'execution. Cette methode est inoperante sur des travaux deja termines, +auquel cas une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + + +@item +@b{void holdJob(const JobId & jobid)} + +Cette methode suspend le job dont l'identifiant est passe en argument au +sein de la file d'attente du gestionnaire. Cette methode est inoperante +sur des travaux en cours d'execution ou deja termines, ainsi que sur des +travaux deja suspendus. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + +@item +@b{void releaseJob(const JobId & jobid)} + +Cette methode relache un job precedemment suspendu en file +d'attente dont l'identifiant est passe en argument. Elle est inoperante +sur des travaux deja reclaches, en cours d'execution ou termines. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + + +@item +@b{void alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)@* +void alterJob(const JobId & jobid, const Parametre & param)@* +void alterJob(const JobId & jobid, const Environnement & env)} + +Ces methodes permettent de modifier les parametres d'execution et +d'environnement d'un job dont l'identifiant est passe en +argument. @xref{Classe Parametre}. @xref{Classe Environnement}. Il +est important de noter que le job doit etre encore place en file +d'attente sinon la methode est inoperante. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + +@item +@b{JobInfo queryJob(const JobId & jobid)} + +Cette methode permet de recuperer les informations concernant le job +dont l'identifiant est passe en argument dans un objet de classe +@emph{JobInfo}. @xref{Classe JobInfo}. On y retrouve les parametres +d'execution et d'environnement du job tels qu'ils ont ete passes au +gestionnaire au moment de la soumission, ainsi que des informations +concernant l'execution du job comme par exemple la machine d'execution, +le temps consomme, la memoire consommee, etc. + +Il n'est pas toujours possible d'interroger un job deja termine. +En cas de probleme, une exception APIInternalFailureException est +levee. @xref{Classe APIInternalFailureException}. + + +@item +@b{const JobId getJobIdByReference(const string & ref)} + +Cette methode permet de recuperer au sein de la classe un identifiant de +job a partir d'une chaine de caracteres obtenue par un biais +externe. Cet identifiant pourra etre utilise par la suite au sein de la +biliotheque de classes pour controler le job comme s'il avait ete cree +et soumis depuis la biliotheque-meme. + +@item +@b{void setParametre(const JobId & jobid, const Parametre & param)} + +Cette methode n'est utile que pour l'interfacage avec Python, car Python +ne sait pas gerer la surcharge de methode, et de fait leve des +exceptions lors d'appels a de telles methodes. + +Elle est equivalente a la methode @samp{void alterJob(const JobId & jobid, const Parametre & param)}. + +@item +@b{void setEnvironnement(const JobId & jobid, const Environnement & env)} + +Cette methode n'est utile que pour l'interfacage avec Python, car Python +ne sait pas gerer la surcharge de methode, et de fait leve des +exceptions lors d'appels a de telles methodes. + +Elle est equivalente a la methode @samp{void alterJob(const JobId & jobid, const Environnement & env)}. + +@end itemize + + +@end itemize + +@c ---------------------- +@c ---------------------- +@c ---------------------- + + +@node Classe JobInfo_PBS, Classe Job_PBS, Classe BatchManager_PBS, Classes PBS +@comment node-name, next, previous, up +@page +@subsubsection JobInfo_PBS +@cindex JobInfo_PBS + +Un objet de classe @emph{JobInfo} represente l'ensemble des informations +disponibles sur un travail actif, c'est-a-dire soumis au gestionnaire de +batch, a un instant donne. + +Cet objet reprend des informations issues du job tel qu'il a ete soumis, +@xref{Classe Job}, mais aussi des informations produites par le +gestionnaire de batch a partir de la soumission et du transit du job en +son sein : nom de la queue dans laquelle le job est inscrit, duree +d'execution, date de soumission, etc. + +Ces informations sont disponibles aupres de l'utilisateur de la classe a +travers les objets @emph{Parametre} et @emph{Environnement} que l'objet +@emph{JobInfo} peut fournir. + +@itemize @bullet{} +@item Entete + +@example +class JobInfo_PBS : public JobInfo +@{ + public: + // Constructeur standard et destructeur + JobInfo_PBS(); + JobInfo_PBS(struct batch_status * stat_list, + bool tobedeleted = false); + virtual ~JobInfo_PBS(); + + // Constructeur par recopie + JobInfo_PBS(const JobInfo_PBS & jinfo); + + // Methodes pour l'interfacage avec Python (SWIG) + string __str__() const; // SWIG : affichage en Python + string __repr__() const; // SWIG : affichage en Python + + protected: + Parametre _param; // parametres du job + Environnement _env; // variables d'environnement du job + + private: +@}; +@end example + + +@item Exemple +@example +@dots{} (ici on cree un BatchManager bm et un Job job) + +// On soumet le job et on recupere un identifiant +JobId jobid = bm.submitJob(job); + +// Ce qui permet d'interroger l'etat du job en cours +// Nota : l'objet retourne est un JobInfo_PBS +JobInfo jinfo = jobid.queryJob(); + +@dots{} +@end example + +@item Methodes +@itemize @minus{} +@item +@b{JobInfo_PBS()} + +Ce constructeur cree un objet @emph{JobInfo_PBS} vide. + +@item +@b{~JobInfo_PBS()} + +Le destructeur libere l'espace memoire alloue pour l'objet si la +desollacation n'a pas eu deja lieu dans le constructeur. + +@item +@b{JobInfo_PBS(const JobInfo_PBS & jinfo)} + +Le constructeur par recopie produit un objet identique a celui passe en +argument. Les deux objets sont totalement independants l'un de l'autre. + +@item +@b{JobInfo_PBS(struct batch_status * stat_list, bool tobedeleted = false)} + +Ce constructeur recupere une liste chainee du type interne OpenPBS +@emph{struct batch_status *}, la parcoure et l'analyse pour en extraire +les informations utilisables par la bibliotheque de classes et les +stocker dans deux objets internes @emph{Parametre} et +@emph{Environnement}. + +Si le parametre @emph{tobedeleted} vaut @emph{true} alors la liste +chainee @emph{stat_list} sera desallouee a la fin du constructeur. Sinon +elle sera desalloue dans le destructeur au plus tard. + +@item +@b{string __str__() const} + +Cette methode n'est utile que pour l'interfacage avec Python. Elle +permet d'afficher l'etat de l'objet @emph{JobInfo}. + +@item +@b{string __repr__() const} + +Cette methode n'est utile que pour l'interfacage avec Python. Elle +permet d'afficher l'etat de l'objet @emph{JobInfo}. + +@end itemize + +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + + +@node Classe Job_PBS, Classes Python, Classe JobInfo_PBS, Classes PBS +@comment node-name, next, previous, up +@page +@subsubsection Job_PBS +@cindex Job_PBS + +Un objet de classe @emph{Job} possede une structure generique +potentiellement utilisable par tout gestionnaire de batch mais pas en +l'etat. Une conversion dans un format lisible par le gestionnaire doit +etre realisee. + +Ceci se fait en produisant a partir des donnees generiques de la classe +@emph{Job} des structures de donnees specifiques qui peuvent etre +directement passees a l'API du gestionnaire. + +La classe @emph{Job_PBS} se distingue donc de la classe @emph{Job} par son +constructeur et par des accesseurs specifiques qui produisent des +donnees lisibles par OpenPBS. + +Etant donnee la specificite de cette classe, elle ne devrait concerner +que les developpeurs de la bibliotheque de classes Batch. + +@itemize @bullet{} +@item Entete + +@example +class Job_PBS +@{ + public: + // Constructeurs et destructeur + Job_PBS(const Job & job); + virtual ~Job_PBS(); + + // Accesseurs + struct attropl * getAttributesOP(); + struct attrl * getAttributes(); + char * getScript(); + char * getDestination(); + + protected: + struct attropl * _p_attropl; // liste d'attributs + operateur + struct attrl * _p_attrl; // liste d'attributs + char * _script; // chemin d'acces au script du job + char * _destination; // queue dans laquelle le job est soumis + + private: + +@}; +@end example + + +@item Exemple +@example +@dots{} + +Parametre param; +Environnement env; + +@dots{} (ici on cree les parametres du job) + +Job job(param, env); + +// On fabrique un job specifique a OpenPBS a partir du job generique +// Ceci ne concerne en general pas l'utilisateur de la bibliotheque +Job_PBS jobpbs(job); + +@dots{} +@end example + +@item Methodes +@itemize @minus{} + +@item +@b{Job_PBS(const Job & job)} + +Le constructeur convertit les objets internes @emph{Parametre} et +@emph{Environnement} de l'objet passe en argument en un ensemble de +quatre structures C @emph{AttributesOP}, @emph{Attributes}, +@emph{Script} et @emph{Destination} directement utilisable par l'API de +OpenPBS. + +@item +@b{~Job_PBS()} + +Le destructeur libere simplement les espaces alloues pour les structures +@emph{AttributesOP}, @emph{Attributes}, @emph{Script} et +@emph{Destination}. + +@item +@b{struct attropl * getAttributesOP()} + +Cet accesseur retourne un pointeur sur la structure interne +@emph{AttributesOP} de l'objet. Cette structure n'est pas protogee +contre les modifications accidentelles de l'utilisateur. Par consequent +il est recommande d'eviter d'y apporter toute alteration sous peine de +dysfonctionnement. + +Pour la definition de la structure @emph{AttributesOP}, voir la +documentation OpenPBS. + +@item +@b{struct attrl * getAttributes()} + +Cet accesseur retourne un pointeur sur la structure interne +@emph{Attributes} de l'objet. Cette structure n'est pas protogee +contre les modifications accidentelles de l'utilisateur. Par consequent +il est recommande d'eviter d'y apporter toute alteration sous peine de +dysfonctionnement. + +Pour la definition de la structure @emph{Attributes}, voir la +documentation OpenPBS. + +@item +@b{char * getScript()} + +Cet accesseur retourne un parametre @emph{Script} qui est une chaine de +caracteres C contenant le chemin absolu (sur la machine d'execution) +du script a soumettre au gestionnaire de batch. + +Cette chaine n'est pas protegee contre les modifications accidentelles +de l'utilisateur. Il est donc recommande de ne pas y apporter de modification. + +@item +@b{char * getDestination()} + +Cet accesseur retourne un parametre @emph{Destination} qui est une chaine de +caracteres C contenant le nom de la queue, ou classe ou file selon les terminologies, +du gestionnaire de batch dans laquelle le job doit etre soumis. + +Cette chaine n'est pas protegee contre les modifications accidentelles +de l'utilisateur. Il est donc recommande de ne pas y apporter de modification. + + +@end itemize +@end itemize + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Classes Python, Classe PyVersatile, Classe Job_PBS, Classes specifiques +@comment node-name, next, previous, up +@page +@subsection Classes Python +@cindex classes Python + +L'integration de la bibliotheque de classes Batch dans l'interpreteur +Python a beaucoup progresse depuis la precedente version et se trouve +etre quasiment iso-fonctionelle avec le C++. + +Actuellement, l'interface avec Python s'appuie a la fois sur les +fonctionnalites de l'utilitaire SWIG, et sur la definition d'une classe +specifique qui permet de voir en Python la classe @emph{Versatile}. + +Certaines classes ont de plus des methodes specifiques pour le wrapping +Python qui simplifient grandement le developpement des classes +d'interface au detriment, il est vrai, d'une bonne independance entre +les langages. Ce choix n'est pas definitif et pourra etre revu si +l'occasion s'en presente. + +Quoi qu'il en soit toutes les classes de haut niveau sont interfacees en +Python sous le meme nom et proposent les memes methodes (sauf celles +surchargees en C++ qui sot parfois renommees pour lever +l'ambiguite). Pour ne pas refaire un expose detaille et fastidieux des +fonctionnalites Python de la bibliotheque de classes, il est propose de +retrouver les noms et la syntaxe de ces classe dans la partie +Utilisation de ce document. @xref{Utilisation}. + +@menu +* Classe PyVersatile:: Description de la classe PyVersatile. +@end menu + +@c ---------------------- +@c ---------------------- +@c ---------------------- + + +@node Classe PyVersatile, Utilisation, Classes Python, Classes Python +@comment node-name, next, previous, up +@page +@subsubsection PyVersatile +@cindex PyVersatile + + +La classe @emph{PyVersatile} derive de la classe @emph{Versatile} et +offre la possibilite de convertir un tel objet en objet Python et +@i{vice versa}. + + +@itemize @bullet{} +@item Entete + +@example +class PyVersatile : public Versatile +@{ + public: + // Constructeur a partir d'un objet Versatile + PyVersatile(const Versatile &); + + // Constructeur a partir d'un PyObject + PyVersatile(const PyObject *) throw(TypeMismatchException, + ListIsFullException, + InvalidArgumentException); + + // Conversion de type vers un PyObject + operator PyObject *() const; + + // Operateur d'affectation a partir d'un objet Versatile + PyVersatile & operator =(const Versatile &); + + protected: + + private: + +@}; +@end example + + +@item Exemple +@example +@dots{} + +// On cree un objet Versatile contenant +// une liste de chaine de caracteres +Versatile V; +V = "a", "b", "c"; + +// On convertit cet objet Versatile en PyVersatile +PyVersatile PyV(V); + +// De la on produit un objet Python +// qui est une liste de chaine de caracteres +PyObject * PyO = PyV; + +@dots{} +@end example + +@item Methodes +@itemize @minus{} + +@item +@b{PyVersatile(const Versatile &)} + +Ce constructeur convertit un objet @emph{Versatile} en objet @emph{PyVersatile}. + +@item +@b{PyVersatile(const PyObject *) throw(TypeMismatchException, ListIsFullException, InvalidArgumentException)} + +Ce constructeur convertit un objet Python passe en argument en un objet +@emph{PyVersatile}. + +Seuls certains objets Python peuvent etre convertis : les @emph{string} +et les @emph{long}, ainsi que les listes homogenes de ces types, ce qui +est coherent avec la nature de l'objet @emph{Versatile}. Si tel n'est +pas le cas, une exception Python est renvoyee a l'interpreteur. + + +@item +@b{operator PyObject *() const} + +Cet operateur convertit l'objet en objet Python. Selon le cas, l'objet +retourne est soit un scalaire soit une liste. L'objet retourne est +alloue dynamiquement et doit donc etre pris en charge par l'interpreteur. + +@item +@b{PyVersatile & operator =(const Versatile &)} + +L'affectation d'un objet @emph{Versatile} passe en argument est +similaire a l'affectation entre objets @emph{Versatile}. Les structures +de donnees internes initiales de l'objet sont effacees et remplacees par +une copie des donnees internes de l'objet passe en argument. Les deux +objets restent independants l'un de l'autre a l'issue de l'affectation. + +@end itemize +@end itemize + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Utilisation, Connexion, Classe PyVersatile, Top +@comment node-name, next, previous, up +@page +@chapter Utilisation +@cindex utilisation + +Ce chapitre presente les differentes actions qu'il est possible de +realiser avec les classes de la bilbiotheque. + +On presente un cas hypothetique ou un utilisateur voudrait soumettre et +controler un job depuis un code C++. Les sections suivantes decrivent +les operations a faire ainsi que leur action sur le travail soumis. + +@menu +* Connexion:: Creation d'un gestionnaire de batch. +* Creation:: Declaration d'un job (travail). +* Soumission:: Demande d'execution du job. +* Interrogation:: Recuperation des informations sur le job. +* Destruction:: Arret du job en cours. +* Suspension:: Suspension du job en file d'attente. +* Reprise:: Liberation du job en file d'attente. +* Modification:: Modification d'un job en file d'attente. +@end menu + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Connexion, Creation, Utilisation, Utilisation +@comment node-name, next, previous, up +@section Connexion +@cindex connexion +@cindex deconnexion + +La premiere etape avant toute utilisation pratique des classes de la +bibliotheque consiste a se connecter a un gestionnaire de batch. + +Ce concept de connexion est purement interne a la bibliotheque car il +est tout a fait possible d'imaginer le controle de jobs a travers l'API +d'un gestionnaire sans jamais etablir ni maintenir une quelconque +connexion avec celui-ci. D'autres par contre reclament l'etablissement +d'une connexion. + +Quoiqu'il en soit ceci n'est pas genant et l'etablissement et le +maintien de la connexion avec le gestionnaire de batch se fait par la +creation d'un objet de classe @emph{BatchManager} ou d'une classe +derivee. + +En pratique, la classe @emph{BatchManager} se comporte comme une +interface et seules les classes d'implementation derivee doivent etre +instanciees. + +Si l'on prend le cas d'un serveur @samp{serveur.domaine.fr} supportant +un gestionnaire de batch OpenPBS, on peut s'y connecter de la maniere +suivante : + +@itemize @bullet{} +@item Exemple C++ : + +@example +BatchManagerCatalog cata; +BatchManager_PBS & bm = * (* cata('PBS'))("serveur.domaine.fr"); +@end example + +@item Exemple Python: + +@example +cata = BatchManagerCatalog() +bm = cata('PBS')('serveur.domaine.fr') +@end example + +@end itemize + +Tant que l'objet @emph{bm} sera present --- tant que son destructeur +n'aura pas ete appele --- la connexion sera maintenue. La deconnexion +aura lieu a la destruction de l'objet. + +@xref{Classe BatchManager}. +@xref{Classe BatchManager_PBS}. + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Creation, Soumission, Connexion, Utilisation +@comment node-name, next, previous, up +@section Creation +@cindex creation + +La creation du job est l'etape qui precede toute soumission. Elle +necessite de decrire d'un maniere ou d'un autre ce que l'on va demander +a la machine d'executer. + +Pour cela on passe par deux objets intermediaires qui sont l'objet +@emph{Parametre} et l'objet @emph{Environnement}. + +Le minimum a preciser est en general le chemin absolu d'acces a +l'executable, quoique ceci depende fortement de la configuration du +gestionnaire auquel on se connecte. Celui-ci peut reclamer des +parametres supplementaires. + +Pour connaitre l'ensemble des parametres disponibles : @xref{Classe +Parametre}. + +On supposera dans cet exemple que l'application en question sait +reconnaitre une variable d'environnement @var{myapp_loglevel} qui prend +une valeur numerique correspondant au niveau d'information affiche en +sortie. + +Cette application imaginaire utilise egalement trois fichiers : + +@itemize @bullet{} +@item +un fichier d'entree nomme @file{Cas1.data} sur la machine locale qu'il +faudra renommer @file{fort.9} pour que l'application puisse le lire +(notre application imaginaire est ecrite en FORTRAN et attend un fichier +d'entree sur son descripteur 9); + +@item +un fichier de sortie standard que l'on voudra recuperer sous le nom +@file{Cas1.out}; + +@item +un fichier d'erreur standard que l'on voudra recuperer sous le nom +@file{Cas1.err}. + +@end itemize + +Le job est ensuite cree simplement a l'aide des deux objets precedents. + +@itemize @bullet{} +@item Exemple C++ : + +@example +Parametre param; +param[EXECUTABLE] = "/home/user/my_app/bin/exec_app.sh"; +param[INFILE] = Couple("/home/user/my_app/data/Cas1.data","fort.9"); +param[OUTFILE] = Couple("/home/user/my_app/data/Cas1.out", "stdout"), + Couple("/home/user/my_app/data/Cas1.err", "stderr"); + +Environnement env; +env["MYAPP_LOGLEVEL"] = "3"; + +Job job(param, env); +@end example + +@item Exemple Python: + +@example +param = @{@} +param["EXECUTABLE"] = "/home/user/my_app/bin/exec_app.sh" +param["INFILE"] = [ ("/home/user/my_app/data/Cas1.data","fort.9") ] +param["OUTFILE"] = [ ("/home/user/my_app/data/Cas1.out", "stdout"), + ("/home/user/my_app/data/Cas1.err", "stderr") ] + +env = @{@} +env["MYAPP_LOGLEVEL"] = "3" + +job = Job() +job.setParametre(param) +job.setEnvironnement(env) +@end example + +@end itemize + + +@xref{Classe Parametre}. +@xref{Classe Environnement}. +@xref{Classe Job}. + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Soumission, Interrogation, Creation, Utilisation +@comment node-name, next, previous, up +@section Soumission +@cindex soumission +@findex submitJob + +Une fois le job cree, il est alors tres simple de le soumettre au +gestionnaire de batch en passant par l'intermediaire de l'objet +@emph{BatchManager} cree precedemment. + +Cette soumission produira un objet @emph{JobId} qui servira a controler +le job par la suite. + +Cependant des exceptions peuvent etre levees au moment de la soumission +et il convient de fournir un gestionnaire d'exception pour gerer +proprement ces incidents. + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + const JobId jobid = bm.submitJob(job); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +try : + jobid = bm.submitJob(job) +except : + @dots{} +@end example + +@end itemize + + +@xref{Classe Job}. +@xref{Classe JobId}. +@xref{Exceptions}. + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Interrogation, Destruction, Soumission, Utilisation +@comment node-name, next, previous, up +@section Interrogation +@cindex interrogation +@findex queryJob + +La fourniture d'un objet @emph{JobId} permet d'avoir tout controle sur +le job en cours. En particulier il est possible de l'interroger : +ceci generera un objet @emph{JobInfo} qui donnera l'ensemble des +informations disponibles sur l'etat du job aupres du gestionnaire de +batch. + +Ces informations sont disponibles a travers deux objets internes de +classes @emph{Parametre} et @emph{Environnement}, les memes que pour la +classe @emph{Job}, mais modifies et completes avec les donnees les plus +a jour du gestionnaire de batch. + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + const JobInfo jinfo = jobid.queryJob(); + + Parametre newparam = jinfo.getParametre(); + Environnement newenv = jinfo.getEnvironnement(); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +try : + jobinfo = jobid.queryJob() + + newparam = jinfo.getParametre() + newenv = jinfo.getEnvironnement() +except : + @dots{} +@end example + +@end itemize + + +@xref{Classe JobId}. +@xref{Classe JobInfo}. +@xref{Exceptions}. + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Destruction, Suspension, Interrogation, Utilisation +@comment node-name, next, previous, up +@section Destruction +@cindex destruction +@cindex suppression +@findex deleteJob + + +Il est possible de detruire un job que celui-ci soit encore en file +d'attente ou bien que son execution ait deja commence, auquel cas elle +serait immediatement interrompue. + + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + jobid.deleteJob(); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +try : + jobid.deleteJob() + +except : + @dots{} +@end example + +@end itemize + + +@xref{Classe JobId}. +@xref{Exceptions}. + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Suspension, Reprise, Destruction, Utilisation +@comment node-name, next, previous, up +@section Suspension +@cindex suspension +@findex holdJob + +La suspension consiste a figer en file d'attente un job qui n'aurait pas +encore commence son execution. Il n'est pas possible de suspendre un job +qui s'execute. + +Il y a deux manieres de suspendre un job en file d'attente : +@itemize @bullet{} +@item en utilisant la methode @samp{holdJob}; +@item en modifiant les parametres du job a l'aide de la methode @samp{alterJob}. +@end itemize + +Exemple 1 : + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + jobid.holdJob(); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +try : + jobid.holdJob() + +except : + @dots{} +@end example + +@end itemize + +Exemple 2 : + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + Parametre altparam; + altparam[HOLD] = 1; + jobid.alterJob(altparam); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +// Compte tenu de la surcharge d'operateur, cet exemple peut ne pas +// fonctionner encore +try : + altparam = @{@} + altparam["HOLD"] = 1 + jobid.alterJob(altparam) + +except : + @dots{} +@end example + +@end itemize + + + +@xref{Classe JobId}. +@xref{Exceptions}. +@xref{Reprise}. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Reprise, Modification, Suspension, Utilisation +@comment node-name, next, previous, up +@section Reprise +@cindex reprise +@findex releaseJob + +La reprise est l'operation inverse de la suspension en ceci qu'elle +libere un job precedemment suspendu en file d'attente. Le job continuera +alors son cheminement normal au sein du gestionnaire de batch. + +Il y a deux manieres de suspendre un job en file d'attente : +@itemize @bullet{} +@item en utilisant la methode @samp{releaseJob}; +@item en modifiant les parametres du job a l'aide de la methode @samp{alterJob}. +@end itemize + +Exemple 1 : + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + jobid.releaseJob(); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +try : + jobid.releaseJob() + +except : + @dots{} +@end example + +@end itemize + +Exemple 2 : + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + Parametre altparam; + altparam[HOLD] = 0; + jobid.alterJob(altparam); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +// Compte tenu de la surcharge d'operateur, cet exemple peut ne pas +// fonctionner encore +try : + altparam = @{@} + altparam["HOLD"] = 0 + jobid.alterJob(altparam) + +except : + @dots{} +@end example + +@end itemize + + +@xref{Classe JobId}. +@xref{Exceptions}. +@xref{Suspension}. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Modification, Installation de la bibliotheque, Reprise, Utilisation +@comment node-name, next, previous, up +@section Modification +@cindex modification +@findex alterJob + +Il est possible de modifier tout ou partie des parametres et des +variables d'un job a condition que celui-ci soit encore en file +d'attente. Un job dont l'execution a deja debute devient inalterable, +sauf a l'arreter definitvement. + +La modification se fait en declarant un objet @emph{Parametre} et/ou un +objet @emph{Environnement} contenant l'ensemble des alterations a +apporter a la description du job. Ces alterations peuvent porter sur des +parametres ou des variables deja definies ou non. + +En reprenant le cas du job imaginaire utilise jusqu'ici, on peut +souhaiter changer le script qui tient lieu d'executable car le precedent +etait incomplet, modifier le niveau d'affichage de la log et ajouter une +variable nommee @var{myapp_debug} qui indique au code de passer en mode +debug. Ceci pourrait se faire de la maniere suivante : + +@itemize @bullet{} +@item Exemple C++ : + +@example +try @{ + Parametre altparam; + altparam[EXECUTABLE] = "/home/user/my_app/bin/exec_app.sh"; + + Environnement altenv; + altenv["MYAPP_LOGLEVEL"] = "4"; + altenv["MYAPP_DEBUG"] = "1"; + jobid.alterJob(altparam, altenv); + +@} catch (GenericException & ex) @{ + @dots{} +@} +@end example + +@item Exemple Python: + +@example +// Compte tenu de la surcharge d'operateur, cet exemple peut ne pas +// fonctionner encore +try : + altparam = @{@} + altparam["EXECUTABLE"] = "/home/user/my_app/bin/exec_app.sh" + + altenv = @{@} + altenv["MYAPP_LOGLEVEL"] = "4"; + altenv["MYAPP_DEBUG"] = "1"; + + jobid.alterJob(altparam, altenv) + +except : + @dots{} +@end example + +@end itemize + + +@xref{Classe JobId}. +@xref{Exceptions}. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Installation de la bibliotheque, Prerequis, Modification, Top +@comment node-name, next, previous, up +@chapter Installation +@cindex installation + +Cette section montre comment installer l'ensemble de la bibliotheque de +classes Batch sur une machine Unix. + +@menu +* Prerequis:: +* Installation rapide:: +* Configuration:: +* Compilation:: +* Compilation de la documentation:: +* Tests:: +* Installation:: +@end menu + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Prerequis, Installation rapide, Installation de la bibliotheque, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Prerequis +@cindex prerequis + +@unnumberedsubsec GCC/G++ + +A l'heure actuelle, la bibliotheque de classes Batch est developpee en +C++ et necessite de fait un compilateur pour ce langage. GCC/G++ +version 2.95.3 (@inforef{Top, ,gcc} pour plus de detail) ou une version +ulterieure est un choix judicieux. + +@unnumberedsubsec Gestionnaires de batch + +Comme la bibliotheque utilise les fonctionnalites de certains +gestionnaires de batch, il est indispensable de pouvoir acceder aux +bibliotheques et aux fichiers d'entete de ces produits, ou du moins des +produits dont on se servira par la suite, ceci pour pouvoir communiquer +a travers l'API qu'ils ont developpe. + +Le cas le plus simple est d'avoir le produit directement installe sur la +machine sur laquelle sera compilee la bibliotheque de classes Batch. + +@unnumberedsubsubsec OpenPBS +@cindex OpenPBS +@cindex PBS + +A ce jour, seul le gestionnaire de batch PBS (OpenPBS et PBS Pro) est +supporte (voir le site officiel @uref{http://www.openpbs.org}). Il doit +avoir une version au moins egale a 2.3.16. + +@unnumberedsubsubsec LSF +@cindex LSF + +Il est prevu d'avoir un support de LSF dans les mois qui viennent. + +@unnumberedsubsubsec LoadLeveler +@cindex LoadLeveler + +Il est prevu d'avoir un support de LoadLeveler mais dans un futur plus +lointain en fonction de la disponibilite du produit mais surtout d'une +machine sur lequel il serait installe. + +@unnumberedsubsubsec Sun Grid Engine + +Ce choix-la est beaucoup plus hypothetique, et risque bien de ne jamais +etre mene a bien. + +@unnumberedsubsubsec Rsh/Ssh + +Il est prevu de simuler le fonctionnement d'un gestionnaire de batch a +l'aide de commandes Unix Rsh et Ssh dans la mesure de leurs capacites +lorsque qu'il n'est pas possible d'avoir un gestionnaire de batch sur +certaines machines ou de s'y connecter (par exemple lorsqu'on traverse +un coupe-feu). + +@unnumberedsubsec Python +@cindex Python + +Les classes de haut-niveau de la bibliotheque de classes Batch disposent +d'une interface en Python qui leur permet d'etre utilisables dans ce +langage. L'usage de cette fonctionnalite necessite d'avoir a disposition +une version de Python (voir le site officiel +@uref{http://www.python.org}) au moins egale a 2.2. + +@unnumberedsubsec SWIG +@cindex SWIG + +De plus l'interfacage avec Python est automatise a l'aide de +l'utilitaire SWIG (voir le site officiel @uref{http://www.swig.org}) qui +transcrit les definitions des classes C++ en classes Python. Il faut +pour cela disposer de la version 1.3.17 ou ulterieure. + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Installation rapide, Configuration, Prerequis, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Installation rapide +@cindex installation rapide + +Il faut commencer par decompresser le fichier @file{.tar.gz} ou +@file{.tgz} et descendre dans le repertoire qu'il a cree : + +@example +$ tar -xzvf Batch-@value{VERSION}.tar.gz +$ cd Batch-@value{VERSION} +@end example + +Pour ceux qui sont vraiment presses, le minimum requis est : + +@example +$ ./configure +$ make +$ make install +@end example + +Pour ceux qui ont le temps de lire la suite, les sections suivantes +decrivent plus en detail ces etapes et les differents tests que l'on +peut mener. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Configuration, Compilation, Installation rapide, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Configuration +@cindex configuration + +La phase de configuration, tres classique dans le domaine des logiciels +libres, est basee sur les produits autoconf (voir @inforef{Top, +,autoconf}), automake (voir @inforef{Top, ,automake}) et libtool (voir +@inforef{Top, ,libtool}). + +La configuration est faite a l'aide du programme @file{configure} +present dans le repertoire racine de la bibliotheque de classes +Batch. Ce programme analyse l'ensemble des elements du systeme sur +lequel se deroulera la compilation pour determiner les parametres +optimaux et la presence de tous les produits necessaires a la +compilation. + +On n'oubliera pas de se referer a la documentation de @file{configure} +notamment pour determiner l'emplacement definitif de l'installation : + +@example +$ ./configure --help +@end example + +C'est aussi au cours de cette phase de configuration qu'il est +indispensable de preciser avec quelles options la bibliotheque doit etre +generee. En particulier il est necessaire d'indiquer avec quel(s) +gestionnaire(s) de batch doit se faire la compilation de maniere a avoir +acces a l'API. + +Par exemple dans le cas de OpenPBS, il est necessaire de preciser : + +@example +$ ./configure --with-openpbs=/path/to/PBS/root/dir +@end example + +Le chemin @file{/path/to/PBS/root/dir} est optionnel si la variable +d'environnement @var{openpbs} est definie avec cette meme valeur. + +De meme pour Python que l'on indique de la maniere suivante : + +@example +$ ./configure --with-python=/path/to/Python/root/dir +@end example + +ou bien a l'aide de la variable d'environnement @var{pythonhome}. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Compilation, Compilation de la documentation, Configuration, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Compilation +@cindex compilation + +La compilation proprement dite n'appelle pas de remarque particuliere : + +@example +$ make +@end example + +On n'oubliera pas d'utiliser les focntionnalites de chaque @file{make}, +comme par exemple la compilation parallele pour reduire les temps de +compilation (voir @inforef{Top, ,make}). + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Compilation de la documentation, Tests, Compilation, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Compilation de la documentation +@cindex compilation de la documentation + +Normalement la documentation est automatiquement compilee lors de la +compilation de la bibliotheque, mais uniquement sous la forme d'un +fichier @file{.info}. Il est egalement possible d'obtenir un fichier +@file{.dvi} qui permettra de generer d'autres formats comme le +PostScript (fichier @file{.ps}) ou le PDF (fichier @file{.pdf}), ou bien +une documentation sous forme HTML (fichier @file{.html}). + +Pour fabriquer le fichier @file{.dvi} il faut executer la commande +suivante : + +@example +$ make dvi +@end example + +Il est alors possible de produire une documentation sous forme +PostScript : + +@example +$ cd doc +$ dvips Batch.dvi -o Batch.ps +@end example + +ou PDF : + +@example +$ cd doc +$ dvipdf Batch.dvi Batch.pdf +@end example + +Pour la documentation HTML, on l'obtient a l'aide de le commande +suivante : + +@example +$ cd doc +$ texi2html -split_node Batch.texi +@end example + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Tests, Installation, Compilation de la documentation, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Tests +@cindex tests + +@unnumberedsubsec Tests de pre-installation + +La bibliotheque de classes Batch dispose d'un ensemble de tests +unitaires pour verifier le fonctionnement de chaque classe +individuellement. Ces tests ne sont pas compiles lors de la compilation +de la bibliotheque; ils ne le sont qu'au moment du test. + +Les tests sont executes de la maniere suivante : + +@example +$ make check +@end example + +A la fin des tests, un compte rendu est fait qui avertit l'utilisateur +des tests reussis et des echecs rencontres. Chaque test peut etre rejoue +individuellement en se placant dans le repertoire @file{test} et en +executant les tests manuellement comme par exemple : + +@example +$ cd test +$ ./t_Versatile.sh +@end example + +@unnumberedsubsec Tests de post-installation + +Certains tests ne sont pas executes lorsque la commande @file{make +check} est lancee car ceux-ci necessitent l'installation prealable de +certains fichiers qui ne l'ont pas encore ete, l'installation definitive +n'ayant pas eu lieu encore. C'est pour cela que ces tests ne doivent et +ne peuvent etre lances qu'une fois l'installation terminee. @xref{Installation}. + +Il faut pour cela executer : + +@example +$ make installcheck +@end example + +De la meme maniere que pour les tests de pre-installation, une compte +rendu est fait et les tests defaillants peuvent etre rejoues +manuellement pour determiner le probleme. + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Installation, Divers, Tests, Installation de la bibliotheque +@comment node-name, next, previous, up +@section Installation +@cindex installation + +L'installation est la mise a disposition definitive dans le systeme de +la bibliotheque de classes Batch. C'est la derniere etape de la +procedure apres la configuration et la compilation. + +On l'execute de la maniere suivante : + +@example +$ make install +@end example + +Tous les fichiers compiles, la bibliotheque et les fichiers d'entete +sont installes dans le repertoire definitif. Les fichiers de test de +post-installation sont egalement copies (@xref{Tests}.) ainsi que la +documentation. + + + + + + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Divers, Index, Installation, Top +@comment node-name, next, previous, up +@chapter Divers +@cindex divers + + + + + +@c ---------------------- +@c ---------------------- +@c ---------------------- + +@node Index, Top , Divers, Top +@comment node-name, next, previous, up +@unnumbered Index + +@heading Index des concepts +@printindex cp + +@heading Index des fonctions et des methodes +@printindex fn + +@bye + diff --git a/doc/salome/Makefile.am b/doc/salome/Makefile.am new file mode 100644 index 000000000..b1075e0b8 --- /dev/null +++ b/doc/salome/Makefile.am @@ -0,0 +1,51 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# -* Makefile *- +# +# Author : Paul RASCLE (EDF) +# Date : 16/02/2006 +# $Header$ +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +SUBDIRS= tui +SUBDIRSGUI= tui +SUBDIRSTUI= tui + +index_html: + $(INSTALL) -d $(docdir); + +usr_docs: index_html + list='$(SUBDIRSGUI)'; for subdir in $$list; do \ + echo "Making usr_docs in $$subdir"; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) usr_docs) \ + done; + +dev_docs: index_html + list='$(SUBDIRSTUI)'; for subdir in $$list; do \ + echo "Making dev_docs in $$subdir"; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) dev_docs) \ + done; + + +info_TEXINFOS = Batch.texi + +install-data-local: html usr_docs + cp -rp $(top_builddir)/doc/salome/Batch.html $(docdir) diff --git a/doc/salome/tui/KERNEL/doxydev.in b/doc/salome/tui/KERNEL/doxydev.in new file mode 100644 index 000000000..168d1c5ee --- /dev/null +++ b/doc/salome/tui/KERNEL/doxydev.in @@ -0,0 +1,241 @@ +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME v.@VERSION@" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = ../ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = @top_builddir@ \ + @top_srcdir@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 5 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = YES +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= NO +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = \ + @top_srcdir@ +FILE_PATTERNS = *.idl *.?xx *.h *.hh *.i *c *.cc python_extension_must_be_here +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = KERNEL +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = sources/footer.html +HTML_STYLESHEET = sources/doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = NO +UML_LOOK = YES +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = NO +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/salome/tui/KERNEL/doxyfile.in b/doc/salome/tui/KERNEL/doxyfile.in new file mode 100755 index 000000000..a4f54eba4 --- /dev/null +++ b/doc/salome/tui/KERNEL/doxyfile.in @@ -0,0 +1,214 @@ +# Doxyfile 1.3-rc1 + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME v.@VERSION@" +PROJECT_NUMBER = id#1.1 +OUTPUT_DIRECTORY = ../ +OUTPUT_LANGUAGE = English +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +SHORT_NAMES = NO +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = YES +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 5 +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ALIASES = +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = YES +SHOW_USED_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../../../../share/salome/idl/SALOME_ModuleCatalog.idl \ + ../../../../share/salome/idl/SALOMEDS.idl \ + ../../../../share/salome/idl/SALOME_Exception.idl \ + ../../../../share/salome/idl/SALOMEDS_Attributes.idl \ + ../../../../share/salome/idl/SALOME_Component.idl \ + ../../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx \ + ../../../../share/salome/src/NamingService/SALOME_NamingService.hxx \ + ../../../../share/salome/src/NamingService/SALOME_NamingService.cxx \ + ../../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx \ + ../../../../build/salome/bin/salome \ + ../../../../build/salome/src/Batch_SWIG \ + ../../../../build/salome/src/Communication_SWIG \ + ../../../../build/salome/src/LifeCycleCORBA_SWIG \ + ../../../../build/salome/src/LifeCycleCORBA_SWIG \ + ../../../../build/salome/src/NOTIFICATION_SWIG +FILE_PATTERNS = *.idl *.hxx *.cxx python_extension_must_be_here +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_SOURCE_FILES = YES +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = KERNEL +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = YES +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_SCHEMA = +XML_DTD = +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +GENERATE_LEGEND = NO +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO +CGI_NAME = search.cgi +CGI_URL = +DOC_URL = +DOC_ABSPATH = +BIN_ABSPATH = /usr/local/bin/ +EXT_DOC_PATHS = diff --git a/doc/salome/tui/KERNEL/doxyuser.in b/doc/salome/tui/KERNEL/doxyuser.in new file mode 100644 index 000000000..0d95bda18 --- /dev/null +++ b/doc/salome/tui/KERNEL/doxyuser.in @@ -0,0 +1,247 @@ +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME v.@VERSION@" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = ../ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = @top_builddir@ \ + @top_srcdir@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 5 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = YES +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= NO +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = \ + @top_srcdir@/bin \ + @top_srcdir@/idl \ + @top_srcdir@/src/Container \ + @top_srcdir@/src/LifeCycleCORBA \ + @top_srcdir@/src/NamingService \ + @top_srcdir@/src/Notification \ + @top_srcdir@/src/Utils +FILE_PATTERNS = *.idl *.hxx *.cxx python_extension_must_be_here +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = KERNEL +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = sources/footer.html +HTML_STYLESHEET = sources/doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +GROUP_GRAPHS = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = NO +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/salome/tui/KERNEL/sources/doxygen.css b/doc/salome/tui/KERNEL/sources/doxygen.css new file mode 100755 index 000000000..88e613d23 --- /dev/null +++ b/doc/salome/tui/KERNEL/sources/doxygen.css @@ -0,0 +1,170 @@ +H1 { + text-align: center; +} + +CAPTION { + font-weight: bold +} + +/* Link in the top navbar */ +A.qindex {} + +A.qindexRef {} + +/* Link to any cross-referenced Doxygen element */ +A.el { + text-decoration: none; + font-weight: bold +} + +A.elRef { + font-weight: bold +} + +/* Link to any cross-referenced Doxygen element inside a code section + (ex: header) +*/ +A.code { + text-decoration: none; + font-weight: normal; + color: #4444ee +} + +A.codeRef { + font-weight: normal; + color: #4444ee +} + +A:hover { + text-decoration: none; + background-color: lightblue +} + +DL.el { + margin-left: -1cm +} + +/* A code fragment (ex: header) */ +DIV.fragment { + width: 100%; + border: none; + background-color: #CCCCCC +} + +/* In the alpha list (coumpound index), style of an alphabetical index letter */ +DIV.ah { + background-color: #CCCCCC; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} + +/* Method name (+ type) */ +TD.md { + background-color: lightblue; + font-weight: bold; +} + +/* Method parameter (some of them) */ +TD.mdname1 { + background-color: lightblue; + font-weight: bold; color: #602020; +} + +/* Method parameter (some of them) */ +TD.mdname { + background-color: lightblue; + font-weight: bold; + color: #602020; + width: 600px; +} + +/* Separator between methods group (usually empty, seems not supported by IE) */ +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold +} + +DIV.groupText { + margin-left: 16px; + font-style: italic; + font-size: smaller +} + +BODY { + background: #FFFFFF; +} + +/*div.div-page { + background-color: #FFFFFF; + margin-left: 1em; + margin-right: 1em; + margin-top: 1em; + margin-bottom: 0.1em; + + padding-left: 1em; + padding-right: 1em; + padding-top: 0.5em; + padding-bottom: 0.5em; + + border: 2px solid #0D299A; + border-width: 2px; + border-color: #0D299A; +}*/ + +div.tabs { + text-align: justify; + margin-left : 2px; + margin-right : 2px; + margin-top : 2px; + margin-bottom : 2px + font-weight: bold; + color: #FFFFFF; +} + +DIV.div-footer { + margin-left: 1em; + margin-right: 1em; + margin-bottom: 0.2em; + text-align: right; + font-size: 9pt; +} + +/* In File List, Coumpound List, etc, 1st column of the index */ +TD.indexkey { + background-color: #CCCCCC; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} + +/* In File List, Coumpound List, etc, 2nd column of the index */ +TD.indexvalue { + background-color: #CCCCCC; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} + +span.keyword { color: #008000 } +span.keywordtype { color: #604020 } +span.keywordflow { color: #e08000 } +span.comment { color: #800000 } +span.preprocessor { color: #806020 } +span.stringliteral { color: #002080 } +span.charliteral { color: #008080 } diff --git a/doc/salome/tui/KERNEL/sources/footer.html b/doc/salome/tui/KERNEL/sources/footer.html new file mode 100755 index 000000000..8aa47dfe0 --- /dev/null +++ b/doc/salome/tui/KERNEL/sources/footer.html @@ -0,0 +1,15 @@ + + + diff --git a/doc/salome/tui/KERNEL/sources/html_comments.gif b/doc/salome/tui/KERNEL/sources/html_comments.gif new file mode 100755 index 000000000..f0c0f0b47 Binary files /dev/null and b/doc/salome/tui/KERNEL/sources/html_comments.gif differ diff --git a/doc/salome/tui/KERNEL/sources/static/tree.js.in b/doc/salome/tui/KERNEL/sources/static/tree.js.in new file mode 100755 index 000000000..b7422d7b8 --- /dev/null +++ b/doc/salome/tui/KERNEL/sources/static/tree.js.in @@ -0,0 +1,200 @@ +foldersTree = gFld("SALOME v.@VERSION@ ", "", "") + insDoc(foldersTree, gLnk("Main Page", "", "main.html")) + +aux1 = insFld(foldersTree, gFld("TUI Reference Guide", "")) + aux2 = insFld(aux1, gFld("Modules", "")) + aux3 = insFld(aux2, gFld("SALOME STUDY module", "")) + insDoc(aux3, gLnk("Overview", "", "overview_Study.html")) + aux4 = insFld(aux3, gFld("Packages", "")) + insDoc(aux4, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html")) + insDoc(aux3, gLnk("Examples", "", "examples_Study.html")) + aux3 = insFld(aux2, gFld("SALOME KERNEL module", "")) + insDoc(aux3, gLnk("Overview", "", "overview_Kernel.html")) + aux4 = insFld(aux3, gFld("Packages", "")) + insDoc(aux4, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html")) + insDoc(aux4, gLnk("SALOME", "", "namespaceSALOME.html")) + insDoc(aux4, gLnk("Engines", "", "namespaceEngines.html")) + insDoc(aux3, gLnk("Examples", "", "examples_Kernel.html")) + + +/*! Data structures +*/ + insDoc(aux1, gLnk("Data Structures", "", "annotated.html")) + +/*! insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html")) + insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html")) + insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html")) + insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html")) + insDoc(aux1, gLnk("Engines::Component", "", "interfaceEngines_1_1Component.html")) + insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html")) + insDoc(aux1, gLnk("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html")) + insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html")) + insDoc(aux1, gLnk("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html")) + insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html")) + insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html")) + insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html")) + insDoc(aux1, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html")) + insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html")) + insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html")) + insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html")) + insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html")) + insDoc(aux1, gLnk("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html")) + insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html")) + insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html")) + insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html")) + insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html")) + insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html")) + insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html")) + insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html")) +*/ + insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html")) + +/*! insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html")) + insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html")) + insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html")) + insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html")) + insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html")) + aux2 = insFld(aux1, gFld("Engines::Component", "", "interfaceEngines_1_1Component.html")) + insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html")) + aux2 = insFld(aux1, gFld("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html")) + insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html")) + aux2 = insFld(aux1, gFld("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html")) + insDoc(aux2, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html")) + insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html")) + insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html")) + insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html")) + insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html")) + insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html")) + insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html")) + insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html")) + aux2 = insFld(aux1, gFld("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html")) + insDoc(aux2, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html")) + insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html")) + insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html")) + insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html")) + insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html")) + insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html")) + insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html")) + insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html")) + insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html")) +*/ + insDoc(aux1, gLnk("Class methods list", "", "functions.html")) +/*! +aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html")) + insDoc(aux1, gLnk("Engines", "", "namespaceEngines.html")) + insDoc(aux1, gLnk("SALOME", "", "namespaceSALOME.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html")) + insDoc(aux1, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html")) +*/ + insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html")) + + insDoc(aux1, gLnk("File List", "", "files.html")) + +/*! + insDoc(aux1, gLnk("SALOME_Component.idl", "", "SALOME__Component_8idl.html")) + insDoc(aux1, gLnk("SALOME_Exception.idl", "", "SALOME__Exception_8idl.html")) + insDoc(aux1, gLnk("SALOME_ModuleCatalog.idl", "", "SALOME__ModuleCatalog_8idl.html")) + insDoc(aux1, gLnk("SALOME_Session.idl", "", "SALOME__Session_8idl.html")) + insDoc(aux1, gLnk("SALOMEDS.idl", "", "SALOMEDS_8idl.html")) + insDoc(aux1, gLnk("SALOMEDS_Attributes.idl", "", "SALOMEDS__Attributes_8idl.html")) +*/ + +aux1 = insFld(foldersTree, gFld("IDL/Python mapping", "")) + insDoc(aux1, gLnk("Mapping of IDL definitions to Python language", "", "mapping.html")) + insDoc(aux1, gLnk("Mapping of SALOME IDL definitions to Python language", "", "page2.html")) + +/*! insDoc(foldersTree, gLnk("Graphical Class Hierarchy", "", "inherits.html")) +*/ +aux1 = insFld(foldersTree, gFld("Naming service", "")) + insDoc(aux1, gLnk("Naming Service Description ", "", "overview_Naming.html")) + insDoc(aux1, gLnk("Salome_NamingService Class Reference", "", "classSALOME__NamingService.html")) + insDoc(aux1, gLnk("Examples", "", "examples_Naming.html")) +aux1 = insFld(foldersTree, gFld("Life Cycle", "")) + insDoc(aux1, gLnk("Life Cycle Service Description ", "", "overview_Life_Cycle.html")) + insDoc(aux1, gLnk("Salome_LifeCycleCorba Class Reference", "", "classSALOME__LifeCycleCORBA.html")) + insDoc(aux1, gLnk("Examples", "", "examples_Life_cycle.html")) + + diff --git a/doc/salome/tui/Makefile.am b/doc/salome/tui/Makefile.am new file mode 100644 index 000000000..8d0902dbc --- /dev/null +++ b/doc/salome/tui/Makefile.am @@ -0,0 +1,81 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# -* Makefile *- +# +# Author : Paul RASCLE (EDF) +# Date : 16/02/2006 +# $Header$ +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +EXTRA_DIST = $(srcdir)/KERNEL $(srcdir)/pythfilter.py + +dist-hook: + rm -rf `find $(distdir) -name CVS` + +usr_docs: + cp -fr $(srcdir)/KERNEL/* ./INPUT; \ + cd ./INPUT; \ + pwd; ls;\ + echo "DOXYGEN SUPPORT PYTHON - $(DOXYGEN_WITH_PYTHON)"; \ + if( test "x$(DOXYGEN_WITH_PYTHON)" = "xyes"); then \ + sed 's|python_extension_must_be_here|*.py|' ./doxyuser > ./doxyuser1; \ + $(DOXYGEN) -u ./doxyuser1; \ + else \ + sed 's|python_extension_must_be_here||' ./doxyuser > ./doxyuser1; \ + fi; \ + echo "DOXYGEN SUPPORT STL - $(DOXYGEN_WITH_STL)"; \ + if( test "x$(DOXYGEN_WITH_STL)" = "xyes"); then \ + sed -e 's|BUILTIN_STL_SUPPORT = NO|BUILTIN_STL_SUPPORT = YES|' ./doxyuser1 > ./doxyuser2; \ + mv -f doxyuser2 doxyuser1; \ + fi; \ + $(DOXYGEN) ./doxyuser1; \ + cd ..; + $(INSTALL) -d $(docdir)/tui/KERNEL; + cp -fr KERNEL $(docdir)/tui + cp -fr $(srcdir)/KERNEL/sources/static/*.* $(docdir)/tui/KERNEL; + cp -fr $(srcdir)/KERNEL/sources/ $(docdir)/tui/KERNEL; + cp -fr $(srcdir)/KERNEL/HTML/ $(docdir)/tui/KERNEL; + cp -f $(srcdir)/pythfilter.py $(docdir)/tui/KERNEL; + +dev_docs: + cp -fr $(srcdir)/KERNEL/* ./INPUT; \ + cd ./INPUT; \ + pwd; ls;\ + echo "DOXYGEN SUPPORT PYTHON - $(DOXYGEN_WITH_PYTHON)"; \ + if( test "x$(DOXYGEN_WITH_PYTHON)" = "xyes"); then \ + sed 's|python_extension_must_be_here|*.py|' ./doxydev > ./doxydev1; \ + $(DOXYGEN) -u ./doxydev1; \ + else \ + sed 's|python_extension_must_be_here||' ./doxydev > ./doxydev1; \ + fi; \ + echo "DOXYGEN SUPPORT STL - $(DOXYGEN_WITH_STL)"; \ + if( test "x$(DOXYGEN_WITH_STL)" = "xyes"); then \ + sed -e 's|BUILTIN_STL_SUPPORT = NO|BUILTIN_STL_SUPPORT = YES|' ./doxydev1 > ./doxydev2; \ + mv -f doxydev2 doxydev1; \ + fi; \ + $(DOXYGEN) ./doxydev1; \ + cd ..; + $(INSTALL) -d $(docdir)/tui/KERNEL; +# cp -fr KERNEL $(docdir)/tui +# cp -fr $(srcdir)/KERNEL/sources/static/*.* $(docdir)/tui/KERNEL; +# cp -fr $(srcdir)/KERNEL/sources/ $(docdir)/tui/KERNEL; +# cp -fr $(srcdir)/KERNEL/HTML/ $(docdir)/tui/KERNEL; +# cp -f $(srcdir)/pythfilter.py $(docdir)/tui/KERNEL; diff --git a/doc/salome/version.texi b/doc/salome/version.texi new file mode 100644 index 000000000..f9a81011e --- /dev/null +++ b/doc/salome/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 31 May 2006 +@set UPDATED-MONTH May 2006 +@set EDITION 3.2.0 +@set VERSION 3.2.0 diff --git a/doc/txt2html.sh b/doc/txt2html.sh new file mode 100755 index 000000000..66118fd52 --- /dev/null +++ b/doc/txt2html.sh @@ -0,0 +1,56 @@ +#/bin/sh + +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# =================================================================== +# This shell script is provided for generating the html files +# from the txt files (restructured text) in the source directory. +# +# Usage: just execute the script where it stands in the source +# directory. The file list has to be updated manually when adding +# a new restructured text file. +# +# Note that the building process executes a target rstdoc that +# generates the html documentation without need of this script. +# The autoconficuration (check_htmlgen.m4) set the correct generator +# rst2html by replacing the @RST2HTML@ tag. +# =================================================================== +# (CSSI - gboulant - 25/10/05) +# + +# This must be updated manually in this script (for source usage only) +RST2HTML=rst2html + +FILELIST="index + UnitTests + SALOME_Application + INSTALL + kernel_resources + userguide" + +STYLESHEET=rst.css +RSTOPTS="--output-encoding=latin1 --stylesheet=$STYLESHEET" + +for file in $FILELIST; do + bfn=`basename $file .txt` + echo "Generating ${bfn}.html from ${bfn}.txt ..." + $RST2HTML $RSTOPTS ${bfn}.txt ${bfn}.html +done + diff --git a/doc/userguide.txt b/doc/userguide.txt new file mode 100644 index 000000000..b7134e840 --- /dev/null +++ b/doc/userguide.txt @@ -0,0 +1,146 @@ +================================================================= +User's guide, for developpers and users +================================================================= + +*html version of this document is produced with docutils*:: + + rst2html < doc.txt > doc.html + +*This document corresponds to SALOME2 3.1.0* +*NOT UP TO DATE with 3.2.0* + +.. contents:: +.. sectnum:: + ++-------------------------------------------+ +| **WORK in PROGRESS, INCOMPLETE DOCUMENT** | ++-------------------------------------------+ + +------------------------------------------------------------------------------- + +This guide provides you with some basic concepts for developing and +using the SALOME platform. You will find some information on the +general technical architecture ... + +Introduction +============ + +General information +------------------- + +This document has been initialized by collecting and updating an existing +documentation. The restructured text format has been selected for +writing. This format can be read with a basic editor except for +pictures and some hypertext links. You can build the html pages using +the docutils scripts provided with python packages on most platform. + +Definitions +----------- + +``WORK IN PROGRESS`` + +Module + definition of a module and/or link to the definition + +Container + definition of a container + + +General concepts +================ +modules et dĂ©pendances (s'inspirer de PYHELLO) + + +Filesystem organisation +======================== + +Voir doc de JR "Organisation de la plate-forme" + +A typical source working directory +---------------------------------- +organisation type des sources d'un module standard (spĂ©cifications techniques) + +A typical installation directory +-------------------------------- +organisation type des produits installĂ©s + + +Building process +================ +ProcĂ©dures de compilation (renvoie au install.sh) + + +Developer's guide - basic concepts +========================================= + +Guide du dĂ©veloppeur: Ă©lĂ©ments de conception + - zoom sur certains Ă©lĂ©ments techniques bons Ă  connaitre pour faire + Ă©voluer le KERNEL sans tout casser. + - les ressources du kernel: + - trace, debug, exception (cf. kernel_ressources.tex) + - classes batch (prĂ©sentation puis renvoi Ă  la doc d'Ivan) + - dĂ©veloppement de tests unitaires + +Developer's guide - managing the development space +================================================== + +- Guide du dĂ©veloppeur: gestion de l'espace de dĂ©veloppement + - principe de mise en oeuvre (rĂŽle des Ă©tapes: build_configure, ...) + - description des fichiers m4 et du principe de mise en oeuvre + - les Makefile.in, ... (cf. doc guide du dĂ©veloppeur). + - Ă©volution des procĂ©dures de construction + - personalisation des procĂ©dures de construction + +Developer' guide - integration tools +==================================== +- Guide de l'intĂ©grateur (dĂ©veloppeur de nouveaux modules) +(on lui montre ici le principe de construction et les ressources Ă  +disposition pour faire le travail) + - crĂ©ation d'un modules + - intĂ©gration code boĂźte noire (perfect, solver) + - intĂ©gration bibliothĂšque de fonctions (hxx2salome, voir avec + N.Crouzet) + - intĂ©gration de modĂšles de donnĂ©es (xdata) + + +End user's guide +================ +- Guide de l'utilisateur + - concept d'application (renvoie doc Paul) + - commandes avancĂ©es (showNS, exemple de contact de la + session, d'un engine, utilisation du lifeCycle, du module salome, + des modules geompy et smesh) + - utilisation en mode distribuĂ© (doc de B. Sechet) + - GUI and TUI documentation + + + + + + + + + + + + + + + +RST Exemples +============ + +See INSTALL_ for general information on required configuration and +prerequisites, compilation procedure, setting environment principles. + +.. _INSTALL: ./INSTALL.html + + +------------------------------------------------------------------------------- + ++----------------------------------+------------------------------------------+ +| `General KERNEL documentation`_ | `End User KERNEL Doxygen documentation`_ | ++----------------------------------+------------------------------------------+ + +.. _`General KERNEL documentation`: ./index.html +.. _`End User KERNEL Doxygen documentation`: ./tui/KERNEL/index.html diff --git a/idl/Makefile.am b/idl/Makefile.am new file mode 100644 index 000000000..a09c9c622 --- /dev/null +++ b/idl/Makefile.am @@ -0,0 +1,147 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# +# This Makefile is responsible of generating the client and server +# implementation of IDL interfaces for both C++ and python usage. +# The building process of the C++ files is in charge of each source +# package and then is not manage here. +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +BASEIDL_FILES = \ + SALOME_Exception.idl \ + SALOME_Comm.idl \ + SALOME_ModuleCatalog.idl \ + SALOME_RessourcesCatalog.idl \ + SALOMEDS.idl \ + SALOMEDS_Attributes.idl \ + SALOME_Component.idl \ + SALOME_ContainerManager.idl \ + SALOME_TestComponent.idl \ + SALOME_Registry.idl \ + Logger.idl \ + SALOME_GenericObj.idl \ + SALOME_Session.idl \ + SALOME_TestModuleCatalog.idl \ + nstest.idl + +MPIIDL_FILES = \ + SALOME_MPIObject.idl \ + SALOME_MPIContainer.idl \ + SALOME_TestMPIComponent.idl + +IDL_FILES = $(BASEIDL_FILES) +if MPI_IS_OK + IDL_FILES += $(MPIIDL_FILES) +endif + +# all the idl files are needed for make dist +EXTRA_DIST= $(BASEIDL_FILES) $(MPIIDL_FILES) + +# This variable defines the files to be installed +salomeidl_DATA = $(IDL_FILES) + +# Sources built from idl files +# BUILT_SOURCE = first thing done on make all +# idl dependencies are checked and rebuilt first + +BASEIDL_SOURCES =\ + SALOME_ExceptionSK.cc \ + SALOME_CommSK.cc \ + SALOME_ModuleCatalogSK.cc \ + SALOME_RessourcesCatalogSK.cc \ + SALOMEDSSK.cc \ + SALOMEDS_AttributesSK.cc \ + SALOME_ComponentSK.cc \ + SALOME_ContainerManagerSK.cc \ + SALOME_TestComponentSK.cc \ + SALOME_RegistrySK.cc \ + LoggerSK.cc \ + SALOME_GenericObjSK.cc \ + SALOME_SessionSK.cc \ + SALOME_TestModuleCatalogSK.cc \ + nstestSK.cc + +MPIIDL_SOURCES = \ + SALOME_MPIObjectSK.cc \ + SALOME_MPIContainerSK.cc \ + SALOME_TestMPIComponentSK.cc + +IDL_SOURCES = $(BASEIDL_SOURCES) +if MPI_IS_OK + IDL_SOURCES += $(MPIIDL_SOURCES) +endif + +BUILT_SOURCES = $(IDL_SOURCES) + +lib_LTLIBRARIES = libSalomeIDLKernel.la +nodist_libSalomeIDLKernel_la_SOURCES = $(BUILT_SOURCES) +libSalomeIDLKernel_la_CPPFLAGS =\ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ +libSalomeIDLKernel_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeIDLKernel_la_LIBADD = @CORBA_LIBS@ + +# These variables defines the building process of CORBA files +OMNIORB_IDL = @OMNIORB_IDL@ +OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@ +OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/salome/idl +IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/salome/idl +IDLPYFLAGS = @IDLPYFLAGS@ + +# potential problem on parallel make on the following - multiple outputs +SUFFIXES = .idl .hh SK.cc +.idlSK.cc: + $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< +.idl.hh: + $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< + + +install-exec-local: $(IDL_FILES:%=$(top_srcdir)/idl/%) + $(INSTALL) -d $(pkgpythondir) + ls $^ | while read file; do \ + $(OMNIORB_IDL) $(IDLPYFLAGS) -C$(pkgpythondir) $$file ; \ + done + +# uninstall-local removes too much, but it works in distcheck +uninstall-local: + rm -rf $(pkgpythondir)/* + +mostlyclean-local: + -rm -f *.hh *.cc .depidl + +# we use cpp to generate dependencies between idl files. +# option x c tells the preprocessor to consider idl as a c file. +# if an idl is modified, all idl dependencies are rebuilt + +.depidl: $(IDL_FILES) + @echo "" > $@ + @for dep in $^ dummy; do \ + if [ $$dep != "dummy" ]; then \ + echo Building dependencies for $$dep; \ + $(CPP) $(C_DEPEND_FLAG) -x c -I$(srcdir) $$dep 2>/dev/null | \ + sed 's/\.o/\SK.cc/' >>$@; \ + fi; \ + done ; + +-include .depidl + diff --git a/resources/CatalogResources.xml.in b/resources/CatalogResources.xml.in new file mode 100644 index 000000000..c83cafac5 --- /dev/null +++ b/resources/CatalogResources.xml.in @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/DEPRECATED/Plugin.in b/resources/DEPRECATED/Plugin.in new file mode 100755 index 000000000..3d4fad5e5 --- /dev/null +++ b/resources/DEPRECATED/Plugin.in @@ -0,0 +1,10 @@ +! Description of available plugins +! ******************************** +! +a148e300-5740-11d1-a904-080036aaa103.Location: FWOSPlugin +! +! standard attribute drivers plugin +! +ad696000-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@ +ad696001-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@ +ad696002-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@ diff --git a/resources/KERNELCatalog.xml.in b/resources/KERNELCatalog.xml.in new file mode 100644 index 000000000..02afa4055 --- /dev/null +++ b/resources/KERNELCatalog.xml.in @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + KERNEL + Salome + Other + NRI + @VERSION@ + GUI Neutral Context + 1 + + hostname = muna + + + SalomeTestComponent + SalomeTestComponent + Other + NRI + @VERSION@ + GUI Neutral Context + 1 + 'linux' ~ OS + + + SALOME_TestComponentPy + SALOME_TestComponentPy + Other + NRI + @VERSION@ + GUI Neutral Context + 1 + 'linux' ~ OS + + + diff --git a/resources/Makefile.am b/resources/Makefile.am new file mode 100644 index 000000000..0c5dca94a --- /dev/null +++ b/resources/Makefile.am @@ -0,0 +1,43 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# -* Makefile *- +# +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +DEPRECATED_FILES=\ + DEPRECATED/Plugin + +dist_salomeres_DATA=\ + CatalogResources.xml \ + config \ + channel.cfg \ + KERNELCatalog.xml \ + SALOMEDS_Resources \ + $(DEPRECATED_FILES) diff --git a/salome_adm/Makefile.am b/salome_adm/Makefile.am new file mode 100644 index 000000000..7ae83a6fc --- /dev/null +++ b/salome_adm/Makefile.am @@ -0,0 +1,19 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +SUBDIRS = unix diff --git a/salome_adm/unix/DEPRECATED/Doxyfile b/salome_adm/unix/DEPRECATED/Doxyfile new file mode 100644 index 000000000..df82af032 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/Doxyfile @@ -0,0 +1,829 @@ +# 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 +# +# + +# Doxyfile 1.2.8.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, +# German, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, +# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = YES + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consist of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = /home01/prascle/devSalome/rootsrc + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = *idl *.cxx *.hxx *.hh *.h *.c *.cc *.py + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse. + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = /home01/prascle/devSalome/doc/html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the Html help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Netscape 4.0+ +# or Internet explorer 4.0+). + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = /home01/prascle/devSalome/doc/latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermedate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/salome_adm/unix/DEPRECATED/F77config.h.in b/salome_adm/unix/DEPRECATED/F77config.h.in new file mode 100644 index 000000000..670ac5756 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/F77config.h.in @@ -0,0 +1,29 @@ +/*---------------------------------------------------------------------------------- + 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 +------------------------------------------------------------------------------------*/ + + +#ifndef F77_FUNC + +#define F77_FUNC(name,NAME) @F77_FUNC_NAME@ +#define F77_FUNC_(name,NAME) @F77_FUNC_NAME_@ + +#endif + diff --git a/salome_adm/unix/DEPRECATED/config.h.in b/salome_adm/unix/DEPRECATED/config.h.in new file mode 100755 index 000000000..19d28510f --- /dev/null +++ b/salome_adm/unix/DEPRECATED/config.h.in @@ -0,0 +1,350 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* define if the compiler allows redefinition of stream input and output */ +#undef DEF_IOS_OK + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_BITS_SIGSET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_BSTRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DPS_DPSXCLIENT_H + +/* Define if we have a function called "finite" in -lm. */ +#undef HAVE_FINITE + +/* Define to 1 if you have the header file. */ +#undef HAVE_FLOATINGPOINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FLOAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FSTREAM + +/* Define to 1 if you have the header file. */ +#undef HAVE_FSTREAM_H + +/* Define to 1 if you have the `gethostname' function. */ +#undef HAVE_GETHOSTNAME + +/* Define to 1 if you have the header file. */ +#undef HAVE_GETOPT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_IEEEFP_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_IOMANIP + +/* Define to 1 if you have the header file. */ +#undef HAVE_IOMANIP_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_IOS + +/* Define to 1 if you have the header file. */ +#undef HAVE_IOSTREAM + +/* Define to 1 if you have the header file. */ +#undef HAVE_IOSTREAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_IOS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ISTREAM + +/* Define to 1 if you have the header file. */ +#undef HAVE_ISTREAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBC_H + +/* Define to 1 if you have the `e' library (-le). */ +#undef HAVE_LIBE + +/* Define to 1 if you have the `inks' library (-links). */ +#undef HAVE_LIBINKS + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if we have a function called "mallinfo" in -lmalloc. */ +#undef HAVE_MALLINFO + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_OSFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_OSTREAM + +/* Define to 1 if you have the header file. */ +#undef HAVE_OSTREAM_H + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the header file. */ +#undef HAVE_PWD_H + +/* Define to 1 if you have the `regcomp' function. */ +#undef HAVE_REGCOMP + +/* Define to 1 if you have the `re_comp' function. */ +#undef HAVE_RE_COMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_SIGFPE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SIGINFO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SIGNAL_H + +/* Define to 1 if you have the `statfs' function. */ +#undef HAVE_STATFS + +/* Define to 1 if you have the `statvfs' function. */ +#undef HAVE_STATVFS + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcspn' function. */ +#undef HAVE_STRCSPN + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STREAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRSTREAM_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define if we have a function called "ieee_handler" in -lsunmath. */ +#undef HAVE_SUNMATH + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYSENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IPC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MACHSIG_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MMAN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SEM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SIGINFO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SIGNAL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STATVFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSTEMINFO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_UTSNAME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_VFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_VNODE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_VALUES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_MULTIBUF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_READDISPLAY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_TRANSOVL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_XMU_EDITRES_H + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* define if the class ostream has member function form */ +#undef OSTREAM_FORM_OK + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define if compiler has function prototypes */ +#undef PROTOTYPES + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* define if the function semctl takes a value */ +#undef SEMCTL_NO_REFERENCE + +/* define if the function semop takes a value */ +#undef SEMOP_NO_REFERENCE + +/* define if semun has member __buf */ +#undef SEMUN_BUF_DEFINED + +/* define if the union semun is in sys/sem.h */ +#undef SEMUN_DEFINED + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif + +/* Define to `unsigned' if does not define. */ +#undef size_t diff --git a/salome_adm/unix/DEPRECATED/depend.in b/salome_adm/unix/DEPRECATED/depend.in new file mode 100644 index 000000000..080bf9a17 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/depend.in @@ -0,0 +1,88 @@ +## -*- makefile -*- + +## We keep a list of dependencies in `.depend' for each of the source +## files on which it depends. When one of the source files is modified +## we remove its record from .depend and regenerate its dependencies, +## tacking them onto the end of .depend. By including the .depend file +## into the makefile, we're telling make that the makefile depends on +## the dependency list in the .depend file. +## +## This is as fast as the `.d' method described in the GNU make manual +## for automatic dependencies, but has the added advantage that all +## dependencies are stored in one place. The advantage over the +## `makedepend' program is that only those files that are out of date +## have dependency information rebuilt, and the Makefile is not +## modified. +## +## This is also where tracing information is updated. The $(TRACE) +## program is run on each source file to make sure that the H5TRACE() +## macros are up to date. If they are then the file is not modified, +## otherwise the file is changed and a backup is saved by appending a +## tilde to the file name. +## +$(srcdir)/Dependencies: .depend + @if test "$(srcdir)" != "."; then \ + echo '## This file is machine generated on GNU systems.' >$@; \ + echo '## Only temporary changes may be made here.' >>$@; \ + echo >>$@; \ + perl -p $(top_srcdir)/bin/distdep .depend >>$@; \ + else \ + echo 'Dependencies cannot be built when $$srcdir == $$builddir'; \ + fi + +depend:.depend + +# when use the path as regexp, prevent taking "." for "any symbol" +srcdir_re = $(subst .,[.],$(srcdir)) +top_srcdir_re = $(subst .,[.],$(top_srcdir)) +top_builddir_re = $(subst .,[.],$(top_builddir)) + +# we had Makefile target, because we want Makefile rebuild before include .depend +.depend: $(LIB_DEP) $(TEST_SRC) $(BIN_DEP) + @touch .depend + @for dep in X $? ; do \ + if [ $$dep != "X" ]; then \ + if [ $$dep != "Makefile" ]; then \ + case "$$dep" in \ + *.c) \ + echo Building dependencies for $$dep; \ + obj=`basename $$dep .c`.lo; \ + sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ + $(CC) $(C_DEPEND_FLAG) $(CPPFLAGS) $$dep 2>/dev/null | \ + sed 's% $(srcdir_re)/% $$(srcdir)/%g' | \ + sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' | \ + sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' | \ + sed 's/\.o/.lo/' >>$@; \ + ;; \ + *.cc) \ + echo Building dependencies for $$dep; \ + obj=`basename $$dep .cc`.lo; \ + sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ + $(CXX) $(CXX_DEPEND_FLAG) $(CXXFLAGS) $(CPPFLAGS) $$dep 2>/dev/null | \ + sed 's% $(srcdir_re)/% $$(srcdir)/%g' | \ + sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' | \ + sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' | \ + sed 's/\.o/.lo/' >>$@; \ + ;; \ + *.cxx) \ + echo Building dependencies for $$dep; \ + obj=`basename $$dep .cxx`.lo; \ + sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ + $(CXX) $(CXX_DEPEND_FLAG) $(CXXFLAGS) $(CPPFLAGS) $$dep 2>/dev/null | \ + sed 's% $(srcdir_re)/% $$(srcdir)/%g' | \ + sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' | \ + sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' | \ + sed 's/\.o/.lo/' >>$@; \ + ;; \ + esac; \ + fi; \ + fi; \ + done; + + +-include .depend + +# idl depend +-include $(top_builddir)/idl/.depidl + + diff --git a/salome_adm/unix/DEPRECATED/envScript.in b/salome_adm/unix/DEPRECATED/envScript.in new file mode 100644 index 000000000..3a0574312 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/envScript.in @@ -0,0 +1,26 @@ + +DIR=`pwd` +EXEC_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` +cd $EXEC_DIR/.. +SALOME_HOME_DIR=`pwd` +cd $EXEC_DIR + +export SALOME_HOME_DIR +SALOME_SRC_DIR=@ROOT_SRCDIR@ +export SALOME_SRC_DIR +ORB_HOME_DIR=@CORBA_ROOT@ +export ORB_HOME_DIR + +LD_LIBRARY_PATH=${SALOME_HOME_DIR}/lib:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH + +# echo $SALOME_HOME_DIR = SALOME_HOME_DIR +# echo $SALOME_SRC_DIR = SALOME_SRC_DIR + +PYVTK_PATH=@VTKPY_MODULES@ +PYTHONPATH=${PYTHONPATH}:${SALOME_HOME_DIR}/idl:${SALOME_HOME_DIR}/bin:${SALOME_HOME_DIR}/lib:${PYVTK_PATH}:${EXEC_DIR} +export PYTHONPATH + +MICORC=/dev/null +export MICORC + diff --git a/salome_adm/unix/DEPRECATED/make_commence.in b/salome_adm/unix/DEPRECATED/make_commence.in new file mode 100644 index 000000000..55199bf36 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/make_commence.in @@ -0,0 +1,261 @@ +# common directories to put headerfiles +inc_builddir=$(top_builddir)/include/salome + +@SET_MAKE@ +# Modifcation B. Secher portage sur osf +SHELL=@SHELL@ + +# header missing + +HAVE_SSTREAM=@HAVE_SSTREAM@ + + +LIBS=@LIBS@ +LIBSFORBIN=@LIBS@ +LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome +LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome +# add libstdc++ to link c++ library with libtool ! +LDFLAGS+= @STDLIB@ +LDFLAGSFORBIN+= @STDLIB@ + +#CP=@CP@ + +# CPP + +CPP=@CPP@ +CXXCPP=@CXXCPP@ +CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I. + +# C + +CC = @CC@ +CFLAGS = @CFLAGS@ +C_DEPEND_FLAG = @C_DEPEND_FLAG@ + +# C++ + +CXX = @CXX@ +CXXFLAGS = @CXXFLAGS@ +CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@ + +# BOOST Library + +BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ +BOOST_LIBSUFFIX = @BOOST_LIBSUFFIX@ +BOOST_LIBS = @BOOST_LIBS@ + +# OpenPBS + +OPENPBS_INCLUDES = @OPENPBS_INCLUDES@ +OPENPBS_LIBDIR = @OPENPBS_LIBDIR@ +OPENPBS_LIBS = @OPENPBS_LIBS@ + +# LSF + +LSF_INCLUDES = @LSF_INCLUDES@ +LSF_LIBDIR = @LSF_LDFLAGS@ +LSF_LIBS = @LSF_LIBS@ + +# CPPUNIT + +CPPUNIT_INCLUDES = @CPPUNIT_INCLUDES@ +CPPUNIT_LIBS = @CPPUNIT_LIBS@ + +# PYTHON + +PYTHON = @PYTHON@ +PYTHONHOME = @PYTHONHOME@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_VERSION = @PYTHON_VERSION@ +PYTHON_SITE = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages +PYTHON_SITE_INSTALL = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome + +# QT +QT_ROOT = @QT_ROOT@ +QT_INCLUDES = @QT_INCLUDES@ +QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT +QT_LIBS = @QT_LIBS@ +QT_MT_LIBS = @QT_MT_LIBS@ +QT_VERS = @QT_VERS@ + +MOC = @MOC@ +UIC = @UIC@ + +# msg2qm +MSG2QM = @MSG2QM@ + +#QWT + +QWT_INCLUDES=@QWT_INCLUDES@ +QWT_LIBS=@QWT_LIBS@ + +# SIP +SIP = @SIP@ +SIP_INCLUDES = @SIP_INCLUDES@ +SIP_LIBS = @SIP_LIBS@ +SIP_VERS = @SIP_VERS@ + +# PYQT +PYQT_SIPS = @PYQT_SIPS@ +PYQT_LIBS = @PYQT_LIBS@ +PYQT_INCLUDES = @PYQT_INCLUDES@ +PYUIC = @PYUIC@ +PYQT_SIPFLAGS = @PYQT_SIPFLAGS@ + +# openGL +OGL_INCLUDES=@OGL_INCLUDES@ +OGL_LIBS=@OGL_LIBS@ + +# VTK +VTK_INCLUDES=@VTK_INCLUDES@ +VTK_LIBS=@VTK_LIBS@ + +# HDF5 + +HDF5_INCLUDES=@HDF5_INCLUDES@ +HDF5_LIBS=@HDF5_LIBS@ +HDF5_MT_LIBS=@HDF5_MT_LIBS@ + +# OpenCasCade + +OCC_INCLUDES=@CAS_CPPFLAGS@ +OCC_CXXFLAGS=@CAS_CXXFLAGS@ + +CAS_KERNEL=@CAS_KERNEL@ +CAS_MATH=@CAS_MATH@ +CAS_OCAF=@CAS_OCAF@ +CAS_OCAFVIS=@CAS_OCAFVIS@ +CAS_TKTopAlgo=@CAS_TKTopAlgo@ +CAS_VIEWER=@CAS_VIEWER@ +CAS_MODELER=@CAS_MODELER@ +CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@ +CAS_LDPATH=@CAS_LDPATH@ + +# MPI + +MPI_INCLUDES=@MPI_INCLUDES@ +MPI_LIBS=@MPI_LIBS@ + +# Swig C++ Python + +SWIG = @SWIG@ +SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I. + +# OMNIORB + +OMNIORB_ROOT = @OMNIORB_ROOT@ +OMNIORB_INCLUDES = @OMNIORB_INCLUDES@ +OMNIORB_LIBS = @OMNIORB_LIBS@ +OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@ + +OMNIORB_IDL = @OMNIORB_IDL@ +OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@ +OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/salome/idl + +OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@ +OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@ +OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@ + +OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@ +OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@ +OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@ + +# Default ORB + +CORBA_ROOT = @CORBA_ROOT@ +CORBA_INCLUDES = @CORBA_INCLUDES@ +CORBA_LIBS = @CORBA_LIBS@ +CORBA_CXXFLAGS = @CORBA_CXXFLAGS@ + +IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/salome/idl +IDLPYFLAGS = @IDLPYFLAGS@ + +IDL = @IDL@ + +IDL_CLN_H = @IDL_CLN_H@ +IDL_CLN_CXX = @IDL_CLN_CXX@ +IDL_CLN_OBJ = @IDL_CLN_OBJ@ + +IDL_SRV_H = @IDL_SRV_H@ +IDL_SRV_CXX = @IDL_SRV_CXX@ +IDL_SRV_OBJ = @IDL_SRV_OBJ@ + +CPPFLAGS+= $(CORBA_INCLUDES) +CXXFLAGS+= $(CORBA_CXXFLAGS) + +# add corba libs when link salome application ! +#LDFLAGS+= $(CORBA_LIBS) +LIBS+=$(CORBA_LIBS) +LIBSFORBIN+=$(CORBA_LIBS) + +DOXYGEN = @DOXYGEN@ + +## Shared libraries +#LT_STATIC_EXEC=@LT_STATIC_EXEC@ +#DYNAMIC_DIRS=@DYNAMIC_DIRS@ +LT_LIB=libtool +LT=$(top_builddir)/libtool +LT_COMPILE=$(LT) --mode=compile $(CC) +LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir) +LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS) +LT_RUN=$(LT) --mode=execute +LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM) +LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA) +LT_UNINSTALL=$(LT) --mode=uninstall $(RM) + +INSTALL=@INSTALL@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_DATA=@INSTALL_DATA@ + +# create a symbolic link (or a copie ?) +LN_S=@LN_S@ + +KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@ +KERNEL_SITE_DIR=@KERNEL_SITE_DIR@ +KERNEL_LDFLAGS=@KERNEL_LDFLAGS@ +KERNEL_CXXFLAGS=@KERNEL_CXXFLAGS@ + +## Installation points +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@exec_prefix@/bin/salome +libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome +# warning : if user give this path in configure we could have salome/salome :-( +includedir=@includedir@/salome +datadir=@datadir@/salome +idldir=${prefix}/idl/salome +sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +incmakedir=${prefix}/salome_adm/unix + +docdir=${prefix}/doc/salome + +# +# begin of package rules +# + +.PHONY: all lib bin inc resources data docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean + +.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm + +all: + $(MAKE) inc + $(MAKE) depend_idl + $(MAKE) depend + $(MAKE) lib + $(MAKE) bin + $(MAKE) resources + $(MAKE) data + +# +# add target to build administrative files +# + +# 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) $< $@ diff --git a/salome_adm/unix/DEPRECATED/make_conclude.in b/salome_adm/unix/DEPRECATED/make_conclude.in new file mode 100644 index 000000000..9583f49d4 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/make_conclude.in @@ -0,0 +1,399 @@ +#======================================================================= +# This section of this makefile comes from the file +# 'adm/unix/make_conclude' which was generated with config.status +# from file adm/unix/make_conclude.in +#======================================================================= +# -* Makefile *- +# +# Authors : Patrick GOLDBRONN (CEA) - Marc Tajchman (CEA) +# Date : 6/07/2001 +# $Header$ +# + +# ORB Specifics rules +@CORBA@ + +# transform idl reference in appropriate obj file +LIB_CLIENT_SRC = $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX)) +LIB_SERVER_SRC = $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_CXX)) +LIB_MOC_SRC = $(LIB_MOC:%.h=%_moc.cxx) +LIB_SRC+=$(LIB_MOC_SRC) +LIB_SWIG_SRC = $(SWIG_DEF:%.i=%_wrap.cxx) +LIB_DEP= $(LIB_SRC) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(LIB_SWIG_SRC) + +LIB_CLIENT_OBJ = $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_OBJ)) +LIB_SERVER_OBJ = $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_OBJ)) + + +# transform c file in appropriate libtool obj file (.c, .cc and .cxx) +LIB_OBJ_C = $(patsubst %.c, %.lo, $(filter %.c, $(LIB_SRC))) +LIB_OBJ_CC = $(patsubst %.cc, %.lo, $(filter %.cc, $(LIB_SRC))) +LIB_OBJ_CXX = $(patsubst %.cxx, %.lo, $(filter %.cxx, $(LIB_SRC))) +LIB_SWIG_OBJ = $(LIB_SWIG_SRC:%.cxx=%.lo) +LIB_OBJ_F = $(patsubst %.f, %.lo, $(filter %.f, $(LIB_SRC))) + +# all libtool obj file in library +LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F) + +# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la) +LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la, $(filter %.la, $(LIB))) +LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a, $(filter %.a, $(LIB))) +LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.so, $(LIB))) + +ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),) +LIB_SWIG = $(patsubst %cmodule.la,%.so, $(filter %.la, $(LIB))) +else +LIB_SWIG = +endif + +lib: $(LIB_BUILD) $(LIB_BUILD_SO) $(LIB_CLIENT_PY) +# we don't build static library ! + +$(LIB_BUILD): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la: %.la + -$(RM) $@ + -$(RM) $(patsubst %.la, %.so, $@) + -$(RM) $(patsubst %.la, %.a, $@) + ln -sf $(CURDIR)/$< $@ || true + ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<) \ + $(patsubst %.la, %.so, $@) || true + ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<).0 \ + $(patsubst %.la, %.so, $@).0 || true + + if test "X$(LIB_SWIG)" != "X"; then \ + ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/_$(LIB_SWIG) || true;\ + fi; + +$(LIB_BUILD_A): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a: %.a + -$(RM) $@ + ln -sf $(CURDIR)/$< $@ || true + +$(LIB_BUILD_SO): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so: %.so + -$(RM) $@ + ln -sf $(CURDIR)/$< $@ || true + +$(LIB): $(LIB_OBJ) + @$(LT) --mode=link $(CXX) -shared -rpath $(libdir) -o $@ $(CXXFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS) + +# transform idl reference in appropriate obj file +BIN_CLIENT_SRC = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX)) +BIN_SERVER_SRC = $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_CXX)) +BIN_MOC_SRC = $(BIN_MOC:%.h=%_moc.cxx) +BIN_SRC+=$(BIN_MOC_SRC) +BIN_DEP=$(BIN:%=%.cxx) $(BIN_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC) + +BIN_CLIENT_OBJ = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_OBJ)) +BIN_SERVER_OBJ = $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_OBJ)) +# transform c file in appropriate libtool obj file (.c) +BIN_OBJ_C = $(patsubst %.c, %.o, $(filter %.c, $(BIN_SRC))) +# transform c++ file in appropriate libtool obj file (.cc and .cxx) +BIN_OBJ_CC = $(patsubst %.cc, %.o, $(filter %.cc, $(BIN_SRC))) +BIN_OBJ_CXX = $(patsubst %.cxx, %.o, $(filter %.cxx, $(BIN_SRC))) +# all obj file in bin target +BIN_OBJ = $(BIN_OBJ_CC) $(BIN_OBJ_CXX) $(BIN_OBJ_C) $(BIN_CLIENT_OBJ) $(BIN_SERVER_OBJ) + +bin: $(BIN:%=$(top_builddir)/bin/salome/%) $(BIN) $(LIB) pyscripts sharedpyscripts + +BIN_LIB=$(LIB:lib%.la=-l%) + +$(BIN:%=$(top_builddir)/bin/salome/%) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%): $(top_builddir)/bin/salome/%: % + -$(RM) $@ + ln -sf $(CURDIR)/$< $@ + +$(BIN) $(TEST_PROGS): %: %.lo $(BIN_OBJ) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $^ $(BIN_LIB) $(LDFLAGSFORBIN) $(LIBSFORBIN) + +# copy python scripts in $(top_builddir)/bin/salome +# + +UI_FILES = $(notdir $(wildcard $(srcdir)/*.ui)) +UI_PY_FILES_PY = $(patsubst %.ui, %.py, $(UI_FILES)) +UI_PY_FILES = $(filter-out $(EXPORT_PYSCRIPTS) ,$(UI_PY_FILES_PY)) + +DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/salome/%) +DEST_UI_PY_FILES = $(UI_PY_FILES:%=$(top_builddir)/bin/salome/%) +pyscripts: $(DEST_PYSCRIPTS) $(UI_PY_FILES) $(DEST_UI_PY_FILES) +$(DEST_PYSCRIPTS): $(top_builddir)/bin/salome/%: % + cp -f $< $@ + +# generate generic python scripts from *.ui files +# +$(UI_PY_FILES): %.py: %.ui + $(PYUIC) $< -o $@ + +# copy ui-generated python scripts in $(top_builddir)/bin +# +$(DEST_UI_PY_FILES): $(top_builddir)/bin/salome/%: % + cp -f $< $@ + +# copy pyqt files in $(PYTHON_SHARED_SITE) +# +PYTHON_SHARED_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules + +$(PYTHON_SHARED_SITE): + $(INSTALL) -d $@ + +DEST_SHAREDPYSCRIPTS = $(EXPORT_SHAREDPYSCRIPTS:%=$(PYTHON_SHARED_SITE)/%) +sharedpyscripts: $(PYTHON_SHARED_SITE) $(DEST_SHAREDPYSCRIPTS) +$(DEST_SHAREDPYSCRIPTS): $(PYTHON_SHARED_SITE)/%: % + cp -f $< $@ + +check: test + +tests: unittest + +test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%) + +unittest: + @if test "x$(UNIT_TEST_PROG)" != "x"; then \ + $(top_builddir)/bin/salome/$(UNIT_TEST_PROG); \ + fi; + +# copy header file in $(inc_builddir) +# +DEST_HEADERS = $(EXPORT_HEADERS:%=$(inc_builddir)/%) +inc: $(DEST_HEADERS) +$(DEST_HEADERS): $(inc_builddir)/%: % + cp -f $< $@ + +# build resources file (icons and messages) : .qm file from .po file +RESOURCES_FILES_ALL := $(notdir $(wildcard $(srcdir)/resources/*)) +RESOURCES_FILES_ALL := $(filter-out CVS, $(RESOURCES_FILES_ALL)) +RESOURCES_FILES_ALL := $(filter-out %.po, $(RESOURCES_FILES_ALL)) +RESOURCES_FILES_ALL := $(filter-out %.in, $(RESOURCES_FILES_ALL)) +RESOURCES_FILES ?= $(RESOURCES_FILES_ALL) + +resources: resources-po resources-cp + +resources-po: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm) + +resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%) + +$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : % + cp -fr $< $@; + +# Make installation directories if they don't exist. +$(libdir) $(includedir) $(bindir) $(datadir) $(idldir) $(sharedpydir): + $(INSTALL) -d $@ && chmod 755 $@ + +# Install the library, the public header files, and programs. +install: $(LIB) $(BIN) $(TEST_PROGS) $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) install-python install-sharedpyqt install-qm install-res + @for f in X $(LIB); do \ + if test $$f != X; then \ + ($(LT_INSTALL_LIB) $$f $(libdir)/. || exit 1); \ + fi; \ + done + @if test "X$(LIB_SWIG)" != "X"; then \ + (cd $(libdir); ln -sf $(patsubst %.so, %cmodule.so, $(LIB_SWIG)) _$(LIB_SWIG) || true); \ + fi; + @for f in X $(BIN); do \ + if test $$f != X; then \ + ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1); \ + fi; \ + done +# Install tests programmes in bindir + @for f in X $(TEST_PROGS); do \ + if test $$f != X; then \ + ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1); \ + fi; \ + done +# Install exported includes in includedir + @for f in X $(EXPORT_HEADERS:%=$(srcdir)/%); do \ + if test $$f != X; then \ + (cp -p -f $$f $(includedir) || exit 1); \ + fi; \ + done + +# Install python script in $(bindir) +install-python: $(bindir) $(EXPORT_PYSCRIPTS:%=install-%) $(UI_PY_FILES:%=install-%) + +$(UI_PY_FILES:%=install-%): install-%: % + $(INSTALL_PROGRAM) $< $(bindir)/. + +$(EXPORT_PYSCRIPTS:%=install-%): install-%: % + $(INSTALL_PROGRAM) $< $(bindir)/. + +#install-python: $(bindir) $(EXPORT_PYSCRIPTS) +# @for f in X $(EXPORT_PYSCRIPTS); do \ +# if test $$f != X; then \ +# ($(INSTALL_PROGRAM) $$f $(bindir)/. || exit 1); \ +# fi; \ +# done + +# Install pyqt script in $(install-sharedpyqt) +install-sharedpyqt: $(sharedpydir) $(EXPORT_SHAREDPYSCRIPTS:%=install-%) + +$(EXPORT_SHAREDPYSCRIPTS:%=install-%): install-%: % + $(INSTALL_PROGRAM) $< $(sharedpydir)/. + + +# generic rule to install .qm files : +install-qm: resources + $(INSTALL) -d $(datadir)/resources + @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm); do \ + if test $$f != X; then \ + ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1); \ + fi; \ + done + +# generic rule to install resources files (png, ini ...): +install-res: resources + $(INSTALL) -d $(datadir)/resources + @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%); do \ + if test $$f != X; then \ + ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1); \ + fi; \ + done + +# Removes those things that `make install' (would have) installed. +uninstall: + @if test "X$(LIB)" != X; then \ + for f in $(LIB); do \ + $(LT_UNINSTALL) $(libdir)/$$f; \ + done; \ + fi + @if test "X$(BIN)" != X; then \ + for f in $(BIN); do \ + $(LT_UNINSTALL) $(bindir)/$$f; \ + done; \ + fi + @for f in X $(TEST_PROGS); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(bindir)/$$f; \ + fi; \ + done +# Uninstall exported includes in includedir + @for f in X $(EXPORT_HEADERS); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(includedir)/$$f; \ + fi; \ + done +# Uninstall python script in $(bindir) + @for f in X $(EXPORT_PYSCRIPTS); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(bindir)/$$f ; \ + fi; \ + done + +# Uninstall python script in $(bindir) + @for f in X $(UI_PY_FILES); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(bindir)/$$f ; \ + fi; \ + done + +# Uninstall pyqt script in $(sharedpydir) + @for f in X $(EXPORT_SHAREDPYSCRIPTS); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(sharedpydir)/$$f ; \ + fi; \ + done + +# Uninstall qm files + @for f in X $(PO_FILES:%.po=%.qm); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(datadir)/resources/$$f ; \ + fi; \ + done + +# remove all dependencies files +# +cleandep: + -$(RM) .dep* + +# Removes temporary files without removing the final target files. That is, +# remove things like object files but not libraries or executables. +# +mostlyclean: cleandep + -$(RM) $(LIB_OBJ) $(LIB_OBJ:.lo=.o) + -$(RM) $(BIN_OBJ) $(BIN:%=%.o) + -$(RM) $(TEST_OBJ) $(TEST_OBJ:.lo=.o) + -$(RM) $(PROG_OBJ) $(PROG_OBJ:.lo=.o) $(MOSTLYCLEAN) + +# Like `mostlyclean' except it also removes the final targets: things like +# libraries and executables. This target doesn't remove any file that +# is part of the SALOME distribution. +# +clean: mostlyclean + -$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN) + -$(RM) TAGS *~ *# core *.core + -$(RM) -r .libs + -$(RM) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB) + -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN)) + -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)) + -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)) +# remove idl generated files (sources) + -$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC) +# remove idl generated files (headers) + -$(RM) $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_H)) $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_H)) + -$(RM) $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_H)) $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_H)) + -$(RM) $(LIB_MOC_SRC) $(BIN_MOC_SRC) + -$(RM) $(LIB_SWIG_SRC) + +# Like `clean' except it also removes files that were created by running +# configure. If you've unpacked the source and built without creating +# any other files, then `make distclean' will leave only the files that were +# in the distribution. +# +distclean: clean + #remove qm file ! + -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm) + #remove include files + -$(RM) $(DEST_HEADERS) + -$(RM) $(DISTCLEAN) *.bak *.old *.new .dep* + @if test -f $(srcdir)/Makefile.in; then \ + (@SETX@; $(RM) Makefile); \ + fi + + +#implicits rules +.cc.o: + $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< + +.cc.lo: + $(LT) --mode=compile $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< + +.cxx.o: + $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< + +.cxx.lo: + $(LT) --mode=compile $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< + +.c.o: + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< + +.c.lo: + $(LT_COMPILE) $(CFLAGS) $(CPPFLAGS) -c $< + +.f.o: + $(FC) $(FFLAGS) -c $< -o $@ + +.f.lo: + $(LT) --mode=compile $(FC) $(FFLAGS) -c $< + +.ui.h: + $(UIC) -o $@ $< + +.ui.cxx: + $(UIC) -o $@ -i $*.h $< + +#pattern rules +%_moc.cxx : %.h + $(MOC) $< -o $@ + +%_wrap.cxx : %.i + $(SWIG) $(SWIG_FLAGS) -o $@ $< + +$(top_builddir)/share/salome/resources/%.qm: %.po + $(MSG2QM) $< $@ ; \ + +#------------------------------------------------------------------------------ +# The following section of this makefile contains dependencies between the +# source files and the header files. If GNU make and GCC are being used then +# the dependencies are in the form of rules that cause the information to +# be kept updated automatically. Otherwise the dependencies are listed +# explicitly and come from the `.distdep' files in the various directories. +# These files are part of the distribution and are generated automatically on +# GNU/GCC systems. +#------------------------------------------------------------------------------ + +@DEPEND@ diff --git a/salome_adm/unix/DEPRECATED/make_module.in b/salome_adm/unix/DEPRECATED/make_module.in new file mode 100644 index 000000000..bb26129cb --- /dev/null +++ b/salome_adm/unix/DEPRECATED/make_module.in @@ -0,0 +1,126 @@ +# generic rule to put in top module Makefile +# (for example with module SALOME, SALOME/Makefile.in and SALOME/src/Makefile.in) + +# build all lib in all subdir +lib:$(SUBDIRS:%=lib_%) + +$(SUBDIRS:%=lib_%):lib_%:% + cd $< ; $(MAKE) lib + +# build all bin in all subdir +bin: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +# launch check in all subdir +check: tests +tests: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +# copy all header files in common directory +inc: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +exportinc: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +# copy all idl files in common directory +idl: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +dep: depend + +depend: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +# copy all resources files in common directory +RESOURCES_FILES_ALL := $(notdir $(wildcard $(srcdir)/resources/*)) +RESOURCES_FILES_ALL := $(filter-out CVS, $(RESOURCES_FILES_ALL)) +RESOURCES_FILES_ALL := $(filter-out %.po, $(RESOURCES_FILES_ALL)) +RESOURCES_FILES_ALL := $(filter-out %.in, $(RESOURCES_FILES_ALL)) +RESOURCES_FILES ?= $(RESOURCES_FILES_ALL) + +resources: resources-cp + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%) + +$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : % + cp -fr $< $@; + +#data: +# @if test "X$(top_builddir)" = "X."; then \ +# ((cd examples && $(MAKE) $@) || exit 1); \ +# fi; +# Commented because we need not to make docs when we make BUILD +# docs: +# @if test "X$(top_builddir)" = "X."; then \ +# ((cd doc && $(MAKE) $@) || exit 1); \ +# fi; + +install: install-resources + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + @if test "X$(top_builddir)" = "X."; then \ + $(LT) --mode=finish $(libdir) ; \ + fi + +uninstall: uninstall-resources + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +cleandep: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +mostlyclean: + @@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 + -$(RM) .depend *~ *% core *.core *.bak *.new *.old + +distclean: clean + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + -$(RM) $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%) + -$(RM) Makefile + +install-resources: resources-cp +# one resources directory for all salome modules + $(INSTALL) -d $(datadir)/resources + @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%); do \ + if test $$f != X; then \ + ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1); \ + fi; \ + done + +# Uninstall resources files +uninstall-resources: + @for f in X $(RESOURCES_FILES); do \ + if test $$f != X; then \ + $(LT_UNINSTALL) $(datadir)/resources/$$f ; \ + fi; \ + done + diff --git a/salome_adm/unix/DEPRECATED/make_omniorb.in b/salome_adm/unix/DEPRECATED/make_omniorb.in new file mode 100644 index 000000000..c92e682e6 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/make_omniorb.in @@ -0,0 +1,50 @@ +#======================================================================= +# Begin specific part to omniorb +# (include from file adm/unix/make_omniorb generated by +# adm/unix/make_omniorb.in) +#======================================================================= +# -* Makefile *- +# +# Author : Patrick GOLDBRONN (CEA) +# Date : 29/06/2001 +# $Header$ +# + +# Client and server object are the same with omniorb +# There are one header file and one source file generate + +#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ)) + +# dependancies between idl and it's generated files +%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/idl/%.idl + $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< + +# dependncies between idl files +depend_idl: .depidl + +# we use cpp to generate dependencies between idl files. +# we change cpp output to keep only idl file and transform it to get a suitable rule +.depidl: $(IDL_FILES) + @touch $@ + @for dep in $? dummy; do \ + if [ $$dep != "dummy" ]; then \ + echo Building dependencies for $$dep; \ + basedep=`basename $$dep .idl`; \ + header="$$basedep"$(IDL_CLN_H); \ + sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ + $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \ + sed `echo "s%$$basedep\\.idl%$$header:%g"` | \ + sed 's% $(srcdir)/% %g' | \ + sed 's% $(top_srcdir)/% %g' | \ + sed 's% $(top_builddir)/% %g' | \ + sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \ + sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \ + echo '' >>$@; \ + fi; \ + done ; + +-include .depidl + +#======================================================================= +# End specific part to omniorb +#======================================================================= diff --git a/salome_adm/unix/DEPRECATED/sstream.in b/salome_adm/unix/DEPRECATED/sstream.in new file mode 100644 index 000000000..323bbed45 --- /dev/null +++ b/salome_adm/unix/DEPRECATED/sstream.in @@ -0,0 +1,225 @@ +/* This is part of libio/iostream, providing -*- C++ -*- input/output. +Copyright (C) 2000 Free Software Foundation + +This file is part of the GNU IO Library. This library 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, or (at your option) +any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this library; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +As a special exception, if you link this library with files +compiled with a GNU compiler to produce an executable, this does not cause +the resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why +the executable file might be covered by the GNU General Public License. */ + +/* Written by Magnus Fromreide (magfr@lysator.liu.se). */ + +#ifndef __SSTREAM__ +#define __SSTREAM__ + +#include +#include +#include + +namespace std +{ + class stringbuf : public streambuf + { + public: + typedef char char_type; + typedef int int_type; + typedef streampos pos_type; + typedef streamoff off_type; + + explicit stringbuf(int which=ios::in|ios::out) : + streambuf(which), buf(), mode(static_cast(which)), + rpos(0), bufsize(1) + { } + + explicit stringbuf(const std::string &s, int which=ios::in|ios::out) : + streambuf(which), buf(s), mode(static_cast(which)), + bufsize(1) + { + if(mode & ios::in) + { + setg(&defbuf, &defbuf + bufsize, &defbuf + bufsize); + } + if(mode & ios::out) + { + setp(&defbuf, &defbuf + bufsize); + } + rpos = (mode & ios::ate ? s.size() : 0); + } + + std::string str() const + { + const_cast(this)->sync(); // Sigh, really ugly hack + return buf; + }; + + void str(const std::string& s) + { + buf = s; + if(mode & ios::in) + { + gbump(egptr() - gptr()); + } + if(mode & ios::out) + { + pbump(pbase() - pptr()); + } + rpos = (mode & ios::ate ? s.size() : 0); + } + + protected: + inline virtual int sync(); + inline virtual int overflow(int = EOF); + inline virtual int underflow(); + private: + std::string buf; + ios::open_mode mode; + std::string::size_type rpos; + streamsize bufsize; + char defbuf; + }; + + class stringstreambase : virtual public ios { + protected: + stringbuf __my_sb; + public: + std::string str() const + { + return dynamic_cast(_strbuf)->str(); + } + void str(const std::string& s) + { + clear(); + dynamic_cast(_strbuf)->str(s); + } + + stringbuf* rdbuf() + { + return &__my_sb; + } + protected: + stringstreambase(int which) : + __my_sb(which) + { + init (&__my_sb); + } + + stringstreambase(const std::string& s, int which) : + __my_sb(s, which) + { + init (&__my_sb); + } + }; + + class istringstream : public stringstreambase, public istream { + public: + istringstream(int which=ios::in) : + stringstreambase(which) + { } + + istringstream(const std::string& s, int which=ios::in) : + stringstreambase(s, which) + { } + }; + + class ostringstream : public stringstreambase, public ostream { + public: + ostringstream(int which=ios::out) : + stringstreambase(which) + { } + + ostringstream(const std::string& s, int which=ios::out) : + stringstreambase(s, which) + { } + }; + + class stringstream : public stringstreambase, public iostream { + public: + stringstream(int which=ios::in|ios::out) : + stringstreambase(which) + { } + + stringstream(const std::string &s, int which=ios::in|ios::out) : + stringstreambase(s, which) + { } + }; +} + +inline int std::stringbuf::sync() +{ + if((mode & ios::out) == 0) + return EOF; + + streamsize n = pptr() - pbase(); + if(n) + { + buf.replace(rpos, std::string::npos, pbase(), n); + if(buf.size() - rpos != n) + return EOF; + rpos += n; + pbump(-n); + gbump(egptr() - gptr()); + } + return 0; +} + +inline int std::stringbuf::overflow(int ch) +{ + if((mode & ios::out) == 0) + return EOF; + + streamsize n = pptr() - pbase(); + + if(n && sync()) + return EOF; + + if(ch != EOF) + { + std::string::size_type oldSize = buf.size(); + + buf.replace(rpos, std::string::npos, ch); + if(buf.size() - oldSize != 1) + return EOF; + ++rpos; + } + return 0; +} + +inline int std::stringbuf::underflow() +{ + sync(); + if((mode & ios::in) == 0) + { + return EOF; + } + if(rpos >= buf.size()) + { + return EOF; + } + + std::string::size_type n = egptr() - eback(); + std::string::size_type s; + + s = buf.copy(eback(), n, rpos); + pbump(pbase() - pptr()); + gbump(eback() - gptr()); + int res = (0377 & buf[rpos]); + rpos += s; + return res; +} + +#endif /* not __STRSTREAM__ */ diff --git a/salome_adm/unix/Makefile.am b/salome_adm/unix/Makefile.am new file mode 100644 index 000000000..195941b70 --- /dev/null +++ b/salome_adm/unix/Makefile.am @@ -0,0 +1,57 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +SUBDIRS = config_files + +DEPRECATED_FILES=\ + DEPRECATED/F77config.h.in \ + DEPRECATED/sstream.in \ + DEPRECATED/envScript.in \ + DEPRECATED/depend.in \ + DEPRECATED/make_commence.in \ + DEPRECATED/make_conclude.in \ + DEPRECATED/make_module.in \ + DEPRECATED/make_omniorb.in + +# rules for install and build (see make_common_starter.am) +salomeadmux_DATA = SALOMEconfig.h.in +BUILT_SOURCES=SALOMEconfig.h SALOMEconfig.h.in + +mostlyclean-local: + -rm -rf SALOMEconfig.h SALOMEconfig.h.in + +SALOMEconfig.h.in : SALOMEconfig.ref.in + cp -p $< $@; + +# test if SALOMEconfig.ref has changed (contents), at build time +SALOMEconfig.h: $(top_builddir)/salome_adm/unix/SALOMEconfig.ref + @if ! [ -a $@ ]; then \ + cp -p $< $@; \ + fi; \ + if ! cmp $< $@; then \ + cp -p $< $@; \ + fi; + +# The deprecated files are deprecated for the KERNEL but not for the +# related modules (GUI, MED, ...), for now. Some files have to be installed. +dist_salomeadmux_DATA=\ + pythonbe.py \ + $(DEPRECATED_FILES) diff --git a/salome_adm/unix/SALOMEconfig.ref.in b/salome_adm/unix/SALOMEconfig.ref.in new file mode 100644 index 000000000..22372e97a --- /dev/null +++ b/salome_adm/unix/SALOMEconfig.ref.in @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------------- + 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 +------------------------------------------------------------------------------------*/ + +#ifndef SALOME_CONFIG_H +#define SALOME_CONFIG_H + +#define DEBUG + +#define QUOTE(x) #x +#define CORBA_CLIENT_HEADER(x) QUOTE(x@IDL_CLN_H@) +#define CORBA_SERVER_HEADER(x) QUOTE(x@IDL_SRV_H@) + +#ifndef @MACHINE@ + #define @MACHINE@ +#endif + + +/* A path to a rcp-like command */ +#define RCP "@RCP@" + +/* A path to a rm-like command */ +#define RM "@RM@" + +/* A path to a cp-like command */ +#define CP "@CP@" + +/* A path to a rsh-like command */ +#define RSH "@RSH@" + +/* A path to a scp-like command */ +#define SCP "@SCP@" + +/* A path to a sh-like command */ +#define SH "@SH@" + +/* A path to a ssh-like command */ +#define SSH "@SSH@" + +#endif diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4 new file mode 100644 index 000000000..9f3aa1a7f --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4 @@ -0,0 +1,119 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +dnl Synopsis : AC_CC_WARNINGS([ANSI]) +dnl +dnl Version : 1.1 (2000/12/31) +dnl +dnl Author : Ville Laurikari +dnl +dnl Description : +dnl +dnl Enables a reasonable set of warnings for the C compiler. +dnl Optionally, if the first argument is nonempty, turns on +dnl flags which enforce and/or enable proper ANSI C if such +dnl flags are known to the compiler used. +dnl +dnl Currently this macro knows about GCC, Solaris C compiler, +dnl Digital Unix C compiler, C for AIX Compiler, HP-UX C +dnl compiler, and IRIX C compiler. + +AC_DEFUN([AC_CC_WARNINGS], [ + ansi=$1 + if test -z "$ansi"; then + msg="for C compiler warning flags" + else + msg="for C compiler warning and ANSI conformance flags" + fi + AC_CACHE_CHECK($msg, ac_cv_prog_cc_warnings, [ + if test -n "$CC"; then + cat > conftest.c <&1 | grep "Xc.*strict ANSI C" > /dev/null 2>&1 && + $CC -c -v -Xc conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + ac_cv_prog_cc_warnings="-v" + else + ac_cv_prog_cc_warnings="-v -Xc" + fi + + dnl HP-UX C compiler + elif $CC > /dev/null 2>&1 && + $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + ac_cv_prog_cc_warnings="+w1" + else + ac_cv_prog_cc_warnings="+w1 -Aa" + fi + + dnl Digital Unix C compiler + elif ! $CC > /dev/null 2>&1 && + $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos" + else + ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" + fi + + dnl C for AIX Compiler + elif $CC > /dev/null 2>&1 | grep AIX > /dev/null 2>&1 && + $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" + else + ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi" + fi + + dnl IRIX C compiler + elif $CC -fullwarn -ansi -ansiE > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + ac_cv_prog_cc_warnings="-fullwarn" + else + ac_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" + fi + + fi + rm -f conftest.* + fi + if test -n "$ac_cv_prog_cc_warnings"; then + CFLAGS="$CFLAGS $ac_cv_prog_cc_warnings" + CXXFLAGS="$CXXFLAGS $ac_cv_prog_cc_warnings" + else + ac_cv_prog_cc_warnings="unknown" + fi + ]) +]) diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4 new file mode 100644 index 000000000..69da63dec --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4 @@ -0,0 +1,48 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +dnl @synopsis AC_CXX_BOOL +dnl +dnl If the compiler recognizes bool as a separate built-in type, +dnl define HAVE_BOOL. Note that a typedef is not a separate +dnl type since you cannot overload a function such that it accepts either +dnl the basic type or the typedef. +dnl +dnl @version $Id$ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_BOOL], +[AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, +ac_cv_cxx_bool, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ +int f(int x){return 1;} +int f(char x){return 1;} +int f(bool x){return 1;} +],[bool b = true; return f(b);], + ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_bool" = yes; then + AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type]) +fi +]) diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4 new file mode 100644 index 000000000..3d87bacb8 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4 @@ -0,0 +1,48 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +dnl @synopsis AC_CXX_MUTABLE +dnl +dnl If the compiler allows modifying class data members flagged with +dnl the mutable keyword even in const objects (for example in the +dnl body of a const member function), define HAVE_MUTABLE. +dnl +dnl @version $Id$ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_MUTABLE], +[AC_CACHE_CHECK(whether the compiler supports the mutable keyword, +ac_cv_cxx_mutable, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ +class A { mutable int i; + public: + int f (int n) const { i = n; return i; } + }; +],[A a; return a.f (1);], + ac_cv_cxx_mutable=yes, ac_cv_cxx_mutable=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_mutable" = yes; then + AC_DEFINE(HAVE_MUTABLE,,[define if the compiler supports the mutable keyword]) +fi +]) diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4 new file mode 100644 index 000000000..634d3c640 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4 @@ -0,0 +1,48 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +dnl @synopsis AC_CXX_PARTIAL_SPECIALIZATION +dnl +dnl If the compiler supports partial specialization, +dnl define HAVE_PARTIAL_SPECIALIZATION. +dnl +dnl @version $Id$ +dnl @author Luc Maisonobe +dnl + +AC_DEFUN([AC_CXX_PARTIAL_SPECIALIZATION], +[AC_CACHE_CHECK(whether the compiler supports partial specialization, +ac_cv_cxx_partial_specialization, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ +template class A { public : enum e { z = 0 }; }; +template class A { public : enum e { z = 1 }; }; +template class A { public : enum e { z = 2 }; }; +],[return (A::z == 0) && (A::z == 1) && (A::z == 2);], + ac_cv_cxx_partial_specialization=yes, ac_cv_cxx_partial_specialization=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_partial_specialization" = yes; then + AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION,, + [define if the compiler supports partial specialization]) +fi +]) diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4 new file mode 100644 index 000000000..bb1424673 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4 @@ -0,0 +1,42 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +ddnl @synopsis AC_CXX_TYPENAME +dnl +dnl If the compiler recognizes the typename keyword, define HAVE_TYPENAME. +dnl +dnl @version $Id$ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_TYPENAME], +[AC_CACHE_CHECK(whether the compiler recognizes typename, +ac_cv_cxx_typename, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([templateclass X {public:X(){}};], +[X z; return 0;], + ac_cv_cxx_typename=yes, ac_cv_cxx_typename=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_typename" = yes; then + AC_DEFINE(HAVE_TYPENAME,,[define if the compiler recognizes typename]) +fi +]) diff --git a/salome_adm/unix/config_files/DEPRECATED/check_Salome.m4 b/salome_adm/unix/config_files/DEPRECATED/check_Salome.m4 new file mode 100644 index 000000000..d598c99f9 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/check_Salome.m4 @@ -0,0 +1,78 @@ +# 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 +# +#------------------------------------------------------------ +# Check availability of Salome binary distribution +# +# Author : Marc Tajchman (CEA, 2002) +#------------------------------------------------------------ + +AC_DEFUN([CHECK_SALOME],[ + +AC_CHECKING(for Salome) + +Salome_ok=no + +AC_ARG_WITH(salome, + --with-salome=DIR root directory path of SALOME installation, + SALOME_DIR="$withval",SALOME_DIR="") + +if test "x$SALOME_DIR" = "x" ; then + +# no --with-salome-dir option used + + if test "x$SALOME_ROOT_DIR" != "x" ; then + + # SALOME_ROOT_DIR environment variable defined + SALOME_DIR=$SALOME_ROOT_DIR + + else + + # search Salome binaries in PATH variable + AC_PATH_PROG(TEMP, libMEDMEM_Swig.py) + if test "x$TEMP" != "x" ; then + SALOME_BIN_DIR=`dirname $TEMP` + SALOME_DIR=`dirname $SALOME_BIN_DIR` + fi + + fi +# +fi + +if test -f ${SALOME_DIR}/bin/libMEDMEM_Swig.py ; then + Salome_ok=yes + AC_MSG_RESULT(Using Salome distribution in ${SALOME_DIR}) + + if test "x$SALOME_ROOT_DIR" = "x" ; then + SALOME_ROOT_DIR=${SALOME_DIR} + fi + if test "x$SALOME_SITE_DIR" = "x" ; then + SALOME_SITE_DIR=${SALOME_ROOT_DIR} + fi + AC_SUBST(SALOME_ROOT_DIR) + AC_SUBST(SALOME_SITE_DIR) + +else + AC_MSG_WARN("Cannot find compiled Salome distribution") +fi + +AC_MSG_RESULT(for Salome: $Salome_ok) + +])dnl + diff --git a/salome_adm/unix/config_files/DEPRECATED/check_java.m4 b/salome_adm/unix/config_files/DEPRECATED/check_java.m4 new file mode 100644 index 000000000..c03e9f7ff --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/check_java.m4 @@ -0,0 +1,111 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +AC_DEFUN([CHECK_JAVA],[ +dnl AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl +dnl AC_REQUIRE([AC_PROG_CPP])dnl + +AC_CHECKING(for JAVA) + +JAVA_INCLUDES="" +JAVA_LIBS="" +JAVA_LDPATH="" + +java_ok=no + +if test -z $JAVAHOME +then + AC_MSG_WARN(define JAVAHOME variable to use Java) +else + java_ok=yes +fi + +if test "x$java_ok" = "xyes" +then + AC_EXEEXT + AC_CHECK_PROG(JAVA, java$EXEEXT,found) + if test "x$JAVA" = "x" + then + java_ok=no + fi + + AC_CHECK_PROG(JAVAC, javac$EXEEXT,found) + if test "x$JAVAC" = "x" + then + java_ok=no + fi +fi + +if test "x$java_ok" = "xyes" +then + version=`$JAVA -version 2>&1 | grep "java version"` + case "$version" in + *1.1.*) + AC_MSG_RESULT(using jdk1.1 version - jdk1.4 required) + java_ok=no;; + *1.2*) + AC_MSG_RESULT(using jdk1.2 version - jdk1.4 required) + java_ok=no;; + *1.3*) + AC_MSG_RESULT(using jdk1.3 version - jdk1.4 required) + java_ok=no;; + *1.4*) + AC_MSG_RESULT(using jdk1.4 version) ;; + esac +fi + +if test "x$java_ok" = "xyes" +then +dnl java headers + LOCAL_INCLUDES=" -I${JAVAHOME}/include -I${JAVAHOME}/include/linux" + CPPFLAGS_old="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES" + AC_CHECK_HEADER(jni.h,java_ok=yes ,java_ok=no) + + CPPFLAGS="$CPPFLAGS_old" +fi + +if test "x$java_ok" = "xyes" +then +dnl libjava library + LOCAL_LIBS="-L${JAVAHOME}/jre/lib/i386 -ljava -L${JAVAHOME}/jre/lib/i386/client -ljvm -lverify" + LIBS_old="$LIBS" + LIBS="$LIBS $LOCAL_LIBS" + + AC_CHECK_LIB(jvm,JNI_CreateJavaVM,java_ok=yes,java_ok=no) + + LIBS="$LIBS_old" +fi + +if test "x$java_ok" = "xyes" +then + JAVA_INCLUDES="$LOCAL_INCLUDES" + JAVA_LIBS="$LOCAL_LIBS" +fi + +AC_SUBST(JAVA_INCLUDES) +AC_SUBST(JAVA_LIBS) +AC_SUBST(JAVA_LDPATH) + +AC_MSG_RESULT(for java: $java_ok) + +])dnl +dnl diff --git a/salome_adm/unix/config_files/DEPRECATED/check_mico.m4 b/salome_adm/unix/config_files/DEPRECATED/check_mico.m4 new file mode 100644 index 000000000..5d97e2aa1 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/check_mico.m4 @@ -0,0 +1,159 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl + +AC_DEFUN([CHECK_MICO],[ +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_CXX])dnl +AC_REQUIRE([AC_PROG_CPP])dnl +AC_REQUIRE([AC_PROG_CXXCPP])dnl + +AC_CHECKING(for mico) +mico_ok=yes + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +AC_PATH_PROG(MICOD, micod) +if test "x$MICOD" = "x" +then + mico_ok=no + AC_MSG_RESULT(mico binaries not in PATH variable) +else + mico_ok=yes +fi + +if test "x$mico_ok" = "xyes" +then + AC_SUBST(MICO_IDL) + + MICO_BIN=`echo ${MICOD} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` + MICO_LIB=`echo ${MICO_BIN} | sed -e "s,bin,lib,"` + MICO_ROOT=`echo ${MICO_BIN} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` + AC_SUBST(MICO_ROOT) + + MICO_IDL=${MICO_BIN}/idl + AC_SUBST(MICO_IDL) + + MICO_INCLUDES="-I$MICO_ROOT/include" + AC_SUBST(MICO_INCLUDES) + + MICO_VERSION=`sed -n -e 's/.define *MICO_VERSION *\"\([[^\"]]*\)\"/\1/p' $MICO_ROOT/include/mico/version.h` + AC_SUBST(MICO_VERSION) + AC_MSG_RESULT(using mico version $MICO_VERSION) + + MICO_CXXFLAGS="-ftemplate-depth-42 -fpermissive" + AC_SUBST(MICO_CXXFLAGS) + + CXXFLAGS_old=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $MICO_CXXFLAGS $MICO_INCLUDES" + + AC_MSG_CHECKING(include of CORBA.h) + AC_TRY_COMPILE( +#include "CORBA.h" +, ,mico_ok=yes ,mico_ok=no) + + if test "x$mico_ok" = "xno" + then + AC_MSG_RESULT(CORBA.h not found in mico installation) + else + AC_MSG_RESULT(yes) + fi + + CXXFLAGS=$CXXFLAGS_old + +fi + +if test "x$mico_ok" = "xyes" +then + if test "x$MICO_LIB" = "x/usr/lib" + then + MICO_LDFLAGS="" + else + MICO_LDFLAGS="-L$MICO_LIB" + fi + + LIBS_old=$LIBS + MICO_LIBS="$MICO_LDFLAGS -lmico$MICO_VERSION -ldl" + AC_SUBST(MICO_LIBS) + + LIBS="$MICO_LIBS $LIBS" + CXXFLAGS_old=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $MICO_CXXFLAGS $MICO_INCLUDES" + + AC_MSG_CHECKING(whether we can link with mico) + AC_TRY_LINK( +#include "CORBA.h" +,CORBA::ORB_var orb, + mico_ok=yes,mico_ok=no) + + if test "x$mico_ok" = "xno" + then + AC_MSG_RESULT(mico library linking failed) + mico_ok=no + else + AC_MSG_RESULT(yes) + fi + + CXXFLAGS=$CXXFLAGS_old + LIBS=$LIBS_old +fi + + +if test "x$mico_ok" = "xyes" +then + + MICO_IDLCXXFLAGS="-bcxx -I$MICO_ROOT/idl" + AC_SUBST(MICO_IDLCXXFLAGS) + AC_SUBST(MICO_IDLPYFLAGS) + + MICO_IDL_CLN_H=.hh + MICO_IDL_CLN_CXX=SK.cc + MICO_IDL_CLN_OBJ=SK.o + AC_SUBST(MICO_IDL_CLN_H) + AC_SUBST(MICO_IDL_CLN_CXX) + AC_SUBST(MICO_IDL_CLN_OBJ) + + MICO_IDL_SRV_H=.hh + MICO_IDL_SRV_CXX=SK.cc + MICO_IDL_SRV_OBJ=SK.o + AC_SUBST(MICO_IDL_SRV_H) + AC_SUBST(MICO_IDL_SRV_CXX) + AC_SUBST(MICO_IDL_SRV_OBJ) + + MICO_IDL_TIE_H= + MICO_IDL_TIE_CXX= + AC_SUBST(MICO_IDL_TIE_H) + AC_SUBST(MICO_IDL_TIE_CXX) + + AC_DEFINE(MICO) + + CORBA_HAVE_POA=1 + AC_DEFINE(CORBA_HAVE_POA) + +fi + +AC_LANG_RESTORE + +AC_MSG_RESULT(for mico: $mico_ok) + +])dnl +dnl diff --git a/salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4 b/salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4 new file mode 100644 index 000000000..eb511eca3 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4 @@ -0,0 +1,56 @@ +dnl Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +dnl +dnl +dnl +#@synonpsis CHECK_PTHREADS +dnl check for pthreads system interfaces. +dnl set CFLAGS_PTHREADS, CXXFLAGS_PTHREADS and LIBS_PTHREADS to +dnl flags to compiler flags for multithread program compilation (if exists), +dnl and library, if one required. +dnl +dnl@author (C) Ruslan Shevchenko , 1998 +dnl@id $Id$ +dnl ---------------------------------------------------------------- +dnl CHECK_PTHREADS +AC_DEFUN([CHECK_PTHREADS],[ +AC_CXX_OPTION(-pthread,CPPFLAGS,flag=yes,flag=no) + +if test $flag = no; then + AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl + AC_CHECK_HEADER(pthread.h,AC_DEFINE(HAVE_PTHREAD_H)) + AC_CHECK_LIB(posix4,nanosleep, LIBS_PTHREADS="-lposix4",LIBS_PTHREADS="") + AC_CHECK_LIB(pthread,pthread_mutex_lock, + LIBS_PTHREADS="-lpthread $LIBS_PTHREADS",LIBS_PTHREADS="") +else + case $host_os in + osf*) + LIBS_PTHREADS="-lpthread $LIBS_PTHREADS" + ;; + esac +fi + +if test $flag = no && test x$LIBS_PTHREADS = x; then + threads_ok=no +else + threads_ok=yes +fi +])dnl +dnl +dnl diff --git a/salome_adm/unix/config_files/DEPRECATED/config.guess b/salome_adm/unix/config_files/DEPRECATED/config.guess new file mode 100755 index 000000000..0ce538bb8 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/config.guess @@ -0,0 +1,1183 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Free Software Foundation, Inc. +# +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# Please send patches to . +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# Use $HOST_CC if defined. $CC may point to a cross-compiler +if test x"$CC_FOR_BUILD" = x; then + if test x"$HOST_CC" != x; then + CC_FOR_BUILD="$HOST_CC" + else + if test x"$CC" != x; then + CC_FOR_BUILD="$CC" + else + CC_FOR_BUILD=cc + fi + fi +fi + + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # Netbsd (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # Determine the machine/vendor (is the vendor relevant). + case "${UNAME_MACHINE}" in + amiga) machine=m68k-cbm ;; + arm32) machine=arm-unknown ;; + atari*) machine=m68k-atari ;; + sun3*) machine=m68k-sun ;; + mac68k) machine=m68k-apple ;; + macppc) machine=powerpc-apple ;; + hp3[0-9][05]) machine=m68k-hp ;; + ibmrt|romp-ibm) machine=romp-ibm ;; + *) machine=${UNAME_MACHINE}-unknown ;; + esac + # The Operating System including object format. + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + # The OS release + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + rm -f $dummy.c $dummy + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + hppa*:OpenBSD:*:*) + echo hppa-unknown-openbsd + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + ld_help_string=`cd /; ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + *ia64) + echo "${UNAME_MACHINE}-unknown-linux" + exit 0 + ;; + i?86linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 + ;; + elf_i?86) + echo "${UNAME_MACHINE}-pc-linux" + exit 0 + ;; + i?86coff) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 + ;; + sparclinux) + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" + exit 0 + ;; + armlinux) + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" + exit 0 + ;; + elf32arm*) + echo "${UNAME_MACHINE}-unknown-linux-gnuoldld" + exit 0 + ;; + armelf_linux*) + echo "${UNAME_MACHINE}-unknown-linux-gnu" + exit 0 + ;; + m68klinux) + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" + exit 0 + ;; + elf32ppc | elf32ppclinux) + # Determine Lib Version + cat >$dummy.c < +#if defined(__GLIBC__) +extern char __libc_version[]; +extern char __libc_release[]; +#endif +main(argc, argv) + int argc; + char *argv[]; +{ +#if defined(__GLIBC__) + printf("%s %s\n", __libc_version, __libc_release); +#else + printf("unkown\n"); +#endif + return 0; +} +EOF + LIBC="" + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy | grep 1\.99 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.c $dummy + echo powerpc-unknown-linux-gnu${LIBC} + exit 0 + ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + cat <$dummy.s + .data + \$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main + main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + LIBC="" + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + esac + + objdump --private-headers $dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >$dummy.c < /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif +#ifdef __MIPSEB__ + printf ("%s-unknown-linux-gnu\n", argv[1]); +#endif +#ifdef __MIPSEL__ + printf ("%sel-unknown-linux-gnu\n", argv[1]); +#endif + return 0; +} +EOF + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + elif test "${UNAME_MACHINE}" = "s390"; then + echo s390-ibm-linux && exit 0 + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >$dummy.c < +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i?86:*:5:7*) + # Fixed at (any) Pentium or better + UNAME_MACHINE=i586 + if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then + echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i?86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_MACHINE=pc + fi + echo `uname -p`-${UNAME_MACHINE}-nto-qnx + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-W:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/salome_adm/unix/config_files/DEPRECATED/config.sub b/salome_adm/unix/config_files/DEPRECATED/config.sub new file mode 100755 index 000000000..6218dd954 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/config.sub @@ -0,0 +1,1268 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Free Software Foundation, Inc. +# +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 \ + | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \ + | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ + | hppa64 \ + | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ + | alphaev6[78] \ + | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ + | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ + | mips64orion | mips64orionel | mipstx39 | mipstx39el \ + | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ + | mips64vr5000 | miprs64vr5000el | mcore \ + | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ + | thumb | d10v | fr30 | avr) + basic_machine=$basic_machine-unknown + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[34567]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + # FIXME: clean up the formatting here. + vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ + | xmp-* | ymp-* \ + | x86-* | x86_64-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ + | hppa2.0n-* | hppa64-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ + | alphaev6[78]-* \ + | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ + | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ + | mipstx39-* | mipstx39el-* | mcore-* \ + | f301-* | armv*-* | s390-* | sv1-* | t3e-* \ + | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ + | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \ + | bs2000-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigaos | amigados) + basic_machine=m68k-cbm + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[34567]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[34567]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[34567]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[34567]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + i386-go32 | go32) + basic_machine=i386-unknown + os=-go32 + ;; + i386-mingw32 | mingw32) + basic_machine=i386-unknown + os=-mingw32 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + msdos) + basic_machine=i386-unknown + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=t3e-cray + os=-unicos + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc | sparcv9) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i[34567]86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -*MiNT) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -*MiNT) + vendor=atari + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/salome_adm/unix/config_files/DEPRECATED/install-sh b/salome_adm/unix/config_files/DEPRECATED/install-sh new file mode 100755 index 000000000..51319e83e --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/install-sh @@ -0,0 +1,54 @@ +#! /bin/sh + +chmodParams="" +dirParams="" +dirPath="" +args="" + +while [ x"$1" != x ]; do +if test $# != "1"; then +case $1 in +-c) shift; +continue;; + +-d) dirParams="yes" +shift; +continue;; + +-m) shift; +chmodParams=$1 +shift; +continue;; + +*) args="$args $1" +shift; +continue;; +esac +else +dirPath=$1 +fi +shift; +done + +if test x$dirParams = "xyes"; then +mkdir -p $dirPath +else +cp -f $args $dirPath +for arg in $args; do +myArg=`basename $arg` +if test x$chmodParams != x; then +if test -d $dirPath; then +chmod $chmodParams $dirPath/$myArg +else +chmod $chmodParams $dirPath +fi +else +if test -d $dirPath; then +chmod a+x $dirPath/$myArg +else +chmod a+x $dirPath +fi +fi +done +fi + diff --git a/salome_adm/unix/config_files/DEPRECATED/libtool.m4 b/salome_adm/unix/config_files/DEPRECATED/libtool.m4 new file mode 100644 index 000000000..f28545379 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/libtool.m4 @@ -0,0 +1,439 @@ +## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- +## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc. +## Originally by Gordon Matzigkeit , 1996 +## +## 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. +## +## As a special exception to the GNU General Public License, if you +## distribute this file as part of a program that contains a +## configuration script generated by Autoconf, you may include it under +## the same distribution terms that you use for the rest of that program. + +# serial 40 AC_PROG_LIBTOOL +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# Save cache, so that ltconfig can load it +AC_CACHE_SAVE + +# Actually configure libtool. ac_aux_dir is where install-sh is found. +CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ +DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ +$libtool_flags $ac_aux_dir/ltmain.sh $lt_target \ +|| AC_MSG_ERROR([libtool configure failed]) + +# Reload cache, that may have been modified by ltconfig +AC_CACHE_LOAD + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Redirect the config.log output again, so that the ltconfig log is not +# clobbered by the next message. +exec 5>>./config.log +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_RANLIB])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +dnl + +case "$target" in +NONE) lt_target="$host" ;; +*) lt_target="$target" ;; +esac + +# Check for any special flags to pass to ltconfig. +# +# the following will cause an existing older ltconfig to fail, so +# we ignore this at the expense of the cache file... Checking this +# will just take longer ... bummer! +#libtool_flags="--cache-file=$cache_file" +# +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" +test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], +[libtool_flags="$libtool_flags --enable-dlopen"]) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[libtool_flags="$libtool_flags --enable-win32-dll"]) +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case "$lt_target" in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +]) +esac +]) + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_SHARED], [dnl +define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_STATIC], [dnl +define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], [dnl +define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. +changequote(,)dnl + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' +changequote([,])dnl + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(ac_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + ac_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + ac_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$ac_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +]) + +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + ac_cv_prog_gnu_ld=yes +else + ac_cv_prog_gnu_ld=no +fi]) +]) + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(ac_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + ac_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -p" + break + else + ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm +fi]) +NM="$ac_cv_path_NM" +AC_MSG_RESULT([$NM]) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case "$lt_target" in +*-*-beos* | *-*-cygwin*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library and INCLTDL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and INCLTDL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and INCLTDL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case "$enable_ltdl_convenience" in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library and INCLTDL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + INCLTDL= + fi +]) + +dnl old names +AC_DEFUN([AM_PROG_LIBTOOL], [indir([AC_PROG_LIBTOOL])])dnl +AC_DEFUN([AM_ENABLE_SHARED], [indir([AC_ENABLE_SHARED], $@)])dnl +AC_DEFUN([AM_ENABLE_STATIC], [indir([AC_ENABLE_STATIC], $@)])dnl +AC_DEFUN([AM_DISABLE_SHARED], [indir([AC_DISABLE_SHARED], $@)])dnl +AC_DEFUN([AM_DISABLE_STATIC], [indir([AC_DISABLE_STATIC], $@)])dnl +AC_DEFUN([AM_PROG_LD], [indir([AC_PROG_LD])])dnl +AC_DEFUN([AM_PROG_NM], [indir([AC_PROG_NM])])dnl + +dnl This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL])dnl diff --git a/salome_adm/unix/config_files/DEPRECATED/ltconfig b/salome_adm/unix/config_files/DEPRECATED/ltconfig new file mode 100755 index 000000000..c14d83c16 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ltconfig @@ -0,0 +1,3114 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A lot of this script is taken from autoconf-2.10. + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +echo=echo +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec "$SHELL" "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null`} + case X$UNAME in + *-DOS) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || + test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running ltconfig again with it. + ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf "%s\n"' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.3.5 +TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +default_ofile=libtool +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +enable_static=yes +enable_fast_install=yes +enable_dlopen=unknown +enable_win32_dll=no +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +ofile="$default_ofile" +verify_host=yes +with_gcc=no +with_gnu_ld=no +need_locks=yes +ac_ext=c +objext=o +libext=a +exeext= +cache_file= + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LDFLAGS="$LDFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_LIBS="$LIBS" +old_NM="$NM" +old_RANLIB="$RANLIB" +old_DLLTOOL="$DLLTOOL" +old_OBJDUMP="$OBJDUMP" +old_AS="$AS" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test ! -f "$ltmain"; then + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi +if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi + +if test -n "$cache_file" && test -r "$cache_file"; then + echo "loading cache $cache_file within ltconfig" + . $cache_file +fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. + srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$SHELL $ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$SHELL $ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +case "$host_os" in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# Set a sane default for `OBJDUMP'. +test -z "$OBJDUMP" && OBJDUMP=objdump + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$AS" && AS=as + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for object suffix... $ac_c" 1>&6 +$rm conftest* +echo 'int i = 1;' > conftest.c +echo "$progname:603: checking for object suffix" >& 5 +if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* +echo "$ac_t$objext" 1>&6 + +echo $ac_n "checking for executable suffix... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_exeext="no" + $rm conftest* + echo 'main () { return 0; }' > conftest.c + echo "$progname:629: checking for executable suffix" >& 5 + if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c | *.err | *.$objext ) ;; + *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; + esac + done + else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* +fi +if test "X$ac_cv_exeext" = Xno; then + exeext="" +else + exeext="$ac_cv_exeext" +fi +echo "$ac_t$ac_cv_exeext" 1>&6 + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + + case "$host_os" in + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + link_static_flag="$link_static_flag ${wl}-lC" + ;; + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + sysv4*MP*) + if test -d /usr/nec; then + pic_flag=-Kconform_pic + fi + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + sysv4*MP*) + if test -d /usr/nec ;then + pic_flag='-Kconform_pic' + link_static_flag='-Bstatic' + fi + ;; + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + case "$host_os" in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + ;; + *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + ;; + esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check to see if options -o and -c are simultaneously supported by compiler +echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +$rm conftest* +echo "int some_variable = 0;" > conftest.c +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.o" +echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 +if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else + echo "$ac_t"yes 1>&6 + compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 +if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else + echo "$ac_t"yes 1>&6 + compiler_o_lo=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_o_lo=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$ac_t$hard_links" 1>&6 + $rm conftest* + if test "$hard_links" = no; then + echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 + need_locks=warn + fi +else + need_locks=no +fi + +if test "$with_gcc" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" + echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_rtti_exceptions=no + else + echo "$ac_t"yes 1>&6 + compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_rtti_exceptions=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi + +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftest.dat + if ln -s X conftest.dat 2>/dev/null; then + $rm conftest.dat + LN_S="ln -s" + else + LN_S=ln + fi + if test "$LN_S" = "ln -s"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. + +case "$host_os" in +cygwin* | mingw*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$with_gcc" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in + aix3* | aix4*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left by newer dlltools. + export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' + + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done~ + test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' + # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_separator=':' + if test "$with_gcc" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + shared_flag='${wl}-bM:SRE' + hardcode_direct=yes + fi + allow_undefined_flag=' ${wl}-berok' + archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' + archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' + case "$host_os" in aix4.[01]|aix4.[01].*) + # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on + always_export_symbols=yes ;; + esac + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs' + fix_srcfile_path='`cygpath -w $srcfile`' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case "$host_os" in + hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF + fi + hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # As osf3* with the addition of the -msym flag + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + rhapsody*) + archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flags_spec='-L$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case "$host_os" in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts' + else + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + unixware7*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 +test "$ld_shlibs" = no && can_build_shared=no + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + break + else + NM=${NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + $rm conftest* + cat > conftest.c <&5 + if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + + cat <> conftest.c +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$objext conftstm.$objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + global_symbol_pipe= + fi +done +if test "$pipe_works" = yes; then + echo "${ac_t}ok" 1>&6 +else + echo "${ac_t}failed" 1>&6 +fi + +if test -z "$global_symbol_pipe"; then + global_symbol_to_cdecl= +fi + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$ac_t$hardcode_action" 1>&6 + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linkers may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" 1>&6 +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +file_magic_cmd= +file_magic_test_file= +deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [regex]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4*) + version_type=linux + # AIX has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + # We preserve .a as extension for shared libraries though AIX4.2 + # and later linker supports .so + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + deplibs_check_method=pass_all + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw*) + version_type=windows + need_version=no + need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' + deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + file_magic_cmd='${OBJDUMP} -f' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case "$version_type" in + freebsd-elf*) + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + deplibs_check_method=unknown + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case "$host_os" in + freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + case "$host_os" in + hpux10.20*) + # TODO: Does this work for hpux-11 too? + deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' + case "$host_os" in + irix5*) + libsuff= shlibsuff= + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case "$LD" in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib${libsuff}/libc.so*` + deplibs_check_method='pass_all' + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + deplibs_check_method=pass_all + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd*) + version_type=sunos + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method='file_magic COFF format alpha shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + deplibs_check_method='pass_all' + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rhapsody*) + version_type=sunos + library_names_spec='${libname}.so' + soname_spec='${libname}.so' + shlibpath_var=DYLD_LIBRARY_PATH + deplibs_check_method=pass_all + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" + file_magic_cmd=/usr/bin/file + file_magic_test_file=/lib/libc.so + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case "$host_vendor" in + sequent) + file_magic_cmd='/bin/file' + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + ncr) + deplibs_check_method='pass_all' + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" 1>&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in +# configure.in, otherwise build static only libraries. +case "$host_os" in +cygwin* | mingw* | os2*) + if test x$can_build_shared = xyes; then + test x$enable_win32_dll = xno && can_build_shared=no + echo "checking if package supports dlls... $can_build_shared" 1>&6 + fi +;; +esac + +if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then + case "$deplibs_check_method" in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac +fi + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + test "$enable_shared" = yes && enable_static=no + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else +if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then + lt_cv_dlopen=no lt_cv_dlopen_libs= +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "$progname:2248: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "$progname:2288: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 +echo "$progname:2335: checking for dld_link in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +echo "$progname:2375: checking for shl_load" >&5 +if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +shl_load(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_shl_load=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "$progname:2423: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + +fi + +fi + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + fi + + case "$lt_cv_dlopen" in + dlopen) +for ac_hdr in dlfcn.h; do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "$progname:2488: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int fnord = 0; +EOF +ac_try="$ac_compile >/dev/null 2>conftest.out" +{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +done + + if test "x$ac_cv_header_dlfcn_h" = xyes; then + CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + fi + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2526: checking whether a program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self" 1>&6 + + if test "$lt_cv_dlopen_self" = yes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self_static=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self_static=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self_static=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 +fi + ;; + esac + + case "$lt_cv_dlopen_self" in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case "$lt_cv_dlopen_self_static" in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" +if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ltecho="$CONFIG_SHELL \$0 --fallback-echo" +fi +LTSHELL="$SHELL" + +LTCONFIG_VERSION="$VERSION" + +# Only quote variables if we're using ltmain.sh. +case "$ltmain" in +*.sh) + # Now quote all the things that may contain metacharacters. + for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ + AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ + file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case "$ltecho" in + *'\$0 --fallback-echo"') + ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + + trap "$rm \"$ofile\"; exit 1" 1 2 15 + echo "creating $ofile" + $rm "$ofile" + cat < "$ofile" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +### BEGIN LIBTOOL CONFIG +EOF + cfgfile="$ofile" + ;; + +*) + # Double-quote the variables that need it (for aesthetics). + for var in old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + + # Just create a config file. + cfgfile="$ofile.cfg" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + echo "creating $cfgfile" + $rm "$cfgfile" + cat < "$cfgfile" +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +EOF + ;; +esac + +cat <> "$cfgfile" +# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ +# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# The version of $progname that generated this script. +LTCONFIG_VERSION=$LTCONFIG_VERSION + +# Shell to use when invoking shell scripts. +SHELL=$LTSHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$ltecho + +# The archiver. +AR=$AR + +# The default C compiler. +CC=$CC + +# The linker used to build libraries. +LD=$LD + +# Whether we need hard or soft links. +LN_S=$LN_S + +# A BSD-compatible nm program. +NM=$NM + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$reload_flag +reload_cmds=$reload_cmds + +# How to pass a linker flag through the compiler. +wl=$wl + +# Object file suffix (normally "o"). +objext="$objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$pic_flag + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$RANLIB +old_archive_cmds=$old_archive_cmds +old_postinstall_cmds=$old_postinstall_cmds +old_postuninstall_cmds=$old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$old_archive_from_new_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$archive_cmds +archive_expsym_cmds=$archive_expsym_cmds +postinstall_cmds=$postinstall_cmds +postuninstall_cmds=$postuninstall_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$include_expsyms + +EOF + +case "$ltmain" in +*.sh) + echo '### END LIBTOOL CONFIG' >> "$ofile" + echo >> "$ofile" + case "$host_os" in + aix3*) + cat <<\EOF >> "$ofile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # Append the ltmain.sh script. + sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + + chmod +x "$ofile" + ;; + +*) + # Compile the libtool program. + echo "FIXME: would compile $ltmain" + ;; +esac + +test -n "$cache_file" || exit 0 + +# AC_CACHE_SAVE +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/salome_adm/unix/config_files/DEPRECATED/ltmain.sh b/salome_adm/unix/config_files/DEPRECATED/ltmain.sh new file mode 100644 index 000000000..251394b4d --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/ltmain.sh @@ -0,0 +1,4028 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun ltconfig. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + echo "$modename: not configured to build any kind of library" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case "$arg" in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + execute_dlfiles) + eval "$prev=\"\$$prev \$arg\"" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case "$arg" in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + exit 0 + ;; + + --config) + sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case "$nonopt" in + *cc | *++ | gcc* | *-gcc*) + mode=link + for arg + do + case "$arg" in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case "$mode" in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + lastarg= + srcfile="$nonopt" + suppress_output= + + user_target=no + for arg + do + # Accept any command-line options. + case "$arg" in + -o) + if test "$user_target" != "no"; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit 1 + fi + user_target=next + ;; + + -static) + build_old_libs=yes + continue + ;; + esac + + case "$user_target" in + next) + # The next one is the -o target name + user_target=yes + continue + ;; + yes) + # We got the output file + user_target=set + libobj="$arg" + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly in scan + # sets, so we specify it separately. + case "$lastarg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + case "$user_target" in + set) + ;; + no) + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + *) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSfmso]' + case "$libobj" in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case "$libobj" in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $libobj" + else + removelist="$libobj" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit 1" 1 2 15 + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit 1" 1 2 15 + else + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until ln "$0" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + if test "$build_old_libs" = yes; then + lo_libobj="$libobj" + dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$libobj"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + + if test -d "$dir"; then + $show "$rm $libobj" + $run $rm $libobj + else + $show "$mkdir $dir" + $run $mkdir $dir + status=$? + if test $status -ne 0 && test ! -d $dir; then + exit $status + fi + fi + fi + if test "$compiler_o_lo" = yes; then + output_obj="$libobj" + command="$command -o $output_obj" + elif test "$compiler_c_o" = yes; then + output_obj="$obj" + command="$command -o $output_obj" + fi + + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed, then go on to compile the next one + if test x"$output_obj" != x"$libobj"; then + $show "$mv $output_obj $libobj" + if $run $mv $output_obj $libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # If we have no pic_flag, then copy the object into place and finish. + if test -z "$pic_flag" && test "$build_old_libs" = yes; then + # Rename the .lo from within objdir to obj + if test -f $obj; then + $show $rm $obj + $run $rm $obj + fi + + $show "$mv $libobj $obj" + if $run $mv $libobj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` + libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + # Now arrange that obj and lo_libobj become the same file + $show "(cd $xdir && $LN_S $baseobj $libobj)" + if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then + exit 0 + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + command="$base_compile $srcfile" + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + output_obj="$obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed + if test x"$output_obj" != x"$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + else + # Move the .lo from within objdir + $show "$mv $libobj $lo_libobj" + if $run $mv $libobj $lo_libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + fi + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $rm "$lockfile" + fi + + exit 0 + ;; + + # libtool link mode + link) + modename="$modename: link" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invokation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# 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. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (!dll) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test $# -gt 0; do + arg="$1" + shift + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case "$prev" in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case "$arg" in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case "$arg" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi + + prevarg="$arg" + + case "$arg" in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: not more than one -exported-symbols argument allowed" + exit 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + absdir="$dir" + fi + dir="$absdir" + ;; + esac + case " $deplibs " in + *" $arg "*) ;; + *) deplibs="$deplibs $arg";; + esac + case " $lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir";; + esac + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + dllsearchdir=`cd "$dir" && pwd || echo "$dir"` + case ":$dllsearchpath:" in + ::) dllsearchpath="$dllsearchdir";; + *":$dllsearchdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dllsearchdir";; + esac + ;; + esac + ;; + + -l*) + if test "$arg" = "-lc"; then + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + # These systems don't actually have c library (as such) + continue + ;; + esac + elif test "$arg" = "-lm"; then + case "$host" in + *-*-cygwin* | *-*-beos*) + # These systems don't actually have math library (as such) + continue + ;; + esac + fi + deplibs="$deplibs $arg" + ;; + + -module) + module=yes + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # If we have no pic_flag, then this is the same as -all-static. + if test -z "$pic_flag" && test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + + *.o | *.obj | *.a | *.lib) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A library object. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` + prev= + fi + libobjs="$libobjs $arg" + ;; + + *.la) + # A libtool-controlled library. + + dlname= + libdir= + library_names= + old_library= + + # Check to see that this really is a libtool archive. + if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 + exit 1 + fi + + # If the library was installed with an old release of libtool, + # it will not redefine variable installed. + installed=yes + + # Read the .la file + # If there is no directory component, then add one. + case "$arg" in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 + exit 1 + fi + + # Find the relevant object directory and library name. + name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` + + if test "X$installed" = Xyes; then + dir="$libdir" + else + dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$arg"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + fi + + if test -n "$dependency_libs"; then + # Extract -R and -L from dependency_libs + temp_deplibs= + for deplib in $dependency_libs; do + case "$deplib" in + -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + case " $rpath $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + -L*) case "$compile_command $temp_deplibs " in + *" $deplib "*) ;; + *) temp_deplibs="$temp_deplibs $deplib";; + esac + temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` + case " $lib_search_path " in + *" $temp_dir "*) ;; + *) lib_search_path="$lib_search_path $temp_dir";; + esac + ;; + *) temp_deplibs="$temp_deplibs $deplib";; + esac + done + dependency_libs="$temp_deplibs" + fi + + if test -z "$libdir"; then + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$deplibs$dependency_libs" + compile_command="$compile_command $dir/$old_library$dependency_libs" + finalize_command="$finalize_command $dir/$old_library$dependency_libs" + continue + fi + + # This library was specified with -dlopen. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking statically, + # we need to preload. + prev=dlprefiles + else + # We should not create a dependency on this library, but we + # may need any libraries it requires. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + prev= + continue + fi + fi + + # The library was specified with -dlpreopen. + if test "$prev" = dlprefiles; then + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + dlprefiles="$dlprefiles $dir/$old_library" + else + dlprefiles="$dlprefiles $dir/$linklib" + fi + prev= + fi + + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + link_against_libtool_libs="$link_against_libtool_libs $arg" + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # We need an absolute path. + case "$dir" in + [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + absdir="$dir" + fi + ;; + esac + + # This is the magic to use -rpath. + # Skip directories that are in the system default run-time + # search path, unless they have been requested with -R. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + + lib_linked=yes + case "$hardcode_action" in + immediate | unsupported) + if test "$hardcode_direct" = no; then + compile_command="$compile_command $dir/$linklib" + deplibs="$deplibs $dir/$linklib" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2*) + dllsearchdir=`cd "$dir" && pwd || echo "$dir"` + if test -n "$dllsearchpath"; then + dllsearchpath="$dllsearchpath:$dllsearchdir" + else + dllsearchpath="$dllsearchdir" + fi + ;; + esac + elif test "$hardcode_minus_L" = no; then + case "$host" in + *-*-sunos*) + compile_shlibpath="$compile_shlibpath$dir:" + ;; + esac + case "$compile_command " in + *" -L$dir "*) ;; + *) compile_command="$compile_command -L$dir";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = no; then + case ":$compile_shlibpath:" in + *":$dir:"*) ;; + *) compile_shlibpath="$compile_shlibpath$dir:";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -l$name" + else + lib_linked=no + fi + ;; + + relink) + if test "$hardcode_direct" = yes; then + compile_command="$compile_command $absdir/$linklib" + deplibs="$deplibs $absdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + case "$compile_command " in + *" -L$absdir "*) ;; + *) compile_command="$compile_command -L$absdir";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -L$absdir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case ":$compile_shlibpath:" in + *":$absdir:"*) ;; + *) compile_shlibpath="$compile_shlibpath$absdir:";; + esac + compile_command="$compile_command -l$name" + deplibs="$deplibs -l$name" + else + lib_linked=no + fi + ;; + + *) + lib_linked=no + ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + finalize_command="$finalize_command $libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + case "$finalize_command " in + *" -L$libdir "*) ;; + *) finalize_command="$finalize_command -L$libdir";; + esac + finalize_command="$finalize_command -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case ":$finalize_shlibpath:" in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:";; + esac + finalize_command="$finalize_command -l$name" + else + # We cannot seem to hardcode it, guess we'll fake it. + case "$finalize_command " in + *" -L$dir "*) ;; + *) finalize_command="$finalize_command -L$libdir";; + esac + finalize_command="$finalize_command -l$name" + fi + else + # Transform directly to old archives if we don't build new libraries. + if test -n "$pic_flag" && test -z "$old_library"; then + $echo "$modename: cannot find static library for \`$arg'" 1>&2 + exit 1 + fi + + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_command="$compile_command $dir/$linklib" + finalize_command="$finalize_command $dir/$linklib" + else + case "$compile_command " in + *" -L$dir "*) ;; + *) compile_command="$compile_command -L$dir";; + esac + compile_command="$compile_command -l$name" + case "$finalize_command " in + *" -L$dir "*) ;; + *) finalize_command="$finalize_command -L$dir";; + esac + finalize_command="$finalize_command -l$name" + fi + fi + + # Add in any libraries that this one depends upon. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + esac + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + case "$output" in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *.a | *.lib) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + ;; + + *.la) + # Make sure we only generate libraries of the form `libNAME.la'. + case "$outputname" in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + + if test -n "$objs"; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 + exit 1 + fi + + # How the heck are we supposed to write a wrapper for a shared library? + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 + exit 1 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + libext=al + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + dependency_libs="$deplibs" + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + current="$2" + revision="$3" + age="$4" + + # Check that each of the things are valid numbers. + case "$current" in + [0-9]*) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$revision" in + [0-9]*) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$age" in + [0-9]*) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case "$version_type" in + none) ;; + + irix) + major=`expr $current - $age + 1` + versuffix="$major.$revision" + verstring="sgi$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test $loop != 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="sgi$major.$iface:$verstring" + done + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + windows) + # Like Linux, but with '-' rather than '.', since we only + # want one extension on Windows 95. + major=`expr $current - $age` + versuffix="-$major-$age-$revision" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + verstring="0.0" + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + dependency_libs="$deplibs" + case "$host" in + *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody*) + # rhapsody is a little odd... + deplibs="$deplibs -framework System" + ;; + *) + # Add libc to deplibs on all other systems. + deplibs="$deplibs -lc" + ;; + esac + fi + + # Create the output directory, or remove our outputs if we need to. + if test -d $output_objdir; then + $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" + $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* + else + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + if test "$build_libtool_libs" = yes; then + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case "$deplibs_check_method" in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behaviour. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | sed 's/.* -> //'` + case "$potliblink" in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | sed 10q \ + | egrep "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: This library needs some functionality provided by $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | + grep . >/dev/null; then + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + echo "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Ensure that we have .o objects for linkers which dislike .lo + # (e.g. aix) in case we are running --disable-static + for obj in $libobjs; do + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + if test ! -f $xdir/$oldobj; then + $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" + $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? + fi + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + eval cmds=\"$export_symbols_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linkopts="$linkopts $flag" + fi + + # Do each of the archive commands. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + eval cmds=\"$archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + *.lo | *.o | *.obj) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case "$output" in + *.lo) + if test -n "$objs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" + + output="$obj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show $rm $libobj + $run $rm $libobj + xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$libobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + $show "(cd $xdir && $LN_S $oldobj $baseobj)" + $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + ;; + + # Anything else should be a program. + *) + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$compile_rpath " in + *" $libdir "*) ;; + *) compile_rpath="$compile_rpath $libdir" ;; + esac + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + + # Create the binary in the object directory, then wrap it. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case "$dlsyms" in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`echo "$arg" | sed -e 's%^.*/%%'` + $run eval 'echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{\ +" + + sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ + -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ + < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr_t) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case "$host" in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case "$dir" in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case "$0" in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`echo $output|sed 's,.exe$,,'` ;; + esac + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + link_against_libtool_libs='$link_against_libtool_libs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + echo >> $output "\ + program=lt-'$outputname' + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if (cd \"\$thisdir\" && eval \$relink_command); then : + else + $rm \"\$progdir/\$file\" + exit 1 + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # win32 systems need to use the prog path for dll + # lookup to work + *-*-cygwin*) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case "$xlib" in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + # Ensure that we have .o objects in place in case we decided + # not to build a shared library, and have fallen back to building + # static libs even though --disable-static was passed! + for oldobj in $oldobjs; do + if test ! -f $oldobj; then + xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$oldobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` + obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + $show "(cd $xdir && ${LN_S} $obj $baseobj)" + $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi + done + + eval cmds=\"$old_archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case "$output" in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + if test -n "$xrpath"; then + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + done + dependency_libs="$temp_xrpath $dependency_libs" + fi + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + fi + $rm $output + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$dlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Directory that this library needs to be installed in: +libdir='$install_libdir'\ +" + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case "$arg" in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case "$file" in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case "$file" in + *.a | *.lib) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$realname $destdir/$realname" + $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? + + if test $# -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case "$destfile" in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.o | *.obj) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + link_against_libtool_libs= + relink_command= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Check the variables that should have been set. + if test -z "$link_against_libtool_libs"; then + $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $link_against_libtool_libs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case "$lib" in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` + if test $? = 0 ; then : + else + tmpdir="$tmpdir/libtool-$$" + fi + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec $SHELL $0 --finish$current_libdirs + exit 1 + fi + + exit 0 + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit 0 + + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "----------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case "$file" in + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case "$file" in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now actually exec the command. + eval "exec \$cmd$args" + + $echo "$modename: cannot exec \$cmd$args" + exit 1 + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit 0 + fi + ;; + + # libtool uninstall mode + uninstall) + modename="$modename: uninstall" + rm="$nonopt" + files= + + for arg + do + case "$arg" in + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + rmfiles="$file" + + case "$name" in + *.la) + # Possibly a libtool archive, so verify it. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $dir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" + + $show "$rm $rmfiles" + $run $rm $rmfiles + + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + # FIXME: should reinstall the best remaining shared library. + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` + rmfiles="$rmfiles $dir/$oldobj" + fi + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + + *) + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + esac + done + exit 0 + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 +fi # test -z "$show_help" + +# We need to display help for each of the modes. +case "$mode" in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +MODE must be one of the following: + + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/salome_adm/unix/config_files/DEPRECATED/missing b/salome_adm/unix/config_files/DEPRECATED/missing new file mode 100644 index 000000000..7789652e8 --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/missing @@ -0,0 +1,190 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# 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, 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/salome_adm/unix/config_files/DEPRECATED/mkinstalldirs b/salome_adm/unix/config_files/DEPRECATED/mkinstalldirs new file mode 100755 index 000000000..6b3b5fc5d --- /dev/null +++ b/salome_adm/unix/config_files/DEPRECATED/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id$ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/salome_adm/unix/config_files/Makefile.am b/salome_adm/unix/config_files/Makefile.am new file mode 100644 index 000000000..31675283a --- /dev/null +++ b/salome_adm/unix/config_files/Makefile.am @@ -0,0 +1,83 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + + +# The deprecated files are deprecated for the KERNEL but not for the +# related modules (GUI, MED, ...). Some files have to be installed. +DEPRECATED_FILES=\ + DEPRECATED/ac_cc_warnings.m4 \ + DEPRECATED/ac_cxx_bool.m4 \ + DEPRECATED/ac_cxx_mutable.m4 \ + DEPRECATED/ac_cxx_partial_specialization.m4 \ + DEPRECATED/ac_cxx_typename.m4 \ + DEPRECATED/check_mico.m4 \ + DEPRECATED/check_pthreads.m4 \ + DEPRECATED/config.sub \ + DEPRECATED/config.guess \ + DEPRECATED/install-sh \ + DEPRECATED/libtool.m4 \ + DEPRECATED/ltconfig \ + DEPRECATED/ltmain.sh + +## The following scripts are required for modules not built with autotools +#dist_salomem4_SCRIPTS=\ +# compile \ +# config.guess \ +# config.sub \ +# depcomp \ +# install-sh \ +# ltmain.sh \ +# missing \ +# py-compile + +dist_salomem4_DATA=\ +ac_cxx_depend_flag.m4 \ +ac_cxx_have_sstream.m4 \ +ac_cxx_namespaces.m4 \ +ac_cxx_option.m4 \ +ac_cxx_template_options.m4 \ +ac_cxx_use_std_iostream.m4 \ +ac_cxx_warnings.m4 \ +ac_linker_options.m4 \ +acx_pthread.m4 \ +check_Kernel.m4 \ +check_boost.m4 \ +check_cas.m4 \ +check_corba.m4 \ +check_cppunit.m4 \ +check_f77.m4 \ +check_hdf5.m4 \ +check_htmlgen.m4 \ +check_lam.m4 \ +check_lsf.m4 \ +check_mpi.m4 \ +check_mpich.m4 \ +check_omniorb.m4 \ +check_opengl.m4 \ +check_openpbs.m4 \ +check_qt.m4 \ +check_sockets.m4 \ +check_swig.m4 \ +check_withihm.m4 \ +enable_pthreads.m4 \ +production.m4 \ +pyembed.m4 \ +python.m4 \ +$(DEPRECATED_FILES) diff --git a/salome_adm/unix/config_files/acx_pthread.m4 b/salome_adm/unix/config_files/acx_pthread.m4 new file mode 100644 index 000000000..87c868673 --- /dev/null +++ b/salome_adm/unix/config_files/acx_pthread.m4 @@ -0,0 +1,207 @@ +dnl Paul RASCLE: modification for Linux: -pthread required by boost... +dnl +dnl Available from the GNU Autoconf Macro Archive at: +dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_pthread.html +dnl +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *linux*) + + # On linux "none" works, but boost requires -pthread, so, try first "-pthread" +acx_pthread_flags="-pthread pthreads none -Kthread -kthread lthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + ;; + + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthread or + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: threads are created detached by default + # and the JOINABLE attribute has a nonstandard name (UNDETACHED). + AC_MSG_CHECKING([for joinable pthread attribute]) + AC_TRY_LINK([#include ], + [int attr=PTHREAD_CREATE_JOINABLE;], + ok=PTHREAD_CREATE_JOINABLE, ok=unknown) + if test x"$ok" = xunknown; then + AC_TRY_LINK([#include ], + [int attr=PTHREAD_CREATE_UNDETACHED;], + ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) + fi + if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then + AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, + [Define to the necessary symbol if this constant + uses a non-standard name on your system.]) + fi + AC_MSG_RESULT(${ok}) + if test x"$ok" = xunknown; then + AC_MSG_WARN([we do not know how to create joinable pthreads]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl ACX_PTHREAD diff --git a/salome_adm/unix/config_files/check_local.m4 b/salome_adm/unix/config_files/check_local.m4 new file mode 100755 index 000000000..67274089f --- /dev/null +++ b/salome_adm/unix/config_files/check_local.m4 @@ -0,0 +1,69 @@ +# Check for Local +AC_DEFUN([CHECK_LOCAL], +[ + dnl AC_ARG_VAR([LOCAL], []) + AC_ARG_WITH([local], + AC_HELP_STRING([--with-local], + [tell configure script to use local submission. Default is --with-local.]), + [], + [withval=yes]) + + AC_MSG_CHECKING([for Local]) + + if test "x$withval" = "xyes" + then + WITH_LOCAL=yes + + AC_MSG_RESULT([$withval]) + + AC_ARG_VAR([RM], [A path to a rm-like command]) + AC_PATH_PROG([RM], [rm], [/bin/false]) + AC_DEFINE_UNQUOTED(RM, "$RM", [A path to a rm-like command]) + + AC_ARG_VAR([SH], [A path to a sh-like command]) + AC_PATH_PROG([SH], [sh], [/bin/false]) + AC_DEFINE_UNQUOTED(SH, "$SH", [A path to a sh-like command]) + AC_ARG_VAR([CP], [A path to a cp-like command]) + AC_PATH_PROG([CP], [cp], [/bin/false]) + AC_DEFINE_UNQUOTED(CP, "$CP", [A path to a cp-like command]) + + AC_ARG_VAR([RSH], [A path to a rsh-like command]) + AC_PATH_PROG([RSH], [rsh], [/bin/false]) + AC_DEFINE_UNQUOTED(RSH, "$RSH", [A path to a rsh-like command]) + AC_ARG_VAR([RCP], [A path to a rcp-like command]) + AC_PATH_PROG([RCP], [rcp], [/bin/false]) + AC_DEFINE_UNQUOTED(RCP, "$RCP", [A path to a rcp-like command]) + + AC_ARG_VAR([SSH], [A path to a ssh-like command]) + AC_PATH_PROG([SSH], [ssh], [/bin/false]) + AC_DEFINE_UNQUOTED(SSH, "$SSH", [A path to a ssh-like command]) + AC_ARG_VAR([SCP], [A path to a scp-like command]) + AC_PATH_PROG([SCP], [scp], [/bin/false]) + AC_DEFINE_UNQUOTED(SCP, "$SCP", [A path to a scp-like command]) + + + else + WITH_LOCAL=no + + AC_MSG_RESULT([no]) + + fi + + AM_CONDITIONAL(WITH_LOCAL, test $WITH_LOCAL = yes) + + localbatch_ok=$WITH_LOCAL + AC_SUBST(WITH_LOCAL) + AC_SUBST(RM) + AC_SUBST(SH) + AC_SUBST(CP) + AC_SUBST(RSH) + AC_SUBST(RCP) + AC_SUBST(SSH) + AC_SUBST(SCP) + + dnl _CS_gbo Pour forcer l'utilisation du config.h, inclu + dnl par les fichiers Batch_BatchManager_Local_*.cxx + dnl OWN_CONFIG_H=yes + dnl AC_SUBST(OWN_CONFIG_H) +]) + diff --git a/salome_adm/unix/make_common_starter.am b/salome_adm/unix/make_common_starter.am new file mode 100644 index 000000000..220be3f5e --- /dev/null +++ b/salome_adm/unix/make_common_starter.am @@ -0,0 +1,30 @@ +# +# ============================================================ +# This file defines the common definitions used in several +# Makefile. This file must be included, if needed, by the file +# Makefile.am. +# ============================================================ +# + +# Standard directory for installation +salomeincludedir = $(includedir)/@PACKAGE@ +libdir = $(prefix)/lib@LIB_LOCATION_SUFFIX@/@PACKAGE@ +bindir = $(prefix)/bin/@PACKAGE@ +salomescriptdir = $(bindir) + +# Directory for installing idl files +salomeidldir = $(prefix)/idl/@PACKAGE@ + +# Directory for installing resource files +salomeresdir = $(prefix)/share/@PACKAGE@/resources + +# Directories for installing admin files +salomeadmdir = $(prefix)/salome_adm +salomeadmuxdir = $(salomeadmdir)/unix +salomem4dir = $(salomeadmdir)/unix/config_files + +# Shared modules installation directory +sharedpkgpythondir =$(pkgpythondir)/shared_modules + +# Documentation directory +docdir = $(datadir)/doc/@PACKAGE@ diff --git a/src/Basics/Makefile.am b/src/Basics/Makefile.am new file mode 100644 index 000000000..02dc1f1f4 --- /dev/null +++ b/src/Basics/Makefile.am @@ -0,0 +1,38 @@ +# Basics: General purpose C++ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.in +# Author : Paul RASCLE (EDF) +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +salomeinclude_HEADERS = BasicsGenericDestructor.hxx + +lib_LTLIBRARIES = libSALOMEBasics.la +libSALOMEBasics_la_SOURCES = \ + BasicsGenericDestructor.cxx \ + BasicsGenericDestructor.hxx +libSALOMEBasics_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSALOMEBasics_la_CPPFLAGS = @CPPFLAGS@ diff --git a/src/Basics/Test/Makefile.am b/src/Basics/Test/Makefile.am new file mode 100644 index 000000000..106dfbc84 --- /dev/null +++ b/src/Basics/Test/Makefile.am @@ -0,0 +1,39 @@ +# Basics: General purpose C++ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = BasicMainTest.hxx +# This include file defines the minimal source file for all test +# program. It provides the common main function. diff --git a/src/Batch/Batch_BatchManager_Local.cxx b/src/Batch/Batch_BatchManager_Local.cxx new file mode 100644 index 000000000..5359c3d1c --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local.cxx @@ -0,0 +1,792 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Batch_IOMutex.hxx" +#include "Batch_BatchManager_Local.hxx" + +namespace Batch { + + + // Constructeur + BatchManager_Local::BatchManager_Local(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager(parent, host), _connect(0), _threads_mutex(), _threads(), _thread_id_id_association_mutex(), _thread_id_id_association_cond(), _thread_id_id_association() + { + pthread_mutex_init(&_threads_mutex, NULL); + pthread_mutex_init(&_thread_id_id_association_mutex, NULL); + pthread_cond_init(&_thread_id_id_association_cond, NULL); + } + + // Destructeur + BatchManager_Local::~BatchManager_Local() + { + pthread_mutex_destroy(&_threads_mutex); + pthread_mutex_destroy(&_thread_id_id_association_mutex); + pthread_cond_destroy(&_thread_id_id_association_cond); + } + + // Methode pour le controle des jobs : soumet un job au gestionnaire + const JobId BatchManager_Local::submitJob(const Job & job) + { + Job_Local jobLocal = job; + + pthread_t thread_id = submit(jobLocal); + + ostringstream oss; + oss << getIdByThread_id(thread_id); + + JobId id(this, oss.str()); + + return id; + } + + // Methode pour le controle des jobs : retire un job du gestionnaire + void BatchManager_Local::deleteJob(const JobId & jobid) + { + Id id; + + istringstream iss(jobid.getReference()); + iss >> id; + + // On retrouve le thread_id du thread + pthread_t thread_id; + + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_threads_mutex); + if (_threads.find(id) != _threads.end()) + thread_id = _threads[id].thread_id; + pthread_mutex_unlock(&_threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + + cancel(thread_id); + } + + // Methode pour le controle des jobs : suspend un job en file d'attente + void BatchManager_Local::holdJob(const JobId & jobid) + { + Id id; + istringstream iss(jobid.getReference()); + iss >> id; + + UNDER_LOCK( cout << "BatchManager is sending HOLD command to the thread " << id << endl ); + + // On introduit une commande dans la queue du thread + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_threads_mutex); + if (_threads.find(id) != _threads.end()) + _threads[id].command_queue.push(HOLD); + pthread_mutex_unlock(&_threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + } + + // Methode pour le controle des jobs : relache un job suspendu + void BatchManager_Local::releaseJob(const JobId & jobid) + { + Id id; + istringstream iss(jobid.getReference()); + iss >> id; + + UNDER_LOCK( cout << "BatchManager is sending RELEASE command to the thread " << id << endl ); + + // On introduit une commande dans la queue du thread + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_threads_mutex); + if (_threads.find(id) != _threads.end()) + _threads[id].command_queue.push(RELEASE); + pthread_mutex_unlock(&_threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + } + + + // Methode pour le controle des jobs : modifie un job en file d'attente + void BatchManager_Local::alterJob(const JobId & jobid, const Parametre & param, const Environnement & env) + { + } + + // Methode pour le controle des jobs : modifie un job en file d'attente + void BatchManager_Local::alterJob(const JobId & jobid, const Parametre & param) + { + alterJob(jobid, param, Environnement()); + } + + // Methode pour le controle des jobs : modifie un job en file d'attente + void BatchManager_Local::alterJob(const JobId & jobid, const Environnement & env) + { + alterJob(jobid, Parametre(), env); + } + + + + // Methode pour le controle des jobs : renvoie l'etat du job + JobInfo BatchManager_Local::queryJob(const JobId & jobid) + { + Id id; + istringstream iss(jobid.getReference()); + iss >> id; + + Parametre param; + Environnement env; + + //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : AVANT section critique" << endl ); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_threads_mutex); + param = _threads[id].param; + env = _threads[id].env; + pthread_mutex_unlock(&_threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : APRES section critique" << endl ); + + JobInfo_Local ji(param, env); + return ji; + } + + + + // Methode pour le controle des jobs : teste si un job est present en machine + bool BatchManager_Local::isRunning(const JobId & jobid) + { + Id id; + istringstream iss(jobid.getReference()); + iss >> id; + + Status status; + + //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : AVANT section critique" << endl ); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_threads_mutex); + status = _threads[id].status; + pthread_mutex_unlock(&_threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : APRES section critique" << endl ); + + return (status == RUNNING); + } + + + // Methode d'execution d'un job + pthread_t BatchManager_Local::submit(const Job_Local & job) + { + // L'id du thread a creer + pthread_t thread_id = 0; + + // Les attributs du thread a sa creation + pthread_attr_t thread_attr; + pthread_attr_init(&thread_attr); + pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED); + + ThreadAdapter * p_ta = new ThreadAdapter(*this, job); + + // Creation du thread qui va executer la commande systeme qu'on lui passe + int rc = pthread_create(&thread_id, + &thread_attr, + &ThreadAdapter::run, + static_cast(p_ta)); + if (rc) { + } + + // Liberation des zones memoire maintenant inutiles occupees par les attributs du thread + pthread_attr_destroy(&thread_attr); + + return thread_id; + } + + + // Methode de destruction d'un job + void BatchManager_Local::cancel(pthread_t thread_id) + { + pthread_cancel(thread_id); + } + + + // Fabrique un identifiant unique pour les threads puisque le thread_id n'est pas unique + // au cours du temps (il peut etre reutilise lorsqu'un thread se termine) + // ATTENTION : cette methode est uniquement protegee par la section critique de l'association + // Thread_id / Id (_thread_id_id_association_mutex) + BatchManager_Local::Id BatchManager_Local::nextId() + { + static Id id = 0; + Id nextId = id++; + //UNDER_LOCK( cout << "BatchManager_Local::Id BatchManager_Local::nextId() : Id = " << nextId << endl ); + return nextId; + } + + + // Retourne l'Id enregistre dans l'association Thread_id / Id et le detruit immediatement + BatchManager_Local::Id BatchManager_Local::getIdByThread_id(pthread_t thread_id) + { + Id id = -1; + + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_thread_id_id_association_mutex); + while (_thread_id_id_association.find(thread_id) == _thread_id_id_association.end()) + pthread_cond_wait(&_thread_id_id_association_cond, &_thread_id_id_association_mutex); + + id = _thread_id_id_association[thread_id]; + _thread_id_id_association.erase(thread_id); + + pthread_mutex_unlock(&_thread_id_id_association_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + + //UNDER_LOCK( cout << "BatchManager_Local::Id BatchManager_Local::getIdByThread_id(pthread_t thread_id) : Id = " << id << " - thread_id = " << thread_id << endl ); + return id; + } + + + // Associe un Thread_id a un Id nouvellement cree + BatchManager_Local::Id BatchManager_Local::registerThread_id(pthread_t thread_id) + { + Id id = -1; + + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_thread_id_id_association_mutex); + if (_thread_id_id_association.find(thread_id) == _thread_id_id_association.end()) { + id = _thread_id_id_association[thread_id] = nextId(); + pthread_cond_signal(&_thread_id_id_association_cond); + + } else { + UNDER_LOCK( cerr << "ERROR : Pthread Inconstency. Two threads own the same thread_id." << endl ); + } + pthread_mutex_unlock(&_thread_id_id_association_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + + //UNDER_LOCK( cout << "BatchManager_Local::Id BatchManager_Local::registerThread_id(pthread_t thread_id) : Id = " << id << " - thread_id = " << thread_id << endl ); + return id; + } + + + // Constructeur de la classe ThreadAdapter + BatchManager_Local::ThreadAdapter::ThreadAdapter(BatchManager_Local & bm, const Job_Local & job) : + _bm(bm), _job(job) + { + // Nothing to do + } + + + + // Methode d'execution du thread + void * BatchManager_Local::ThreadAdapter::run(void * arg) + { + // On bloque tous les signaux pour ce thread + sigset_t setmask; + sigfillset(&setmask); + pthread_sigmask(SIG_BLOCK, &setmask, NULL); + + + // On autorise la terminaison differee du thread + // (ces valeurs sont les valeurs par defaut mais on les force par precaution) + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); + + // On enregistre la fonction de suppression du fils en cas d'arret du thread + // Cette fontion sera automatiquement appelee lorsqu'une demande d'annulation + // sera prise en compte par pthread_testcancel() + pid_t child; + pthread_cleanup_push(BatchManager_Local::kill_child_on_exit, static_cast (&child)); + pthread_cleanup_push(BatchManager_Local::delete_on_exit, arg); + + ThreadAdapter * p_ta = static_cast(arg); + + + + + // Le code retour cumule (ORed) de tous les appels + // Nul en cas de reussite de l'ensemble des operations + int rc = 0; + + // Cette table contient la liste des fichiers a detruire a la fin du processus + std::vector files_to_delete; + + + + // On copie les fichiers d'entree pour le fils + const Parametre param = p_ta->_job.getParametre(); + Parametre::const_iterator it; + + // On initialise la variable workdir a la valeur du Current Working Directory + char * cwd = new char [PATH_MAX]; + getcwd(cwd, PATH_MAX); + string workdir = cwd; + delete [] cwd; + + if ( (it = param.find(WORKDIR)) != param.end() ) { + workdir = static_cast( (*it).second ); + } + + string executionhost = string(param[EXECUTIONHOST]); + + if ( (it = param.find(INFILE)) != param.end() ) { + Versatile V = (*it).second; + Versatile::iterator Vit; + + for(Vit=V.begin(); Vit!=V.end(); Vit++) { + CoupleType cpt = *static_cast< CoupleType * >(*Vit); + Couple cp = cpt; + string local = cp.getLocal(); + string remote = cp.getRemote(); + + string copy_cmd = p_ta->getBatchManager().copy_command("", local, executionhost, workdir + "/" + remote); + UNDER_LOCK( cout << "Copying : " << copy_cmd << endl ); + + if (system(copy_cmd.c_str()) ) { + // Echec de la copie + rc |= 1; + } else { + // On enregistre le fichier comme etant a detruire + files_to_delete.push_back(workdir + "/" + remote); + } + + } + } + + + + + + // On forke/exec un nouveau process pour pouvoir controler le fils + // (plus finement qu'avec un appel system) + // int rc = system(commande.c_str()); + child = fork(); + if (child < 0) { // erreur + UNDER_LOCK( cerr << "Fork impossible (rc=" << child << ")" << endl ); + + } else if (child > 0) { // pere + p_ta->pere(child); + + } else { // fils + p_ta->fils(); + } + + + + + // On copie les fichiers de sortie du fils + if ( (it = param.find(OUTFILE)) != param.end() ) { + Versatile V = (*it).second; + Versatile::iterator Vit; + + for(Vit=V.begin(); Vit!=V.end(); Vit++) { + CoupleType cpt = *static_cast< CoupleType * >(*Vit); + Couple cp = cpt; + string local = cp.getLocal(); + string remote = cp.getRemote(); + + string copy_cmd = p_ta->getBatchManager().copy_command(executionhost, workdir + "/" + remote, "", local); + UNDER_LOCK( cout << "Copying : " << copy_cmd << endl ); + + if (system(copy_cmd.c_str()) ) { + // Echec de la copie + rc |= 1; + } else { + // On enregistre le fichier comme etant a detruire + files_to_delete.push_back(workdir + "/" + remote); + } + + } + } + + + + + // On efface les fichiers d'entree et de sortie du fils si les copies precedentes ont reussi + // ou si la creation du fils n'a pu avoir lieu + if ( (rc == 0) || (child < 0) ) { + std::vector::const_iterator it; + for(it=files_to_delete.begin(); it!=files_to_delete.end(); it++) { + string remove_cmd = p_ta->getBatchManager().remove_command(executionhost, *it); + UNDER_LOCK( cout << "Removing : " << remove_cmd << endl ); + system(remove_cmd.c_str()); + } + } + + + + // On retire la fonction de nettoyage de la memoire + pthread_cleanup_pop(0); + + // On retire la fonction de suppression du fils + pthread_cleanup_pop(0); + + + + // On invoque la fonction de nettoyage de la memoire + delete_on_exit(arg); + + UNDER_LOCK( cout << "Father is leaving" << endl ); + pthread_exit(NULL); + + return NULL; + } + + + + + void BatchManager_Local::ThreadAdapter::pere(pid_t child) + { + time_t child_starttime = time(NULL); + + // On enregistre le fils dans la table des threads + pthread_t thread_id = pthread_self(); + Id id = _bm.registerThread_id(thread_id); + + Parametre param = _job.getParametre(); + Environnement env = _job.getEnvironnement(); + + ostringstream thread_id_sst; + thread_id_sst << id; + param[ID] = thread_id_sst.str(); + param[STATE] = "Running"; + param[PID] = child; + + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + _bm._threads[id].thread_id = thread_id; + _bm._threads[id].pid = child; + _bm._threads[id].status = RUNNING; + _bm._threads[id].param = param; + _bm._threads[id].env = env; + _bm._threads[id].command_queue.push(NOP); + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + + + + + + // on boucle en attendant que le fils ait termine + while (1) { + int child_rc = 0; + pid_t child_wait_rc = waitpid(child, &child_rc, WNOHANG /* | WUNTRACED */); + if (child_wait_rc > 0) { + if (WIFSTOPPED(child_rc)) { + // NOTA : pour rentrer dans cette section, il faut que le flag WUNTRACED + // soit positionne dans l'appel a waitpid ci-dessus. Ce flag est couramment + // desactive car s'il est possible de detecter l'arret d'un process, il est + // plus difficile de detecter sa reprise. + + // Le fils est simplement stoppe + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + _bm._threads[id].status = STOPPED; + _bm._threads[id].param[STATE] = "Stopped"; + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + UNDER_LOCK( cout << "Father sees his child is STOPPED : " << child_wait_rc << endl ); + + } + else { + // Le fils est termine, on sort de la boucle et du if englobant + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + _bm._threads[id].status = DONE; + _bm._threads[id].param[STATE] = "Done"; + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + UNDER_LOCK( cout << "Father sees his child is DONE : " << child_wait_rc << " (child_rc=" << (WIFEXITED(child_rc) ? WEXITSTATUS(child_rc) : -1) << ")" << endl ); + break; + } + } + else if (child_wait_rc == -1) { + // Le fils a disparu ... + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + _bm._threads[id].status = DEAD; + _bm._threads[id].param[STATE] = "Dead"; + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + UNDER_LOCK( cout << "Father sees his child is DEAD : " << child_wait_rc << " (Reason : " << strerror(errno) << ")" << endl ); + break; + } + + + + // On teste si le thread doit etre detruit + pthread_testcancel(); + + + + // On regarde si le fils n'a pas depasse son temps (wallclock time) + time_t child_currenttime = time(NULL); + time_t child_elapsedtime = child_currenttime - child_starttime; + if (param.find(MAXWALLTIME) != param.end()) { + int maxwalltime = param[MAXWALLTIME]; + // cout << "child_starttime = " << child_starttime << endl + // << "child_currenttime = " << child_currenttime << endl + // << "child_elapsedtime = " << child_elapsedtime << endl + // << "maxwalltime = " << maxwalltime << endl + // << "int(maxwalltime * 1.1) = " << int(maxwalltime * 1.1) << endl; + if (child_elapsedtime > int(maxwalltime * 1.1) ) { // On se donne 10% de marge avant le KILL + UNDER_LOCK( cout << "Father is sending KILL command to the thread " << id << endl ); + // On introduit une commande dans la queue du thread + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + if (_bm._threads.find(id) != _bm._threads.end()) + _bm._threads[id].command_queue.push(KILL); + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + + + } else if (child_elapsedtime > maxwalltime ) { + UNDER_LOCK( cout << "Father is sending TERM command to the thread " << id << endl ); + // On introduit une commande dans la queue du thread + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + if (_bm._threads.find(id) != _bm._threads.end()) + _bm._threads[id].command_queue.push(TERM); + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + } + } + + + + // On regarde s'il y a quelque chose a faire dans la queue de commande + // @@@ --------> SECTION CRITIQUE <-------- @@@ + pthread_mutex_lock(&_bm._threads_mutex); + if (_bm._threads.find(id) != _bm._threads.end()) { + while (_bm._threads[id].command_queue.size() > 0) { + Commande cmd = _bm._threads[id].command_queue.front(); + _bm._threads[id].command_queue.pop(); + + switch (cmd) { + case NOP: + UNDER_LOCK( cout << "Father does nothing to his child" << endl ); + break; + + case HOLD: + UNDER_LOCK( cout << "Father is sending SIGSTOP signal to his child" << endl ); + kill(child, SIGSTOP); + break; + + case RELEASE: + UNDER_LOCK( cout << "Father is sending SIGCONT signal to his child" << endl ); + kill(child, SIGCONT); + break; + + case TERM: + UNDER_LOCK( cout << "Father is sending SIGTERM signal to his child" << endl ); + kill(child, SIGTERM); + break; + + case KILL: + UNDER_LOCK( cout << "Father is sending SIGKILL signal to his child" << endl ); + kill(child, SIGKILL); + break; + + case ALTER: + break; + + default: + break; + } + } + + } + pthread_mutex_unlock(&_bm._threads_mutex); + // @@@ --------> SECTION CRITIQUE <-------- @@@ + + // On fait une petite pause pour ne pas surcharger inutilement le processeur + sleep(1); + + } + + + } + + + + + void BatchManager_Local::ThreadAdapter::fils() + { + Parametre param = _job.getParametre(); + Parametre::iterator it; + + try { + + // On se place dans le repertoire de travail + if ( (it = param.find(WORKDIR)) != param.end() ) { + string workdir = static_cast( (*it).second ); + chdir(workdir.c_str()); + } + + + + + // EXECUTABLE is MANDATORY, if missing, we exit with failure notification + char * execpath = NULL; + if (param.find(EXECUTABLE) != param.end()) { + string executable = _bm.exec_command(param); + execpath = new char [executable.size() + 1]; + strncpy(execpath, executable.c_str(), executable.size() + 1); + } else exit(1); + + string debug_command = execpath; + + string name = (param.find(NAME) != param.end()) ? param[NAME] : param[EXECUTABLE]; + + char ** argv = NULL; + if (param.find(ARGUMENTS) != param.end()) { + Versatile V = param[ARGUMENTS]; + + argv = new char * [V.size() + 2]; // 1 pour name et 1 pour le NULL terminal + + argv[0] = new char [name.size() + 1]; + strncpy(argv[0], name.c_str(), name.size() + 1); + + debug_command += string(" # ") + argv[0]; + + int i = 1; + for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++, i++) { + StringType argt = * static_cast(*it); + string arg = argt; + argv[i] = new char [arg.size() + 1]; + strncpy(argv[i], arg.c_str(), arg.size() + 1); + debug_command += string(" # ") + argv[i]; + } + + // assert (i == V.size() + 1) + argv[i] = NULL; + } + + + UNDER_LOCK( cout << "*** debug_command = " << debug_command << endl ); + + + + Environnement env = _job.getEnvironnement(); + + + char ** envp = NULL; + if(env.size() > 0) { + envp = new char * [env.size() + 1]; // 1 pour le NULL terminal + int i = 0; + for(Environnement::const_iterator it=env.begin(); it!=env.end(); it++, i++) { + const string & key = (*it).first; + const string & value = (*it).second; + ostringstream oss; + oss << key << "=" << value; + envp[i] = new char [oss.str().size() + 1]; + strncpy(envp[i], oss.str().c_str(), oss.str().size() + 1); + } + + // assert (i == env.size()) + envp[i] = NULL; + } + + + + + // On positionne les limites systeme imposees au fils + if (param.find(MAXCPUTIME) != param.end()) { + int maxcputime = param[MAXCPUTIME]; + struct rlimit limit; + limit.rlim_cur = maxcputime; + limit.rlim_max = int(maxcputime * 1.1); + setrlimit(RLIMIT_CPU, &limit); + } + + if (param.find(MAXDISKSIZE) != param.end()) { + int maxdisksize = param[MAXDISKSIZE]; + struct rlimit limit; + limit.rlim_cur = maxdisksize * 1024; + limit.rlim_max = int(maxdisksize * 1.1) * 1024; + setrlimit(RLIMIT_FSIZE, &limit); + } + + if (param.find(MAXRAMSIZE) != param.end()) { + int maxramsize = param[MAXRAMSIZE]; + struct rlimit limit; + limit.rlim_cur = maxramsize * 1024; + limit.rlim_max = int(maxramsize * 1.1) * 1024; + setrlimit(RLIMIT_AS, &limit); + } + + + + // On cree une session pour le fils de facon a ce qu'il ne soit pas + // detruit lorsque le shell se termine (le shell ouvre une session et + // tue tous les process appartenant a la session en quittant) + setsid(); + + + // On ferme les descripteurs de fichiers standards + //close(STDIN_FILENO); + //close(STDOUT_FILENO); + //close(STDERR_FILENO); + + + // On execute la commande du fils + execve(execpath, argv, envp); + + // No need to deallocate since nothing happens after a successful exec + + // Normalement on ne devrait jamais arriver ici + ofstream file_err("error.log"); + UNDER_LOCK( file_err << "Echec de l'appel a execve" << endl ); + + } catch (GenericException & e) { + + std::cerr << "Caught exception : " << e.type << " : " << e.message << std::endl; + } + + exit(99); + + } + + + + + void BatchManager_Local::kill_child_on_exit(void * p_pid) + { + pid_t child = * static_cast(p_pid); + + // On tue le fils + kill(child, SIGTERM); + + // Nota : on pourrait aussi faire a la suite un kill(child, SIGKILL) + // mais cette option n'est pas implementee pour le moment, car il est + // preferable de laisser le process fils se terminer normalement et seul. + + } + + void BatchManager_Local::delete_on_exit(void * arg) + { + ThreadAdapter * p_ta = static_cast(arg); + delete p_ta; + } + +} diff --git a/src/Batch/Batch_BatchManager_Local.hxx b/src/Batch/Batch_BatchManager_Local.hxx new file mode 100644 index 000000000..53091cab2 --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local.hxx @@ -0,0 +1,164 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifndef _BATCHMANAGER_LOCAL_H_ +#define _BATCHMANAGER_LOCAL_H_ + + +#include +#include +#include +#include +#include +#include "Batch_Job.hxx" +#include "Batch_JobId.hxx" +#include "Batch_JobInfo.hxx" +#include "Batch_JobInfo_Local.hxx" +#include "Batch_Job_Local.hxx" +#include "Batch_InvalidArgumentException.hxx" +#include "Batch_ConnexionFailureException.hxx" +#include "Batch_APIInternalFailureException.hxx" +#include "Batch_NotYetImplementedException.hxx" +#include "Batch_BatchManager.hxx" + +namespace Batch { + + class FactBatchManager; + + class BatchManager_Local : public BatchManager + { + private: + friend class ThreadAdapter; + class ThreadAdapter{ + public: + ThreadAdapter(BatchManager_Local & bm, const Job_Local & job); + static void * run(void * arg); + BatchManager_Local & getBatchManager() const { return _bm; }; + + protected: + BatchManager_Local & _bm; + const Job_Local _job; + + private: + void pere(pid_t child); + void fils(); + + }; + + typedef int Id; + + enum Commande { + NOP = 0, + HOLD, + RELEASE, + TERM, + KILL, + ALTER, + }; + + enum Status { + UNKNOWN = 0, + RUNNING, + STOPPED, + DONE, + DEAD, + }; + + struct Child { + pthread_t thread_id; + queue > command_queue; + pid_t pid; + int exit_code; + Status status; + Parametre param; + Environnement env; + }; + + + + public: + // Constructeur et destructeur + BatchManager_Local(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host + virtual ~BatchManager_Local(); + + // Recupere le nom du serveur par defaut + // static string BatchManager_Local::getDefaultServer(); + + // Methodes pour le controle des jobs + virtual const JobId submitJob(const Job & job); // soumet un job au gestionnaire + virtual void deleteJob(const JobId & jobid); // retire un job du gestionnaire + virtual void holdJob(const JobId & jobid); // suspend un job en file d'attente + virtual void releaseJob(const JobId & jobid); // relache un job suspendu + virtual void alterJob(const JobId & jobid, const Parametre & param, const Environnement & env); // modifie un job en file d'attente + virtual void alterJob(const JobId & jobid, const Parametre & param); // modifie un job en file d'attente + virtual void alterJob(const JobId & jobid, const Environnement & env); // modifie un job en file d'attente + virtual JobInfo queryJob(const JobId & jobid); // renvoie l'etat du job + virtual bool isRunning(const JobId & jobid); // teste si un job est present en machine + + virtual void setParametre(const JobId & jobid, const Parametre & param) { return alterJob(jobid, param); } // modifie un job en file d'attente + virtual void setEnvironnement(const JobId & jobid, const Environnement & env) { return alterJob(jobid, env); } // modifie un job en file d'attente + + + protected: + int _connect; // Local connect id + pthread_mutex_t _threads_mutex; + map _threads; + + // Methode abstraite qui renvoie la commande de copie du fichier source en destination + virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const = 0; + + // Methode abstraite qui renvoie la commande a executer + virtual string exec_command(Parametre & param) const = 0; + + // Methode abstraite qui renvoie la commande d'effacement du fichier + virtual string remove_command(const string & host_destination, const string & destination) const = 0; + + private: + virtual pthread_t submit(const Job_Local & job); + virtual void cancel(pthread_t thread_id); + static void kill_child_on_exit(void * p_pid); + static void delete_on_exit(void * arg); + Id nextId(); // Retourne un identifiant unique pour un thread (clef de la map) + Id getIdByThread_id(pthread_t thread_id); + Id registerThread_id(pthread_t thread_id); + pthread_mutex_t _thread_id_id_association_mutex; + pthread_cond_t _thread_id_id_association_cond; + map _thread_id_id_association; + +#ifdef SWIG + public: + // Recupere le l'identifiant d'un job deja soumis au BatchManager + //virtual const JobId getJobIdByReference(const string & ref) { return BatchManager::getJobIdByReference(ref); } + virtual const JobId getJobIdByReference(const char * ref) { return BatchManager::getJobIdByReference(ref); } +#endif + + }; + +} + +#endif diff --git a/src/Batch/Batch_BatchManager_Local_RSH.cxx b/src/Batch/Batch_BatchManager_Local_RSH.cxx new file mode 100644 index 000000000..e93ede663 --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local_RSH.cxx @@ -0,0 +1,144 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local_RSH.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Batch_IOMutex.hxx" +#include "Batch_BatchManager_Local_RSH.hxx" + +#ifndef RM +#error "RM undefined. You must set RM to a valid path to a rm-like command." +#endif + +#ifndef RCP +#error "RCP undefined. You must set RCP to a valid path to a rcp-like command." +#endif + +#ifndef RSH +#error "RSH undefined. You must set RSH to a valid path to a rsh-like command." +#endif + +namespace Batch { + + + // Constructeur + BatchManager_Local_RSH::BatchManager_Local_RSH(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager_Local(parent, host) + { + } + + // Destructeur + BatchManager_Local_RSH::~BatchManager_Local_RSH() + { + } + + + // Methode abstraite qui renvoie la commande de copie du fichier source en destination + string BatchManager_Local_RSH::copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const + { + ostringstream fullsource; + if (host_source.size() == 0) { + fullsource << "localhost:"; + } else { + fullsource << host_source << ":"; + } + fullsource << source; + + ostringstream fulldestination; + if (host_destination.size() == 0) { + fulldestination << "localhost:"; + } else { + fulldestination << host_destination << ":"; + } + fulldestination << destination; + + ostringstream copy_cmd; + copy_cmd << RCP << " " << fullsource.str() << " " << fulldestination.str(); + return copy_cmd.str(); + } + + // Methode abstraite qui renvoie la commande a executer + string BatchManager_Local_RSH::exec_command(Parametre & param) const + { + ostringstream exec_sub_cmd; + exec_sub_cmd << param[EXECUTABLE]; + + if (param.find(ARGUMENTS) != param.end()) { + Versatile V = param[ARGUMENTS]; + for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++) { + StringType argt = * static_cast(*it); + string arg = argt; + exec_sub_cmd << " " << arg; + } + } + + + Versatile new_arguments; + new_arguments.setMaxSize(0); + new_arguments = string(param[EXECUTIONHOST]); + + + if (param.find(USER) != param.end()) { + new_arguments += "-l"; + new_arguments += string(param[USER]); + } + + new_arguments += exec_sub_cmd.str(); + + param[ARGUMENTS] = new_arguments; + + // Sous Linux on est oblige de modifier ces deux parametres pour faire fonctionner la commande rsh + param[EXECUTABLE] = RSH; + param.erase(NAME); + + return RSH; + } + + // Methode qui renvoie la commande d'effacement du fichier + string BatchManager_Local_RSH::remove_command(const string & host_destination, const string & destination) const + { + string host = (host_destination.size()) ? host_destination : "localhost:"; + + ostringstream remove_cmd; + remove_cmd << RSH << " " << host << " \"" << RM << " " << destination << "\""; + return remove_cmd.str(); + } +} diff --git a/src/Batch/Batch_BatchManager_Local_RSH.hxx b/src/Batch/Batch_BatchManager_Local_RSH.hxx new file mode 100644 index 000000000..be7a4a04b --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local_RSH.hxx @@ -0,0 +1,74 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local_RSH.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifndef _BATCHMANAGER_LOCAL_RSH_H_ +#define _BATCHMANAGER_LOCAL_RSH_H_ + + +#include +#include +#include +#include +#include +#include "Batch_Job.hxx" +#include "Batch_JobId.hxx" +#include "Batch_JobInfo.hxx" +#include "Batch_JobInfo_Local.hxx" +#include "Batch_Job_Local.hxx" +#include "Batch_InvalidArgumentException.hxx" +#include "Batch_ConnexionFailureException.hxx" +#include "Batch_APIInternalFailureException.hxx" +#include "Batch_NotYetImplementedException.hxx" +#include "Batch_BatchManager_Local.hxx" + +namespace Batch { + + class FactBatchManager; + + class BatchManager_Local_RSH : public BatchManager_Local + { + public: + // Constructeur et destructeur + BatchManager_Local_RSH(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host + virtual ~BatchManager_Local_RSH(); + + protected: + // Methode abstraite qui renvoie la commande de copie du fichier source en destination + virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const; + + // Methode abstraite qui renvoie la commande a executer + virtual string exec_command(Parametre & param) const; + + // Methode qui renvoie la commande d'effacement du fichier + virtual string remove_command(const string & host_destination, const string & destination) const; + + }; + +} + +#endif diff --git a/src/Batch/Batch_BatchManager_Local_SH.cxx b/src/Batch/Batch_BatchManager_Local_SH.cxx new file mode 100644 index 000000000..be9b990ea --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local_SH.cxx @@ -0,0 +1,111 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local_SH.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Batch_IOMutex.hxx" +#include "Batch_BatchManager_Local_SH.hxx" + +#ifndef RM +#error "RM undefined. You must set RM to a valid path to a rm-like command." +#endif + +#ifndef CP +#error "CP undefined. You must set CP to a valid path to a cp-like command." +#endif + +#ifndef SH +#error "SH undefined. You must set SH to a valid path to a sh-like command." +#endif + +namespace Batch { + + + // Constructeur + BatchManager_Local_SH::BatchManager_Local_SH(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager_Local(parent, host) + { + } + + // Destructeur + BatchManager_Local_SH::~BatchManager_Local_SH() + { + } + + + // Methode qui renvoie la commande de copie du fichier source en destination + string BatchManager_Local_SH::copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const + { + ostringstream copy_cmd; + copy_cmd << CP << " " << source << " " << destination; + return copy_cmd.str(); + } + + // Methode qui renvoie la commande a executer + string BatchManager_Local_SH::exec_command(Parametre & param) const + { + ostringstream exec_sub_cmd; + exec_sub_cmd << param[EXECUTABLE]; + + if (param.find(ARGUMENTS) != param.end()) { + Versatile V = param[ARGUMENTS]; + for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++) { + StringType argt = * static_cast(*it); + string arg = argt; + exec_sub_cmd << " " << arg; + } + } + + param[ARGUMENTS] = "-c"; + param[ARGUMENTS] += exec_sub_cmd.str(); + + return SH; + } + + // Methode qui renvoie la commande d'effacement du fichier + string BatchManager_Local_SH::remove_command(const string & host_destination, const string & destination) const + { + ostringstream remove_cmd; + remove_cmd << RM << " " << destination; + return remove_cmd.str(); + } + +} diff --git a/src/Batch/Batch_BatchManager_Local_SH.hxx b/src/Batch/Batch_BatchManager_Local_SH.hxx new file mode 100644 index 000000000..c3de1af7a --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local_SH.hxx @@ -0,0 +1,74 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local_SH.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifndef _BATCHMANAGER_LOCAL_SH_H_ +#define _BATCHMANAGER_LOCAL_SH_H_ + + +#include +#include +#include +#include +#include +#include "Batch_Job.hxx" +#include "Batch_JobId.hxx" +#include "Batch_JobInfo.hxx" +#include "Batch_JobInfo_Local.hxx" +#include "Batch_Job_Local.hxx" +#include "Batch_InvalidArgumentException.hxx" +#include "Batch_ConnexionFailureException.hxx" +#include "Batch_APIInternalFailureException.hxx" +#include "Batch_NotYetImplementedException.hxx" +#include "Batch_BatchManager_Local.hxx" + +namespace Batch { + + class FactBatchManager; + + class BatchManager_Local_SH : public BatchManager_Local + { + public: + // Constructeur et destructeur + BatchManager_Local_SH(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host + virtual ~BatchManager_Local_SH(); + + protected: + // Methode qui renvoie la commande de copie du fichier source en destination + virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const; + + // Methode qui renvoie la commande a executer + virtual string exec_command(Parametre & param) const; + + // Methode qui renvoie la commande d'effacement du fichier + virtual string remove_command(const string & host_destination, const string & destination) const; + + }; + +} + +#endif diff --git a/src/Batch/Batch_BatchManager_Local_SSH.cxx b/src/Batch/Batch_BatchManager_Local_SSH.cxx new file mode 100644 index 000000000..696d7473e --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local_SSH.cxx @@ -0,0 +1,144 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local_SSH.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Batch_IOMutex.hxx" +#include "Batch_BatchManager_Local_SSH.hxx" + +#ifndef RM +#error "RM undefined. You must set RM to a valid path to a rm-like command." +#endif + +#ifndef RCP +#error "RCP undefined. You must set RCP to a valid path to a scp-like command." +#endif + +#ifndef SSH +#error "SSH undefined. You must set SSH to a valid path to a ssh-like command." +#endif + +namespace Batch { + + + // Constructeur + BatchManager_Local_SSH::BatchManager_Local_SSH(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager_Local(parent, host) + { + } + + // Destructeur + BatchManager_Local_SSH::~BatchManager_Local_SSH() + { + } + + + // Methode abstraite qui renvoie la commande de copie du fichier source en destination + string BatchManager_Local_SSH::copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const + { + ostringstream fullsource; + if (host_source.size() == 0) { + fullsource << "localhost:"; + } else { + fullsource << host_source << ":"; + } + fullsource << source; + + ostringstream fulldestination; + if (host_destination.size() == 0) { + fulldestination << "localhost:"; + } else { + fulldestination << host_destination << ":"; + } + fulldestination << destination; + + ostringstream copy_cmd; + copy_cmd << RCP << " " << fullsource.str() << " " << fulldestination.str(); + return copy_cmd.str(); + } + + // Methode abstraite qui renvoie la commande a executer + string BatchManager_Local_SSH::exec_command(Parametre & param) const + { + ostringstream exec_sub_cmd; + exec_sub_cmd << param[EXECUTABLE]; + + if (param.find(ARGUMENTS) != param.end()) { + Versatile V = param[ARGUMENTS]; + for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++) { + StringType argt = * static_cast(*it); + string arg = argt; + exec_sub_cmd << " " << arg; + } + } + + + Versatile new_arguments; + new_arguments.setMaxSize(0); + new_arguments = string(param[EXECUTIONHOST]); + + + if (param.find(USER) != param.end()) { + new_arguments += "-l"; + new_arguments += string(param[USER]); + } + + new_arguments += exec_sub_cmd.str(); + + param[ARGUMENTS] = new_arguments; + + // Sous Linux on est oblige de modifier ces deux parametres pour faire fonctionner la commande rsh + param[EXECUTABLE] = SSH; + param.erase(NAME); + + return SSH; + } + + // Methode qui renvoie la commande d'effacement du fichier + string BatchManager_Local_SSH::remove_command(const string & host_destination, const string & destination) const + { + string host = (host_destination.size()) ? host_destination : "localhost:"; + + ostringstream remove_cmd; + remove_cmd << SSH << " " << host << " \"" << RM << " " << destination << "\""; + return remove_cmd.str(); + } +} diff --git a/src/Batch/Batch_BatchManager_Local_SSH.hxx b/src/Batch/Batch_BatchManager_Local_SSH.hxx new file mode 100644 index 000000000..b45314f3c --- /dev/null +++ b/src/Batch/Batch_BatchManager_Local_SSH.hxx @@ -0,0 +1,74 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * BatchManager_Local_SSH.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Thu Nov 6 10:17:22 2003 + * Projet : Salome 2 + * + */ + +#ifndef _BATCHMANAGER_LOCAL_SSH_H_ +#define _BATCHMANAGER_LOCAL_SSH_H_ + + +#include +#include +#include +#include +#include +#include "Batch_Job.hxx" +#include "Batch_JobId.hxx" +#include "Batch_JobInfo.hxx" +#include "Batch_JobInfo_Local.hxx" +#include "Batch_Job_Local.hxx" +#include "Batch_InvalidArgumentException.hxx" +#include "Batch_ConnexionFailureException.hxx" +#include "Batch_APIInternalFailureException.hxx" +#include "Batch_NotYetImplementedException.hxx" +#include "Batch_BatchManager_Local.hxx" + +namespace Batch { + + class FactBatchManager; + + class BatchManager_Local_SSH : public BatchManager_Local + { + public: + // Constructeur et destructeur + BatchManager_Local_SSH(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host + virtual ~BatchManager_Local_SSH(); + + protected: + // Methode abstraite qui renvoie la commande de copie du fichier source en destination + virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const; + + // Methode abstraite qui renvoie la commande a executer + virtual string exec_command(Parametre & param) const; + + // Methode qui renvoie la commande d'effacement du fichier + virtual string remove_command(const string & host_destination, const string & destination) const; + + }; + +} + +#endif diff --git a/src/Batch/Batch_FactBatchManager_Local.cxx b/src/Batch/Batch_FactBatchManager_Local.cxx new file mode 100644 index 000000000..149e54f78 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#include +#include "Batch_BatchManager_Local.hxx" +#include "Batch_FactBatchManager_Local.hxx" +//#include "utilities.h" + +namespace Batch { + +// static FactBatchManager_Local sFBM_Local; + + // Constructeur + FactBatchManager_Local::FactBatchManager_Local() : FactBatchManager("Local") + { + // Nothing to do + } + + // Destructeur + FactBatchManager_Local::~FactBatchManager_Local() + { + // Nothing to do + } + + // Functor +// BatchManager * FactBatchManager_Local::operator() (const char * hostname) const +// { +// // MESSAGE("Building new BatchManager_Local on host '" << hostname << "'"); +// return new BatchManager_Local(this, hostname); +// } + + +} diff --git a/src/Batch/Batch_FactBatchManager_Local.hxx b/src/Batch/Batch_FactBatchManager_Local.hxx new file mode 100644 index 000000000..77b5d11b3 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local.hxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#ifndef _FACTBATCHMANAGER_LOCAL_H_ +#define _FACTBATCHMANAGER_LOCAL_H_ + +using namespace std; +#include +#include +#include "Batch_FactBatchManager.hxx" + +namespace Batch { + + class BatchManager_Local; + + class FactBatchManager_Local : public FactBatchManager + { + public: + // Constructeur et destructeur + FactBatchManager_Local(); + virtual ~FactBatchManager_Local(); + + virtual BatchManager * operator() (const char * hostname) const = 0; + + protected: + + private: + + }; + +} + +#endif diff --git a/src/Batch/Batch_FactBatchManager_Local_RSH.cxx b/src/Batch/Batch_FactBatchManager_Local_RSH.cxx new file mode 100644 index 000000000..985146e58 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local_RSH.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local_RSH.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#include +#include "Batch_BatchManager_Local_RSH.hxx" +#include "Batch_FactBatchManager_Local_RSH.hxx" +//#include "utilities.h" + +namespace Batch { + + static FactBatchManager_Local_RSH sFBM_Local_RSH; + + // Constructeur + FactBatchManager_Local_RSH::FactBatchManager_Local_RSH() : FactBatchManager("RSH") + { + // Nothing to do + } + + // Destructeur + FactBatchManager_Local_RSH::~FactBatchManager_Local_RSH() + { + // Nothing to do + } + + // Functor + BatchManager * FactBatchManager_Local_RSH::operator() (const char * hostname) const + { + // MESSAGE("Building new BatchManager_Local_RSH on host '" << hostname << "'"); + return new BatchManager_Local_RSH(this, hostname); + } + + +} diff --git a/src/Batch/Batch_FactBatchManager_Local_RSH.hxx b/src/Batch/Batch_FactBatchManager_Local_RSH.hxx new file mode 100644 index 000000000..bf10abd14 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local_RSH.hxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local_RSH.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#ifndef _FACTBATCHMANAGER_LOCAL_RSH_H_ +#define _FACTBATCHMANAGER_LOCAL_RSH_H_ + +using namespace std; +#include +#include +#include "Batch_FactBatchManager.hxx" + +namespace Batch { + + class BatchManager_Local_RSH; + + class FactBatchManager_Local_RSH : public FactBatchManager + { + public: + // Constructeur et destructeur + FactBatchManager_Local_RSH(); + virtual ~FactBatchManager_Local_RSH(); + + virtual BatchManager * operator() (const char * hostname) const; + + protected: + + private: + + }; + +} + +#endif diff --git a/src/Batch/Batch_FactBatchManager_Local_SH.cxx b/src/Batch/Batch_FactBatchManager_Local_SH.cxx new file mode 100644 index 000000000..03c789260 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local_SH.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local_SH.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#include +#include "Batch_BatchManager_Local_SH.hxx" +#include "Batch_FactBatchManager_Local_SH.hxx" +//#include "utilities.h" + +namespace Batch { + + static FactBatchManager_Local_SH sFBM_Local_SH; + + // Constructeur + FactBatchManager_Local_SH::FactBatchManager_Local_SH() : FactBatchManager("SH") + { + // Nothing to do + } + + // Destructeur + FactBatchManager_Local_SH::~FactBatchManager_Local_SH() + { + // Nothing to do + } + + // Functor + BatchManager * FactBatchManager_Local_SH::operator() (const char * hostname) const + { + // MESSAGE("Building new BatchManager_Local_SH on host '" << hostname << "'"); + return new BatchManager_Local_SH(this, hostname); + } + + +} diff --git a/src/Batch/Batch_FactBatchManager_Local_SH.hxx b/src/Batch/Batch_FactBatchManager_Local_SH.hxx new file mode 100644 index 000000000..8ac703a74 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local_SH.hxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local_SH.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#ifndef _FACTBATCHMANAGER_LOCAL_SH_H_ +#define _FACTBATCHMANAGER_LOCAL_SH_H_ + +using namespace std; +#include +#include +#include "Batch_FactBatchManager.hxx" + +namespace Batch { + + class BatchManager_Local_SH; + + class FactBatchManager_Local_SH : public FactBatchManager + { + public: + // Constructeur et destructeur + FactBatchManager_Local_SH(); + virtual ~FactBatchManager_Local_SH(); + + virtual BatchManager * operator() (const char * hostname) const; + + protected: + + private: + + }; + +} + +#endif diff --git a/src/Batch/Batch_FactBatchManager_Local_SSH.cxx b/src/Batch/Batch_FactBatchManager_Local_SSH.cxx new file mode 100644 index 000000000..c26ebb9ec --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local_SSH.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local_SSH.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#include +#include "Batch_BatchManager_Local_SSH.hxx" +#include "Batch_FactBatchManager_Local_SSH.hxx" +//#include "utilities.h" + +namespace Batch { + + static FactBatchManager_Local_SSH sFBM_Local_SSH; + + // Constructeur + FactBatchManager_Local_SSH::FactBatchManager_Local_SSH() : FactBatchManager("SSH") + { + // Nothing to do + } + + // Destructeur + FactBatchManager_Local_SSH::~FactBatchManager_Local_SSH() + { + // Nothing to do + } + + // Functor + BatchManager * FactBatchManager_Local_SSH::operator() (const char * hostname) const + { + // MESSAGE("Building new BatchManager_Local_SSH on host '" << hostname << "'"); + return new BatchManager_Local_SSH(this, hostname); + } + + +} diff --git a/src/Batch/Batch_FactBatchManager_Local_SSH.hxx b/src/Batch/Batch_FactBatchManager_Local_SSH.hxx new file mode 100644 index 000000000..2c3c14e03 --- /dev/null +++ b/src/Batch/Batch_FactBatchManager_Local_SSH.hxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * FactBatchManager_Local_SSH.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Date : Septembre 2004 + * Projet : SALOME 2 + * + */ + +#ifndef _FACTBATCHMANAGER_LOCAL_SSH_H_ +#define _FACTBATCHMANAGER_LOCAL_SSH_H_ + +using namespace std; +#include +#include +#include "Batch_FactBatchManager.hxx" + +namespace Batch { + + class BatchManager_Local_SSH; + + class FactBatchManager_Local_SSH : public FactBatchManager + { + public: + // Constructeur et destructeur + FactBatchManager_Local_SSH(); + virtual ~FactBatchManager_Local_SSH(); + + virtual BatchManager * operator() (const char * hostname) const; + + protected: + + private: + + }; + +} + +#endif diff --git a/src/Batch/Batch_IOMutex.cxx b/src/Batch/Batch_IOMutex.cxx new file mode 100644 index 000000000..4cf191811 --- /dev/null +++ b/src/Batch/Batch_IOMutex.cxx @@ -0,0 +1,35 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * IOMutex.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Fri Nov 14 11:00:39 2003 + * Projet : Salome 2 + * + */ + +#include "Batch_IOMutex.hxx" + +namespace Batch { + + pthread_mutex_t IOMutex = PTHREAD_MUTEX_INITIALIZER; + +} diff --git a/src/Batch/Batch_IOMutex.hxx b/src/Batch/Batch_IOMutex.hxx new file mode 100644 index 000000000..c4aaa0fa0 --- /dev/null +++ b/src/Batch/Batch_IOMutex.hxx @@ -0,0 +1,44 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * IOMutex.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Fri Nov 14 11:00:39 2003 + * Projet : Salome 2 + * + */ + +#ifndef _IOMUTEX_H_ +#define _IOMUTEX_H_ + +#include + +#define LOCK_IO { pthread_mutex_lock(&Batch::IOMutex) ; } +#define UNLOCK_IO { pthread_mutex_unlock(&Batch::IOMutex) ; } +#define UNDER_LOCK(statement) { LOCK_IO ; { statement ; } ; UNLOCK_IO ; } + +namespace Batch { + + extern pthread_mutex_t IOMutex; + +} + +#endif diff --git a/src/Batch/Batch_JobInfo_Local.cxx b/src/Batch/Batch_JobInfo_Local.cxx new file mode 100644 index 000000000..18a5939b6 --- /dev/null +++ b/src/Batch/Batch_JobInfo_Local.cxx @@ -0,0 +1,51 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * JobInfo_Local.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Fri Nov 21 09:42:06 2003 + * Projet : Salome 2 + * + */ + +#include +#include "Batch_Parametre.hxx" +#include "Batch_Environnement.hxx" +#include "Batch_JobInfo_Local.hxx" + +namespace Batch { + + // Constructeurs + JobInfo_Local::JobInfo_Local(const Parametre & param, const Environnement & env) : + JobInfo(param, env) + { + // Nothing to do + } + + + // Destructeur + JobInfo_Local::~JobInfo_Local() + { + // Nothing to do + } + + +} diff --git a/src/Batch/Batch_JobInfo_Local.hxx b/src/Batch/Batch_JobInfo_Local.hxx new file mode 100644 index 000000000..98cd29699 --- /dev/null +++ b/src/Batch/Batch_JobInfo_Local.hxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * JobInfo_Local.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Fri Nov 21 09:42:05 2003 + * Projet : Salome 2 + * + */ + +#ifndef _JOBINFO_LOCAL_H_ +#define _JOBINFO_LOCAL_H_ + +#include +#include "Batch_JobInfo.hxx" + +namespace Batch { + + class JobInfo_Local : public JobInfo + { + public: + // Constructeurs et destructeur + JobInfo_Local() {}; + JobInfo_Local(const Parametre & param, const Environnement & env); + virtual ~JobInfo_Local(); + + // Constructeur par recopie + JobInfo_Local(const JobInfo_Local & jinfo) : JobInfo(jinfo) {}; + + + protected: + + private: + + }; + +} + +#endif diff --git a/src/Batch/Batch_Job_Local.cxx b/src/Batch/Batch_Job_Local.cxx new file mode 100644 index 000000000..bc276f819 --- /dev/null +++ b/src/Batch/Batch_Job_Local.cxx @@ -0,0 +1,99 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * Job_Local.cxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Fri Nov 14 11:00:39 2003 + * Projet : Salome 2 + * + */ + +#include +#include +#include +#include "Batch_Job_Local.hxx" + +namespace Batch { + + // Constructeur + Job_Local::Job_Local(const Job & job) : + _command(), _param(job.getParametre()), _env(job.getEnvironnement()) + { + // On positionne le nom du EXECUTIONHOST a "localhost" s'il n'est pas precise + if ( _param.find(EXECUTIONHOST) == _param.end() ) { + _param[EXECUTIONHOST] = "localhost"; + } + + // On convertit les objets Parametre et Environnement en liste chainee d'attributs + operateur + addEnvironnement( _env ); + addParametre ( _param ); + + } + + + // Destructeur + Job_Local::~Job_Local() + { + } + + + void Job_Local::addParametre(const Parametre & P) + { + // En dernier, on ajoute le chemin complet de la commande + _command += P[EXECUTABLE].str(); + } + + + void Job_Local::addEnvironnement(const Environnement & E) + { + for(Environnement::const_iterator it=E.begin(); it != E.end(); it++) { + string variable = (*it).first; + string value = (*it).second; + + // On remplace toutes les occurences de single-quote par backslash-single-quote + for(int pos=0; pos < value.size(); pos++) { + pos = value.find("'", pos); + if ( (pos < 0) || (pos > value.size()) ) break; + value.replace(pos, 1, "\'"); + } + _command += variable + "='" + value + "' "; + } + } + + string Job_Local::getCommand(void) const { + return _command; + } + + + // Retourne l'objet Parametre + Parametre Job_Local::getParametre() const + { + return _param; + } + + // Retourne l'objet Environnement + Environnement Job_Local::getEnvironnement() const + { + return _env; + } + + +} diff --git a/src/Batch/Batch_Job_Local.hxx b/src/Batch/Batch_Job_Local.hxx new file mode 100644 index 000000000..dd8de8e0c --- /dev/null +++ b/src/Batch/Batch_Job_Local.hxx @@ -0,0 +1,68 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/* + * Job_Local.hxx : + * + * Auteur : Ivan DUTKA-MALEN - EDF R&D + * Mail : mailto:ivan.dutka-malen@der.edf.fr + * Date : Fri Nov 14 11:00:39 2003 + * Projet : Salome 2 + * + */ + +#ifndef _JOB_LOCAL_H_ +#define _JOB_LOCAL_H_ + +#include "Batch_Parametre.hxx" +#include "Batch_Environnement.hxx" +#include "Batch_Job.hxx" + +namespace Batch { + + class Job_Local + { + public: + // Constructeur et destructeur + Job_Local(const Job & job); + virtual ~Job_Local(); + + // Retourne la commande _command + virtual std::string getCommand(void) const; + + // Retourne l'objet Parametre + virtual Parametre getParametre() const; + + // Retourne l'objet Environnement + virtual Environnement getEnvironnement() const; + + + protected: + std::string _command; + Parametre _param; + Environnement _env; + + private: + void addParametre(const Parametre & P); + void addEnvironnement(const Environnement & E); + + }; + +} + +#endif diff --git a/src/Batch/Makefile.am b/src/Batch/Makefile.am new file mode 100644 index 000000000..095173c50 --- /dev/null +++ b/src/Batch/Makefile.am @@ -0,0 +1,213 @@ +####################################### library +# SALOME Container : implementation of container and engine for Kernel +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.in +# Author : EDF +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +LIB_INCLUDES = \ + Batch_APIInternalFailureException.hxx \ + Batch_BatchManager.hxx \ + Batch_BatchManagerCatalog.hxx \ + Batch_BoolType.hxx \ + Batch_CharType.hxx \ + Batch_ConnexionFailureException.hxx \ + Batch_Couple.hxx \ + Batch_CoupleType.hxx \ + Batch_Date.hxx \ + Batch_DateType.hxx \ + Batch_Environnement.hxx \ + Batch_FactBatchManager.hxx \ + Batch_GenericException.hxx \ + Batch_GenericType.hxx \ + Batch_IntType.hxx \ + Batch_InvalidArgumentException.hxx \ + Batch_InvalidKeyException.hxx \ + Batch_Job.hxx \ + Batch_JobId.hxx \ + Batch_JobInfo.hxx \ + Batch_ListIsFullException.hxx \ + Batch_LongType.hxx \ + Batch_MapKey.hxx \ + Batch_NotYetImplementedException.hxx \ + Batch_Parametre.hxx \ + Batch_PyVersatile.hxx \ + Batch_RunTimeException.hxx \ + Batch_StringType.hxx \ + Batch_TypeMismatchException.hxx + + +LIB_SRC = \ + Batch_APIInternalFailureException.cxx \ + Batch_BatchManager.cxx \ + Batch_BatchManagerCatalog.cxx \ + Batch_BoolType.cxx \ + Batch_CharType.cxx \ + Batch_ConnexionFailureException.cxx \ + Batch_Couple.cxx \ + Batch_CoupleType.cxx \ + Batch_Date.cxx \ + Batch_DateType.cxx \ + Batch_Environnement.cxx \ + Batch_FactBatchManager.cxx \ + Batch_GenericException.cxx \ + Batch_GenericType.cxx \ + Batch_IntType.cxx \ + Batch_InvalidArgumentException.cxx \ + Batch_InvalidKeyException.cxx \ + Batch_Job.cxx \ + Batch_JobId.cxx \ + Batch_JobInfo.cxx \ + Batch_ListIsFullException.cxx \ + Batch_LongType.cxx \ + Batch_MapKey.cxx \ + Batch_NotYetImplementedException.cxx \ + Batch_Parametre.cxx \ + Batch_PyVersatile.cxx \ + Batch_RunTimeException.cxx \ + Batch_StringType.cxx \ + Batch_TypeMismatchException.cxx + + +LIB_CPPFLAGS = \ + @PYTHON_INCLUDES@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace + +LIB_LIBADD = \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la + + +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Special add for local batch system +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +if WITH_LOCAL +LIB_INCLUDES +=\ + Batch_Versatile.hxx \ + Batch_BatchManager_Local.hxx \ + Batch_BatchManager_Local_RSH.hxx \ + Batch_BatchManager_Local_SH.hxx \ + Batch_BatchManager_Local_SSH.hxx \ + Batch_FactBatchManager_Local.hxx \ + Batch_FactBatchManager_Local_RSH.hxx \ + Batch_FactBatchManager_Local_SH.hxx \ + Batch_FactBatchManager_Local_SSH.hxx \ + Batch_JobInfo_Local.hxx \ + Batch_Job_Local.hxx \ + Batch_IOMutex.hxx + +LIB_SRC +=\ + Batch_Versatile.cxx \ + Batch_BatchManager_Local.cxx \ + Batch_BatchManager_Local_RSH.cxx \ + Batch_BatchManager_Local_SH.cxx \ + Batch_BatchManager_Local_SSH.cxx \ + Batch_FactBatchManager_Local.cxx \ + Batch_FactBatchManager_Local_RSH.cxx \ + Batch_FactBatchManager_Local_SH.cxx \ + Batch_FactBatchManager_Local_SSH.cxx \ + Batch_JobInfo_Local.cxx \ + Batch_Job_Local.cxx \ + Batch_IOMutex.cxx + +LIB_CPPFLAGS += -DHAVE_CONFIG_H + +endif + +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Special add for openpbs batch system +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +if WITH_OPENPBS +LIB_INCLUDES += \ + Batch_BatchManager_PBS.hxx \ + Batch_FactBatchManager_PBS.hxx \ + Batch_JobInfo_PBS.hxx \ + Batch_Job_PBS.hxx + +LIB_SRC +=\ + Batch_BatchManager_PBS.cxx \ + Batch_FactBatchManager_PBS.cxx \ + Batch_JobInfo_PBS.cxx \ + Batch_Job_PBS.cxx + +LIB_CPPFLAGS += @OPENPBS_INCLUDES@ +LIB_LIBADD += @OPENPBS_LIBDIR@ @OPENPBS_LIBS@ + +endif + +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Special add for lsf batch system +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +if WITH_LSF +LIB_INCLUDES += \ + Batch_BatchManager_LSF.hxx \ + Batch_FactBatchManager_LSF.hxx \ + Batch_JobInfo_LSF.hxx \ + Batch_Job_LSF.hxx + +LIB_SRC += \ + Batch_BatchManager_LSF.cxx \ + Batch_FactBatchManager_LSF.cxx \ + Batch_JobInfo_LSF.cxx \ + Batch_Job_LSF.cxx + +LIB_CPPFLAGS += @LSF_INCLUDES@ +LIB_LIBADD += @LSF_LIBDIR@ @LSF_LIBS@ +endif + + + + +salomeinclude_HEADERS = $(LIB_INCLUDES) + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeBatch.la +libSalomeBatch_la_SOURCES = $(LIB_SRC) +libSalomeBatch_la_CPPFLAGS = \ + @PYTHON_INCLUDES@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(top_builddir)/salome_adm/unix \ + $(LIB_CPPFLAGS) + +libSalomeBatch_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeBatch_la_LIBADD = \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + $(LIB_LIBADD) diff --git a/src/Batch_SWIG/Makefile.am b/src/Batch_SWIG/Makefile.am new file mode 100644 index 000000000..71154d513 --- /dev/null +++ b/src/Batch_SWIG/Makefile.am @@ -0,0 +1,86 @@ +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Swig targets +# =============================================================== +# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm) +# +# Step 1: build the wrapping source files with swig +# +# libBatch_Swig.i -- swig --> swig_wrap.cpp +# libBatch_Swig.py +# +# Step 2: build the dynamic library from cpp built source files and +# dependant libraries. +# +# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libBatch_Swig.la +# + | +# dependant libs | +# +# The file libBatch_Swig.py will be installed in +# /lib/python/site-package/salome. +# The library will be installed in the common place. +# + +BUILT_SOURCES = swig_wrap.cpp + +SWIG_FLAGS = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../Batch +SWIG_SOURCES = libBatch_Swig.i libBatch_Swig_exception.i libBatch_Swig_typemap.i + +pkgpython_PYTHON = libBatch_Swig.py +pkgpyexec_LTLIBRARIES = _libBatch_Swig.la +_libBatch_Swig_la_SOURCES = $(BUILT_SOURCES) $(SWIG_SOURCES) +_libBatch_Swig_la_CPPFLAGS = @PYTHON_INCLUDES@ -I$(srcdir) -I$(srcdir)/../Batch +_libBatch_Swig_la_LDFLAGS = -module +_libBatch_Swig_la_LIBADD = ../Batch/libSalomeBatch.la @PYTHON_LIBS@ + +if WITH_OPENPBS +_libBatch_Swig_la_CPPFLAGS += @OPENPBS_INCLUDES@ +_libBatch_Swig_la_LIBADD += @OPENPBS_LIBDIR@ @OPENPBS_LIBS@ +endif + +swig_wrap.cpp : $(SWIG_SOURCES) + $(SWIG) $(SWIG_FLAGS) -o $@ $< + +CLEANFILES = swig_wrap.cpp + + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +# Scripts to be installed. +dist_salomescript_SCRIPTS = Batch_test.py + +# You don't need to specify libBatch_Swig.py. It is automatically +# installed by means of the swig target pkgpython_PYTHON. diff --git a/src/CASCatch/CASCatch.hxx b/src/CASCatch/CASCatch.hxx new file mode 100644 index 000000000..03541f951 --- /dev/null +++ b/src/CASCatch/CASCatch.hxx @@ -0,0 +1,55 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef _CASCatch_HeaderFile +#define _CASCatch_HeaderFile + +#include +#include + + +#ifdef try +# undef try +#endif + +#ifdef catch +# undef catch +#endif + +#ifdef NO_CXX_EXCEPTION +# if defined(DO_ABORT) +# define CASCatch_TRY \ + Standard_ErrorHandler _Function; \ + K_SETJMP = 1 ; \ + if(DoesNotAbort(_Function)) +# else //If DO_ABORT is not defined +# define CASCatch_TRY \ + Standard_ErrorHandler _Function; \ + if(DoesNotAbort(_Function)) +# endif //DO_ABORT +# define CASCatch_CATCH(Error) \ + else if(_Function.Catches(STANDARD_TYPE(Error))) +#else +# define CASCatch_TRY try +# define CASCatch_CATCH catch +#endif //NO_CXX_EXCEPTION + + +#endif diff --git a/src/CASCatch/Makefile.am b/src/CASCatch/Makefile.am new file mode 100644 index 000000000..23fc4c7b4 --- /dev/null +++ b/src/CASCatch/Makefile.am @@ -0,0 +1,41 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File : Makefile.in +# Author : Sergey RUIN (OCN) +# Module : SALOME + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + + +salomeinclude_HEADERS = CASCatch.hxx \ + CASCatch_CatchSignals.hxx \ + CASCatch_ErrorHandler.hxx \ + CASCatch_Failure.hxx + +lib_LTLIBRARIES = libCASCatch.la +libCASCatch_la_SOURCES = \ + CASCatch_CatchSignals.cxx \ + CASCatch_ErrorHandler.cxx \ + CASCatch_Failure.cxx + +COMMON_CPPFLAGS = \ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ + +libCASCatch_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libCASCatch_la_LIBADD = $(CAS_KERNEL) diff --git a/src/Communication/Makefile.am b/src/Communication/Makefile.am new file mode 100644 index 000000000..61024dcba --- /dev/null +++ b/src/Communication/Makefile.am @@ -0,0 +1,102 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = \ + ReceiverFactory.hxx \ + SenderFactory.hxx \ + SALOMEMultiComm.hxx \ + MultiCommException.hxx \ + SALOME_Comm_i.hxx \ + MatrixClient.hxx \ + SALOME_Matrix_i.hxx + +# Scripts to be installed + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS = \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +# _CS_gbo The need for these flags depends on wether the swig +# interface is generated and if MPI is activated. +OPT_CPPFLAGS = @PYTHON_INCLUDES@ @MPI_INCLUDES@ +OPT_LIBS = @PYTHON_LIBS@ @MPI_LIBS@ +OPT_LDFLAGS = -Xlinker -export-dynamic + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeCommunication.la +libSalomeCommunication_la_SOURCES =\ + SALOME_Comm_i.cxx \ + SALOME_Matrix_i.cxx \ + SenderFactory.cxx \ + MultiCommException.cxx \ + SALOMEMultiComm.cxx \ + ReceiverFactory.cxx \ + MatrixClient.cxx \ + \ + MultiCommException.hxx \ + SALOME_Comm_i.hxx \ + SALOME_Matrix_i.hxx \ + SenderFactory.hxx \ + ReceiverFactory.hxx \ + MatrixClient.hxx \ + SALOMEMultiComm.hxx \ + Receivers.hxx \ + Receiver.hxx + +# the following file is needed by an include file (VERY DIRTY!) +EXTRA_DIST = Receivers.cxx + +libSalomeCommunication_la_CPPFLAGS = $(COMMON_CPPFLAGS) $(OPT_CPPFLAGS) +libSalomeCommunication_la_LDFLAGS = -no-undefined -version-info=0:0:0 $(OPT_LDFLAGS) +libSalomeCommunication_la_LIBADD = $(COMMON_LIBS) $(OPT_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +# Nothing to build diff --git a/src/Communication/MatrixClient.cxx b/src/Communication/MatrixClient.cxx new file mode 100644 index 000000000..94c5e6826 --- /dev/null +++ b/src/Communication/MatrixClient.cxx @@ -0,0 +1,30 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "MatrixClient.hxx" +#include "ReceiverFactory.hxx" + +double *MatrixClient::getValue(SALOME::Matrix_ptr distMat, int& columnSize, int& rowSize) +{ + long totalSize; + double *ret=ReceiverFactory::getValue(distMat->getData(),totalSize); + columnSize=distMat->getSizeOfColumn(); + distMat->release(); + rowSize=totalSize/columnSize; + return ret; +} diff --git a/src/Communication/MatrixClient.hxx b/src/Communication/MatrixClient.hxx new file mode 100644 index 000000000..2d4a7427b --- /dev/null +++ b/src/Communication/MatrixClient.hxx @@ -0,0 +1,31 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __MATRIXCLIENT_HXX__ +#define __MATRIXCLIENT_HXX__ + +#include +#include CORBA_SERVER_HEADER(SALOME_Comm) + +class MatrixClient +{ +public: + static double *getValue(SALOME::Matrix_ptr distMat, int& columnSize, int& rowSize); +}; + +#endif diff --git a/src/Communication/SALOME_Matrix_i.cxx b/src/Communication/SALOME_Matrix_i.cxx new file mode 100644 index 000000000..49271c046 --- /dev/null +++ b/src/Communication/SALOME_Matrix_i.cxx @@ -0,0 +1,51 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "SALOME_Matrix_i.hxx" +#include "SenderFactory.hxx" + +SALOME_Matrix_i::SALOME_Matrix_i(const SALOMEMultiComm& multiCommunicator,const double *tabToSend,int nbOfRow,int nbOfColumn,bool ownTabToSend):_tabToSend(tabToSend), + _nbOfRow(nbOfRow), + _nbOfColumn(nbOfColumn), + _ownTabToSend(ownTabToSend), + _type(multiCommunicator) +{ +} + +SALOME_Matrix_i::~SALOME_Matrix_i() +{ + if(_ownTabToSend) + delete [] _tabToSend; +} + +SALOME::SenderDouble_ptr SALOME_Matrix_i::getData() +{ + return SenderFactory::buildSender(_type,_tabToSend,_nbOfRow*_nbOfColumn,_ownTabToSend); +} + +CORBA::Long SALOME_Matrix_i::getSizeOfColumn() +{ + return _nbOfColumn; +} + +void SALOME_Matrix_i::release() +{ + PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this); + _default_POA()->deactivate_object(oid); + _remove_ref(); +} diff --git a/src/Communication/SALOME_Matrix_i.hxx b/src/Communication/SALOME_Matrix_i.hxx new file mode 100644 index 000000000..3b3d33af7 --- /dev/null +++ b/src/Communication/SALOME_Matrix_i.hxx @@ -0,0 +1,44 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __SALOME_MATRIX_I_HXX__ +#define __SALOME_MATRIX_I_HXX__ + +#include +#include +#include CORBA_SERVER_HEADER(SALOME_Comm) +#include "SALOMEMultiComm.hxx" + +class SALOME_Matrix_i : public virtual POA_SALOME::Matrix, + public PortableServer::RefCountServantBase { +private: + const double *_tabToSend; + int _nbOfRow; + int _nbOfColumn; + bool _ownTabToSend; + SALOMEMultiComm _type; +protected: + ~SALOME_Matrix_i(); +public: + SALOME_Matrix_i(const SALOMEMultiComm& multiCommunicator,const double *tabToSend,int nbOfRow,int nbOfColumn,bool ownTabToSend=false); + SALOME::SenderDouble_ptr getData(); + CORBA::Long getSizeOfColumn(); + void release(); +}; + +#endif diff --git a/src/Communication_SWIG/Makefile.am b/src/Communication_SWIG/Makefile.am new file mode 100644 index 000000000..30907c8d4 --- /dev/null +++ b/src/Communication_SWIG/Makefile.am @@ -0,0 +1,100 @@ +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Swig targets +# =============================================================== +# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm) +# +# Step 1: build the wrapping source files with swig +# +# libSALOME_Comm.i -- swig --> swig_wrap.cpp +# libSALOME_Comm.py +# +# Step 2: build the dynamic library from cpp built source files and +# dependant libraries. +# +# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libSALOME_Comm.la +# + | +# dependant libs | +# +# The file libSALOME_Comm.py will be installed in +# /lib/python/site-package/salome. +# The library will be installed in the common place. +# + +BUILT_SOURCES = swig_wrap.cpp + +SWIG_FLAGS = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../Communication +SWIG_SOURCES = libSALOME_Comm.i + + +pkgpython_PYTHON = libSALOME_Comm.py +pkgpyexec_LTLIBRARIES = _libSALOME_Comm.la +_libSALOME_Comm_la_SOURCES = $(BUILT_SOURCES) $(SWIG_SOURCES) +_libSALOME_Comm_la_CPPFLAGS =\ + @PYTHON_INCLUDES@ \ + -I$(srcdir) -I$(srcdir)/../Communication \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +_libSALOME_Comm_la_LDFLAGS = -module +_libSALOME_Comm_la_LIBADD = \ + ../Communication/libSalomeCommunication.la \ + @PYTHON_LIBS@ + +# _CS_gbo Actually, there's no need to get these flags optional. If +# the check mpi is not ok, the variables will be simply null. +if MPI_IS_OK +_libSALOME_Comm_la_CPPFLAGS+=@MPI_INCLUDES@ +_libSALOME_Comm_la_LIBADD+=@MPI_LIBS@ +endif + + +swig_wrap.cpp : $(SWIG_SOURCES) + $(SWIG) $(SWIG_FLAGS) -o $@ $< + +CLEANFILES = swig_wrap.cpp + + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +# (see LifeCycleCORBA_SWIG for an example) + +# It's not needed to specify libSALOME_Comm.py. It is +# automaticaly installed through the swig target pkgpython_PYTHON. diff --git a/src/Container/Makefile.am b/src/Container/Makefile.am new file mode 100644 index 000000000..1241d4a4f --- /dev/null +++ b/src/Container/Makefile.am @@ -0,0 +1,146 @@ +# SALOME Container : implementation of container and engine for Kernel +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Header to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = \ + SALOME_Component_i.hxx \ + SALOME_Container_i.hxx \ + SALOME_FileTransfer_i.hxx \ + SALOME_FileRef_i.hxx \ + SALOME_ContainerManager.hxx \ + Container_init_python.hxx + +# Scripts to be installed +dist_salomescript_DATA =\ + SALOME_ComponentPy.py \ + SALOME_Container.py + +# These files are executable scripts +dist_salomescript_SCRIPTS=\ + SALOME_ContainerPy.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @PYTHON_INCLUDES@ \ + @MPI_INCLUDES@ \ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ + @QT_MT_INCLUDES@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(srcdir)/../Registry \ + -I$(srcdir)/../Notification \ + -I$(srcdir)/../ResourcesManager \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../Registry/libRegistry.la \ + ../Notification/libSalomeNotification.la \ + ../ResourcesManager/libSalomeResourcesManager.la \ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @PYTHON_LIBS@ \ + @MPI_LIBS@ \ + @CORBA_LIBS@ + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeContainer.la +libSalomeContainer_la_SOURCES=\ + Component_i.cxx \ + Container_i.cxx \ + SALOME_FileTransfer_i.cxx \ + SALOME_FileRef_i.cxx \ + SALOME_ContainerManager.cxx \ + Container_init_python.cxx + +libSalomeContainer_la_CPPFLAGS =\ + $(COMMON_CPPFLAGS) + +libSalomeContainer_la_LDFLAGS =\ + -no-undefined -version-info=0:0:0 \ + @LDEXPDYNFLAGS@ + +libSalomeContainer_la_LIBADD =\ + $(COMMON_LIBS) + + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = SALOME_Container SALOME_ContainerManagerServer +SALOME_Container_SOURCES =\ + SALOME_Container.cxx \ + SALOME_Container_SignalsHandler.cxx + +SALOME_Container_CPPFLAGS =\ + $(COMMON_CPPFLAGS) + + +SALOME_Container_LDADD =\ + libSalomeContainer.la \ + $(COMMON_LIBS) \ + ../Basics/libSALOMEBasics.la + + +SALOME_ContainerManagerServer_SOURCES =\ + SALOME_ContainerManagerServer.cxx + +SALOME_ContainerManagerServer_CPPFLAGS=\ + $(COMMON_CPPFLAGS) + +SALOME_ContainerManagerServer_LDADD =\ + libSalomeContainer.la \ + $(COMMON_LIBS) \ + ../Basics/libSALOMEBasics.la diff --git a/src/Container/SALOME_FileRef_i.cxx b/src/Container/SALOME_FileRef_i.cxx new file mode 100644 index 000000000..7dfa311b9 --- /dev/null +++ b/src/Container/SALOME_FileRef_i.cxx @@ -0,0 +1,180 @@ +// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SALOME_FileRef_i.cxx +// Author : Paul RASCLE, EDF +// Module : SALOME +// $Header$ + +#include "SALOME_FileRef_i.hxx" +#include "utilities.h" +#include "OpUtil.hxx" +#include + +using namespace std; + +//============================================================================= +/*! + * Default constructor, not for use + */ +//============================================================================= + +fileRef_i::fileRef_i() +{ + ASSERT(0); +} +//============================================================================= +/*! + * Constructor to use + */ +//============================================================================= + +fileRef_i::fileRef_i(Engines::Container_ptr container, + const char* origFileName) +{ + MESSAGE("fileRef_i::fileRef_i "<< origFileName); + _container = Engines::Container::_duplicate(container); + _origFileName = origFileName; + _machine = GetHostname(); + int OK = addRef(_machine.c_str(), _origFileName.c_str()); + SCRUTE(OK); +} + + +//============================================================================= +/*! + * Destructor + */ +//============================================================================= + +fileRef_i::~fileRef_i() +{ + MESSAGE("fileRef_i::~fileRef_i"); +} + +//============================================================================= +/*! + * CORBA method: + * \return the file name (absolute path) on the computer which runs the + * container server + */ +//============================================================================= + +char* fileRef_i::origFileName() +{ + MESSAGE("fileRef_i::origFileName " << _origFileName); + return CORBA::string_dup(_origFileName.c_str()); +} + +//============================================================================= +/*! + * CORBA method: + * \return the hostname of the computer which runs the container server + */ +//============================================================================= + +char* fileRef_i::refMachine() +{ + MESSAGE("fileRef_i::refMachine " << _machine); + return CORBA::string_dup(_machine.c_str()); +} + +//============================================================================= +/*! + * CORBA method: + * \return the container reference + */ +//============================================================================= + +Engines::Container_ptr fileRef_i::getContainer() +{ + MESSAGE("fileRef_i::getContainer"); + Engines::Container_var theContainer = + Engines::Container::_duplicate(_container); + return theContainer._retn(); +} + +//============================================================================= +/*! + * CORBA method: after a file transfer on a client computer, registers + * hostname of client and file path of the copied file. + * \param machine client hostname + * \param fileName asolute path of the transfered file on client computer + */ +//============================================================================= + +CORBA::Boolean fileRef_i::addRef(const char* machine, + const char* fileName) +{ + MESSAGE("fileRef_i::addRef " << machine << " " << fileName); + string theMachine = machine; + string theFileName = fileName; + + if (theFileName[0] != '/') + { + INFOS("destination file path must be absolute, begining with '/'"); + return 0; + } + + if (theMachine.empty()) + { + INFOS("provide a hostname for the copy destination"); + return 0; + } + + if (! _copies[theMachine].empty()) + { + INFOS("there is already a copy on " << theMachine << " under the path " + << _copies[theMachine] << " new ref not added! "); + return 0; + } + + _copies[theMachine] = theFileName; + return 1; +} + +//============================================================================= +/*! + * CORBA method: check if a copy of the file referenced by fileRef is + * available on the client computer. + * \param machine hostname of the client computer + * \return path of the copy on the client computer, if the copy exists, + * else empty string + */ +//============================================================================= + +char* fileRef_i::getRef(const char* machine) +{ + MESSAGE("fileRef_i::getRef "<< machine); + string theMachine = machine; + string theFileName = _copies[theMachine]; + if (_copies[theMachine].empty()) + { + MESSAGE("no copy of " << _machine << _origFileName << " available on " + << theMachine); + } + else + { + MESSAGE("a copy of " << _machine << _origFileName << "is available on " + << theMachine << _copies[theMachine]); + } + return CORBA::string_dup(_copies[theMachine].c_str()); +} + diff --git a/src/Container/SALOME_FileRef_i.hxx b/src/Container/SALOME_FileRef_i.hxx new file mode 100644 index 000000000..0856bb1c1 --- /dev/null +++ b/src/Container/SALOME_FileRef_i.hxx @@ -0,0 +1,63 @@ +// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SALOME_FileRef_i.hxx +// Author : Paul RASCLE, EDF +// Module : SALOME +// $Header$ + +#ifndef _SALOME_FILEREF_I_HXX_ +#define _SALOME_FILEREF_I_HXX_ + +#include +#include CORBA_SERVER_HEADER(SALOME_Component) + +#include +#include + +class fileRef_i: + public virtual POA_Engines::fileRef, + public virtual PortableServer::RefCountServantBase +{ +public: + fileRef_i(); + fileRef_i(Engines::Container_ptr container, + const char* origFileName); + virtual ~fileRef_i(); + + char* origFileName(); + + char* refMachine(); + + Engines::Container_ptr getContainer(); + + CORBA::Boolean addRef(const char* machine, + const char* fileName); + + char* getRef(const char* machine); + +protected: + Engines::Container_var _container; + std::string _origFileName; + std::string _machine; + std::map _copies; +}; + +#endif diff --git a/src/Container/SALOME_FileTransfer_i.cxx b/src/Container/SALOME_FileTransfer_i.cxx new file mode 100644 index 000000000..036fc5b6a --- /dev/null +++ b/src/Container/SALOME_FileTransfer_i.cxx @@ -0,0 +1,129 @@ + +// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SALOME_FileTransfer_i.cxx +// Author : Paul RASCLE, EDF +// Module : SALOME +// $Header$ + +#include "SALOME_FileTransfer_i.hxx" +#include "utilities.h" + +//============================================================================= +/*! + * Default constructor, + */ +//============================================================================= + +fileTransfer_i::fileTransfer_i() +{ + MESSAGE("fileTransfer_i::fileTransfer_i"); + _fileKey=1; +} + +//============================================================================= +/*! + * Destructor + */ +//============================================================================= + +fileTransfer_i::~fileTransfer_i() +{ + MESSAGE("fileTransfer_i::~fileTransfer_i"); +} + + +//============================================================================= +/*! + * CORBA method: try to open the file given. If the file is readable, return + * a positive integer else return 0; + * \param fileName path to the file to be transfered + * \return fileId = positive integer > 0 if open OK. + */ +//============================================================================= + +CORBA::Long fileTransfer_i::open(const char* fileName) +{ + MESSAGE(" fileTransfer_i::open " << fileName); + int aKey = _fileKey++; + _ctr=0; + FILE* fp; + if ((fp = fopen(fileName,"rb")) == NULL) + { + INFOS("file " << fileName << " is not readable"); + return 0; + } + _fileAccess[aKey] = fp; + return aKey; +} + +//============================================================================= +/*! + * CORBA method: close the file associated to the fileId given at open. + * \param fileId got in return from open method + */ +//============================================================================= + +void fileTransfer_i::close(CORBA::Long fileId) +{ + MESSAGE("fileTransfer_i::close"); + FILE* fp; + if (! (fp = _fileAccess[fileId]) ) + { + INFOS(" no FILE structure associated to fileId " <replace(nbRed, nbRed, buf, 1); // 1 means give ownership + return aBlock; +} + diff --git a/src/Container/SALOME_FileTransfer_i.hxx b/src/Container/SALOME_FileTransfer_i.hxx new file mode 100644 index 000000000..8141bbc8a --- /dev/null +++ b/src/Container/SALOME_FileTransfer_i.hxx @@ -0,0 +1,55 @@ +// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SALOME_FileTransfer_i.hxx +// Author : Paul RASCLE, EDF +// Module : SALOME +// $Header$ + + +#ifndef _SALOME_FILETRANSFER_I_HXX_ +#define _SALOME_FILETRANSFER_I_HXX_ + +#include +#include CORBA_SERVER_HEADER(SALOME_Component) +#include +#include + +class fileTransfer_i: + public virtual POA_Engines::fileTransfer, + public virtual PortableServer::RefCountServantBase +{ +public: + fileTransfer_i(); + virtual ~fileTransfer_i(); + + CORBA::Long open(const char* fileName); + + void close(CORBA::Long fileId); + + Engines::fileBlock* getBlock(CORBA::Long fileId); + +protected: + int _fileKey; + std::map _fileAccess; + int _ctr; +}; + +#endif diff --git a/src/GenericObj/Makefile.am b/src/GenericObj/Makefile.am new file mode 100644 index 000000000..20cfa0d34 --- /dev/null +++ b/src/GenericObj/Makefile.am @@ -0,0 +1,28 @@ +# Copyright (C) 2003 CEA/DEN, EDF R&D +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +salomeinclude_HEADERS =\ + SALOME_GenericObj_i.hh + +# Libraries targets +lib_LTLIBRARIES = libSalomeGenericObj.la +libSalomeGenericObj_la_SOURCES =\ + SALOME_GenericObj_i.cc + +libSalomeGenericObj_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeGenericObj_la_CPPFLAGS = \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ +libSalomeGenericObj_la_LIBADD = \ + $(top_builddir)/idl/libSalomeIDLKernel.la diff --git a/src/HDFPersist/Makefile.am b/src/HDFPersist/Makefile.am new file mode 100644 index 000000000..b65ea9ac5 --- /dev/null +++ b/src/HDFPersist/Makefile.am @@ -0,0 +1,106 @@ +# SALOME HDFPersist : implementation of HDF persitent ( save/ restore ) +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.in +# Author : Paul RASCLE, EDF +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +salomeinclude_HEADERS = \ + HDFattribute.hxx \ + HDFcontainerObject.hxx \ + HDFdataset.hxx \ + HDFexplorer.hxx \ + HDFexception.hxx \ + HDFfile.hxx \ + HDFgroup.hxx \ + HDFinternalObject.hxx \ + HDFobject.hxx \ + HDFOI.hxx \ + HDFtypes.h \ + HDFconvert.hxx \ + hdfi.h \ + HDFascii.hxx + +# Libraries targets +lib_LTLIBRARIES = libSalomeHDFPersist.la +libSalomeHDFPersist_la_SOURCES =\ + HDFfileCreate.c \ + HDFfileClose.c \ + HDFfileOpen.c \ + HDFfileMount.c \ + HDFfileUmount.c \ + HDFgroupCreate.c \ + HDFgroupOpen.c \ + HDFgroupClose.c \ + HDFdatasetOpen.c \ + HDFdatasetClose.c \ + HDFdatasetCreate.c \ + HDFdatasetWrite.c \ + HDFdatasetRead.c \ + HDFdatasetGetDim.c \ + HDFdatasetGetSize.c \ + HDFdatasetGetType.c \ + HDFdatasetGetnDim.c \ + HDFdatasetGetOrder.c \ + HDFattrOpen.c \ + HDFattrClose.c \ + HDFattrWrite.c \ + HDFattrCreate.c \ + HDFattrRead.c \ + HDFattrGetType.c \ + HDFattrGetSize.c \ + HDFerrorModeLock.c \ + HDFnObjects.c \ + HDFobjectIdentify.c \ + HDFobjectType.c \ + HDFobject.cc \ + HDFinternalObject.cc \ + HDFattribute.cc \ + HDFcontainerObject.cc \ + HDFdataset.cc \ + HDFfile.cc \ + HDFgroup.cc \ + HDFexplorer.cc \ + HDFconvert.cc \ + HDFascii.cc + +libSalomeHDFPersist_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeHDFPersist_la_CPPFLAGS = @CAS_CPPFLAGS@ @HDF5_INCLUDES@ -DPCLINUX \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Basics +libSalomeHDFPersist_la_LIBADD = @CAS_KERNEL@ @HDF5_LIBS@ + + +EXTRA_DIST = \ + test1.c \ + test2.c \ + test3.cxx \ + test4.cxx \ + test5.cxx \ + test6.cxx \ + test7.cxx \ + test8.cxx \ + test9.cxx diff --git a/src/KERNEL_PY/Makefile.am b/src/KERNEL_PY/Makefile.am new file mode 100755 index 000000000..bd5ab0a86 --- /dev/null +++ b/src/KERNEL_PY/Makefile.am @@ -0,0 +1,46 @@ +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# Scripts to be installed (pkgpython is an automake keyword for python targets) +pkgpython_PYTHON = \ + Help.py \ + PyInterp.py \ + salome.py \ + salome_shared_modules.py \ + batchmode_salome.py \ + import_hook.py \ + salome_test.py \ + salome_kernel.py \ + salome_study.py \ + salome_iapp.py \ + salome_ComponentGUI.py \ + omnipatch.py \ + iparameters.py \ + salome_version.py + +sharedpkgpython_PYTHON = kernel_shared_modules.py + diff --git a/src/KERNEL_PY/iparameters.py b/src/KERNEL_PY/iparameters.py new file mode 100755 index 000000000..fab464f4f --- /dev/null +++ b/src/KERNEL_PY/iparameters.py @@ -0,0 +1,245 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +import salome +import string +import SALOME +import SALOMEDS +import SALOME_Session_idl + +PT_INTEGER = 0 +PT_REAL = 1 +PT_BOOLEAN = 2 +PT_STRING = 3 +PT_REALARRAY = 4 +PT_INTARRAY = 5 +PT_STRARRAY = 6 + +_AP_LISTS_LIST_ = "AP_LISTS_LIST" +_AP_ENTRIES_LIST_ = "AP_ENTRIES_LIST" +_AP_PROPERTIES_LIST_ = "AP_PROPERTIES_LIST" +_AP_DUMP_PYTHON_ = "AP_DUMP_PYTHON" + +vp_session = None + +def getSession(): + global vp_session + if vp_session is None: + vp_session = salome.naming_service.Resolve("/Kernel/Session") + vp_session = vp_session._narrow(SALOME.Session) + pass + return vp_session + +class IParameters: + """ + Interface IParameters was designed to provide a common way to set up + named parameters. The interface is initialized by AttributeParameter that + is used as a container of stored data. + The interface supports 3 types of named parameters: + 1. Named list - a named list consists of string values. + One can append value to list (method 'append'), get a number of values + in the list (method 'nbValues'), get all values of the given list + (method 'getValues') and get names of all created named lists. + 2. Parameters - that is a set of named string values associated with some named + entity. Parameter consists of tree elements: entity name, a parameter name + and a parameter value. Thus for one named entity there are an arbitrary number + of pair 'name parameter : value'. + One can add a new parameter to entry (method 'setParameter'), get a value of + a given named parameter of the given entry (method 'getParameter'), get a number + of parameters of the given entry (method 'getNbParameters'), get all names of + parameters for the given entry (method 'getAllParameterNames'), get all + values of parameters for the entry (method 'getAllParameterValues') and get all + stored entries (method 'getEntries') + 3. Property - a property has a name and a string value. + One can set property (method 'setProperty'), getProperty (method 'getProperty') and + get a list of all stored properties (method 'getProperties'). + + Note: + Methods not mentioned above are private and is not supposed to be used + by module's developers. + + """ + def __init__(self, attributeParameter): + """Initializes the instance""" + self._ap = attributeParameter + pass + + def append(self, listName, value): + """Appends a value to the named list""" + if self._ap is None: return -1 + v = [] + if self._ap.IsSet(listName, PT_STRARRAY) == 0: + if self._ap.IsSet(_AP_LISTS_LIST_, PT_STRARRAY) == 0: self._ap.SetStrArray(_AP_LISTS_LIST_, v); + if listName != _AP_ENTRIES_LIST_ and listName != _AP_PROPERTIES_LIST_: + self.append(_AP_LISTS_LIST_, listName) + pass + self._ap.SetStrArray(listName, v) + pass + + v = self._ap.GetStrArray(listName) + v.append(value) + self._ap.SetStrArray(listName, v) + return (len(v)-1) + + def nbValues(self, listName): + """Returns a number of values in the named list""" + if self._ap is None: return -1 + if self._ap.IsSet(listName, PT_STRARRAY) == 0: return 0 + v = self._ap.GetStrArray(listName) + return len(v) + + def getValues(self, listName): + """Returns a list of values in the named list""" + v = [] + if self._ap is None: return v + if self._ap.IsSet(listName, PT_STRARRAY) == 0: return v + return self._ap.GetStrArray(listName) + + def getLists(self): + """Returns a list of named lists' names""" + v = [] + if self._ap is None: return v + if self._ap.IsSet(_AP_LISTS_LIST_, PT_STRARRAY) == 0: return v + return self._ap.GetStrArray(_AP_LISTS_LIST_) + + def setParameter(self, entry, parameterName, value): + """Sets a value of the named parameter for the entry""" + if self._ap is None: return + v = [] + if self._ap.IsSet(entry, PT_STRARRAY) ==0: + self.append(_AP_ENTRIES_LIST_, entry) #Add the entry to the internal list of entries + self._ap.SetStrArray(entry, v) + pass + + v = self._ap.GetStrArray(entry) + v.append(parameterName) + v.append(value) + self._ap.SetStrArray(entry, v) + pass + + def getParameter(self, entry, parameterName): + """Returns a value of the named parameter for the entry""" + if self._ap is None: return "" + if self._ap.IsSet(entry, PT_STRARRAY) == 0: return "" + v = self._ap.GetStrArray(entry) + length = len(v); + i = 0 + while iGetFittingResources(params, ""); + + container = contManager->FindOrStartContainer(params, + listOfMachines); + if (CORBA::is_nil(container)) + { + INFOS("machine " << _refMachine << " unreachable"); + return ""; + } + + _theFileRef = container->createFileRef(_origFileName.c_str()); + if (CORBA::is_nil(_theFileRef)) + { + INFOS("imposssible to create fileRef on " << _refMachine); + return ""; + } + } + + container = _theFileRef->getContainer(); + ASSERT(! CORBA::is_nil(container)); + + string myMachine = GetHostname(); + string localCopy = _theFileRef->getRef(myMachine.c_str()); + + if (localCopy.empty()) // no existing copy available + { + if (localFile.empty()) // no name provided for local copy + { + char bufName[256]; + localCopy = tmpnam(bufName); + localFile = bufName; + SCRUTE(localFile); + } + + FILE* fp; + if ((fp = fopen(localFile.c_str(),"wb")) == NULL) + { + INFOS("file " << localFile << " cannot be open for writing"); + return ""; + } + + Engines::fileTransfer_var fileTransfer = container->getFileTransfer(); + ASSERT(! CORBA::is_nil(fileTransfer)); + + CORBA::Long fileId = fileTransfer->open(_origFileName.c_str()); + if (fileId > 0) + { + Engines::fileBlock* aBlock; + int toFollow = 1; + int ctr=0; + while (toFollow) + { + ctr++; + SCRUTE(ctr); + aBlock = fileTransfer->getBlock(fileId); + toFollow = aBlock->length(); + SCRUTE(toFollow); + CORBA::Octet *buf = aBlock->get_buffer(); + int nbWri = fwrite(buf, sizeof(CORBA::Octet), toFollow, fp); + ASSERT(nbWri == toFollow); + } + MESSAGE("end of transfer"); + fileTransfer->close(fileId); + _theFileRef->addRef(myMachine.c_str(), localFile.c_str()); + localCopy = localFile; + } + else + { + INFOS("open reference file for copy impossible"); + return ""; + } + + } + SCRUTE(localCopy); + return localCopy; +} diff --git a/src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx b/src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx new file mode 100644 index 000000000..871e0aa14 --- /dev/null +++ b/src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx @@ -0,0 +1,57 @@ +// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : SALOME_FileTransferCORBA.hxx +// Author : Paul RASCLE, EDF +// Module : SALOME +// $Header$ + +#ifndef _SALOME_FILETRANSFERCORBA_HXX_ +#define _SALOME_FILETRANSFERCORBA_HXX_ + + +#include +#include + +#include CORBA_CLIENT_HEADER(SALOME_Component) + +#include + +class SALOME_FileTransferCORBA +{ +public: + SALOME_FileTransferCORBA(); + SALOME_FileTransferCORBA(Engines::fileRef_ptr aFileRef); + SALOME_FileTransferCORBA(std::string refMachine, + std::string origFileName, + std::string containerName=""); + + virtual ~SALOME_FileTransferCORBA(); + + std::string getLocalFile(std::string localFile = ""); + +protected: + Engines::fileRef_var _theFileRef; + std::string _refMachine; + std::string _origFileName; + std::string _containerName; +}; + +#endif diff --git a/src/LifeCycleCORBA/Test/Makefile.am b/src/LifeCycleCORBA/Test/Makefile.am new file mode 100644 index 000000000..9df7b5c69 --- /dev/null +++ b/src/LifeCycleCORBA/Test/Makefile.am @@ -0,0 +1,103 @@ +####################################### library +# SALOMELocalTrace : log on local machine +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= LifeCycleCORBATest.hxx + +# Scripts to be installed +dist_salomescript_SCRIPTS = TestLifeCycleCORBA.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CPPUNIT_INCLUDES@ \ + -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \ + -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \ + -I$(srcdir)/$(RPATH)/NamingService -I$(srcdir)/$(RPATH)/NamingService/Test \ + -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \ + -I$(srcdir)/$(RPATH)/ResourcesManager \ + -I$(srcdir)/$(RPATH)/LifeCycleCORBA \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + @CPPUNIT_LIBS@ \ + $(RPATH)/Basics/libSALOMEBasics.la \ + $(RPATH)/ResourcesManager/libSalomeResourcesManager.la \ + $(RPATH)/Container/libSalomeContainer.la \ + $(RPATH)/NamingService/libSalomeNS.la \ + $(RPATH)/Registry/libRegistry.la \ + $(RPATH)/Notification/libSalomeNotification.la \ + $(RPATH)/Utils/Test/libUtilsTest.la $(RPATH)/Utils/libOpUtil.la \ + $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libLifeCycleCORBATest.la +libLifeCycleCORBATest_la_SOURCES = LifeCycleCORBATest.cxx +libLifeCycleCORBATest_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libLifeCycleCORBATest_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libLifeCycleCORBATest_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestLifeCycleCORBA +TestLifeCycleCORBA_SOURCES = TestLifeCycleCORBA.cxx +TestLifeCycleCORBA_CPPFLAGS = $(COMMON_CPPFLAGS) +TestLifeCycleCORBA_LDADD = \ + libLifeCycleCORBATest.la ../libSalomeLifeCycleCORBA.la \ + $(RPATH)/NamingService/Test/libNamingServiceTest.la \ + $(COMMON_LIBS) + diff --git a/src/LifeCycleCORBA_SWIG/Makefile.am b/src/LifeCycleCORBA_SWIG/Makefile.am new file mode 100644 index 000000000..0a1b1d8b4 --- /dev/null +++ b/src/LifeCycleCORBA_SWIG/Makefile.am @@ -0,0 +1,96 @@ +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Swig targets +# =============================================================== +# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm) +# +# Step 1: build the wrapping source files with swig +# +# libSALOME_LifeCycleCORBA.i -- swig --> swig_wrap.cpp +# libSALOME_LifeCycleCORBA.py +# +# Step 2: build the dynamic library from cpp built source files and +# dependant libraries. +# +# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libSALOME_LifeCycleCORBA.la +# + | +# dependant libs | +# +# The file libSALOME_LifeCycleCORBA.py will be installed in +# /lib/python/site-package/salome. +# The library will be installed in the same place. +# + +BUILT_SOURCES = swig_wrap.cpp + +SWIG_FLAGS = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../LifeCycleCORBA +SWIG_SOURCES = libSALOME_LifeCycleCORBA.i + +pkgpython_PYTHON = libSALOME_LifeCycleCORBA.py +pkgpyexec_LTLIBRARIES = _libSALOME_LifeCycleCORBA.la +_libSALOME_LifeCycleCORBA_la_SOURCES = $(BUILT_SOURCES) $(SWIG_SOURCES) +_libSALOME_LifeCycleCORBA_la_CPPFLAGS =\ + @PYTHON_INCLUDES@ \ + -I$(srcdir) \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../LifeCycleCORBA \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +_libSALOME_LifeCycleCORBA_la_LDFLAGS = -module +_libSALOME_LifeCycleCORBA_la_LIBADD = \ + ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la \ + @PYTHON_LIBS@ + +swig_wrap.cpp : $(SWIG_SOURCES) + $(SWIG) $(SWIG_FLAGS) -o $@ $< + +CLEANFILES = swig_wrap.cpp + + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +# Scripts to be installed. +dist_salomescript_DATA =\ + LifeCycleCORBA.py \ + TestLifeCycleCORBA.py + +# It's not needed to specify libSALOME_LifeCycleCORBA.py. It is +# automaticaly installed through the swig target pkgpython_PYTHON. diff --git a/src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py b/src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py new file mode 100644 index 000000000..347524308 --- /dev/null +++ b/src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py @@ -0,0 +1,192 @@ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : LifeCycleCORBA_SWIGTest.py +# Author : Paul RASCLE, EDF +# Module : SALOME +# $Header$ + +import sys +import unittest +from omniORB import CORBA +import PYHELLO_ORB +import HELLO_ORB +import Utils_Identity +import Engines + +class LifeCycleCORBA_SWIGTest(unittest.TestCase): + def setUp(self): + import LifeCycleCORBA + self.lcc = LifeCycleCORBA.LifeCycleCORBA() + pass + + def tearDown(self): + pass + + def test001_FindOrLoad_Component_LaunchContainer(self): + """ + get a local container (no hostname given), + load an engine, check that the CORBA object is not null. + check narrow + """ + containerName = "swMyContainer" + comp=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + self.assertNotEqual(comp,None) + testComp=comp._narrow(Engines.TestComponent) + self.assertNotEqual(testComp,None) + pass + + def test002_FindOrLoad_Component_SameInstance(self): + """ + Check FindOrLoad_Component. + Call 2 times FindOrLoad_Component with the same parameters, + check if we get the same engine + """ + containerName = "swMyContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + self.assertNotEqual(cp1,None) + cp2=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + self.assertNotEqual(cp2,None) + m1=cp1._narrow(Engines.TestComponent) + self.assertNotEqual(m1,None) + m2=cp2._narrow(Engines.TestComponent) + self.assertNotEqual(m2,None) + name1=m1._get_instanceName() + name2=m2._get_instanceName() + self.assertEqual(name1,name2) + pass + + def test003_FindOrLoad_Component_PythonInCppContainer(self): + """ + Check FindOrLoad_Component with Python Component on C++ Container, + load an engine, check that the CORBA object is not null. + check narrow + """ + containerName = "swMyContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"SALOME_TestComponentPy") + self.assertNotEqual(cp1,None) + m1=cp1._narrow(Engines.TestComponent) + self.assertNotEqual(m1,None) + pass + + def test004_FindOrLoad_Component_PythonSameInstance(self): + """ + Check FindOrLoad_Component with Python Component on C++ Container, + Call 2 times FindOrLoad_Component with the same parameters, + check if we get the same engine, + """ + containerName = "swMyContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"SALOME_TestComponentPy") + self.assertNotEqual(cp1,None) + cp2=self.lcc.FindOrLoad_Component(containerName,"SALOME_TestComponentPy") + self.assertNotEqual(cp2,None) + m1=cp1._narrow(Engines.TestComponent) + self.assertNotEqual(m1,None) + m2=cp2._narrow(Engines.TestComponent) + self.assertNotEqual(m2,None) + name1=m1._get_instanceName() + name2=m2._get_instanceName() + self.assertEqual(name1,name2) + pass + + def test005_FindOrLoad_Component_UnknownInCatalog(self): + """ + Check FindOrLoad_Component with a component name not in catalog. + See list of catalog given to module catalog server. + Here, we work with KERNEL_SRC/resources/KERNELCatalog.xml that contains + only KERNEL, SalomeTestComponent and SALOME_TestComponentPy + """ + containerName = "swMyContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"MyNewComponent") + self.assertEqual(cp1,None) + pass + + def test006_FindOrLoad_Component_LaunchContainerHostname(self): + """ + Check FindOrLoad_Component with hostname given. + get a local container : getHostName()/componentName, + load an engine, check that the CORBA object is not null. + check narrow + """ + containerName = Utils_Identity.getShortHostName() + containerName += "/swTheContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + self.assertNotEqual(cp1,None) + m1=cp1._narrow(Engines.TestComponent) + self.assertNotEqual(m1,None) + pass + + def test007_FindOrLoad_Component_SameContainer(self): + """ + Check FindOrLoad_Component with and without local hostname given. + We must get the same container, the same instance of component + """ + containerName = "swAContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + self.assertNotEqual(cp1,None) + containerName = Utils_Identity.getShortHostName() + containerName += "/swAContainer" + cp2=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + self.assertNotEqual(cp2,None) + m1=cp1._narrow(Engines.TestComponent) + self.assertNotEqual(m1,None) + m2=cp2._narrow(Engines.TestComponent) + self.assertNotEqual(m2,None) + name1=m1._get_instanceName() + name2=m2._get_instanceName() + self.assertEqual(name1,name2) + c1=m1.GetContainerRef() + self.assertNotEqual(c1,None) + c2=m2.GetContainerRef() + self.assertNotEqual(c2,None) + cname1=c1._get_name() + cname2=c2._get_name() + self.assertEqual(cname1,cname2) + hostname1=c1.getHostName() + hostname2=c2.getHostName() + self.assertEqual(hostname1,hostname2) + pidc1=c1.getPID() + pidc2=c2.getPID() + self.assertEqual(pidc1,pidc2) + pass + + def test008_FindOrLoad_Component_UnknownMachine(self): + """ + Check FindOrLoad_Component: check behaviour when ask for an unknown + computer. We must catch a Salome Exception with "unknown host" message + """ + containerName = "aFarAwayContainer" + containerName += "/swTheContainer" + cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent") + pass + + +def suite(): + return unittest.makeSuite(LifeCycleCORBA_SWIGTest,'test') + +def main(): + return unittest.TextTestRunner().run(suite()) + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(suite()) + pass + diff --git a/src/LifeCycleCORBA_SWIG/Test/Makefile.am b/src/LifeCycleCORBA_SWIG/Test/Makefile.am new file mode 100644 index 000000000..1892f6f4c --- /dev/null +++ b/src/LifeCycleCORBA_SWIG/Test/Makefile.am @@ -0,0 +1,71 @@ +####################################### +# +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Paul RASCLE (EDF) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= + +# Scripts to be installed +dist_salomescript_SCRIPTS = \ + LifeCycleCORBA_SWIGTest.py \ + TestLifeCycleCORBA_SWIG.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS= + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS = +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = diff --git a/src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py b/src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py new file mode 100644 index 000000000..2157e8d38 --- /dev/null +++ b/src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py @@ -0,0 +1,101 @@ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : TestLifeCycleCORBA_SWIG.py +# Author : Paul RASCLE, EDF +# Module : SALOME +# $Header$ + + +import sys, os,signal,string,commands +import runSalome +import orbmodule +import TestKiller +import addToKillList + +# get SALOME environment : + +args, modules_list, modules_root_dir = runSalome.get_config() +runSalome.set_env(args, modules_list, modules_root_dir) + +# set environment for trace in logger +# (with file, servers may be killed before the write to the file...) + +#os.environ["SALOME_trace"] = "file:/tmp/traceUnitTest.log" +#os.environ["SALOME_trace"] = "local" +os.environ["SALOME_trace"] = "with_logger" + +# launch CORBA naming server + +clt=orbmodule.client() + +# launch CORBA logger server + +myServer=runSalome.LoggerServer(args) +myServer.run() +clt.waitLogger("Logger") + +# launch notify server + +myServer=runSalome.NotifyServer(args,modules_root_dir) +myServer.run() + +# launch registry server + +myServer=runSalome.RegistryServer(args) +myServer.run() +clt.waitNS("/Registry") + +# launch module catalog server + +cataServer=runSalome.CatalogServer(args) +cataServer.setpath(modules_list,modules_root_dir) +cataServer.run() +clt.waitNS("/Kernel/ModulCatalog") + +# launch container manager server + +myCmServer = runSalome.ContainerManagerServer(args) +myCmServer.setpath(modules_list,modules_root_dir) +myCmServer.run() +clt.waitNS("/ContainerManager") + +# execute Unit Test + +command = ['TestLifeCycleCORBA'] +ret = os.spawnvp(os.P_WAIT, command[0], command) + +import LifeCycleCORBA_SWIGTest +import unittest +unittest.TextTestRunner(verbosity=2).run(LifeCycleCORBA_SWIGTest.suite()) + +# kill containers created by the Container Manager + +import Engines +containerManager = clt.waitNS("/ContainerManager",Engines.ContainerManager) +containerManager.Shutdown() + +# kill Test process + +addToKillList.killList() + +TestKiller.killProcess(runSalome.process_id) diff --git a/src/Logger/Makefile.am b/src/Logger/Makefile.am new file mode 100644 index 000000000..94fcc6ae1 --- /dev/null +++ b/src/Logger/Makefile.am @@ -0,0 +1,52 @@ +# SALOME Logger : CORBA server managing trace output +# +# Copyright (C) 2003 CEA/DEN, EDF R&D +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File : Makefile.am +# Author : Guillaume BOULANT, CSSI +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +salomeinclude_HEADERS = \ + SALOME_Trace.hxx + +# +# This makefile defines a executable target (SALOME_Logger_Server) and +# a library target (libSalomeLoggerServer.la). The executable depends +# on the library. +# + +# Program files +bin_PROGRAMS = SALOME_Logger_Server +SALOME_Logger_Server_SOURCES = \ + SALOME_Logger_Server_main.cxx \ + SALOME_Logger_Server.hxx + +SALOME_Logger_Server_LDADD = libSalomeLoggerServer.la +SALOME_Logger_Server_CPPFLAGS =\ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# Libraries targets +lib_LTLIBRARIES = libSalomeLoggerServer.la +libSalomeLoggerServer_la_SOURCES =\ + SALOME_Trace.cxx \ + SALOME_Logger_Server.cxx + +libSalomeLoggerServer_la_CPPFLAGS =\ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ +libSalomeLoggerServer_la_LDFLAGS = -no-undefined -version-info=0:0:0 + +libSalomeLoggerServer_la_LIBADD = \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CORBA_LIBS@ + +# Scripts target +dist_salomescript_DATA = SALOME_Trace.py diff --git a/src/Logger/SALOME_Logger_Server_main.cxx b/src/Logger/SALOME_Logger_Server_main.cxx new file mode 100644 index 000000000..a15d85405 --- /dev/null +++ b/src/Logger/SALOME_Logger_Server_main.cxx @@ -0,0 +1,121 @@ +// SALOME Logger : CORBA server managing trace output +// +// Copyright (C) 2003 CEA/DEN, EDF R&D +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOME_Logger_Server.cxx +// Author : Vasily Rusyaev +// Module : SALOME + +#include +#include "SALOME_Logger_Server.hxx" +#include +#include +#ifndef __WIN32__ +# include +#endif + +int main(int argc, char **argv) +{ + if (argc > 2) + { + std::cout << "usage: SALOME_Logger_Server [output_file]" << std::endl; + exit(1); + } + try + { + //Initialize the ORB + const long TIMESleep = 250000000; + const int NumberOfTries = 40; + int i; + timespec ts_req = {0, TIMESleep}; + timespec ts_rem = {0, 0}; + CosNaming::NamingContext_var inc; + SALOME_Logger::Logger_var myLoggerRef; + CORBA::Object_var theObj; + Logger* myLogger; + CORBA::Object_var obj; + PortableServer::POA_var poa; + PortableServer::POAManager_var pman; + + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv) ; + + for (i = 1; i <= NumberOfTries; i++) + { +#ifndef WNT + if (i != 1) nanosleep(&ts_req, &ts_rem); +#else + if (i != 1) Sleep(TIMESleep / 1000000); +#endif + try + { + obj = orb->resolve_initial_references("RootPOA") ; + if(!CORBA::is_nil(obj)) + poa = PortableServer::POA::_narrow(obj) ; + pman = poa->the_POAManager(); + // NB. You can activate the POA before or after + // activating objects in that POA. + + // This activates the object in the root POA (by default), and + // returns a reference to it. + //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro + //Otherwise, you will get segmentation fault. + //Get initial naming context + if(!CORBA::is_nil(orb)) + theObj = orb->resolve_initial_references("NameService"); + //Narrow to NamingContext + if (!CORBA::is_nil(theObj)) + inc = CosNaming::NamingContext::_narrow(theObj); + } catch(CORBA::COMM_FAILURE&) { + //cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<_this(); + CosNaming::Name name; + name.length(1); + name[0].id = CORBA::string_dup("Logger"); + inc->bind(name,myLoggerRef); + myLogger->_remove_ref(); + pman->activate(); + orb->run() ; + orb->destroy() ; + } + catch(CORBA::COMM_FAILURE& ex) + { + std::cerr << "Caught system exception COMM_FAILURE -- unable to contact the " + << "object." << std::endl; + } + catch(CORBA::SystemException&) + { + std::cerr << "Caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) + { + std::cerr << "Caught CORBA::Exception." << std::endl; + } + catch(omniORB::fatalException& fe) + { + std::cerr << "Caught omniORB::fatalException:" << std::endl; + std::cerr << " file: " << fe.file() << std::endl; + std::cerr << " line: " << fe.line() << std::endl; + std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + catch(...) + { + std::cerr << "Caught unknown exception." << std::endl; + } + return 0; +} diff --git a/src/Logger/Test/Makefile.am b/src/Logger/Test/Makefile.am new file mode 100644 index 000000000..50ed74c5a --- /dev/null +++ b/src/Logger/Test/Makefile.am @@ -0,0 +1,39 @@ +# Logger: CORBA Logger Server +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +# Executable scripts to be installed +dist_salomescript_SCRIPTS = TestKiller.py diff --git a/src/MPIContainer/Makefile.am b/src/MPIContainer/Makefile.am new file mode 100644 index 000000000..68dd93160 --- /dev/null +++ b/src/MPIContainer/Makefile.am @@ -0,0 +1,109 @@ +# SALOME MPIContainer : implemenation of container based on MPI libraries +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : SALOME +# $Header$ + + + +# +# =============================================================== +# _CS_gbo Caution !! This package may not work. I didn't test it +# because no mpi soft is installed on my computer. To be checked. +# =============================================================== +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Header to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = \ + MPIObject_i.hxx \ + MPIContainer_i.hxx + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +# _CS_gbo See wether it can be shared by all packages in a common include!! +COMMON_CPPFLAGS=\ + @PYTHON_INCLUDES@ \ + @MPI_INCLUDES@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(srcdir)/../Registry \ + -I$(srcdir)/../Notification \ + -I$(srcdir)/../ResourcesManager \ + -I$(srcdir)/../Container \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../Registry/libRegistry.la \ + ../Notification/libSalomeNotification.la \ + ../ResourcesManager/libSalomeResourcesManager.la \ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + ../Container/libSalomeContainer.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CORBA_LIBS@ + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeMPIContainer.la +libSalomeMPIContainer_la_SOURCES = MPIObject_i.cxx MPIContainer_i.cxx +libSalomeMPIContainer_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSalomeMPIContainer_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeMPIContainer_la_LIBADD = $(COMMON_LIBS) + + + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = SALOME_MPIContainer +SALOME_MPIContainer_SOURCES = SALOME_MPIContainer.cxx +SALOME_MPIContainer_LDADD = libSalomeMPIContainer.la @PYTHON_LIBS@ @MPI_LIBS@ +SALOME_MPIContainer_CPPFLAGS = $(COMMON_CPPFLAGS) + + diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 000000000..8d6b7fa89 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,123 @@ +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +SUBDIR_BASE = \ + Basics \ + SALOMELocalTrace \ + CASCatch \ + HDFPersist + +SUBDIR_CORBA = \ + Logger \ + SALOMETraceCollector \ + Utils \ + NamingService \ + GenericObj \ + Registry \ + ModuleCatalog \ + ResourcesManager \ + Notification \ + NOTIFICATION_SWIG \ + Container \ + TestContainer \ + LifeCycleCORBA \ + LifeCycleCORBA_SWIG \ + SALOMEDSClient \ + TOOLSDS \ + SALOMEDSImpl \ + SALOMEDS \ + KERNEL_PY \ + ModuleGenerator \ + Communication \ + Communication_SWIG + +SUBDIR_CPPUNIT_BASE= \ + Basics/Test \ + SALOMELocalTrace/Test + +SUBDIR_CPPUNIT_CORBA = \ + Logger/Test \ + SALOMETraceCollector/Test \ + Utils/Test \ + NamingService/Test \ + LifeCycleCORBA/Test \ + LifeCycleCORBA_SWIG/Test \ + SALOMEDSImpl/Test \ + SALOMEDS/Test + +SUBDIR_CPPUNIT_GENERAL = \ + UnitTests + +SUBDIR_MPI = \ + MPIContainer \ + TestMPIContainer + +SUBDIR_BATCH= \ + Batch \ + Batch_SWIG + +DIST_SUBDIRS = \ + $(SUBDIR_BASE) \ + $(SUBDIR_CORBA) \ + $(SUBDIR_MPI) \ + $(SUBDIR_BATCH) \ + $(SUBDIR_CPPUNIT_BASE) \ + $(SUBDIR_CPPUNIT_CORBA) \ + $(SUBDIR_CPPUNIT_GENERAL) + +# +# The following packages are built under conditions. +# A condition is defined using the macro AM_CONDITIONAL (see the +# check_cppunit for example with CPPUNIT_IS_OK. +# + +SUBDIRS = $(SUBDIR_BASE) + +if CORBA_GEN + SUBDIRS += $(SUBDIR_CORBA) +endif + +if MPI_IS_OK + SUBDIRS += $(SUBDIR_MPI) +endif + +if WITH_BATCH + SUBDIRS += $(SUBDIR_BATCH) +endif + +if CPPUNIT_IS_OK +if CORBA_GEN + SUBDIRS += \ + $(SUBDIR_CPPUNIT_BASE) \ + $(SUBDIR_CPPUNIT_CORBA) \ + $(SUBDIR_CPPUNIT_GENERAL) +else + SUBDIRS += \ + $(SUBDIR_CPPUNIT_BASE) \ + $(SUBDIR_CPPUNIT_GENERAL) +endif +endif + diff --git a/src/ModuleCatalog/Makefile.am b/src/ModuleCatalog/Makefile.am new file mode 100644 index 000000000..f4d06ac04 --- /dev/null +++ b/src/ModuleCatalog/Makefile.am @@ -0,0 +1,116 @@ +# SALOME ModuleCatalog : implementation of ModuleCatalog server which parsers xml description of modules +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Header an scripts to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = \ + SALOME_ModuleCatalog_impl.hxx \ + SALOME_ModuleCatalog_Acomponent_impl.hxx \ + PathPrefix.hxx \ + SALOME_ModuleCatalog_Parser.hxx \ + SALOME_ModuleCatalog_Parser_IO.hxx \ + SALOME_ModuleCatalog_Handler.hxx + +# Scripts to be installed +dist_salomescript_DATA = SALOME_TestModuleCatalog.py + + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeCatalog.la + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \ + @QT_MT_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +libSalomeCatalog_la_SOURCES =\ + SALOME_ModuleCatalog_Handler.cxx \ + SALOME_ModuleCatalog_Parser_IO.cxx \ + SALOME_ModuleCatalog_impl.cxx \ + SALOME_ModuleCatalog_Acomponent_impl.cxx + +libSalomeCatalog_la_CPPFLAGS =\ + $(COMMON_CPPFLAGS) + +libSalomeCatalog_la_LDFLAGS = -no-undefined -version-info=0:0:0 + +libSalomeCatalog_la_LIBADD =\ + $(COMMON_LIBS) \ + @QT_MT_LIBS@ + + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = SALOME_ModuleCatalog_Server SALOME_ModuleCatalog_Client + +# SALOME_ModuleCatalog_Server +SALOME_ModuleCatalog_Server_SOURCES = SALOME_ModuleCatalog_Server.cxx +SALOME_ModuleCatalog_Server_CPPFLAGS =\ + $(COMMON_CPPFLAGS) + +SALOME_ModuleCatalog_Server_LDADD =\ + libSalomeCatalog.la \ + $(COMMON_LIBS) \ + @CORBA_LIBS@ + +# SALOME_ModuleCatalog_Client +SALOME_ModuleCatalog_Client_SOURCES = SALOME_ModuleCatalog_Client.cxx +SALOME_ModuleCatalog_Client_CPPFLAGS =\ + $(COMMON_CPPFLAGS) + +SALOME_ModuleCatalog_Client_LDADD =\ + libSalomeCatalog.la \ + $(COMMON_LIBS) \ + @CORBA_LIBS@ diff --git a/src/ModuleGenerator/Makefile.am b/src/ModuleGenerator/Makefile.am new file mode 100644 index 000000000..eb591327d --- /dev/null +++ b/src/ModuleGenerator/Makefile.am @@ -0,0 +1,29 @@ +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +dist_salomescript_DATA = IDLparser.py diff --git a/src/NOTIFICATION_SWIG/Makefile.am b/src/NOTIFICATION_SWIG/Makefile.am new file mode 100644 index 000000000..beb83ffe4 --- /dev/null +++ b/src/NOTIFICATION_SWIG/Makefile.am @@ -0,0 +1,62 @@ +# SALOME NOTIFICATION_SWIG : wrapping of Notification sevices in order to be available in Python +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Swig targets +# =============================================================== +# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm) +# see also LifeCycleCORBA_SWIG +# +BUILT_SOURCES = swig_wrap.cpp + +SWIG_FLAGS = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../Notification +SWIG_SOURCES = NOTIFICATION.i + +pkgpython_PYTHON = libNOTIFICATION.py +pkgpyexec_LTLIBRARIES = _libNOTIFICATION.la +_libNOTIFICATION_la_SOURCES = $(BUILT_SOURCES) $(SWIG_SOURCES) \ + NOTIFICATION_Swig.cxx NOTIFICATION_Swig.hxx +_libNOTIFICATION_la_CPPFLAGS =\ + @PYTHON_INCLUDES@ -DHAVE_CONFIG_H \ + -I$(srcdir)/../Notification \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + + +_libNOTIFICATION_la_LDFLAGS = -module +_libNOTIFICATION_la_LIBADD = ../Notification/libSalomeNotification.la \ + @PYTHON_LIBS@ + +swig_wrap.cpp : $(SWIG_SOURCES) + $(SWIG) $(SWIG_FLAGS) -o $@ $< + +CLEANFILES = swig_wrap.cpp diff --git a/src/NamingService/Makefile.am b/src/NamingService/Makefile.am new file mode 100644 index 000000000..a371d7e1c --- /dev/null +++ b/src/NamingService/Makefile.am @@ -0,0 +1,59 @@ +# SALOME NamingService : wrapping NamingService services +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +salomeinclude_HEADERS =\ + SALOME_NamingService.hxx \ + ServiceUnreachable.hxx \ + NamingService_WaitForServerReadiness.hxx + +# Scripts to be exported +dist_salomescript_DATA =\ + SALOME_NamingServicePy.py + + +# Libraries targets +lib_LTLIBRARIES = libSalomeNS.la +libSalomeNS_la_SOURCES =\ + SALOME_NamingService.cxx \ + ServiceUnreachable.cxx \ + NamingService_WaitForServerReadiness.cxx + +libSalomeNS_la_LDFLAGS = -no-undefined -version-info=0:0:0 + +libSalomeNS_la_CPPFLAGS = \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +libSalomeNS_la_LIBADD = ../Utils/libOpUtil.la diff --git a/src/NamingService/Test/Makefile.am b/src/NamingService/Test/Makefile.am new file mode 100644 index 000000000..2effcecd9 --- /dev/null +++ b/src/NamingService/Test/Makefile.am @@ -0,0 +1,95 @@ +# SALOMELocalTrace : log on local machine +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume BOULANT (CSSI) +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= NamingServiceTest.hxx + +# Scripts to be installed +dist_salomescript_SCRIPTS = TestNamingService.py + + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CPPUNIT_INCLUDES@ -I$(srcdir)/$(RPATH)/NamingService \ + -I$(srcdir)/$(RPATH)/Basics \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace \ + -I$(srcdir)/$(RPATH)/Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libNamingServiceTest.la +libNamingServiceTest_la_SOURCES = NamingServiceTest.cxx +libNamingServiceTest_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libNamingServiceTest_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libNamingServiceTest_la_LIBADD = @CPPUNIT_LIBS@ + + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestNamingService +TestNamingService_SOURCES = TestNamingService.cxx +TestNamingService_CPPFLAGS = \ + $(COMMON_CPPFLAGS) \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \ + -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \ + -I$(srcdir)/$(RPATH)/Utils/Test \ + -I$(srcdir)/$(RPATH)/Basics/Test + + +TestNamingService_LDADD = \ + libNamingServiceTest.la ../libSalomeNS.la \ + $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \ + $(RPATH)/Utils/Test/libUtilsTest.la $(RPATH)/Utils/libOpUtil.la \ + $(RPATH)/Basics/libSALOMEBasics.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la diff --git a/src/Notification/Makefile.am b/src/Notification/Makefile.am new file mode 100644 index 000000000..b5b5bbb52 --- /dev/null +++ b/src/Notification/Makefile.am @@ -0,0 +1,72 @@ +# SALOME Notification : wrapping of Notification service services +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Header to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = \ + NOTIFICATION.hxx \ + NOTIFICATION_Supplier.hxx \ + NOTIFICATION_Consumer.hxx \ + CosNotifyShorthands.h + +# +# =============================================================== +# Libraries targets +# =============================================================== +# + +lib_LTLIBRARIES = libSalomeNotification.la +libSalomeNotification_la_SOURCES =\ + NOTIFICATION.cxx \ + NOTIFICATION_Supplier.cxx \ + NOTIFICATION_Consumer.cxx + +libSalomeNotification_la_CPPFLAGS =\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Utils \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + + +libSalomeNotification_la_LDFLAGS = -no-undefined -version-info=0:0:0 + +libSalomeNotification_la_LIBADD =\ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + @CORBA_LIBS@ + + +#LDFLAGS+= -lOpUtil -lSALOMELocalTrace +#OMNIORB_IDLCXXFLAGS+= -Wbtp diff --git a/src/Registry/Makefile.am b/src/Registry/Makefile.am new file mode 100644 index 000000000..6258de831 --- /dev/null +++ b/src/Registry/Makefile.am @@ -0,0 +1,73 @@ +# SALOME Registry : Registry server implementation +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +salomeinclude_HEADERS =\ + RegistryConnexion.hxx \ + RegistryService.hxx + +# Libraries targets +lib_LTLIBRARIES = libRegistry.la +libRegistry_la_SOURCES =\ + RegistryConnexion.cxx \ + RegistryService.cxx + +libRegistry_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libRegistry_la_CPPFLAGS =\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +libRegistry_la_LIBADD =\ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + + +# Executables targets +bin_PROGRAMS = SALOME_Registry_Server +SALOME_Registry_Server_SOURCES = SALOME_Registry_Server.cxx +SALOME_Registry_Server_LDADD =\ + libRegistry.la \ + ../Basics/libSALOMEBasics.la \ + @CORBA_LIBS@ +SALOME_Registry_Server_CPPFLAGS =\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ diff --git a/src/ResourcesManager/Makefile.am b/src/ResourcesManager/Makefile.am new file mode 100755 index 000000000..eaa49f92a --- /dev/null +++ b/src/ResourcesManager/Makefile.am @@ -0,0 +1,84 @@ +# SALOME ResourcesManager +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Header to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = \ + SALOME_ResourcesCatalog_Parser.hxx \ + SALOME_ResourcesManager.hxx \ + SALOME_ResourcesCatalog_Handler.hxx \ + SALOME_LoadRateManager.hxx + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeResourcesManager.la +libSalomeResourcesManager_la_SOURCES =\ + SALOME_ResourcesCatalog_Parser.cxx \ + SALOME_ResourcesCatalog_Handler.cxx \ + SALOME_LoadRateManager.cxx \ + SALOME_ResourcesManager.cxx + +libSalomeResourcesManager_la_CPPFLAGS =\ + $(COMMON_CPPFLAGS) \ + @QT_MT_INCLUDES@ + +libSalomeResourcesManager_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeResourcesManager_la_LIBADD =\ + $(COMMON_LIBS) \ + @QT_MT_LIBS@ diff --git a/src/SALOMEDS/Makefile.am b/src/SALOMEDS/Makefile.am new file mode 100644 index 000000000..00ead570a --- /dev/null +++ b/src/SALOMEDS/Makefile.am @@ -0,0 +1,353 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= \ + SALOMEDS_StudyManager_i.hxx \ + SALOMEDS_Driver_i.hxx \ + SALOMEDS_StudyManager.hxx \ + SALOMEDS_Study_i.hxx \ + SALOMEDS_Study.hxx \ + SALOMEDS_SObject_i.hxx \ + SALOMEDS_SObject.hxx \ + SALOMEDS_SComponent_i.hxx \ + SALOMEDS_SComponent.hxx \ + SALOMEDS_GenericAttribute_i.hxx \ + SALOMEDS_GenericAttribute.hxx \ + SALOMEDS_IParameters.hxx + +# Scripts to be installed +dist_salomescript_DATA = SALOME_DriverPy.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ + @BOOST_CPPFLAGS@ \ + -I$(srcdir)/../HDFPersist \ + @HDF5_INCLUDES@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../Utils \ + -I$(srcdir)/../SALOMEDSImpl \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../GenericObj \ + -I$(srcdir)/../SALOMEDSClient \ + -I$(srcdir)/../LifeCycleCORBA \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This flag is used to resolve the dependencies of OCC libraries. +LDXMUFLAGS = -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lXmu + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../TOOLSDS/libTOOLSDS.la \ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + ../HDFPersist/libSalomeHDFPersist.la \ + ../SALOMEDSImpl/libSalomeDSImpl.la \ + ../GenericObj/libSalomeGenericObj.la \ + ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CAS_KERNEL@ \ + @HDF5_LIBS@ \ + $(LDXMUFLAGS) + + +#LDFLAGS+= -lSalomeGenericObj -lSalomeLifeCycleCORBA + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeDS.la +libSalomeDS_la_SOURCES = \ + SALOMEDS.cxx \ + SALOMEDS_Driver_i.cxx \ + SALOMEDS_StudyManager_i.cxx \ + SALOMEDS_UseCaseBuilder_i.cxx \ + SALOMEDS_UseCaseIterator_i.cxx \ + SALOMEDS_ChildIterator_i.cxx \ + SALOMEDS_SComponentIterator_i.cxx \ + SALOMEDS_Study_i.cxx \ + SALOMEDS_StudyBuilder_i.cxx \ + SALOMEDS_SObject_i.cxx \ + SALOMEDS_SComponent_i.cxx \ + SALOMEDS_GenericAttribute_i.cxx \ + SALOMEDS_AttributeComment_i.cxx \ + SALOMEDS_AttributeExternalFileDef_i.cxx \ + SALOMEDS_AttributeFileType_i.cxx \ + SALOMEDS_AttributeIOR_i.cxx \ + SALOMEDS_AttributeInteger_i.cxx \ + SALOMEDS_AttributeName_i.cxx \ + SALOMEDS_AttributePersistentRef_i.cxx \ + SALOMEDS_AttributeReal_i.cxx \ + SALOMEDS_AttributeSequenceOfReal_i.cxx \ + SALOMEDS_AttributeSequenceOfInteger_i.cxx \ + SALOMEDS_AttributeDrawable_i.cxx \ + SALOMEDS_AttributeSelectable_i.cxx \ + SALOMEDS_AttributeOpened_i.cxx \ + SALOMEDS_AttributeFlags_i.cxx \ + SALOMEDS_AttributeGraphic_i.cxx \ + SALOMEDS_AttributeExpandable_i.cxx \ + SALOMEDS_AttributeTextColor_i.cxx \ + SALOMEDS_AttributeTextHighlightColor_i.cxx \ + SALOMEDS_AttributePixMap_i.cxx \ + SALOMEDS_AttributeTreeNode_i.cxx \ + SALOMEDS_AttributeLocalID_i.cxx \ + SALOMEDS_AttributeUserID_i.cxx \ + SALOMEDS_AttributeTarget_i.cxx \ + SALOMEDS_AttributeTableOfInteger_i.cxx \ + SALOMEDS_AttributeTableOfReal_i.cxx \ + SALOMEDS_AttributeTableOfString_i.cxx \ + SALOMEDS_AttributeStudyProperties_i.cxx \ + SALOMEDS_AttributePythonObject_i.cxx \ + SALOMEDS_AttributeParameter_i.cxx \ + SALOMEDS_SObject.cxx \ + SALOMEDS_SComponent.cxx \ + SALOMEDS_GenericAttribute.cxx \ + SALOMEDS_ChildIterator.cxx \ + SALOMEDS_SComponentIterator.cxx \ + SALOMEDS_UseCaseIterator.cxx \ + SALOMEDS_UseCaseBuilder.cxx \ + SALOMEDS_StudyBuilder.cxx \ + SALOMEDS_Study.cxx \ + SALOMEDS_StudyManager.cxx \ + SALOMEDS_AttributeStudyProperties.cxx \ + SALOMEDS_AttributeComment.cxx \ + SALOMEDS_AttributeDrawable.cxx \ + SALOMEDS_AttributeExpandable.cxx \ + SALOMEDS_AttributeExternalFileDef.cxx \ + SALOMEDS_AttributeFileType.cxx \ + SALOMEDS_AttributeFlags.cxx \ + SALOMEDS_AttributeGraphic.cxx \ + SALOMEDS_AttributeIOR.cxx \ + SALOMEDS_AttributeInteger.cxx \ + SALOMEDS_AttributeLocalID.cxx \ + SALOMEDS_AttributeName.cxx \ + SALOMEDS_AttributeOpened.cxx \ + SALOMEDS_AttributePythonObject.cxx \ + SALOMEDS_AttributeReal.cxx \ + SALOMEDS_AttributeSelectable.cxx \ + SALOMEDS_AttributeSequenceOfInteger.cxx \ + SALOMEDS_AttributePersistentRef.cxx \ + SALOMEDS_AttributePixMap.cxx \ + SALOMEDS_AttributeSequenceOfReal.cxx \ + SALOMEDS_AttributeTableOfInteger.cxx \ + SALOMEDS_AttributeTableOfReal.cxx \ + SALOMEDS_AttributeTableOfString.cxx \ + SALOMEDS_AttributeTarget.cxx \ + SALOMEDS_AttributeTextColor.cxx \ + SALOMEDS_AttributeTextHighlightColor.cxx \ + SALOMEDS_AttributeTreeNode.cxx \ + SALOMEDS_AttributeUserID.cxx \ + SALOMEDS_TMPFile_i.cxx \ + SALOMEDS_AttributeParameter.cxx \ + SALOMEDS_IParameters.cxx \ + \ + Handle_SALOMEDS_DataMapNodeOfDataMapOfIntegerString.hxx \ + Handle_SALOMEDS_DataMapNodeOfDataMapStringLabel.hxx \ + Handle_SALOMEDS_DrawableAttribute.hxx \ + Handle_SALOMEDS_ExpandableAttribute.hxx \ + Handle_SALOMEDS_ExternalFileDef.hxx \ + Handle_SALOMEDS_FileType.hxx \ + Handle_SALOMEDS_IORAttribute.hxx \ + Handle_SALOMEDS_LocalIDAttribute.hxx \ + Handle_SALOMEDS_OCAFApplication.hxx \ + Handle_SALOMEDS_OpenedAttribute.hxx \ + Handle_SALOMEDS_PersRefAttribute.hxx \ + Handle_SALOMEDS_PixMapAttribute.hxx \ + Handle_SALOMEDS_PythonObjectAttribute.hxx \ + Handle_SALOMEDS_SelectableAttribute.hxx \ + Handle_SALOMEDS_SequenceOfIntegerAttribute.hxx \ + Handle_SALOMEDS_SequenceOfRealAttribute.hxx \ + Handle_SALOMEDS_StudyPropertiesAttribute.hxx \ + Handle_SALOMEDS_TableOfIntegerAttribute.hxx \ + Handle_SALOMEDS_TableOfRealAttribute.hxx \ + Handle_SALOMEDS_TableOfStringAttribute.hxx \ + Handle_SALOMEDS_TargetAttribute.hxx \ + Handle_SALOMEDS_TextColorAttribute.hxx \ + Handle_SALOMEDS_TextHighlightColorAttribute.hxx \ + SALOMEDS_AttLong_i.hxx \ + SALOMEDS_AttReal_i.hxx \ + SALOMEDS_AttributeComment.hxx \ + SALOMEDS_AttributeComment_i.hxx \ + SALOMEDS_AttributeDrawable.hxx \ + SALOMEDS_AttributeDrawable_i.hxx \ + SALOMEDS_AttributeExpandable.hxx \ + SALOMEDS_AttributeExpandable_i.hxx \ + SALOMEDS_AttributeExternalFileDef.hxx \ + SALOMEDS_AttributeExternalFileDef_i.hxx \ + SALOMEDS_AttributeFileType.hxx \ + SALOMEDS_AttributeFileType_i.hxx \ + SALOMEDS_AttributeFlags.hxx \ + SALOMEDS_AttributeFlags_i.hxx \ + SALOMEDS_AttributeGraphic.hxx \ + SALOMEDS_AttributeGraphic_i.hxx \ + SALOMEDS_AttributeInteger.hxx \ + SALOMEDS_AttributeInteger_i.hxx \ + SALOMEDS_AttributeIOR.hxx \ + SALOMEDS_AttributeIOR_i.hxx \ + SALOMEDS_AttributeLocalID.hxx \ + SALOMEDS_AttributeLocalID_i.hxx \ + SALOMEDS_AttributeName.hxx \ + SALOMEDS_AttributeName_i.hxx \ + SALOMEDS_AttributeOpened.hxx \ + SALOMEDS_AttributeOpened_i.hxx \ + SALOMEDS_AttributePersistentRef.hxx \ + SALOMEDS_AttributePersistentRef_i.hxx \ + SALOMEDS_AttributePixMap.hxx \ + SALOMEDS_AttributePixMap_i.hxx \ + SALOMEDS_AttributePythonObject.hxx \ + SALOMEDS_AttributePythonObject_i.hxx \ + SALOMEDS_AttributeReal.hxx \ + SALOMEDS_AttributeReal_i.hxx \ + SALOMEDS_AttributeSelectable.hxx \ + SALOMEDS_AttributeSelectable_i.hxx \ + SALOMEDS_AttributeSequenceOfInteger.hxx \ + SALOMEDS_AttributeSequenceOfInteger_i.hxx \ + SALOMEDS_AttributeSequenceOfReal.hxx \ + SALOMEDS_AttributeSequenceOfReal_i.hxx \ + SALOMEDS_Attributes.hxx \ + SALOMEDS_AttributeStudyProperties.hxx \ + SALOMEDS_AttributeStudyProperties_i.hxx \ + SALOMEDS_AttributeTableOfInteger.hxx \ + SALOMEDS_AttributeTableOfInteger_i.hxx \ + SALOMEDS_AttributeTableOfReal.hxx \ + SALOMEDS_AttributeTableOfReal_i.hxx \ + SALOMEDS_AttributeTableOfString.hxx \ + SALOMEDS_AttributeTableOfString_i.hxx \ + SALOMEDS_AttributeTarget.hxx \ + SALOMEDS_AttributeTarget_i.hxx \ + SALOMEDS_AttributeTextColor.hxx \ + SALOMEDS_AttributeTextColor_i.hxx \ + SALOMEDS_AttributeTextHighlightColor.hxx \ + SALOMEDS_AttributeTextHighlightColor_i.hxx \ + SALOMEDS_AttributeTreeNode.hxx \ + SALOMEDS_AttributeTreeNode_i.hxx \ + SALOMEDS_AttributeUserID.hxx \ + SALOMEDS_AttributeUserID_i.hxx \ + SALOMEDS_BasicAttributeFactory.hxx \ + SALOMEDS_BasicAttribute_i.hxx \ + SALOMEDS_Callback_i.hxx \ + SALOMEDS_ChildIterator.hxx \ + SALOMEDS_ChildIterator_i.hxx \ + SALOMEDS_ClientAttributes.hxx \ + SALOMEDS_DataMapIteratorOfDataMapOfIntegerString.hxx \ + SALOMEDS_DataMapIteratorOfDataMapStringLabel.hxx \ + SALOMEDS_DataMapNodeOfDataMapOfIntegerString.hxx \ + SALOMEDS_DataMapNodeOfDataMapStringLabel.hxx \ + SALOMEDS_DataMapOfIntegerString.hxx \ + SALOMEDS_DataMapStringLabel.hxx \ + SALOMEDS_DrawableAttribute.hxx \ + SALOMEDS_Driver_i.hxx \ + SALOMEDS_ExpandableAttribute.hxx \ + SALOMEDS_ExternalFileDef.hxx \ + SALOMEDS_FileType.hxx \ + SALOMEDS_FlagsAttribute.hxx \ + SALOMEDS_GenericAttribute.hxx \ + SALOMEDS_GenericAttribute_i.hxx \ + SALOMEDS_GraphicAttribute.hxx \ + SALOMEDS.hxx \ + SALOMEDS_IORAttribute.hxx \ + SALOMEDS_LocalIDAttribute.hxx \ + SALOMEDS_OCAFApplication.hxx \ + SALOMEDS_OpenedAttribute.hxx \ + SALOMEDS_PersRefAttribute.hxx \ + SALOMEDS_PixMapAttribute.hxx \ + SALOMEDS_PythonObjectAttribute.hxx \ + SALOMEDS_SAttribute_i.hxx \ + SALOMEDS_SComponent.hxx \ + SALOMEDS_SComponent_i.hxx \ + SALOMEDS_SComponentIterator.hxx \ + SALOMEDS_SComponentIterator_i.hxx \ + SALOMEDS_SelectableAttribute.hxx \ + SALOMEDS_SequenceOfIntegerAttribute.hxx \ + SALOMEDS_SequenceOfRealAttribute.hxx \ + SALOMEDS_SObject.hxx \ + SALOMEDS_SObject_i.hxx \ + SALOMEDS_StudyBuilder.hxx \ + SALOMEDS_StudyBuilder_i.hxx \ + SALOMEDS_Study.hxx \ + SALOMEDS_Study_i.hxx \ + SALOMEDS_StudyManager.hxx \ + SALOMEDS_StudyManager_i.hxx \ + SALOMEDS_StudyPropertiesAttribute.hxx \ + SALOMEDS_TableOfIntegerAttribute.hxx \ + SALOMEDS_TableOfRealAttribute.hxx \ + SALOMEDS_TableOfStringAttribute.hxx \ + SALOMEDS_TargetAttribute.hxx \ + SALOMEDS_TextColorAttribute.hxx \ + SALOMEDS_TextHighlightColorAttribute.hxx \ + SALOMEDS_UseCaseBuilder.hxx \ + SALOMEDS_UseCaseBuilder_i.hxx \ + SALOMEDS_UseCaseIterator.hxx \ + SALOMEDS_UseCaseIterator_i.hxx \ + SALOMEDS_AttributeParameter.hxx \ + SALOMEDS_AttributeParameter_i.hxx \ + SALOMEDS_TMPFile_i.hxx + +libSalomeDS_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSalomeDS_la_LDFLAGS = -Wl,-E -no-undefined -version-info=0:0:0 @LDEXPDYNFLAGS@ +libSalomeDS_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = SALOMEDS_Server SALOMEDS_Client + +SALOMEDS_Server_SOURCES = SALOMEDS_Server.cxx +SALOMEDS_Server_CPPFLAGS = $(COMMON_CPPFLAGS) +SALOMEDS_Server_LDADD = \ + libSalomeDS.la $(COMMON_LIBS) \ + ../ResourcesManager/libSalomeResourcesManager.la \ + @CAS_OCAF@ \ + @CORBA_LIBS@ + +SALOMEDS_Client_SOURCES = SALOMEDS_Client.cxx +SALOMEDS_Client_CPPFLAGS = $(COMMON_CPPFLAGS) +SALOMEDS_Client_LDADD = \ + libSalomeDS.la $(COMMON_LIBS) \ + ../ResourcesManager/libSalomeResourcesManager.la \ + -lTKLCAF -lTKMath \ + @CORBA_LIBS@ + diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter.cxx b/src/SALOMEDS/SALOMEDS_AttributeParameter.cxx new file mode 100644 index 000000000..dd6c188f3 --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_AttributeParameter.cxx @@ -0,0 +1,481 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDS_AttributeParameter.cxx +// Author : Sergey RUIN +// Module : SALOME + +#include "SALOMEDS_AttributeParameter.hxx" +#include "SALOMEDS.hxx" + +#include +#include + +//======================================================================= +/*! + * Function : Constructor + * Purpose : Creates a new instance of SALOMEDS_AttributeParameter + */ +//======================================================================= +SALOMEDS_AttributeParameter::SALOMEDS_AttributeParameter(const Handle(SALOMEDSImpl_AttributeParameter)& theAttr) +:SALOMEDS_GenericAttribute(theAttr) +{} + +//======================================================================= +/*! + * Function : Constructor + * Purpose : Creates a new instance of SALOMEDS_AttributeParameter + */ +//======================================================================= +SALOMEDS_AttributeParameter::SALOMEDS_AttributeParameter(SALOMEDS::AttributeParameter_ptr theAttr) +:SALOMEDS_GenericAttribute(theAttr) +{} + +//======================================================================= +/*! + * Function : Destructor + * Purpose : Destroys the instance of SALOMEDS_AttributeParameter + */ +//======================================================================= +SALOMEDS_AttributeParameter::~SALOMEDS_AttributeParameter() +{} + +//======================================================================= +/*! + * Function : SetInt + * Purpose : Associates a integer value with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetInt(const string& theID, const int theValue) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetInt(theID, theValue); + } + else + SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetInt(theID.c_str(), theValue); +} + +//======================================================================= +/*! + * Function : GetInt + * Purpose : Returns a int value associated with the given ID + */ +//======================================================================= +int SALOMEDS_AttributeParameter::GetInt(const string& theID) +{ + int aValue; + if(_isLocal) { + SALOMEDS::Locker lock; + aValue = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetInt(theID); + } + else + aValue = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetInt(theID.c_str()); + return aValue; +} + +//======================================================================= +/*! + * Function : SetReal + * Purpose : Associates a double value with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetReal(const string& theID, const double& theValue) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetReal(theID, theValue); + } + else + SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetReal(theID.c_str(), theValue); +} + +//======================================================================= +/*! + * Function : GetReal + * Purpose : Returns a double value associated with the given ID + */ +//======================================================================= +double SALOMEDS_AttributeParameter::GetReal(const string& theID) +{ + double aValue; + if(_isLocal) { + SALOMEDS::Locker lock; + aValue = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetReal(theID); + } + else + aValue = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetReal(theID.c_str()); + return aValue; +} + +//======================================================================= +/*! + * Function : SetString + * Purpose : Associates a string with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetString(const string& theID, const string& theValue) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetString(theID, theValue); + } + else + SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetString(theID.c_str(), theValue.c_str()); +} + +//======================================================================= +/*! + * Function : GetString + * Purpose : Returns a string associated with the given ID + */ +//======================================================================= +string SALOMEDS_AttributeParameter::GetString(const string& theID) +{ + string aValue; + if(_isLocal) { + SALOMEDS::Locker lock; + aValue = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetString(theID); + } + else + aValue = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetString(theID.c_str()); + return aValue; +} + +//======================================================================= +/*! + * Function : SetBool + * Purpose : Associates a bool value with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetBool(const string& theID, const bool& theValue) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetBool(theID, theValue); + } + else + SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetBool(theID.c_str(), theValue); +} + +//======================================================================= +/*! + * Function : GetBool + * Purpose : Returns a bool value associated with the ID + */ +//======================================================================= +bool SALOMEDS_AttributeParameter::GetBool(const string& theID) +{ + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetBool(theID); + } + else + return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetBool(theID.c_str()); +} + +//======================================================================= +/*! + * Function : SetRealArray + * Purpose : Associates an array of double values with the given ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetRealArray(const string& theID, const vector& theArray) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetRealArray(theID, theArray); + } + else { + SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq; + int length = theArray.size(); + if(length) { + aSeq->length(length); + for(int i = 0; iSetRealArray(theID.c_str(), aSeq); + } +} + +//======================================================================= +/*! + * Function : GetRealArray + * Purpose : Returns an array of double values associated with the ID + */ +//======================================================================= +vector SALOMEDS_AttributeParameter::GetRealArray(const string& theID) +{ + vector v; + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetRealArray(theID); + } + else { + SALOMEDS::DoubleSeq_var aSeq = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetRealArray(theID.c_str()); + int length = aSeq->length(); + if(length) { + v.resize(length); + for(int i = 0; i < length; i++) v[i] = aSeq[i]; + } + } + return v; +} + +//======================================================================= +/*! + * Function : SetIntArray + * Purpose : Associates an array of int values with the given ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetIntArray(const string& theID, const vector& theArray) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetIntArray(theID, theArray); + } + else { + SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq; + int length = theArray.size(); + if(length) { + aSeq->length(length); + for(int i = 0; iSetIntArray(theID.c_str(), aSeq); + } +} + +//======================================================================= +/*! + * Function : GetIntArray + * Purpose : Returns an array of int values associated with the ID + */ +//======================================================================= +vector SALOMEDS_AttributeParameter::GetIntArray(const string& theID) +{ + vector v; + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetIntArray(theID); + } + else { + SALOMEDS::LongSeq_var aSeq = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetIntArray(theID.c_str()); + int length = aSeq->length(); + if(length) { + v.resize(length); + for(int i = 0; i < length; i++) v[i] = aSeq[i]; + } + } + return v; +} + +//======================================================================= +/*! + * Function : SetStrArray + * Purpose : Associates an array of string values with the given ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter::SetStrArray(const string& theID, const vector& theArray) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetStrArray(theID, theArray); + } + else { + SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq; + int length = theArray.size(); + if(length) { + aSeq->length(length); + for(int i = 0; iSetStrArray(theID.c_str(), aSeq); + } +} + +//======================================================================= +/*! + * Function : GetStrArray + * Purpose : Returns an array of string values associated with the ID + */ +//======================================================================= +vector SALOMEDS_AttributeParameter::GetStrArray(const string& theID) +{ + vector v; + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetStrArray(theID); + } + else { + SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetStrArray(theID.c_str()); + int length = aSeq->length(); + if(length) { + v.resize(length); + for(int i = 0; i < length; i++) v[i] = string(aSeq[i].in()); + } + } + return v; +} + + +//======================================================================= +/*! + * Function : IsSet + * Purpose : Returns true if for the ID of given type was assigned \n + * a value in the attribute + */ +//======================================================================= +bool SALOMEDS_AttributeParameter::IsSet(const string& theID, const int theType) +{ + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->IsSet(theID, (Parameter_Types)theType); + } + else + return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->IsSet(theID.c_str(), theType); +} + +//======================================================================= +/*! + * Function : RemoveID + * Purpose : Removes a parameter with given ID + */ +//======================================================================= +bool SALOMEDS_AttributeParameter::RemoveID(const string& theID, const int theType) +{ + CheckLocked(); + + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->RemoveID(theID, (Parameter_Types)theType); + } + else + return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->RemoveID(theID.c_str(), theType); +} + +//======================================================================= +/*! + * Function : GetFather + * Purpose : Returns a father attribute for this attribute + */ +//======================================================================= +_PTR(AttributeParameter) SALOMEDS_AttributeParameter::GetFather() +{ + SALOMEDSClient_AttributeParameter* AP = NULL; + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter) AP_impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetFather(); + if(AP_impl.IsNull()) return _PTR(AttributeParameter)(AP); + AP = new SALOMEDS_AttributeParameter(AP_impl); + } + else { + SALOMEDS::AttributeParameter_var AP_impl = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetFather(); + if(CORBA::is_nil(AP_impl)) return _PTR(AttributeParameter)(AP); + AP = new SALOMEDS_AttributeParameter(AP_impl); + } + + return _PTR(AttributeParameter)(AP); +} + +//======================================================================= +/*! + * Function : HasFather + * Purpose : Returns True if the attribute has a father attribute + */ +//======================================================================= +bool SALOMEDS_AttributeParameter::HasFather() +{ + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->HasFather(); + } + else + return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->HasFather(); +} + +//======================================================================= +/*! + * Function : IsRoot + * Purpose : Returns True is the attribute is highest in an hierachy + */ +//======================================================================= +bool SALOMEDS_AttributeParameter::IsRoot() +{ + if(_isLocal) { + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->IsRoot(); + } + else + return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->IsRoot(); +} + +//======================================================================= +/*! + * Function : Clear + * Purpose : Clears the content of the attribute + */ +//======================================================================= +void SALOMEDS_AttributeParameter::Clear() +{ + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->Clear(); + } + else + SALOMEDS::AttributeParameter::_narrow(_corba_impl)->Clear(); +} + +//======================================================================= +/*! + * Function : GetIDs + * Purpose : Returns an array of all ID's of the given type + */ +//======================================================================= +vector SALOMEDS_AttributeParameter::GetIDs(const int theType) +{ + vector v; + if(_isLocal) { + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter) AP_impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl); + return AP_impl->GetIDs((Parameter_Types)theType); + } + else { + SALOMEDS::AttributeParameter_var AP_impl = SALOMEDS::AttributeParameter::_narrow(_corba_impl); + SALOMEDS::StringSeq_var CorbaSeq = AP_impl->GetIDs(theType); + int length = CorbaSeq->length(); + if(length) { + v.resize(length); + for(int i = 0; i +#include CORBA_SERVER_HEADER(SALOMEDS) +#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) + +class SALOMEDS_AttributeParameter: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeParameter +{ +public: + SALOMEDS_AttributeParameter(const Handle(SALOMEDSImpl_AttributeParameter)& theAttr); + SALOMEDS_AttributeParameter(SALOMEDS::AttributeParameter_ptr theAttr); + ~SALOMEDS_AttributeParameter(); + + virtual void SetInt(const std::string& theID, const int theValue); + virtual int GetInt(const std::string& theID); + + virtual void SetReal(const std::string& theID, const double& theValue); + virtual double GetReal(const std::string& theID); + + virtual void SetString(const std::string& theID, const std::string& theValue); + virtual std::string GetString(const std::string& theID); + + virtual void SetBool(const std::string& theID, const bool& theValue); + virtual bool GetBool(const std::string& theID); + + virtual void SetRealArray(const std::string& theID, const std::vector& theArray); + virtual std::vector GetRealArray(const std::string& theID); + + virtual void SetIntArray(const std::string& theID, const std::vector& theArray); + virtual std::vector GetIntArray(const std::string& theID); + + virtual void SetStrArray(const std::string& theID, const std::vector& theArray); + virtual std::vector GetStrArray(const std::string& theID); + + virtual bool IsSet(const std::string& theID, const int theType); + + virtual bool RemoveID(const std::string& theID, const int theType); + + virtual _PTR(AttributeParameter) GetFather(); + virtual bool HasFather(); + virtual bool IsRoot(); + + virtual void Clear(); + + virtual std::vector GetIDs(const int theType); +}; + +#endif diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx b/src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx new file mode 100644 index 000000000..e1f976734 --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx @@ -0,0 +1,347 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDS_AttributeParameter_i.cxx +// Author : Sergey RUIN +// Module : SALOME + + +#include "SALOMEDS_AttributeParameter_i.hxx" +#include "SALOMEDS.hxx" +#include + +#include + +using namespace std; + +//======================================================================= +/*! + * Function : SetInt + * Purpose : Associates a integer value with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter_i::SetInt(const char* theID, CORBA::Long theValue) +{ + SALOMEDS::Locker lock; + CheckLocked(); + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetInt(theID, theValue); +} + +//======================================================================= +/*! + * Function : GetInt + * Purpose : Returns a int value associated with the given ID + */ +//======================================================================= +CORBA::Long SALOMEDS_AttributeParameter_i::GetInt(const char* theID) +{ + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetInt(theID); +} + +//======================================================================= +/*! + * Function : SetReal + * Purpose : Associates a double value with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter_i::SetReal(const char* theID, const CORBA::Double theValue) +{ + SALOMEDS::Locker lock; + CheckLocked(); + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetReal(theID, theValue); +} + +//======================================================================= +/*! + * Function : GetReal + * Purpose : Returns a double value associated with the given ID + */ +//======================================================================= +CORBA::Double SALOMEDS_AttributeParameter_i::GetReal(const char* theID) +{ + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetReal(theID); +} + +//======================================================================= +/*! + * Function : SetString + * Purpose : Associates a string with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter_i::SetString(const char* theID, const char* theValue) +{ + SALOMEDS::Locker lock; + CheckLocked(); + Handle(SALOMEDSImpl_AttributeParameter) impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl); + impl->SetString(theID, theValue); +} + +//======================================================================= +/*! + * Function : GetString + * Purpose : Returns a string associated with the given ID + */ +//======================================================================= +char* SALOMEDS_AttributeParameter_i::GetString(const char* theID) +{ + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter) impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl); + CORBA::String_var c_s = CORBA::string_dup(impl->GetString(theID).c_str()); + return c_s._retn(); +} + +//======================================================================= +/*! + * Function : SetBool + * Purpose : Associates a bool value with the ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter_i::SetBool(const char* theID, CORBA::Boolean theValue) +{ + SALOMEDS::Locker lock; + CheckLocked(); + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetBool(theID, theValue); +} + +//======================================================================= +/*! + * Function : GetBool + * Purpose : Returns a bool value associated with the ID + */ +//======================================================================= +CORBA::Boolean SALOMEDS_AttributeParameter_i::GetBool(const char* theID) +{ + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetBool(theID); +} + +//======================================================================= +/*! + * Function : SetRealArray + * Purpose : Associates an array of double values with the given ID + */ +//======================================================================= +void SALOMEDS_AttributeParameter_i::SetRealArray(const char* theID, const SALOMEDS::DoubleSeq& theArray) +{ + SALOMEDS::Locker lock; + CheckLocked(); + vector v; + int length = theArray.length(); + if(length) { + v.resize(length); + for(int i = 0; iSetRealArray(theID, v); +} + +//======================================================================= +/*! + * Function : GetRealArray + * Purpose : Returns an array of double values associated with the ID + */ +//======================================================================= +SALOMEDS::DoubleSeq* SALOMEDS_AttributeParameter_i::GetRealArray(const char* theID) +{ + SALOMEDS::Locker lock; + SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq; + vector v = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetRealArray(theID); + int length = v.size(); + if(length) { + aSeq->length(length); + for(int i = 0; i v; + int length = theArray.length(); + if(length) { + v.resize(length); + for(int i = 0; iSetIntArray(theID, v); +} + +//======================================================================= +/*! + * Function : GetIntArray + * Purpose : Returns an array of int values associated with the ID + */ +//======================================================================= +SALOMEDS::LongSeq* SALOMEDS_AttributeParameter_i::GetIntArray(const char* theID) +{ + SALOMEDS::Locker lock; + SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq; + vector v = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetIntArray(theID); + int length = v.size(); + if(length) { + aSeq->length(length); + for(int i = 0; i v; + int length = theArray.length(); + if(length) { + v.resize(length); + for(int i = 0; iSetStrArray(theID, v); +} + +//======================================================================= +/*! + * Function : GetStrArray + * Purpose : Returns an array of string values associated with the ID + */ +//======================================================================= +SALOMEDS::StringSeq* SALOMEDS_AttributeParameter_i::GetStrArray(const char* theID) +{ + SALOMEDS::Locker lock; + SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq; + vector v = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetStrArray(theID); + int length = v.size(); + if(length) { + aSeq->length(length); + for(int i = 0; iIsSet(theID, (Parameter_Types)theType); +} + +//======================================================================= +/*! + * Function : RemoveID + * Purpose : Removes a parameter with given ID + */ +//======================================================================= +CORBA::Boolean SALOMEDS_AttributeParameter_i::RemoveID(const char* theID, CORBA::Long theType) +{ + SALOMEDS::Locker lock; + CheckLocked(); + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->RemoveID(theID, (Parameter_Types)theType); +} + +//======================================================================= +/*! + * Function : GetFather + * Purpose : Returns a father attribute for this attribute + */ +//======================================================================= +SALOMEDS::AttributeParameter_ptr SALOMEDS_AttributeParameter_i::GetFather() +{ + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter) impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl); + SALOMEDS_AttributeParameter_i* attr = new SALOMEDS_AttributeParameter_i(impl, _orb); + return attr->AttributeParameter::_this(); +} + +//======================================================================= +/*! + * Function : HasFather + * Purpose : Returns True if the attribute has a father attribute + */ +//======================================================================= +CORBA::Boolean SALOMEDS_AttributeParameter_i::HasFather() +{ + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->HasFather(); +} + +//======================================================================= +/*! + * Function : IsRoot + * Purpose : Returns True is the attribute is highest in an hierachy + */ +//======================================================================= +CORBA::Boolean SALOMEDS_AttributeParameter_i::IsRoot() +{ + SALOMEDS::Locker lock; + return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->IsRoot(); +} + +//======================================================================= +/*! + * Function : IsRoot + * Purpose : Clears the content of the attribute + */ +//======================================================================= +void SALOMEDS_AttributeParameter_i::Clear() +{ + SALOMEDS::Locker lock; + Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->Clear(); +} + + +//======================================================================= +/*! + * Function : GetIDs + * Purpose : Returns an array of all ID's of the given type + */ +//======================================================================= +SALOMEDS::StringSeq* SALOMEDS_AttributeParameter_i::GetIDs(CORBA::Long theType) +{ + SALOMEDS::Locker lock; + SALOMEDS::StringSeq_var CorbaSeq = new SALOMEDS::StringSeq; + vector A = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetIDs((Parameter_Types)theType); + + if(A.size()) { + int length = A.size(); + CorbaSeq->length(length); + for (int i = 0; i < length; i++) CorbaSeq[i] = CORBA::string_dup(A[i].c_str());; + } + + return CorbaSeq._retn(); +} diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx b/src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx new file mode 100644 index 000000000..df1ba297a --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx @@ -0,0 +1,89 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDS_AttributeParameter_i.hxx +// Author : Sergey RUIN +// Module : SALOME +// $Header: + +#ifndef SALOMEDS_AttributeParameter_i_HeaderFile +#define SALOMEDS_AttributeParameter_i_HeaderFile + +// IDL headers +#include +#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) + +#include "SALOMEDS_GenericAttribute_i.hxx" +#include "SALOMEDSImpl_AttributeParameter.hxx" + +/*! + Class: SALOMEDS_AttributeParameter + Description : AttributeParameter is a universal container of basic types +*/ + +class SALOMEDS_AttributeParameter_i: public virtual POA_SALOMEDS::AttributeParameter, + public virtual SALOMEDS_GenericAttribute_i +{ +public: + + SALOMEDS_AttributeParameter_i(const Handle(SALOMEDSImpl_AttributeParameter)& theAttr, CORBA::ORB_ptr orb) + :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; + + ~SALOMEDS_AttributeParameter_i() {}; + + + virtual void SetInt(const char* theID, CORBA::Long theValue); + virtual CORBA::Long GetInt(const char* theID); + + virtual void SetReal(const char* theID, const CORBA::Double theValue); + virtual CORBA::Double GetReal(const char* theID); + + virtual void SetString(const char* theID, const char* theValue); + virtual char* GetString(const char* theID); + + virtual void SetBool(const char* theID, CORBA::Boolean theValue); + virtual CORBA::Boolean GetBool(const char* theID); + + virtual void SetRealArray(const char* theID, const SALOMEDS::DoubleSeq& theArray); + virtual SALOMEDS::DoubleSeq* GetRealArray(const char* theID); + + virtual void SetIntArray(const char* theID, const SALOMEDS::LongSeq& theArray); + virtual SALOMEDS::LongSeq* GetIntArray(const char* theID); + + virtual void SetStrArray(const char* theID, const SALOMEDS::StringSeq& theArray); + virtual SALOMEDS::StringSeq* GetStrArray(const char* theID); + + virtual CORBA::Boolean IsSet(const char* theID, CORBA::Long theType); + + virtual CORBA::Boolean RemoveID(const char* theID, CORBA::Long theType); + + virtual SALOMEDS::AttributeParameter_ptr GetFather(); + virtual CORBA::Boolean HasFather(); + virtual CORBA::Boolean IsRoot(); + + virtual void Clear(); + + virtual SALOMEDS::StringSeq* GetIDs(CORBA::Long theType); + +}; + + + + +#endif diff --git a/src/SALOMEDS/SALOMEDS_IParameters.cxx b/src/SALOMEDS/SALOMEDS_IParameters.cxx new file mode 100644 index 000000000..78d4ff8a1 --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_IParameters.cxx @@ -0,0 +1,279 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "SALOMEDS_IParameters.hxx" +#include + +#include + +using namespace std; + +#define PT_INTEGER 0 +#define PT_REAL 1 +#define PT_BOOLEAN 2 +#define PT_STRING 3 +#define PT_REALARRAY 4 +#define PT_INTARRAY 5 +#define PT_STRARRAY 6 + +#define _AP_LISTS_LIST_ "AP_LISTS_LIST" +#define _AP_ENTRIES_LIST_ "AP_ENTRIES_LIST" +#define _AP_PROPERTIES_LIST_ "AP_PROPERTIES_LIST" +#define _AP_DUMP_PYTHON_ "AP_DUMP_PYTHON" + +/*! + Constructor +*/ +SALOMEDS_IParameters::SALOMEDS_IParameters(const _PTR(AttributeParameter)& ap) +{ + if(!ap) return; + _ap = ap; + _PTR(SObject) so = _ap->GetSObject(); + _study = so->GetStudy(); +} + +SALOMEDS_IParameters::~SALOMEDS_IParameters() +{ + _compNames.clear(); +} + +int SALOMEDS_IParameters::append(const string& listName, const string& value) +{ + if(!_ap) return -1; + vector v; + if(!_ap->IsSet(listName, PT_STRARRAY)) { + if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) _ap->SetStrArray(_AP_LISTS_LIST_, v); + if(listName != _AP_ENTRIES_LIST_ && + listName != _AP_PROPERTIES_LIST_) { + append(_AP_LISTS_LIST_, listName); + } + _ap->SetStrArray(listName, v); + } + v = _ap->GetStrArray(listName); + v.push_back(value); + _ap->SetStrArray(listName, v); + return (v.size()-1); +} + +int SALOMEDS_IParameters::nbValues(const string& listName) +{ + if(!_ap) return -1; + if(!_ap->IsSet(listName, PT_STRARRAY)) return 0; + vector v = _ap->GetStrArray(listName); + return v.size(); +} + +vector SALOMEDS_IParameters::getValues(const string& listName) +{ + vector v; + if(!_ap) return v; + if(!_ap->IsSet(listName, PT_STRARRAY)) return v; + return _ap->GetStrArray(listName); +} + + +string SALOMEDS_IParameters::getValue(const string& listName, int index) +{ + if(!_ap) return ""; + if(!_ap->IsSet(listName, PT_STRARRAY)) return ""; + vector v = _ap->GetStrArray(listName); + if(index >= v.size()) return ""; + return v[index]; +} + +vector SALOMEDS_IParameters::getLists() +{ + vector v; + if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) return v; + return _ap->GetStrArray(_AP_LISTS_LIST_); +} + +void SALOMEDS_IParameters::setParameter(const string& entry, const string& parameterName, const string& value) +{ + if(!_ap) return; + vector v; + if(!_ap->IsSet(entry, PT_STRARRAY)) { + append(_AP_ENTRIES_LIST_, entry); //Add the entry to the internal list of entries + _ap->SetStrArray(entry, v); + } + v = _ap->GetStrArray(entry); + v.push_back(parameterName); + v.push_back(value); + _ap->SetStrArray(entry, v); +} + + +string SALOMEDS_IParameters::getParameter(const string& entry, const string& parameterName) +{ + if(!_ap) return ""; + if(!_ap->IsSet(entry, PT_STRARRAY)) return ""; + vector v = _ap->GetStrArray(entry); + int length = v.size(); + for(int i = 0; i SALOMEDS_IParameters::getAllParameterNames(const string& entry) +{ + vector v, names; + if(!_ap) return v; + if(!_ap->IsSet(entry, PT_STRARRAY)) return v; + v = _ap->GetStrArray(entry); + int length = v.size(); + for(int i = 0; i SALOMEDS_IParameters::getAllParameterValues(const string& entry) +{ + vector v, values; + if(!_ap) return v; + if(!_ap->IsSet(entry, PT_STRARRAY)) return v; + v = _ap->GetStrArray(entry); + int length = v.size(); + for(int i = 1; iIsSet(entry, PT_STRARRAY)) return -1; + return _ap->GetStrArray(entry).size()/2; +} + +vector SALOMEDS_IParameters::getEntries() +{ + vector v; + if(!_ap) return v; + if(!_ap->IsSet(_AP_ENTRIES_LIST_, PT_STRARRAY)) return v; + return _ap->GetStrArray(_AP_ENTRIES_LIST_); +} + +void SALOMEDS_IParameters::setProperty(const string& name, const std::string& value) +{ + if(!_ap) return; + if(!_ap->IsSet(name, PT_STRING)) { + append(_AP_PROPERTIES_LIST_, name); //Add the property to the internal list of properties + } + _ap->SetString(name, value); +} + +string SALOMEDS_IParameters::getProperty(const string& name) +{ + if(!_ap) return ""; + if(!_ap->IsSet(name, PT_STRING)) return ""; + return _ap->GetString(name); +} + +vector SALOMEDS_IParameters::getProperties() +{ + vector v; + if(!_ap) return v; + if(!_ap->IsSet(_AP_PROPERTIES_LIST_, PT_STRARRAY)) return v; + return _ap->GetStrArray(_AP_PROPERTIES_LIST_); +} + + +vector SALOMEDS_IParameters::parseValue(const string& value, const char separator, bool fromEnd) +{ + TCollection_AsciiString val((char*)value.c_str()); + vector v; + int pos; + if(fromEnd) pos = val.SearchFromEnd(separator); + else pos = val.Search(separator); + + if(pos < 0) { + v.push_back(value); + return v; + } + + TCollection_AsciiString part1, part2; + part1 = val.SubString(1, pos-1); + part2 = val.SubString(pos+1, val.Length()); + v.push_back(part1.ToCString()); + v.push_back(part2.ToCString()); + return v; +} + +string SALOMEDS_IParameters::encodeEntry(const string& entry, const string& compName) +{ + string tail(entry, 6, entry.length()-1); + string newEntry(compName); + newEntry+=("_"+tail); + return newEntry; +} + +string SALOMEDS_IParameters::decodeEntry(const string& entry) +{ + if(!_study) return entry; + int pos = entry.rfind("_"); + if(pos < 0 || pos >= entry.length()) return entry; + + string compName(entry, 0, pos), compID, tail(entry, pos+1, entry.length()-1); + + if(_compNames.find(compName) == _compNames.end()) { + _PTR(SObject) so = _study->FindComponent(compName); + if(!so) return entry; + compID = so->GetID(); + _compNames[compName] = compID; + } + else compID = _compNames[compName]; + + string newEntry(compID); + newEntry += (":"+tail); + + return newEntry; +} + +void SALOMEDS_IParameters::setDumpPython(_PTR(Study) study, const string& theID) +{ + string anID; + if(theID == "") anID = getDefaultVisualComponent(); + else anID = theID; + + _PTR(AttributeParameter) ap = study->GetCommonParameters(anID, 0); + ap->SetBool(_AP_DUMP_PYTHON_, !isDumpPython(study, theID)); +} + +bool SALOMEDS_IParameters::isDumpPython(_PTR(Study) study, const string& theID) +{ + string anID; + if(theID == "") anID = getDefaultVisualComponent(); + else anID = theID; + + _PTR(AttributeParameter) ap = study->GetCommonParameters(anID, 0); + if(!ap) return false; + if(!ap->IsSet(_AP_DUMP_PYTHON_, PT_BOOLEAN)) return false; + return (bool)ap->GetBool(_AP_DUMP_PYTHON_); +} + +string SALOMEDS_IParameters::getDefaultVisualComponent() +{ + return "Interface Applicative"; +} + + + diff --git a/src/SALOMEDS/SALOMEDS_IParameters.hxx b/src/SALOMEDS/SALOMEDS_IParameters.hxx new file mode 100644 index 000000000..6aaaa2f9b --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_IParameters.hxx @@ -0,0 +1,150 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef SALOMEDS_IParameters_H +#define SALOMEDS_IParameters_H + +#include +#include +#include + +#include "SALOMEDSClient.hxx" +#include "SALOMEDSClient_IParameters.hxx" + +/*! + Class which an interface to store the parameters of the objects +*/ +class SALOMEDS_IParameters: public SALOMEDSClient_IParameters +{ +public: + SALOMEDS_IParameters(const _PTR(AttributeParameter)& ap); + + virtual ~SALOMEDS_IParameters(); + + /*! + Appends a string value to a named list. + Returns a number of the added value. + Note: the name of the list MUST be unique + */ + virtual int append(const std::string& listName, const std::string& value); + + /*! + Returns a number elements in the list + */ + virtual int nbValues(const std::string& listName); + + /*! + Returns a list of values in the list + */ + virtual std::vector getValues(const std::string& listName); + + /*! + Returns a value with given %index, where %index is in range [0:nbValues-1] + */ + virtual std::string getValue(const std::string& listName, int index); + + /*! + Returns a list all entries lists + */ + virtual std::vector getLists(); + + /*! + Sets a new named parameter value for the given entry + */ + virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value); + + /*! + Gets a named parameter value for the given entry + */ + virtual std::string getParameter(const std::string& entry, const std::string& parameterName); + + /*! + Returns all parameter names of the given entry + */ + virtual std::vector getAllParameterNames(const std::string& entry); + + /*! + Returns all parameter values of the given entry + */ + virtual std::vector getAllParameterValues(const std::string& entry); + + /*! + Returns a number of parameters of the given entry + */ + virtual int getNbParameters(const std::string& entry); + + /*! + Returns a list all entries + */ + virtual std::vector getEntries(); + + /*! + Sets a global named property value + */ + virtual void setProperty(const std::string& name, const std::string& value); + + /*! + Gets a value of global named property + */ + virtual std::string getProperty(const std::string& name); + + /*! + Returns a list all properties + */ + virtual std::vector getProperties(); + + /*! + Breaks a value string in two parts which is divided by %separator. + If fromEnd is True the search of separator starts from the end of the string + */ + virtual std::vector parseValue(const std::string& value, const char separator, bool fromEnd = true); + + + /*! + Returns encoded entry that is a relative entry for the component + */ + virtual std::string encodeEntry(const std::string& entry, const std::string& compName); + + /*! + Returns decoded entry that is an absolute entry + */ + virtual std::string decodeEntry(const std::string& entry); + + /*! + Enables/Disables the dumping visual parameters + */ + virtual void setDumpPython(_PTR(Study) study, const std::string& theID = ""); + + /*! + Returns whether there is the dumping visual parameters + */ + virtual bool isDumpPython(_PTR(Study) study, const std::string& theID = ""); + + /*! + Returns a default name of the component where the visula parameters are stored. + */ + virtual std::string getDefaultVisualComponent(); + +private: + _PTR(AttributeParameter) _ap; + _PTR(Study) _study; + std::map _compNames; +}; + + +#endif diff --git a/src/SALOMEDS/SALOMEDS_TMPFile_i.cxx b/src/SALOMEDS/SALOMEDS_TMPFile_i.cxx new file mode 100644 index 000000000..b3d5c5028 --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_TMPFile_i.cxx @@ -0,0 +1,96 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server +// File : SALOMEDSImpl_SObject.cxx +// Author : Sergey RUIN +// Module : SALOME + + +#include "SALOMEDS_TMPFile_i.hxx" + +#include +#include + +#include + + +IMPLEMENT_STANDARD_HANDLE( SALOMEDS_TMPFile_i, SALOMEDSImpl_TMPFile ) +IMPLEMENT_STANDARD_RTTIEXT( SALOMEDS_TMPFile_i, SALOMEDSImpl_TMPFile ) + +SALOMEDS_TMPFile_i +::SALOMEDS_TMPFile_i(SALOMEDS::TMPFile* theStream): + myStream(theStream) +{} + +size_t +SALOMEDS_TMPFile_i +::Size() +{ + if(!&myStream.in()) + return 0; + + return myStream->length(); +} + +SALOMEDSImpl_TMPFile::TOctet& +SALOMEDS_TMPFile_i +::Get(size_t theIndex) +{ + if(!&myStream.in()) + throw std::out_of_range("SALOMEDS_TMPFile_i::Get(size_t) const - !&myStream.in()"); + + if(theIndex < 0 || theIndex >= myStream->length()) + throw std::out_of_range("SALOMEDS_TMPFile_i::Get(size_t) const - theIndex < 0 || theIndex >= myStream->length()"); + + return myStream[theIndex]; +} + + +//----------------------------------------------------------------------------- +IMPLEMENT_STANDARD_HANDLE( Engines_TMPFile_i, SALOMEDSImpl_TMPFile ) +IMPLEMENT_STANDARD_RTTIEXT( Engines_TMPFile_i, SALOMEDSImpl_TMPFile ) + +Engines_TMPFile_i +::Engines_TMPFile_i(Engines::TMPFile* theStream): + myStream(theStream) +{} + +size_t +Engines_TMPFile_i +::Size() +{ + if(!&myStream.in()) + return 0; + + return myStream->length(); +} + +SALOMEDSImpl_TMPFile::TOctet& +Engines_TMPFile_i +::Get(size_t theIndex) +{ + if(!&myStream.in()) + throw std::out_of_range("Engines_TMPFile_i::Get(size_t) const - !&myStream.in()"); + + if(theIndex < 0 || theIndex >= myStream->length()) + throw std::out_of_range("Engines_TMPFile_i::Get(size_t) const - theIndex < 0 || theIndex >= myStream->length()"); + + return myStream[theIndex]; +} diff --git a/src/SALOMEDS/SALOMEDS_TMPFile_i.hxx b/src/SALOMEDS/SALOMEDS_TMPFile_i.hxx new file mode 100644 index 000000000..1885341b6 --- /dev/null +++ b/src/SALOMEDS/SALOMEDS_TMPFile_i.hxx @@ -0,0 +1,70 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef __SALOMEDSIMPL_TMPFILE_I_H__ +#define __SALOMEDSIMPL_TMPFILE_I_H__ + +// IDL headers +#include "SALOMEconfig.h" +#include CORBA_SERVER_HEADER(SALOMEDS) +#include CORBA_SERVER_HEADER(SALOME_Component) + +#include "SALOMEDSImpl_TMPFile.hxx" + + +//----------------------------------------------------------------------------- +DEFINE_STANDARD_HANDLE( SALOMEDS_TMPFile_i, SALOMEDSImpl_TMPFile ); + +class SALOMEDS_TMPFile_i : public SALOMEDSImpl_TMPFile +{ +public: + SALOMEDS_TMPFile_i(SALOMEDS::TMPFile* theStream); + + virtual size_t Size(); + + virtual TOctet& Get(size_t); + + DEFINE_STANDARD_RTTI( SALOMEDS_TMPFile_i ); + +protected: + SALOMEDS::TMPFile_var myStream; +}; + + +//----------------------------------------------------------------------------- +DEFINE_STANDARD_HANDLE( Engines_TMPFile_i, SALOMEDSImpl_TMPFile ); + +class Engines_TMPFile_i : public SALOMEDSImpl_TMPFile +{ +public: + Engines_TMPFile_i(Engines::TMPFile* theStream); + + virtual size_t Size(); + + virtual TOctet& Get(size_t); + + DEFINE_STANDARD_RTTI( Engines_TMPFile_i ); + +protected: + Engines::TMPFile_var myStream; +}; + + +#endif diff --git a/src/SALOMEDS/Test/Makefile.am b/src/SALOMEDS/Test/Makefile.am new file mode 100644 index 000000000..6b1bc5f50 --- /dev/null +++ b/src/SALOMEDS/Test/Makefile.am @@ -0,0 +1,110 @@ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Paul RASCLE +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= SALOMEDSTest.hxx + +# Scripts to be installed +dist_salomescript_SCRIPTS = TestSALOMEDS.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CPPUNIT_INCLUDES@ \ + -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \ + -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \ + -I$(srcdir)/$(RPATH)/NamingService -I$(srcdir)/$(RPATH)/NamingService/Test \ + -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \ + -I$(srcdir)/$(RPATH)/ResourcesManager \ + -I$(srcdir)/$(RPATH)/LifeCycleCORBA \ + -I$(srcdir)/$(RPATH)/SALOMEDSClient \ + -I$(srcdir)/$(RPATH)/SALOMEDSImpl -I$(srcdir)/$(RPATH)/SALOMEDSImpl/Test \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + @CPPUNIT_LIBS@ \ + $(RPATH)/Basics/libSALOMEBasics.la \ + $(RPATH)/ResourcesManager/libSalomeResourcesManager.la \ + $(RPATH)/Container/libSalomeContainer.la \ + $(RPATH)/NamingService/libSalomeNS.la \ + $(RPATH)/Registry/libRegistry.la \ + $(RPATH)/Notification/libSalomeNotification.la \ + $(RPATH)/Utils/Test/libUtilsTest.la \ + $(RPATH)/Utils/libOpUtil.la \ + $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la \ + $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \ + $(RPATH)/SALOMEDSImpl/Test/libSALOMEDSImplTest.la \ + $(RPATH)/SALOMEDSImpl/libSalomeDSImpl.la \ + $(RPATH)/SALOMEDSClient/libSalomeDSClient.la \ + $(RPATH)/SALOMEDS/libSalomeDS.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSALOMEDSTest.la +libSALOMEDSTest_la_SOURCES = SALOMEDSTest.cxx +libSALOMEDSTest_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSALOMEDSTest_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSALOMEDSTest_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestSALOMEDS +TestSALOMEDS_SOURCES = TestSALOMEDS.cxx +TestSALOMEDS_CPPFLAGS = $(COMMON_CPPFLAGS) +TestSALOMEDS_LDADD = \ + libSALOMEDSTest.la ../libSalomeDS.la \ + $(RPATH)/NamingService/Test/libNamingServiceTest.la \ + $(COMMON_LIBS) + diff --git a/src/SALOMEDS/Test/SALOMEDSTest.cxx b/src/SALOMEDS/Test/SALOMEDSTest.cxx new file mode 100644 index 000000000..6221e9b83 --- /dev/null +++ b/src/SALOMEDS/Test/SALOMEDSTest.cxx @@ -0,0 +1,190 @@ +// Copyright (C) 2006 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "SALOMEDSTest.hxx" + +#include +#include +#include +#include +#include +#include "utilities.h" +#include "Utils_SALOME_Exception.hxx" +#include "Utils_ORB_INIT.hxx" +#include "Utils_SINGLETON.hxx" +#include "OpUtil.hxx" + +#include "SALOMEDSClient.hxx" +#include "SALOMEDSClient_ClientFactory.hxx" + +#include + +using namespace std; + +#define PT_INTEGER 0 +#define PT_REAL 1 +#define PT_BOOLEAN 2 +#define PT_STRING 3 +#define PT_REALARRAY 4 +#define PT_INTARRAY 5 +#define PT_STRARRAY 6 + + +#define TRACEFILE "/tmp/traceUnitTest.log" + +// ============================================================================ +/*! + * Set up the environment + */ +// ============================================================================ + +void SALOMEDSTest::setUp() +{ + TCollection_AsciiString kernel(getenv("KERNEL_ROOT_DIR")); + TCollection_AsciiString subPath("/share/salome/resources"); + TCollection_AsciiString csf_var = (kernel+subPath); + setenv("CSF_PluginDefaults", csf_var.ToCString(), 0); + setenv("CSF_SALOMEDS_ResourcesDefaults", csf_var.ToCString(), 0); + + // --- trace on file + char *theFileName = TRACEFILE; + + string s = "file:"; + s += theFileName; + CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite + + ofstream traceFile; + traceFile.open(theFileName, ios::out | ios::app); + CPPUNIT_ASSERT(traceFile); // file created empty, then closed + traceFile.close(); + + LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance(); + CPPUNIT_ASSERT(bp1); + + // --- Get or initialize the orb + + int _argc = 1; + char* _argv[] = {""}; + ORB_INIT &init = *SINGLETON_::Instance() ; + ASSERT(SINGLETON_::IsAlreadyExisting()); + _orb = init(_argc , _argv ) ; + + sleep(2); + + // --- Create a SALOME_NamingService instance + + _NS = new SALOME_NamingService; + + sleep(2); + + _NS->init_orb(_orb) ; +} + +// ============================================================================ +/*! + * - delete trace classes + */ +// ============================================================================ + +void +SALOMEDSTest::tearDown() +{ + LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance(); + CPPUNIT_ASSERT(bp1); + bp1->deleteInstance(bp1); + + delete _NS; +} + +// ============================================================================ +/*! + * Check AttributeParameter + */ +// ============================================================================ +void SALOMEDSTest::testAttributeParameter() +{ + CORBA::Object_var obj = _orb->resolve_initial_references( "RootPOA" ); + PortableServer::POA_var poa = PortableServer::POA::_narrow( obj ); + + PortableServer::POAManager_var pman = poa->the_POAManager(); + pman->activate() ; + + _PTR(StudyManager) sm = ClientFactory::createStudyManager(_orb, poa); + + CPPUNIT_ASSERT(sm); + + _PTR(Study) study = sm->NewStudy("Test"); + + CPPUNIT_ASSERT(study); + + _PTR(AttributeParameter) _ap = study->GetCommonParameters("TestComp", 0); + + CPPUNIT_ASSERT(_ap); + + _ap->SetInt("IntValue", 1); + CPPUNIT_ASSERT(_ap->IsSet("IntValue", PT_INTEGER)); + CPPUNIT_ASSERT(_ap->GetInt("IntValue") == 1); + + _ap->SetReal("RealValue", 1.2); + CPPUNIT_ASSERT(_ap->IsSet("RealValue", PT_REAL)); + CPPUNIT_ASSERT(_ap->GetReal("RealValue") == 1.2); + + _ap->SetString("StringValue", "hello"); + CPPUNIT_ASSERT(_ap->IsSet("StringValue", PT_STRING)); + CPPUNIT_ASSERT(_ap->GetString("StringValue") == "hello"); + + _ap->SetBool("BoolValue", 0); + CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN)); + CPPUNIT_ASSERT(!_ap->GetBool("BoolValue")); + + _ap->SetBool("BoolValue", 0); + CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN)); + CPPUNIT_ASSERT(!_ap->GetBool("BoolValue")); + + vector intArray; + intArray.push_back(0); + intArray.push_back(1); + + _ap->SetIntArray("IntArray", intArray); + CPPUNIT_ASSERT(_ap->IsSet("IntArray", PT_INTARRAY)); + CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[0] == 0); + CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[1] == 1); + + vector realArray; + realArray.push_back(0.0); + realArray.push_back(1.1); + + _ap->SetRealArray("RealArray", realArray); + CPPUNIT_ASSERT(_ap->IsSet("RealArray", PT_REALARRAY)); + CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[0] == 0.0); + CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[1] == 1.1); + + vector strArray; + strArray.push_back("hello"); + strArray.push_back("world"); + + _ap->SetStrArray("StrArray", strArray); + CPPUNIT_ASSERT(_ap->IsSet("StrArray", PT_STRARRAY)); + CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[0] == "hello"); + CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[1] == "world"); +} + + + diff --git a/src/SALOMEDS/Test/SALOMEDSTest.hxx b/src/SALOMEDS/Test/SALOMEDSTest.hxx new file mode 100644 index 000000000..83c4debb6 --- /dev/null +++ b/src/SALOMEDS/Test/SALOMEDSTest.hxx @@ -0,0 +1,48 @@ +// Copyright (C) 2006 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef _SALOMEDSTEST_HXX_ +#define _SALOMEDSTEST_HXX_ + +#include + +#include + +#include +#include "SALOME_NamingService.hxx" + +class SALOMEDSTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( SALOMEDSTest ); + CPPUNIT_TEST( testAttributeParameter ); + CPPUNIT_TEST_SUITE_END(); + +public: + + void setUp(); + void tearDown(); + void testAttributeParameter(); + +protected: + CORBA::ORB_var _orb; + SALOME_NamingService* _NS; +}; + +#endif diff --git a/src/SALOMEDS/Test/TestSALOMEDS.cxx b/src/SALOMEDS/Test/TestSALOMEDS.cxx new file mode 100644 index 000000000..68c94b243 --- /dev/null +++ b/src/SALOMEDS/Test/TestSALOMEDS.cxx @@ -0,0 +1,35 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// --- include all SALOMEDS Test from basics until the present directory + +#include "SALOMELocalTraceTest.hxx" +#include "SALOMEDSImplTest.hxx" +#include "SALOMEDSTest.hxx" + +// --- Registers the fixture into the 'registry' + +CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest ); +CPPUNIT_TEST_SUITE_REGISTRATION( SALOMEDSImplTest ); +CPPUNIT_TEST_SUITE_REGISTRATION( SALOMEDSTest ); + +// --- generic Main program from Basic/Test + +#include "BasicMainTest.hxx" diff --git a/src/SALOMEDS/Test/TestSALOMEDS.py b/src/SALOMEDS/Test/TestSALOMEDS.py new file mode 100644 index 000000000..d2c162635 --- /dev/null +++ b/src/SALOMEDS/Test/TestSALOMEDS.py @@ -0,0 +1,47 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import sys, os,signal,string,commands +import runSalome +import orbmodule +import TestKiller + +# get SALOME environment : + +args, modules_list, modules_root_dir = runSalome.get_config() +runSalome.set_env(args, modules_list, modules_root_dir) + +# launch CORBA naming server + +clt=orbmodule.client() + +# launch CORBA logger server + +myServer=runSalome.LoggerServer(args) +myServer.run() +clt.waitLogger("Logger") + +# execute Unit Test + +command = ['TestSALOMEDS'] +ret = os.spawnvp(os.P_WAIT, command[0], command) + +# kill Test process + +TestKiller.killProcess(runSalome.process_id) diff --git a/src/SALOMEDSClient/Makefile.am b/src/SALOMEDSClient/Makefile.am new file mode 100644 index 000000000..489548895 --- /dev/null +++ b/src/SALOMEDSClient/Makefile.am @@ -0,0 +1,102 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# SALOMEDSClient: client interface of SALOMEDS +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +salomeinclude_HEADERS=\ + SALOMEDSClient_definitions.hxx \ + SALOMEDSClient_AttributeComment.hxx \ + SALOMEDSClient_AttributeDrawable.hxx \ + SALOMEDSClient_AttributeExpandable.hxx \ + SALOMEDSClient_AttributeExternalFileDef.hxx \ + SALOMEDSClient_AttributeFileType.hxx \ + SALOMEDSClient_AttributeFlags.hxx \ + SALOMEDSClient_AttributeGraphic.hxx \ + SALOMEDSClient_AttributeIOR.hxx \ + SALOMEDSClient_AttributeInteger.hxx \ + SALOMEDSClient_AttributeLocalID.hxx \ + SALOMEDSClient_AttributeName.hxx \ + SALOMEDSClient_AttributeOpened.hxx \ + SALOMEDSClient_AttributePersistentRef.hxx \ + SALOMEDSClient_AttributePixMap.hxx \ + SALOMEDSClient_AttributePythonObject.hxx \ + SALOMEDSClient_AttributeReal.hxx \ + SALOMEDSClient_AttributeSelectable.hxx \ + SALOMEDSClient_AttributeSequenceOfInteger.hxx \ + SALOMEDSClient_AttributeSequenceOfReal.hxx \ + SALOMEDSClient_AttributeStudyProperties.hxx \ + SALOMEDSClient_AttributeTableOfInteger.hxx \ + SALOMEDSClient_AttributeTableOfReal.hxx \ + SALOMEDSClient_AttributeTableOfString.hxx \ + SALOMEDSClient_AttributeTarget.hxx \ + SALOMEDSClient_AttributeTextColor.hxx \ + SALOMEDSClient_AttributeTextHighlightColor.hxx \ + SALOMEDSClient_AttributeTreeNode.hxx \ + SALOMEDSClient_AttributeUserID.hxx \ + SALOMEDSClient_AttributeParameter.hxx \ + SALOMEDSClient_ChildIterator.hxx \ + SALOMEDSClient_GenericAttribute.hxx \ + SALOMEDSClient_SComponent.hxx \ + SALOMEDSClient_SComponentIterator.hxx \ + SALOMEDSClient_SObject.hxx \ + SALOMEDSClient_Study.hxx \ + SALOMEDSClient_StudyBuilder.hxx \ + SALOMEDSClient_StudyManager.hxx \ + SALOMEDSClient_UseCaseBuilder.hxx \ + SALOMEDSClient_UseCaseIterator.hxx \ + SALOMEDSClient_ClientFactory.hxx \ + SALOMEDSClient_IParameters.hxx \ + SALOMEDSClient.hxx + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS= \ + @BOOST_CPPFLAGS@ \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + + + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS = + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeDSClient.la +libSalomeDSClient_la_SOURCES = \ + SALOMEDSClient_ClientFactory.cxx + + +libSalomeDSClient_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSalomeDSClient_la_LDFLAGS = -Wl,-E -no-undefined -version-info=0:0:0 +libSalomeDSClient_la_LIBADD = $(COMMON_LIBS) diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx new file mode 100644 index 000000000..e1f5bbd04 --- /dev/null +++ b/src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx @@ -0,0 +1,71 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDSImpl_AttributeIOR.hxx +// Author : Sergey RUIN +// Module : SALOME + +#ifndef _SALOMEDSClient_AttributeParameter_HeaderFile +#define _SALOMEDSClient_AttributeParameter_HeaderFile + +#include "SALOMEDSClient_definitions.hxx" +#include "SALOMEDSClient_GenericAttribute.hxx" +#include +#include + +class SALOMEDSClient_AttributeParameter : public virtual SALOMEDSClient_GenericAttribute +{ + +public: + + virtual void SetInt(const std::string& theID, const int theValue) = 0; + virtual int GetInt(const std::string& theID) = 0; + + virtual void SetReal(const std::string& theID, const double& theValue) = 0; + virtual double GetReal(const std::string& theID) = 0; + + virtual void SetString(const std::string& theID, const std::string& theValue) = 0; + virtual std::string GetString(const std::string& theID) = 0; + + virtual void SetBool(const std::string& theID, const bool& theValue) = 0; + virtual bool GetBool(const std::string& theID) = 0; + + virtual void SetRealArray(const std::string& theID, const std::vector& theArray) = 0; + virtual std::vector GetRealArray(const std::string& theID) = 0; + + virtual void SetIntArray(const std::string& theID, const std::vector& theArray) = 0; + virtual std::vector GetIntArray(const std::string& theID) = 0; + + virtual void SetStrArray(const std::string& theID, const std::vector& theArray) = 0; + virtual std::vector GetStrArray(const std::string& theID) = 0; + + virtual bool IsSet(const std::string& theID, const int theType) = 0; + + virtual bool RemoveID(const std::string& theID, const int theType) = 0; + + virtual _PTR(AttributeParameter) GetFather() = 0; + virtual bool HasFather() = 0; + virtual bool IsRoot() = 0; + + virtual void Clear() = 0; + + virtual std::vector GetIDs(const int theType) = 0; +}; + +#endif diff --git a/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx b/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx new file mode 100644 index 000000000..3c832879b --- /dev/null +++ b/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx @@ -0,0 +1,232 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +// PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "SALOMEDSClient_ClientFactory.hxx" + +#ifdef WIN32 +#include +static HMODULE _libHandle = 0; +#define SALOMEDS_LIB_NAME "SalomeDS.dll" +#else +#include +static void* _libHandle = NULL; +#define SALOMEDS_LIB_NAME "libSalomeDS.so" +#endif + +#define SOBJECT_FACTORY "SObjectFactory" +#define SCOMPONENT_FACTORY "SComponentFactory" +#define STUDY_FACTORY "StudyFactory" +#define BUILDER_FACTORY "BuilderFactory" +#define STUDYMANAGER_FACTORY "StudyManagerFactory" +#define STUDYMANAGER_CREATE "CreateStudyManager" +#define GET_PARAMETERS "GetIParameters" +#define CONVERT_SOBJECT "ConvertSObject" +#define CONVERT_STUDY "ConvertStudy" +#define CONVERT_BUILDER "ConvertBuilder" + +typedef SALOMEDSClient_SObject* (*SOBJECT_FACTORY_FUNCTION) (SALOMEDS::SObject_ptr); +typedef SALOMEDSClient_SComponent* (*SCOMPONENT_FACTORY_FUNCTION) (SALOMEDS::SComponent_ptr); +typedef SALOMEDSClient_Study* (*STUDY_FACTORY_FUNCTION) (SALOMEDS::Study_ptr); +typedef SALOMEDSClient_StudyManager* (*STUDYMANAGER_FACTORY_FUNCTION) (); +typedef SALOMEDSClient_StudyBuilder* (*BUILDER_FACTORY_FUNCTION) (SALOMEDS::StudyBuilder_ptr); +typedef SALOMEDSClient_StudyManager* (*STUDYMANAGER_CREATE_FUNCTION) (CORBA::ORB_ptr, PortableServer::POA_ptr); +typedef SALOMEDSClient_IParameters* (*GET_PARAMETERS_FACTORY) (const _PTR(AttributeParameter)&); +typedef SALOMEDS::SObject_ptr (*CONVERT_SOBJECT_FUNCTION) (const _PTR(SObject)&); +typedef SALOMEDS::Study_ptr (*CONVERT_STUDY_FUNCTION) (const _PTR(Study)&); +typedef SALOMEDS::StudyBuilder_ptr (*CONVERT_BUILDER_FUNCTION) (const _PTR(StudyBuilder)&); + + +static SOBJECT_FACTORY_FUNCTION aSObjectFactory = NULL; +static SCOMPONENT_FACTORY_FUNCTION aSComponentFactory = NULL; +static STUDY_FACTORY_FUNCTION aStudyFactory = NULL; +static BUILDER_FACTORY_FUNCTION aBuilderFactory = NULL; +static STUDYMANAGER_FACTORY_FUNCTION aManagerFactory = NULL; +static STUDYMANAGER_CREATE_FUNCTION aCreateFactory = NULL; +static GET_PARAMETERS_FACTORY aGetIParameters = NULL; +static CONVERT_SOBJECT_FUNCTION aConvertSObject = NULL; +static CONVERT_STUDY_FUNCTION aConvertStudy = NULL; +static CONVERT_BUILDER_FUNCTION aConvertBuilder = NULL; + +using namespace std; + +_PTR(SObject) ClientFactory::SObject(SALOMEDS::SObject_ptr theSObject) +{ + SALOMEDSClient_SObject* so = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aSObjectFactory) aSObjectFactory = (SOBJECT_FACTORY_FUNCTION)::GetProcAddress(_libHandle, SOBJECT_FACTORY); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aSObjectFactory) aSObjectFactory = (SOBJECT_FACTORY_FUNCTION) dlsym(_libHandle, SOBJECT_FACTORY); +#endif + + if(aSObjectFactory) so = aSObjectFactory(theSObject); + return _PTR(SObject)(so); +} + +_PTR(SComponent) ClientFactory::SComponent(SALOMEDS::SComponent_ptr theSComponent) +{ + SALOMEDSClient_SComponent* sco = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aSComponentFactory) aSComponentFactory = (SCOMPONENT_FACTORY_FUNCTION)::GetProcAddress(_libHandle, SCOMPONENT_FACTORY); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aSComponentFactory) aSComponentFactory = (SCOMPONENT_FACTORY_FUNCTION) dlsym(_libHandle, SCOMPONENT_FACTORY); +#endif + + if(aSComponentFactory) sco = aSComponentFactory(theSComponent); + return _PTR(SComponent)(sco); +} + +_PTR(Study) ClientFactory::Study(SALOMEDS::Study_ptr theStudy) +{ + SALOMEDSClient_Study* study = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aStudyFactory) aStudyFactory = (STUDY_FACTORY_FUNCTION)::GetProcAddress(_libHandle, STUDY_FACTORY); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aStudyFactory) aStudyFactory = (STUDY_FACTORY_FUNCTION) dlsym(_libHandle, STUDY_FACTORY); +#endif + + if(aStudyFactory) study = aStudyFactory(theStudy); + return _PTR(Study)(study); +} + +_PTR(StudyBuilder) ClientFactory::StudyBuilder(SALOMEDS::StudyBuilder_ptr theStudyBuilder) +{ + SALOMEDSClient_StudyBuilder* studyBuilder = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aBuilderFactory) aBuilderFactory = (BUILDER_FACTORY_FUNCTION)::GetProcAddress(_libHandle, BUILDER_FACTORY); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aBuilderFactory) aBuilderFactory = (BUILDER_FACTORY_FUNCTION) dlsym(_libHandle, BUILDER_FACTORY); +#endif + + if(aBuilderFactory) studyBuilder = aBuilderFactory(theStudyBuilder); + return _PTR(StudyBuilder)(studyBuilder); +} + +_PTR(StudyManager) ClientFactory::StudyManager() +{ + SALOMEDSClient_StudyManager* manager = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aManagerFactory) aManagerFactory = (STUDYMANAGER_FACTORY_FUNCTION)::GetProcAddress(_libHandle, STUDYMANAGER_FACTORY); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aManagerFactory) aManagerFactory = (STUDYMANAGER_FACTORY_FUNCTION) dlsym(_libHandle, STUDYMANAGER_FACTORY); +#endif + + if(aManagerFactory) manager = aManagerFactory(); + return _PTR(StudyManager)(manager); +} + +_PTR(StudyManager) ClientFactory::createStudyManager(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa) +{ + SALOMEDSClient_StudyManager* manager = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aCreateFactory) aCreateFactory = (STUDYMANAGER_CREATE_FUNCTION)::GetProcAddress(_libHandle, STUDYMANAGER_CREATE); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aCreateFactory) aCreateFactory = (STUDYMANAGER_CREATE_FUNCTION) dlsym(_libHandle, STUDYMANAGER_CREATE); +#endif + + if(aCreateFactory) manager = aCreateFactory(orb, poa); + return _PTR(StudyManager)(manager); +} + +_PTR(IParameters) ClientFactory::getIParameters(const _PTR(AttributeParameter)& ap) +{ + SALOMEDSClient_IParameters* interface = NULL; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aGetIParameters) aGetIParameters = (GET_PARAMETERS_FACTORY)::GetProcAddress(_libHandle, GET_PARAMETERS); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aGetIParameters) aGetIParameters = (GET_PARAMETERS_FACTORY) dlsym(_libHandle, GET_PARAMETERS); +#endif + + if(aGetIParameters) interface = aGetIParameters(ap); + return _PTR(IParameters)(interface); +} + +SALOMEDS::SObject_ptr ClientFactory::crbSObject(const _PTR(SObject)& theSObject) +{ + SALOMEDS::SObject_var so; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aConvertSObject) aConvertSObject = (CONVERT_SOBJECT_FUNCTION)::GetProcAddress(_libHandle, CONVERT_SOBJECT); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aConvertSObject) aConvertSObject = (CONVERT_SOBJECT_FUNCTION) dlsym(_libHandle, CONVERT_SOBJECT); +#endif + + if(aConvertSObject) so = aConvertSObject(theSObject); + + if(CORBA::is_nil(so)) return SALOMEDS::SObject::_nil(); + return so._retn(); +} + + +SALOMEDS::Study_ptr ClientFactory::crbStudy(const _PTR(Study)& theStudy) +{ + SALOMEDS::Study_var study; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aConvertStudy) aConvertStudy = (CONVERT_STUDY_FUNCTION)::GetProcAddress(_libHandle, CONVERT_STUDY); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aConvertStudy) aConvertStudy = (CONVERT_STUDY_FUNCTION) dlsym(_libHandle, CONVERT_STUDY); +#endif + + if(aConvertStudy) study = aConvertStudy(theStudy); + + if(CORBA::is_nil(study)) return SALOMEDS::Study::_nil(); + return study._retn(); +} + +SALOMEDS::StudyBuilder_ptr ClientFactory::crbStudyBuilder(const _PTR(StudyBuilder)& theStudyBuilder) +{ + SALOMEDS::StudyBuilder_var studyBuilder; + +#ifdef WIN32 + if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME); + if(!aConvertBuilder)aConvertBuilder = (CONVERT_BUILDER_FUNCTION)::GetProcAddress(_libHandle, CONVERT_BUILDER); +#else + if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL); + if(!aConvertBuilder) aConvertBuilder = (CONVERT_BUILDER_FUNCTION) dlsym(_libHandle, CONVERT_BUILDER); +#endif + + if(aConvertBuilder) studyBuilder = aConvertBuilder(theStudyBuilder); + + if(CORBA::is_nil(studyBuilder)) return SALOMEDS::StudyBuilder::_nil(); + return studyBuilder._retn(); +} diff --git a/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx b/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx new file mode 100644 index 000000000..6c226d402 --- /dev/null +++ b/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx @@ -0,0 +1,97 @@ +// Copyright (C) 2006 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDSClient_ClientFactory.hxx +// Author : Sergey RUIN +// Module : SALOME +// $Header: + +#ifndef SALOMEDSClient_ClientFactory_HeaderFile +#define SALOMEDSClient_ClientFactory_HeaderFile + +#include "SALOMEDSClient_definitions.hxx" +#include "SALOMEDSClient_SObject.hxx" +#include "SALOMEDSClient_SComponent.hxx" +#include "SALOMEDSClient_Study.hxx" +#include "SALOMEDSClient_StudyManager.hxx" +#include "SALOMEDSClient_IParameters.hxx" + +#include + +// IDL headers +#include +#include CORBA_CLIENT_HEADER(SALOMEDS) + +class ClientFactory { + +public: + /*! + * Returns a client SObject wrapper that corresponds %theSObject + */ + static _PTR(SObject) SObject(SALOMEDS::SObject_ptr theSObject); + + /*! + * Returns a client SComponent wrapper that corresponds %theSComponent + */ + static _PTR(SComponent) SComponent(SALOMEDS::SComponent_ptr theSComponent); + + /*! + * Returns a client Study wrapper that corresponds %theStudy + */ + static _PTR(Study) Study(SALOMEDS::Study_ptr theStudy); + + /*! + * Returns a client StudyBuilder wrapper that corresponds %theStudy + */ + static _PTR(StudyBuilder) StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder); + + /*! + * Returns a client StudyManager wrapper + */ + static _PTR(StudyManager) StudyManager(); + + /*! + * Creates and returns a client StudyManager wrapper + */ + static _PTR(StudyManager) createStudyManager(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa); + + /*! + * Returns an IParameters interface + */ + static _PTR(IParameters) getIParameters(const _PTR(AttributeParameter)& ap); + + + /*! + * Returns a CORBA SObject that corresponds %theStudy + */ + static SALOMEDS::SObject_ptr crbSObject(const _PTR(SObject)& theSObject); + + /*! + * Returns a CORBA Study that corresponds %theStudy + */ + static SALOMEDS::Study_ptr crbStudy(const _PTR(Study)& theStudy); + + /*! + * Returns a CORBA StudyBuilder that corresponds %theStudyBuilder + */ + static SALOMEDS::StudyBuilder_ptr crbStudyBuilder(const _PTR(StudyBuilder)& theStudyBuilder); + +}; + +#endif diff --git a/src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx b/src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx new file mode 100644 index 000000000..c372364b7 --- /dev/null +++ b/src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx @@ -0,0 +1,146 @@ +// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef SALOMEDSClient_IParameters_H +#define SALOMEDSClient_IParameters_H + +#include +#include +#include + +#include "SALOMEDSClient_definitions.hxx" +#include "SALOMEDSClient_AttributeParameter.hxx" + +/*! + Class which an interface to store the parameters of the objects +*/ +class SALOMEDSClient_IParameters +{ +public: + + virtual ~SALOMEDSClient_IParameters() {} + + /*! + Appends a string value to a named list. + Returns a number of the added value. + Note: the name of the list MUST be unique + */ + virtual int append(const std::string& listName, const std::string& value) = 0; + + /*! + Returns a number elements in the list + */ + virtual int nbValues(const std::string& listName) = 0; + + /*! + Returns a list of values in the list + */ + virtual std::vector getValues(const std::string& listName) = 0; + + /*! + Returns a value with given %index, where %index is in range [0:nbValues-1] + */ + virtual std::string getValue(const std::string& listName, int index) = 0; + + /*! + Returns a list all entries lists + */ + virtual std::vector getLists() = 0; + + /*! + Sets a new named parameter value for the given entry + */ + virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value) = 0; + + /*! + Gets a named parameter value for the given entry + */ + virtual std::string getParameter(const std::string& entry, const std::string& parameterName) = 0; + + /*! + Returns all parameter names of the given entry + */ + virtual std::vector getAllParameterNames(const std::string& entry) = 0; + + /*! + Returns all parameter values of the given entry + */ + virtual std::vector getAllParameterValues(const std::string& entry) = 0; + + /*! + Returns a number of parameters of the given entry + */ + virtual int getNbParameters(const std::string& entry) = 0; + + /*! + Returns a list all entries + */ + virtual std::vector getEntries() = 0; + + /*! + Sets a global named property value + */ + virtual void setProperty(const std::string& name, const std::string& value) = 0; + + /*! + Gets a value of global named property + */ + virtual std::string getProperty(const std::string& name) = 0; + + /*! + Returns a list all properties + */ + virtual std::vector getProperties() = 0; + + /*! + Breaks a value string in two parts which is divided by %separator. + If fromEnd is True the search of separator starts from the end of the string + */ + virtual std::vector parseValue(const std::string& value, const char separator, bool fromEnd = true) = 0; + + + /*! + Returns encoded entry that is a relative entry for the component + */ + virtual std::string encodeEntry(const std::string& entry, const std::string& compName) = 0; + + /*! + Returns decoded entry that is an absolute entry + */ + virtual std::string decodeEntry(const std::string& entry) = 0; + + /*! + Enables/Disables the dumping visual parameters, static implementation is supposed + */ + virtual void setDumpPython(_PTR(Study) study, const std::string& theID = "") = 0; + + /*! + Returns whether there is the dumping visual parameters, static implementation is supposed + */ + virtual bool isDumpPython(_PTR(Study) study, const std::string& theID = "") = 0; + + /*! + Returns a default name of the component where the visula parameters are stored. + Static implementation is supposed + */ + virtual std::string getDefaultVisualComponent() = 0; + +}; + + +#endif diff --git a/src/SALOMEDSImpl/Makefile.am b/src/SALOMEDSImpl/Makefile.am new file mode 100644 index 000000000..ca9352aab --- /dev/null +++ b/src/SALOMEDSImpl/Makefile.am @@ -0,0 +1,219 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= \ + SALOMEDSImpl_Attributes.hxx \ + SALOMEDSImpl_SObject.hxx \ + SALOMEDSImpl_SComponent.hxx \ + SALOMEDSImpl_Driver.hxx \ + SALOMEDSImpl_Callback.hxx \ + SALOMEDSImpl_ChildIterator.hxx \ + SALOMEDSImpl_GenericAttribute.hxx \ + SALOMEDSImpl_AttributeIOR.hxx \ + SALOMEDSImpl_AttributeExternalFileDef.hxx \ + SALOMEDSImpl_AttributeFileType.hxx \ + SALOMEDSImpl_AttributePersistentRef.hxx \ + SALOMEDSImpl_AttributeSequenceOfReal.hxx \ + SALOMEDSImpl_AttributeSequenceOfInteger.hxx \ + SALOMEDSImpl_AttributeDrawable.hxx \ + SALOMEDSImpl_AttributeSelectable.hxx \ + SALOMEDSImpl_AttributeExpandable.hxx \ + SALOMEDSImpl_AttributeOpened.hxx \ + SALOMEDSImpl_AttributeFlags.hxx \ + SALOMEDSImpl_AttributeGraphic.hxx \ + SALOMEDSImpl_AttributeTextColor.hxx \ + SALOMEDSImpl_AttributeTextHighlightColor.hxx \ + SALOMEDSImpl_AttributePixMap.hxx \ + SALOMEDSImpl_AttributeLocalID.hxx \ + SALOMEDSImpl_AttributeTarget.hxx \ + SALOMEDSImpl_AttributeTableOfInteger.hxx \ + SALOMEDSImpl_AttributeTableOfReal.hxx \ + SALOMEDSImpl_AttributeTableOfString.hxx \ + SALOMEDSImpl_AttributeStudyProperties.hxx \ + SALOMEDSImpl_AttributePythonObject.hxx \ + SALOMEDSImpl_AttributeReal.hxx \ + SALOMEDSImpl_AttributeInteger.hxx \ + SALOMEDSImpl_AttributeUserID.hxx \ + SALOMEDSImpl_AttributeTreeNode.hxx \ + SALOMEDSImpl_AttributeName.hxx \ + SALOMEDSImpl_AttributeComment.hxx \ + SALOMEDSImpl_AttributeReference.hxx \ + SALOMEDSImpl_AttributeParameter.hxx \ + SALOMEDSImpl_UseCaseBuilder.hxx \ + SALOMEDSImpl_UseCaseIterator.hxx \ + SALOMEDSImpl_SComponentIterator.hxx \ + SALOMEDSImpl_StudyBuilder.hxx \ + SALOMEDSImpl_Study.hxx \ + SALOMEDSImpl_StudyManager.hxx \ + SALOMEDSImpl_OCAFApplication.hxx \ + SALOMEDSImpl_ChildNodeIterator.hxx \ + SALOMEDSImpl_IParameters.hxx \ + SALOMEDSImpl_TMPFile.hxx + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../HDFPersist \ + @HDF5_INCLUDES@ + +# This flag is used to resolve the dependencies of OCC libraries. +LDXMUFLAGS = -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lXmu + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../HDFPersist/libSalomeHDFPersist.la \ + @CAS_OCAF@ \ + @HDF5_LIBS@ \ + $(LDXMUFLAGS) + + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeDSImpl.la +libSalomeDSImpl_la_SOURCES =\ + SALOMEDSImpl_Tool.cxx \ + SALOMEDSImpl_Callback.cxx \ + SALOMEDSImpl_StudyHandle.cxx \ + SALOMEDSImpl_GenericAttribute.cxx \ + SALOMEDSImpl_SObject.cxx \ + SALOMEDSImpl_SComponent.cxx \ + SALOMEDSImpl_ChildIterator.cxx \ + SALOMEDSImpl_OCAFApplication.cxx \ + SALOMEDSImpl_AttributeIOR.cxx \ + SALOMEDSImpl_AttributeExternalFileDef.cxx \ + SALOMEDSImpl_AttributeFileType.cxx \ + SALOMEDSImpl_AttributePersistentRef.cxx \ + SALOMEDSImpl_AttributeSequenceOfReal.cxx \ + SALOMEDSImpl_AttributeSequenceOfInteger.cxx \ + SALOMEDSImpl_AttributeDrawable.cxx \ + SALOMEDSImpl_AttributeSelectable.cxx \ + SALOMEDSImpl_AttributeExpandable.cxx \ + SALOMEDSImpl_AttributeOpened.cxx \ + SALOMEDSImpl_AttributeFlags.cxx \ + SALOMEDSImpl_AttributeGraphic.cxx \ + SALOMEDSImpl_AttributeTextColor.cxx \ + SALOMEDSImpl_AttributeTextHighlightColor.cxx \ + SALOMEDSImpl_AttributePixMap.cxx \ + SALOMEDSImpl_AttributeLocalID.cxx \ + SALOMEDSImpl_AttributeTarget.cxx \ + SALOMEDSImpl_AttributeTableOfInteger.cxx \ + SALOMEDSImpl_AttributeTableOfReal.cxx \ + SALOMEDSImpl_AttributeTableOfString.cxx \ + SALOMEDSImpl_AttributeStudyProperties.cxx \ + SALOMEDSImpl_AttributePythonObject.cxx \ + SALOMEDSImpl_AttributeReal.cxx \ + SALOMEDSImpl_AttributeInteger.cxx \ + SALOMEDSImpl_AttributeUserID.cxx \ + SALOMEDSImpl_AttributeTreeNode.cxx \ + SALOMEDSImpl_AttributeName.cxx \ + SALOMEDSImpl_AttributeComment.cxx \ + SALOMEDSImpl_AttributeReference.cxx \ + SALOMEDSImpl_AttributeParameter.cxx \ + SALOMEDSImpl_ChildNodeIterator.cxx \ + SALOMEDSImpl_UseCaseBuilder.cxx \ + SALOMEDSImpl_UseCaseIterator.cxx \ + SALOMEDSImpl_SComponentIterator.cxx \ + SALOMEDSImpl_StudyBuilder.cxx \ + SALOMEDSImpl_Study.cxx \ + SALOMEDSImpl_StudyManager.cxx \ + SALOMEDSImpl_IParameters.cxx \ + SALOMEDSImpl_TMPFile.cxx \ + \ + SALOMEDSImpl_AttributeComment.hxx \ + SALOMEDSImpl_AttributeDrawable.hxx \ + SALOMEDSImpl_AttributeExpandable.hxx \ + SALOMEDSImpl_AttributeExternalFileDef.hxx \ + SALOMEDSImpl_AttributeFileType.hxx \ + SALOMEDSImpl_AttributeFlags.hxx \ + SALOMEDSImpl_AttributeGraphic.hxx \ + SALOMEDSImpl_AttributeInteger.hxx \ + SALOMEDSImpl_AttributeIOR.hxx \ + SALOMEDSImpl_AttributeLocalID.hxx \ + SALOMEDSImpl_AttributeName.hxx \ + SALOMEDSImpl_AttributeOpened.hxx \ + SALOMEDSImpl_AttributePersistentRef.hxx \ + SALOMEDSImpl_AttributePixMap.hxx \ + SALOMEDSImpl_AttributePythonObject.hxx \ + SALOMEDSImpl_AttributeReal.hxx \ + SALOMEDSImpl_AttributeReference.hxx \ + SALOMEDSImpl_AttributeSelectable.hxx \ + SALOMEDSImpl_AttributeSequenceOfInteger.hxx \ + SALOMEDSImpl_AttributeSequenceOfReal.hxx \ + SALOMEDSImpl_Attributes.hxx \ + SALOMEDSImpl_AttributeStudyProperties.hxx \ + SALOMEDSImpl_AttributeTableOfInteger.hxx \ + SALOMEDSImpl_AttributeTableOfReal.hxx \ + SALOMEDSImpl_AttributeTableOfString.hxx \ + SALOMEDSImpl_AttributeTarget.hxx \ + SALOMEDSImpl_AttributeTextColor.hxx \ + SALOMEDSImpl_AttributeTextHighlightColor.hxx \ + SALOMEDSImpl_AttributeTreeNode.hxx \ + SALOMEDSImpl_AttributeUserID.hxx \ + SALOMEDSImpl_Callback.hxx \ + SALOMEDSImpl_ChildIterator.hxx \ + SALOMEDSImpl_ChildNodeIterator.hxx \ + SALOMEDSImpl_Driver.hxx \ + SALOMEDSImpl_GenericAttribute.hxx \ + SALOMEDSImpl_OCAFApplication.hxx \ + SALOMEDSImpl_SComponent.hxx \ + SALOMEDSImpl_SComponentIterator.hxx \ + SALOMEDSImpl_SObject.hxx \ + SALOMEDSImpl_StudyBuilder.hxx \ + SALOMEDSImpl_StudyHandle.hxx \ + SALOMEDSImpl_Study.hxx \ + SALOMEDSImpl_StudyManager.hxx \ + SALOMEDSImpl_Tool.hxx \ + SALOMEDSImpl_UseCaseBuilder.hxx \ + SALOMEDSImpl_UseCaseIterator.hxx + +libSalomeDSImpl_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSalomeDSImpl_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeDSImpl_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = testDS +testDS_SOURCES = testDS.cxx +testDS_CPPFLAGS = $(COMMON_CPPFLAGS) +testDS_LDADD = libSalomeDSImpl.la $(COMMON_LIBS) diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx new file mode 100644 index 000000000..1eea12dbd --- /dev/null +++ b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx @@ -0,0 +1,765 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDSImpl_AttributeParameter.cxx +// Author : Sergey RUIN +// Module : SALOME + + +#include "SALOMEDSImpl_AttributeParameter.hxx" +#include + +#include +#include +#include + +using namespace std; + + + +IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeParameter, SALOMEDSImpl_GenericAttribute ) +IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeParameter, SALOMEDSImpl_GenericAttribute ) + + +// Purpose: Each character in the string is replaced by 3 characters: '%' and hex number +// of the character (2 characters) +string convertString(const string& S) +{ + int length = S.size(); + const char *s = S.c_str(); + char *c = new char[3], *buffer = new char[length*3+1]; + buffer[length*3] = (char)0; + for(int i = 0, pos = 0; i& theArray) +{ + CheckLocked(); + + Backup(); + + _realarrays[theID] = theArray; + + SetModifyFlag(); +} + +//======================================================================= +/*! + * Function : GetRealArray + * Purpose : Returns double values associated with the ID + */ +//======================================================================= +vector SALOMEDSImpl_AttributeParameter::GetRealArray(const string& theID) +{ + if(!IsSet(theID, PT_REALARRAY)) Standard_Failure::Raise("Invalid ID"); + return _realarrays[theID]; +} + + +//======================================================================= +/*! + * Function : SetIntArray + * Purpose : Associates an array of int values with the given ID + */ +//======================================================================= +void SALOMEDSImpl_AttributeParameter::SetIntArray(const string& theID, const vector& theArray) +{ + CheckLocked(); + + Backup(); + + _intarrays[theID] = theArray; + + SetModifyFlag(); +} + +//======================================================================= +/*! + * Function : GetIntArray + * Purpose : Returns int values associated with the ID + */ +//======================================================================= +vector SALOMEDSImpl_AttributeParameter::GetIntArray(const string& theID) +{ + if(!IsSet(theID, PT_INTARRAY)) Standard_Failure::Raise("Invalid ID"); + return _intarrays[theID]; +} + + +//======================================================================= +/*! + * Function : SetStrArray + * Purpose : Associates an array of string values with the given ID + */ +//======================================================================= +void SALOMEDSImpl_AttributeParameter::SetStrArray(const string& theID, const vector& theArray) +{ + CheckLocked(); + + Backup(); + + _strarrays[theID] = theArray; + + SetModifyFlag(); +} + +//======================================================================= +/*! + * Function : GetStrArray + * Purpose : Returns string values associated with the ID + */ +//======================================================================= +vector SALOMEDSImpl_AttributeParameter::GetStrArray(const string& theID) +{ + if(!IsSet(theID, PT_STRARRAY)) Standard_Failure::Raise("Invalid ID"); + return _strarrays[theID]; +} + + +//======================================================================= +/*! + * Function : IsSet + * Purpose : Returns true if for the ID of given type was assigned \n + * a value in the attribute + */ +//======================================================================= +bool SALOMEDSImpl_AttributeParameter::IsSet(const string& theID, const Parameter_Types theType) +{ + switch(theType) { + case PT_INTEGER: { + if(_ints.find(theID) != _ints.end()) return true; + break; + } + case PT_REAL: { + if(_reals.find(theID) != _reals.end()) return true; + break; + } + case PT_BOOLEAN: { + if(_bools.find(theID) != _bools.end()) return true; + break; + } + case PT_STRING: { + if(_strings.find(theID) != _strings.end()) return true; + break; + } + case PT_REALARRAY: { + if(_realarrays.find(theID) != _realarrays.end()) return true; + break; + } + case PT_INTARRAY: { + if(_intarrays.find(theID) != _intarrays.end()) return true; + break; + } + case PT_STRARRAY: { + if(_strarrays.find(theID) != _strarrays.end()) return true; + break; + } + default: return false; + } + + return false; +} + +//======================================================================= +/*! + * Function : RemoveID + * Purpose : Removes a parameter with given ID + */ +//======================================================================= +bool SALOMEDSImpl_AttributeParameter::RemoveID(const string& theID, const Parameter_Types theType) +{ + Backup(); + SetModifyFlag(); + + switch(theType) { + case PT_INTEGER: { + if(_ints.erase(theID)) return true; + break; + } + case PT_REAL: { + if(_reals.erase(theID)) return true; + break; + } + case PT_BOOLEAN: { + if(_bools.erase(theID)) return true; + break; + } + case PT_STRING: { + if(_strings.erase(theID)) return true; + break; + } + case PT_REALARRAY: { + if(_realarrays.erase(theID)) return true; + break; + } + case PT_INTARRAY: { + if(_intarrays.erase(theID)) return true; + break; + } + case PT_STRARRAY: { + if(_strarrays.erase(theID)) return true; + break; + } + default: return false; + } + + + return false; +} + + +//======================================================================= +/*! + * Function : GetFather + * Purpose : Returns a father attribute for this attribute + */ +//======================================================================= +Handle(SALOMEDSImpl_AttributeParameter) SALOMEDSImpl_AttributeParameter::GetFather() +{ + Handle(SALOMEDSImpl_AttributeParameter) aFather; + TDF_Label L = Label(); + if(L.IsRoot()) return aFather; + + while(!L.IsRoot()) { + L = L.Father(); + if(L.FindAttribute(SALOMEDSImpl_AttributeParameter::GetID(), aFather)) break; + } + + return aFather; +} + +//======================================================================= +/*! + * Function : HasFather + * Purpose : Returns True if the attribute has a father attribute + */ +//======================================================================= +bool SALOMEDSImpl_AttributeParameter::HasFather() +{ + TDF_Label L = Label(); + if(L.IsRoot()) return false; + while(!L.IsRoot()) { + L = L.Father(); + if(L.IsAttribute(SALOMEDSImpl_AttributeParameter::GetID())) return true; + } + + return false; +} + +//======================================================================= +/*! + * Function : IsRoot + * Purpose : Returns True is the attribute is highest in an hierachy + */ +//======================================================================= +bool SALOMEDSImpl_AttributeParameter::IsRoot() +{ + return ((HasFather())?false:true); +} + +//======================================================================= +/*! + * Function : Clear + * Purpose : Clears the content of the attribute + */ +//======================================================================= +void SALOMEDSImpl_AttributeParameter::Clear() +{ + Backup(); + + _ints.clear(); + _reals.clear(); + _bools.clear(); + _strings.clear(); + _realarrays.clear(); + _intarrays.clear(); + _strarrays.clear(); + + SetModifyFlag(); +} + +//======================================================================= +/*! + * Function : GetIDs + * Purpose : Returns an array of all ID's of the given type + */ +//======================================================================= +vector SALOMEDSImpl_AttributeParameter::GetIDs(const Parameter_Types theType) +{ + + vector anArray; + int i = 0; + + switch(theType) { + case PT_INTEGER: { + if(_ints.size()) { + anArray.resize(_ints.size()); + for(map::const_iterator p = _ints.begin(); p != _ints.end(); p++, i++) + anArray[i] = p->first; + } + break; + } + case PT_REAL: { + if(_reals.size()) { + anArray.resize(_reals.size()); + for(map::const_iterator p = _reals.begin(); p != _reals.end(); p++, i++) + anArray[i] = p->first; + } + break; + } + case PT_BOOLEAN: { + if(_bools.size()) { + anArray.resize(_bools.size()); + for(map::const_iterator p = _bools.begin(); p != _bools.end(); p++, i++) + anArray[i] = p->first; + } + break; + } + case PT_STRING: { + if(_strings.size()) { + anArray.resize(_strings.size()); + for(map::const_iterator p = _strings.begin(); p!= _strings.end(); p++) + anArray[i] = p->first; + } + break; + } + case PT_REALARRAY: { + if(_realarrays.size()) { + anArray.resize(_realarrays.size()); + for(map< string, vector >::const_iterator p = _realarrays.begin(); p!= _realarrays.end(); p++) + anArray[i] = p->first; + } + break; + } + case PT_INTARRAY: { + if(_intarrays.size()) { + anArray.resize(_intarrays.size()); + for(map< string, vector >::const_iterator p = _intarrays.begin(); p!= _intarrays.end(); p++) + anArray[i] = p->first; + } + break; + } + case PT_STRARRAY: { + if(_strarrays.size()) { + anArray.resize(_strarrays.size()); + for(map< string, vector >::const_iterator p = _strarrays.begin(); p!= _strarrays.end(); p++) + anArray[i] = p->first; + } + break; + } + default: return anArray; + } + + return anArray; +} + +//======================================================================= +/*! + * Function : ID + * Purpose : Rteurns an GUID of the attribute + */ +//======================================================================= +const Standard_GUID& SALOMEDSImpl_AttributeParameter::ID () const { return GetID(); } + + +Handle(TDF_Attribute) SALOMEDSImpl_AttributeParameter::NewEmpty () const +{ + return new SALOMEDSImpl_AttributeParameter(); +} + +//======================================================================= +/*! + * Function : Restore + * Purpose : Restors the content of the attribute from another + */ +//======================================================================= +void SALOMEDSImpl_AttributeParameter::Restore(const Handle(TDF_Attribute)& with) +{ + Handle(SALOMEDSImpl_AttributeParameter) A = Handle(SALOMEDSImpl_AttributeParameter)::DownCast (with); + _ints.clear(); + _reals.clear(); + _bools.clear(); + _strings.clear(); + _realarrays.clear(); + _intarrays.clear(); + _strarrays.clear(); + + for(map::const_iterator p = A->_ints.begin(); p!= A->_ints.end(); p++) _ints[p->first] = p->second; + for(map::const_iterator p = A->_reals.begin(); p!= A->_reals.end(); p++) _reals[p->first] = p->second; + for(map::const_iterator p = A->_bools.begin(); p!= A->_bools.end(); p++) _bools[p->first] = p->second; + for(map::const_iterator p = A->_strings.begin(); p!= A->_strings.end(); p++) + _strings[p->first] = p->second; + for(map< string,vector >::const_iterator p = A->_realarrays.begin(); p!= A->_realarrays.end(); p++) + _realarrays[p->first] = p->second; + for(map< string,vector >::const_iterator p = A->_intarrays.begin(); p!= A->_intarrays.end(); p++) + _intarrays[p->first] = p->second; + for(map< string,vector >::const_iterator p = A->_strarrays.begin(); p!= A->_strarrays.end(); p++) + _strarrays[p->first] = p->second; +} + +//======================================================================= +/*! + * Function : Paste + * Purpose : Pastes the content of attribute to another + */ +//======================================================================= +void SALOMEDSImpl_AttributeParameter::Paste (const Handle(TDF_Attribute)& into, + const Handle(TDF_RelocationTable)& RT) const +{ + into->Restore(this); +} + +//======================================================================= +/*! + * Function : Save + * Purpose : Saves a content of the attribute as a string + */ +//======================================================================= +TCollection_AsciiString SALOMEDSImpl_AttributeParameter::Save() +{ + ostrstream buffer; + char *tmpBuffer = new char[255]; + + buffer << _ints.size() << " "; + + for(map::const_iterator p = _ints.begin(); p != _ints.end(); p++) { + buffer << convertString(p->first) << " " << p->second << " "; + } + + buffer << _reals.size() << " "; + for(map::const_iterator p =_reals.begin(); p != _reals.end(); p++) { + sprintf(tmpBuffer, "%.64e", p->second); + buffer << convertString(p->first) << " " << tmpBuffer << " "; + } + + buffer << _bools.size() << " "; + for(map::const_iterator p = _bools.begin(); p != _bools.end(); p++) { + buffer << convertString(p->first) << " " << p->second << " "; + } + + buffer << _strings.size() << " "; + for(map::const_iterator p = _strings.begin(); p != _strings.end(); p++) { + buffer << convertString(p->first) << " " << convertString(p->second) << " "; + } + + buffer << _realarrays.size() << " "; + for(map< string,vector >::const_iterator p = _realarrays.begin(); p != _realarrays.end(); p++) { + vector v(p->second); + sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size()); + buffer << tmpBuffer; + for(int i = 0; i >::const_iterator p = _intarrays.begin(); p != _intarrays.end(); p++) { + vector v(p->second); + sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size()); + buffer << tmpBuffer; + for(int i = 0; i >::const_iterator p = _strarrays.begin(); p != _strarrays.end(); p++) { + vector v(p->second); + sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size()); + buffer << tmpBuffer; + for(int i = 0; istr()); + + return AS; +} + +//======================================================================= +/*! + * Function : Load + * Purpose : Restores the attribute from the string + */ +//======================================================================= +void SALOMEDSImpl_AttributeParameter::Load(const TCollection_AsciiString& theValue) +{ + Backup(); + + _ints.clear(); + _reals.clear(); + _bools.clear(); + _strings.clear(); + _realarrays.clear(); + _intarrays.clear(); + + istrstream buffer(theValue.ToCString(), strlen(theValue.ToCString())); + + int size, val, ival; + double val2; + string s, id; + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> val; + _ints[restoreString(id)] = val; + } + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> val2; + _reals[restoreString(id)] = val2; + } + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> val; + _bools[restoreString(id)] = val; + } + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> s; + _strings[restoreString(id)] = restoreString(s); + } + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> val; + vector v; + v.resize(val); + for(int j = 0; j> val2; + v[j] = val2; + } + _realarrays[restoreString(id)] = v; + } + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> val; + vector v; + v.resize(val); + for(int j = 0; j> ival; + v[j] = ival; + } + _intarrays[restoreString(id)] = v; + } + + buffer >> size; + for(int i = 1; i<=size; i++) { + buffer >> id >> val; + vector v; + v.resize(val); + for(int j = 0; j> s; + v[j] = restoreString(s); + } + _strarrays[restoreString(id)] = v; + } +} diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx new file mode 100644 index 000000000..8ac7116fc --- /dev/null +++ b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx @@ -0,0 +1,119 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : SALOMEDSImpl_AttributeIOR.hxx +// Author : Sergey RUIN +// Module : SALOME + +#ifndef _SALOMEDSImpl_AttributeParameter_HeaderFile +#define _SALOMEDSImpl_AttributeParameter_HeaderFile + +#include +#include +#include +#include +#include +#include "SALOMEDSImpl_GenericAttribute.hxx" + +#include +#include +#include + +class Standard_GUID; +class Handle(TDF_Attribute); +class Handle(TDF_RelocationTable); + + +DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeParameter, SALOMEDSImpl_GenericAttribute ) + +enum Parameter_Types {PT_INTEGER, PT_REAL, PT_BOOLEAN, PT_STRING, PT_REALARRAY, PT_INTARRAY, PT_STRARRAY}; + +/*! + Class: SALOMEDSImpl_AttributeParameter + Description : AttributeParameter is a universal container of basic types +*/ + +class SALOMEDSImpl_AttributeParameter : public SALOMEDSImpl_GenericAttribute +{ + +private: + + std::map _ints; + std::map _reals; + std::map _strings; + std::map _bools; + std::map< std::string, vector > _realarrays; + std::map< std::string, vector > _intarrays; + std::map< std::string, vector > _strarrays; + +public: + Standard_EXPORT static const Standard_GUID& GetID() ; + + Standard_EXPORT SALOMEDSImpl_AttributeParameter():SALOMEDSImpl_GenericAttribute("AttributeParameter") {} + Standard_EXPORT static Handle(SALOMEDSImpl_AttributeParameter) Set (const TDF_Label& L); + + + Standard_EXPORT void SetInt(const std::string& theID, const int& theValue); + Standard_EXPORT int GetInt(const std::string& theID); + + Standard_EXPORT void SetReal(const std::string& theID, const double& theValue); + Standard_EXPORT double GetReal(const std::string& theID); + + Standard_EXPORT void SetString(const std::string& theID, const std::string& theValue); + Standard_EXPORT std::string GetString(const std::string& theID); + + Standard_EXPORT void SetBool(const std::string& theID, const bool& theValue); + Standard_EXPORT bool GetBool(const std::string& theID); + + Standard_EXPORT void SetRealArray(const std::string& theID, const std::vector& theArray); + Standard_EXPORT std::vector GetRealArray(const std::string& theID); + + Standard_EXPORT void SetIntArray(const std::string& theID, const std::vector& theArray); + Standard_EXPORT std::vector GetIntArray(const std::string& theID); + + Standard_EXPORT void SetStrArray(const std::string& theID, const std::vector& theArray); + Standard_EXPORT std::vector GetStrArray(const std::string& theID); + + Standard_EXPORT bool IsSet(const std::string& theID, const Parameter_Types theType); + + Standard_EXPORT bool RemoveID(const std::string& theID, const Parameter_Types theType); + + Standard_EXPORT Handle(SALOMEDSImpl_AttributeParameter) GetFather(); + Standard_EXPORT bool HasFather(); + Standard_EXPORT bool IsRoot(); + + Standard_EXPORT std::vector GetIDs(const Parameter_Types theType); + + Standard_EXPORT void Clear(); + + Standard_EXPORT virtual TCollection_AsciiString Save(); + Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue); + + Standard_EXPORT const Standard_GUID& ID() const; + Standard_EXPORT void Restore(const Handle(TDF_Attribute)& with) ; + Standard_EXPORT Handle_TDF_Attribute NewEmpty() const; + Standard_EXPORT void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const; + + Standard_EXPORT ~SALOMEDSImpl_AttributeParameter() {} + +public: + DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeParameter ) +}; + +#endif diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx new file mode 100644 index 000000000..b6324819b --- /dev/null +++ b/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx @@ -0,0 +1,361 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "SALOMEDSImpl_IParameters.hxx" +#include + +#include + +#include "SALOMEDSImpl_SObject.hxx" +#include "SALOMEDSImpl_ChildIterator.hxx" + +using namespace std; + +#define _AP_LISTS_LIST_ "AP_LISTS_LIST" +#define _AP_ENTRIES_LIST_ "AP_ENTRIES_LIST" +#define _AP_PROPERTIES_LIST_ "AP_PROPERTIES_LIST" +#define _AP_DUMP_PYTHON_ "AP_DUMP_PYTHON" + +/*! + Constructor +*/ +SALOMEDSImpl_IParameters::SALOMEDSImpl_IParameters(const Handle(SALOMEDSImpl_AttributeParameter)& ap) +{ + if(ap.IsNull()) return; + _ap = ap; + Handle(SALOMEDSImpl_SObject) so = _ap->GetSObject(); + _study = so->GetStudy(); +} + +SALOMEDSImpl_IParameters::~SALOMEDSImpl_IParameters() +{ + _compNames.clear(); +} + +int SALOMEDSImpl_IParameters::append(const string& listName, const string& value) +{ + if(_ap.IsNull()) return -1; + vector v; + if(!_ap->IsSet(listName, PT_STRARRAY)) { + if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) _ap->SetStrArray(_AP_LISTS_LIST_, v); + if(listName != _AP_ENTRIES_LIST_ && + listName != _AP_PROPERTIES_LIST_) { + append(_AP_LISTS_LIST_, listName); + } + _ap->SetStrArray(listName, v); + } + v = _ap->GetStrArray(listName); + v.push_back(value); + _ap->SetStrArray(listName, v); + return (v.size()-1); +} + +int SALOMEDSImpl_IParameters::nbValues(const string& listName) +{ + if(_ap.IsNull()) return -1; + if(!_ap->IsSet(listName, PT_STRARRAY)) return 0; + vector v = _ap->GetStrArray(listName); + return v.size(); +} + +vector SALOMEDSImpl_IParameters::getValues(const string& listName) +{ + vector v; + if(_ap.IsNull()) return v; + if(!_ap->IsSet(listName, PT_STRARRAY)) return v; + return _ap->GetStrArray(listName); +} + + +string SALOMEDSImpl_IParameters::getValue(const string& listName, int index) +{ + if(_ap.IsNull()) return ""; + if(!_ap->IsSet(listName, PT_STRARRAY)) return ""; + vector v = _ap->GetStrArray(listName); + if(index >= v.size()) return ""; + return v[index]; +} + +vector SALOMEDSImpl_IParameters::getLists() +{ + vector v; + if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) return v; + return _ap->GetStrArray(_AP_LISTS_LIST_); +} + +void SALOMEDSImpl_IParameters::setParameter(const string& entry, const string& parameterName, const string& value) +{ + if(_ap.IsNull()) return; + vector v; + if(!_ap->IsSet(entry, PT_STRARRAY)) { + append(_AP_ENTRIES_LIST_, entry); //Add the entry to the internal list of entries + _ap->SetStrArray(entry, v); + } + v = _ap->GetStrArray(entry); + v.push_back(parameterName); + v.push_back(value); + _ap->SetStrArray(entry, v); +} + + +string SALOMEDSImpl_IParameters::getParameter(const string& entry, const string& parameterName) +{ + if(_ap.IsNull()) return ""; + if(!_ap->IsSet(entry, PT_STRARRAY)) return ""; + vector v = _ap->GetStrArray(entry); + int length = v.size(); + for(int i = 0; i SALOMEDSImpl_IParameters::getAllParameterNames(const string& entry) +{ + vector v, names; + if(_ap.IsNull()) return v; + if(!_ap->IsSet(entry, PT_STRARRAY)) return v; + v = _ap->GetStrArray(entry); + int length = v.size(); + for(int i = 0; i SALOMEDSImpl_IParameters::getAllParameterValues(const string& entry) +{ + vector v, values; + if(_ap.IsNull()) return v; + if(!_ap->IsSet(entry, PT_STRARRAY)) return v; + v = _ap->GetStrArray(entry); + int length = v.size(); + for(int i = 1; iIsSet(entry, PT_STRARRAY)) return -1; + return _ap->GetStrArray(entry).size()/2; +} + +vector SALOMEDSImpl_IParameters::getEntries() +{ + vector v; + if(_ap.IsNull()) return v; + if(!_ap->IsSet(_AP_ENTRIES_LIST_, PT_STRARRAY)) return v; + return _ap->GetStrArray(_AP_ENTRIES_LIST_); +} + +void SALOMEDSImpl_IParameters::setProperty(const string& name, const std::string& value) +{ + if(_ap.IsNull()) return; + if(!_ap->IsSet(name, PT_STRING)) { + append(_AP_PROPERTIES_LIST_, name); //Add the property to the internal list of properties + } + _ap->SetString(name, value); +} + +string SALOMEDSImpl_IParameters::getProperty(const string& name) +{ + if(_ap.IsNull()) return ""; + if(!_ap->IsSet(name, PT_STRING)) return ""; + return _ap->GetString(name); +} + +vector SALOMEDSImpl_IParameters::getProperties() +{ + vector v; + if(_ap.IsNull()) return v; + if(!_ap->IsSet(_AP_PROPERTIES_LIST_, PT_STRARRAY)) return v; + return _ap->GetStrArray(_AP_PROPERTIES_LIST_); +} + +string SALOMEDSImpl_IParameters::decodeEntry(const string& entry) +{ + if(!_study) return entry; + int pos = entry.rfind("_"); + if(pos < 0 || pos >= entry.length()) return entry; + + string compName(entry, 0, pos), compID, tail(entry, pos+1, entry.length()-1); + + if(_compNames.find(compName) == _compNames.end()) { + Handle(SALOMEDSImpl_SObject) so = _study->FindComponent((char*)compName.c_str()); + if(so.IsNull()) return entry; + compID = so->GetID().ToCString(); + _compNames[compName] = compID; + } + else compID = _compNames[compName]; + + string newEntry(compID); + newEntry += (":"+tail); + + return newEntry; +} + + +bool SALOMEDSImpl_IParameters::isDumpPython(const Handle(SALOMEDSImpl_Study)& study, const string& theID) +{ + string anID; + if(theID == "") anID = getDefaultVisualComponent(); + else anID = theID; + + Handle(SALOMEDSImpl_AttributeParameter) ap = study->GetCommonParameters((char*)anID.c_str(), 0); + if(ap.IsNull()) return false; + if(!ap->IsSet(_AP_DUMP_PYTHON_, PT_BOOLEAN)) return false; + return (bool)ap->GetBool(_AP_DUMP_PYTHON_); +} + + +int SALOMEDSImpl_IParameters::getLastSavePoint(const Handle(SALOMEDSImpl_Study)& study, const string& theID) +{ + string anID; + if(theID == "") anID = getDefaultVisualComponent(); + else anID = theID; + + + Handle(SALOMEDSImpl_SObject) so = study->FindComponent((char*)anID.c_str()); + if(so.IsNull()) return -1; + + Handle(SALOMEDSImpl_StudyBuilder) builder = study->NewBuilder(); + Handle(SALOMEDSImpl_ChildIterator) anIter ( study->NewChildIterator( so ) ); + int tag = -1; + for(; anIter->More(); anIter->Next()) + { + Handle(SALOMEDSImpl_SObject) val( anIter->Value() ); + Handle(SALOMEDSImpl_GenericAttribute) genAttr; + if(builder->FindAttribute(val, genAttr, "AttributeParameter")) tag = val->Tag(); + } + + return tag; +} + + + +string SALOMEDSImpl_IParameters::getStudyScript(const Handle(SALOMEDSImpl_Study)& study, int savePoint, const std::string& theID) +{ + string anID; + if(theID == "") anID = getDefaultVisualComponent(); + else anID = theID; + + Handle(SALOMEDSImpl_AttributeParameter) ap = study->GetCommonParameters((char*)anID.c_str(), savePoint); + SALOMEDSImpl_IParameters ip(ap); + + string dump(""); + + dump += "import iparameters\n"; + dump += "ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters(\""+anID+"\", 1))\n\n"; + + + vector v = ip.getProperties(); + if(v.size() > 0) { + dump += "#Set up visual properties:\n"; + for(int i = 0; i 0) { + dump += "#Set up lists:\n"; + for(int i = 0; i lst = ip.getValues(v[i]); + dump += "# fill list "+v[i]+"\n"; + for(int j = 0; j < lst.size(); j++) + dump += "ipar.append(\""+v[i]+"\", \""+lst[j]+"\")\n"; + } + } + + return dump; +} + +string SALOMEDSImpl_IParameters::getDefaultScript(const Handle(SALOMEDSImpl_Study)& study, + const string& moduleName, + const string& shift, + const string& theID) +{ + string anID; + if(theID == "") anID = getDefaultVisualComponent(); + else anID = theID; + + string dump(""); + + int savePoint = SALOMEDSImpl_IParameters::getLastSavePoint(study, anID); + if(savePoint < 0) return dump; + SALOMEDSImpl_IParameters ip = SALOMEDSImpl_IParameters(study->GetCommonParameters(anID.c_str(), savePoint)); + if(!isDumpPython(study)) return dump; + + Handle(SALOMEDSImpl_AttributeParameter) ap = study->GetModuleParameters(anID.c_str(), moduleName.c_str(), savePoint); + ip = SALOMEDSImpl_IParameters(ap); + + + dump += shift +"import iparameters\n"; + dump += shift + "ipar = iparameters.IParameters(theStudy.GetModuleParameters(\""+anID+"\", \""+moduleName+"\", 1))\n\n"; + + vector v = ip.getProperties(); + if(v.size() > 0) { + dump += shift +"#Set up visual properties:\n"; + for(int i = 0; i 0) { + dump += shift +"#Set up lists:\n"; + for(int i = 0; i lst = ip.getValues(v[i]); + dump += shift +"# fill list "+v[i]+"\n"; + for(int j = 0; j < lst.size(); j++) + dump += shift +"ipar.append(\""+v[i]+"\", \""+lst[j]+"\")\n"; + } + } + + v = ip.getEntries(); + if(v.size() > 0) { + dump += shift + "#Set up entries:\n"; + for(int i = 0; i names = ip.getAllParameterNames(v[i]); + vector values = ip.getAllParameterValues(v[i]); + string decodedEntry = ip.decodeEntry(v[i]); + Handle(SALOMEDSImpl_SObject) so = study->FindObjectID((char*)decodedEntry.c_str()); + string so_name(""); + if(!so.IsNull()) so_name = so->GetName().ToCString(); + dump += shift + "# set up entry " + v[i] +" ("+so_name+")" + " parameters" + "\n"; + for(int j = 0; j < names.size() && j < values.size(); j++) + dump += shift + "ipar.setParameter(\"" + v[i] + "\", \"" + names[j] + "\", \"" + values[j] + "\")\n"; + } + } + + return dump; +} + + +string SALOMEDSImpl_IParameters::getDefaultVisualComponent() +{ + return "Interface Applicative"; +} + + diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx new file mode 100644 index 000000000..8965e8f91 --- /dev/null +++ b/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx @@ -0,0 +1,153 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef SALOMEDSImpl_IParameters_H +#define SALOMEDSImpl_IParameters_H + +#include +#include +#include + +#include "SALOMEDSImpl_AttributeParameter.hxx" +#include "SALOMEDSImpl_Study.hxx" + +/*! + Class which an interface to store the parameters of the objects +*/ +class SALOMEDSImpl_IParameters +{ +public: + SALOMEDSImpl_IParameters(const Handle(SALOMEDSImpl_AttributeParameter)& ap); + + virtual ~SALOMEDSImpl_IParameters(); + + /*! + Appends a string value to a named list. + Returns a number of the added value. + Note: the name of the list MUST be unique + */ + virtual int append(const std::string& listName, const std::string& value); + + /*! + Returns a number elements in the list + */ + virtual int nbValues(const std::string& listName); + + /*! + Returns a list of values in the list + */ + virtual std::vector getValues(const std::string& listName); + + /*! + Returns a value with given %index, where %index is in range [0:nbValues-1] + */ + virtual std::string getValue(const std::string& listName, int index); + + /*! + Returns a list all entries lists + */ + virtual std::vector getLists(); + + /*! + Sets a new named parameter value for the given entry + */ + virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value); + + /*! + Gets a named parameter value for the given entry + */ + virtual std::string getParameter(const std::string& entry, const std::string& parameterName); + + /*! + Returns all parameter names of the given entry + */ + virtual std::vector SALOMEDSImpl_IParameters::getAllParameterNames(const std::string& entry); + + /*! + Returns all parameter values of the given entry + */ + virtual std::vector SALOMEDSImpl_IParameters::getAllParameterValues(const std::string& entry); + + /*! + Returns a number of parameters of the given entry + */ + virtual int getNbParameters(const std::string& entry); + + /*! + Returns a list all entries + */ + virtual std::vector getEntries(); + + /*! + Sets a global named property value + */ + virtual void setProperty(const std::string& name, const std::string& value); + + /*! + Gets a value of global named property + */ + virtual std::string getProperty(const std::string& name); + + /*! + Returns a list all properties + */ + virtual std::vector getProperties(); + + /*! + Returns decoded entry that is an absolute entry + */ + virtual std::string decodeEntry(const std::string& entry); + + + /*! + Returns whether there is the dumping visual parameters + */ + static bool isDumpPython(const Handle(SALOMEDSImpl_Study)& study, const string& theID = ""); + + /*! + Returns an ID of the last save point + */ + static int getLastSavePoint(const Handle(SALOMEDSImpl_Study)& study, const std::string& theID = ""); + + /*! + Returns a Python script for the study, which sets up visual parameters + */ + static std::string getStudyScript(const Handle(SALOMEDSImpl_Study)& study, int savePoint, const std::string& theID = ""); + + /*! + Returns a default Python script that set ups visual parameters for the given module + shift is a string that contain spaces to make valid Python script indentaion + */ + static std::string getDefaultScript(const Handle(SALOMEDSImpl_Study)& study, + const std::string& moduleName, + const std::string& shift, + const std::string& theID = ""); + + /*! + Returns a default name of the component where the visula parameters are stored. + */ + static std::string getDefaultVisualComponent(); + +private: + Handle(SALOMEDSImpl_AttributeParameter) _ap; + Handle(SALOMEDSImpl_Study) _study; + std::map _compNames; +}; + + +#endif diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx new file mode 100644 index 000000000..7b0c2e2f3 --- /dev/null +++ b/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx @@ -0,0 +1,40 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server +// File : SALOMEDSImpl_SObject.cxx +// Author : Sergey RUIN +// Module : SALOME + + +#include "SALOMEDSImpl_TMPFile.hxx" + +#include +#include + + +IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_TMPFile, MMgt_TShared ) +IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_TMPFile, MMgt_TShared ) + +SALOMEDSImpl_TMPFile::TOctet* +SALOMEDSImpl_TMPFile +::Data() +{ + return &Get(0); +} diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx new file mode 100644 index 000000000..b59e16837 --- /dev/null +++ b/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx @@ -0,0 +1,47 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef __SALOMEDSIMPL_TMPFILE_H__ +#define __SALOMEDSIMPL_TMPFILE_H__ + +//Handle definition +#include +#include +#include + + +DEFINE_STANDARD_HANDLE( SALOMEDSImpl_TMPFile, MMgt_TShared ); + + +struct SALOMEDSImpl_TMPFile : public MMgt_TShared +{ + typedef unsigned char TOctet; + + virtual size_t Size() = 0; + + virtual TOctet* Data(); + + virtual TOctet& Get(size_t) = 0; + + DEFINE_STANDARD_RTTI( SALOMEDSImpl_TMPFile ); +}; + + +#endif diff --git a/src/SALOMEDSImpl/Test/Makefile.am b/src/SALOMEDSImpl/Test/Makefile.am new file mode 100644 index 000000000..014064ccd --- /dev/null +++ b/src/SALOMEDSImpl/Test/Makefile.am @@ -0,0 +1,106 @@ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Paul RASCLE +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= SALOMEDSImplTest.hxx + +# Scripts to be installed +dist_salomescript_SCRIPTS = TestSALOMEDSImpl.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CPPUNIT_INCLUDES@ \ + -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \ + -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \ + -I$(srcdir)/$(RPATH)/NamingService -I$(srcdir)/$(RPATH)/NamingService/Test \ + -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \ + -I$(srcdir)/$(RPATH)/ResourcesManager \ + -I$(srcdir)/$(RPATH)/LifeCycleCORBA \ + -I$(srcdir)/$(RPATH)/SALOMEDSImpl \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + @CPPUNIT_LIBS@ \ + $(RPATH)/Basics/libSALOMEBasics.la \ + $(RPATH)/ResourcesManager/libSalomeResourcesManager.la \ + $(RPATH)/Container/libSalomeContainer.la \ + $(RPATH)/NamingService/libSalomeNS.la \ + $(RPATH)/Registry/libRegistry.la \ + $(RPATH)/Notification/libSalomeNotification.la \ + $(RPATH)/Utils/Test/libUtilsTest.la \ + $(RPATH)/Utils/libOpUtil.la \ + $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la \ + $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \ + $(RPATH)/SALOMEDSImpl/libSalomeDSImpl.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSALOMEDSImplTest.la +libSALOMEDSImplTest_la_SOURCES = SALOMEDSImplTest.cxx +libSALOMEDSImplTest_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSALOMEDSImplTest_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSALOMEDSImplTest_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestSALOMEDSImpl +TestSALOMEDSImpl_SOURCES = TestSALOMEDSImpl.cxx +TestSALOMEDSImpl_CPPFLAGS = $(COMMON_CPPFLAGS) +TestSALOMEDSImpl_LDADD = \ + libSALOMEDSImplTest.la ../libSalomeDSImpl.la \ + $(RPATH)/NamingService/Test/libNamingServiceTest.la \ + $(COMMON_LIBS) + diff --git a/src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx b/src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx new file mode 100644 index 000000000..de90a0a9e --- /dev/null +++ b/src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx @@ -0,0 +1,129 @@ +// Copyright (C) 2006 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include "SALOMEDSImplTest.hxx" + +#include +#include +#include +#include +#include +#include "utilities.h" + +#include "SALOMEDSImpl_AttributeParameter.hxx" +#include "SALOMEDSImpl_StudyManager.hxx" +#include "SALOMEDSImpl_Study.hxx" +#include "SALOMEDSImpl_StudyBuilder.hxx" +#include "SALOMEDSImpl_GenericAttribute.hxx" + +#include + +using namespace std; + +// ============================================================================ +/*! + * Set up the environment + */ +// ============================================================================ + +void SALOMEDSImplTest::setUp() +{ + TCollection_AsciiString kernel(getenv("KERNEL_ROOT_DIR")); + TCollection_AsciiString subPath("/share/salome/resources"); + TCollection_AsciiString csf_var = (kernel+subPath); + setenv("CSF_PluginDefaults", csf_var.ToCString(), 0); + setenv("CSF_SALOMEDS_ResourcesDefaults", csf_var.ToCString(), 0); +} + +// ============================================================================ +/*! + * - delete trace classes + */ +// ============================================================================ + +void +SALOMEDSImplTest::tearDown() +{ +} + +// ============================================================================ +/*! + * Check setting int value + */ +// ============================================================================ +void SALOMEDSImplTest::testAttributeParameter() +{ + Handle(SALOMEDSImpl_StudyManager) sm = new SALOMEDSImpl_StudyManager(); + Handle(SALOMEDSImpl_Study) study = sm->NewStudy("Test"); + Handle(SALOMEDSImpl_AttributeParameter) _ap = study->GetCommonParameters("TestComp", 0); + + CPPUNIT_ASSERT(!_ap.IsNull()); + + _ap->SetInt("IntValue", 1); + CPPUNIT_ASSERT(_ap->IsSet("IntValue", PT_INTEGER)); + CPPUNIT_ASSERT(_ap->GetInt("IntValue") == 1); + + _ap->SetReal("RealValue", 1.2); + CPPUNIT_ASSERT(_ap->IsSet("RealValue", PT_REAL)); + CPPUNIT_ASSERT(_ap->GetReal("RealValue") == 1.2); + + _ap->SetString("StringValue", "hello"); + CPPUNIT_ASSERT(_ap->IsSet("StringValue", PT_STRING)); + CPPUNIT_ASSERT(_ap->GetString("StringValue") == "hello"); + + _ap->SetBool("BoolValue", 0); + CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN)); + CPPUNIT_ASSERT(!_ap->GetBool("BoolValue")); + + _ap->SetBool("BoolValue", 0); + CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN)); + CPPUNIT_ASSERT(!_ap->GetBool("BoolValue")); + + vector intArray; + intArray.push_back(0); + intArray.push_back(1); + + _ap->SetIntArray("IntArray", intArray); + CPPUNIT_ASSERT(_ap->IsSet("IntArray", PT_INTARRAY)); + CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[0] == 0); + CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[1] == 1); + + vector realArray; + realArray.push_back(0.0); + realArray.push_back(1.1); + + _ap->SetRealArray("RealArray", realArray); + CPPUNIT_ASSERT(_ap->IsSet("RealArray", PT_REALARRAY)); + CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[0] == 0.0); + CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[1] == 1.1); + + vector strArray; + strArray.push_back("hello"); + strArray.push_back("world"); + + _ap->SetStrArray("StrArray", strArray); + CPPUNIT_ASSERT(_ap->IsSet("StrArray", PT_STRARRAY)); + CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[0] == "hello"); + CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[1] == "world"); + +} + + + diff --git a/src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx b/src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx new file mode 100644 index 000000000..77c9e1e10 --- /dev/null +++ b/src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx @@ -0,0 +1,39 @@ +// Copyright (C) 2006 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef _SALOMEDSImplTEST_HXX_ +#define _SALOMEDSImplTEST_HXX_ + +#include + +class SALOMEDSImplTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( SALOMEDSImplTest ); + CPPUNIT_TEST( testAttributeParameter ); + CPPUNIT_TEST_SUITE_END(); + +public: + + void setUp(); + void tearDown(); + void testAttributeParameter(); +}; + +#endif diff --git a/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx b/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx new file mode 100644 index 000000000..f33c54597 --- /dev/null +++ b/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx @@ -0,0 +1,31 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// --- include all SALOMEDSImpl Test from basics until the present directory + +#include "SALOMEDSImplTest.hxx" + +// --- Registers the fixture into the 'registry' + +CPPUNIT_TEST_SUITE_REGISTRATION( SALOMEDSImplTest ); + +// --- generic Main program from Basic/Test + +#include "BasicMainTest.hxx" diff --git a/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py b/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py new file mode 100644 index 000000000..77456b6ce --- /dev/null +++ b/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py @@ -0,0 +1,47 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import sys, os,signal,string,commands +import runSalome +import orbmodule +import TestKiller + +# get SALOME environment : + +args, modules_list, modules_root_dir = runSalome.get_config() +runSalome.set_env(args, modules_list, modules_root_dir) + +# launch CORBA naming server + +clt=orbmodule.client() + +# launch CORBA logger server + +myServer=runSalome.LoggerServer(args) +myServer.run() +clt.waitLogger("Logger") + +# execute Unit Test + +command = ['TestSALOMEDSImpl'] +ret = os.spawnvp(os.P_WAIT, command[0], command) + +# kill Test process + +TestKiller.killProcess(runSalome.process_id) diff --git a/src/SALOMELocalTrace/Makefile.am b/src/SALOMELocalTrace/Makefile.am new file mode 100644 index 000000000..658fa2274 --- /dev/null +++ b/src/SALOMELocalTrace/Makefile.am @@ -0,0 +1,50 @@ +# SALOMELocalTrace : log on local machine +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume BOULANT (CSSI) +# Module : SALOME +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +salomeinclude_HEADERS = \ + utilities.h \ + LocalTraceBufferPool.hxx \ + BaseTraceCollector.hxx + +lib_LTLIBRARIES = libSALOMELocalTrace.la + +libSALOMELocalTrace_la_SOURCES = \ + BaseTraceCollector.cxx \ + BaseTraceCollector.hxx \ + LocalTraceCollector.cxx \ + LocalTraceCollector.hxx \ + FileTraceCollector.cxx \ + FileTraceCollector.hxx \ + LocalTraceBufferPool.cxx \ + LocalTraceBufferPool.hxx + +libSALOMELocalTrace_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSALOMELocalTrace_la_CPPFLAGS = -I$(srcdir)/../Basics +libSALOMELocalTrace_la_LIBADD = ../Basics/libSALOMEBasics.la diff --git a/src/SALOMELocalTrace/Test/Makefile.am b/src/SALOMELocalTrace/Test/Makefile.am new file mode 100644 index 000000000..79b6fd775 --- /dev/null +++ b/src/SALOMELocalTrace/Test/Makefile.am @@ -0,0 +1,78 @@ +# SALOMELocalTrace : log on local machine +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# This directory defines the subdirectory src in the top source directory. +SRCROOT=$(srcdir)/../.. + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = SALOMELocalTraceTest.hxx + +# Executable scripts to be installed +dist_salomescript_SCRIPTS = TestSALOMELocalTrace.py + +# +# =============================================================== +# Libraries targets +# =============================================================== +# + +lib_LTLIBRARIES = libSALOMELocalTraceTest.la +libSALOMELocalTraceTest_la_SOURCES = SALOMELocalTraceTest.cxx +libSALOMELocalTraceTest_la_CPPFLAGS = \ + @CPPUNIT_INCLUDES@ \ + -I$(SRCROOT)/SALOMELocalTrace \ + -I$(SRCROOT)/Basics + +libSALOMELocalTraceTest_la_LIBADD = \ + @CPPUNIT_LIBS@ \ + ../../SALOMELocalTrace/libSALOMELocalTrace.la + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestSALOMELocalTrace +TestSALOMELocalTrace_SOURCES = TestSALOMELocalTrace.cxx +TestSALOMELocalTrace_CPPFLAGS = \ + @CPPUNIT_INCLUDES@ \ + -I$(SRCROOT)/Basics/Test + +TestSALOMELocalTrace_LDADD = \ + @CPPUNIT_LIBS@ \ + libSALOMELocalTraceTest.la \ + ../../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../../Basics/libSALOMEBasics.la diff --git a/src/SALOMETraceCollector/Makefile.am b/src/SALOMETraceCollector/Makefile.am new file mode 100644 index 000000000..5beb8a75a --- /dev/null +++ b/src/SALOMETraceCollector/Makefile.am @@ -0,0 +1,37 @@ +# SALOMETraceCollector +# +# Copyright (C) 2003 CEA/DEN, EDF R&D +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File : Makefile.am +# Author : Guillaume BOULANT, CSSI +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +salomeinclude_HEADERS = \ + SALOMETraceCollector.hxx \ + TraceCollector_WaitForServerReadiness.hxx + +# Libraries targets +lib_LTLIBRARIES = libwith_loggerTraceCollector.la + +libwith_loggerTraceCollector_la_SOURCES =\ + SALOMETraceCollector.cxx \ + TraceCollector_WaitForServerReadiness.cxx + +libwith_loggerTraceCollector_la_CPPFLAGS =\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +libwith_loggerTraceCollector_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libwith_loggerTraceCollector_la_LIBADD = \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CORBA_LIBS@ diff --git a/src/SALOMETraceCollector/Test/Makefile.am b/src/SALOMETraceCollector/Test/Makefile.am new file mode 100644 index 000000000..a04b77196 --- /dev/null +++ b/src/SALOMETraceCollector/Test/Makefile.am @@ -0,0 +1,90 @@ +####################################### library +# SALOMELocalTrace : log on local machine +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +# header files +salomeinclude_HEADERS= SALOMETraceCollectorTest.hxx + +# Scripts to be installed +dist_salomescript_SCRIPTS = TestSALOMETraceCollector.py + + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CPPUNIT_INCLUDES@ \ + -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test\ + -I$(srcdir)/$(RPATH)/SALOMETraceCollector \ + -I$(top_builddir)/salome_adm/unix + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + @CPPUNIT_LIBS@ \ + $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(RPATH)/Basics/libSALOMEBasics.la + + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSALOMETraceCollectorTest.la +libSALOMETraceCollectorTest_la_SOURCES = SALOMETraceCollectorTest.cxx +libSALOMETraceCollectorTest_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSALOMETraceCollectorTest_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSALOMETraceCollectorTest_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestSALOMETraceCollector +TestSALOMETraceCollector_SOURCES = TestSALOMETraceCollector.cxx +TestSALOMETraceCollector_CPPFLAGS = $(COMMON_CPPFLAGS) +TestSALOMETraceCollector_LDADD = libSALOMETraceCollectorTest.la $(COMMON_LIBS) diff --git a/src/TOOLSDS/Makefile.am b/src/TOOLSDS/Makefile.am new file mode 100644 index 000000000..e015ae928 --- /dev/null +++ b/src/TOOLSDS/Makefile.am @@ -0,0 +1,73 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = SALOMEDS_Tool.hxx + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../Utils \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \ + @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ + @HDF5_INCLUDES@ \ + @BOOST_CPPFLAGS@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../Utils/libOpUtil.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CAS_KERNEL@ + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libTOOLSDS.la +libTOOLSDS_la_SOURCES = \ + SALOMEDS_Tool.cxx + +libTOOLSDS_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libTOOLSDS_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libTOOLSDS_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +# Nothing to build + + diff --git a/src/TestContainer/Makefile.am b/src/TestContainer/Makefile.am new file mode 100644 index 000000000..aca3e40c4 --- /dev/null +++ b/src/TestContainer/Makefile.am @@ -0,0 +1,104 @@ +# SALOME TestContainer : test of container creation and its life cycle +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.in +# Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA +# Module : SALOME +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +# Scripts to be installed +dist_salomescript_DATA = \ + SALOME_TestComponentPy.py \ + TestComponentPy.py \ + TestLogger.py + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(srcdir)/../Registry \ + -I$(srcdir)/../Notification \ + -I$(srcdir)/../ResourcesManager \ + -I$(srcdir)/../Container \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../Container/libSalomeContainer.la \ + ../Registry/libRegistry.la \ + ../Notification/libSalomeNotification.la \ + ../ResourcesManager/libSalomeResourcesManager.la \ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeTestComponentEngine.la +libSalomeTestComponentEngine_la_SOURCES = \ + SALOME_TestComponent_i.cxx \ + SALOME_TestComponent_i.hxx + +libSalomeTestComponentEngine_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSalomeTestComponentEngine_la_LIBADD = $(COMMON_LIBS) + +#LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl SALOME_Exception.idl + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestContainer TestLogger +TestContainer_SOURCES = TestContainer.cxx +TestContainer_CPPFLAGS = $(COMMON_CPPFLAGS) +TestContainer_LDADD = $(COMMON_LIBS) libSalomeTestComponentEngine.la + +TestLogger_SOURCES = TestLogger.cxx +TestLogger_CPPFLAGS = $(COMMON_CPPFLAGS) +TestLogger_LDADD = $(COMMON_LIBS) libSalomeTestComponentEngine.la diff --git a/src/TestContainer/TestLogger.py b/src/TestContainer/TestLogger.py new file mode 100644 index 000000000..2b5bbb62d --- /dev/null +++ b/src/TestContainer/TestLogger.py @@ -0,0 +1,23 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +from SALOME_utilities import * + +MESSAGE("TestLogger.py : It's OK") + diff --git a/src/TestMPIContainer/Makefile.am b/src/TestMPIContainer/Makefile.am new file mode 100644 index 000000000..fc84cd0e5 --- /dev/null +++ b/src/TestMPIContainer/Makefile.am @@ -0,0 +1,106 @@ +# SALOME MPIContainer : implemenation of container based on MPI libraries +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : SALOME +# $Header$ + + + +# +# =============================================================== +# _CS_gbo Caution !! This package may not work. I didn't test it +# because no mpi soft is installed on my computer. To be checked. +# =============================================================== +# + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Header to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS = TestMPIComponentEngine.hxx + +# +# =============================================================== +# Local definitions +# =============================================================== +# + +# This local variable defines the list of CPPFLAGS common to all target in this package. +# _CS_gbo See wether it can be shared by all packages in a common include!! +COMMON_CPPFLAGS=\ + @MPI_INCLUDES@ \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(srcdir)/../NamingService \ + -I$(srcdir)/../Utils \ + -I$(srcdir)/../Registry \ + -I$(srcdir)/../Notification \ + -I$(srcdir)/../ResourcesManager \ + -I$(srcdir)/../Container \ + -I$(srcdir)/../MPIContainer \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + ../Registry/libRegistry.la \ + ../Notification/libSalomeNotification.la \ + ../ResourcesManager/libSalomeResourcesManager.la \ + ../NamingService/libSalomeNS.la \ + ../Utils/libOpUtil.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + ../Basics/libSALOMEBasics.la \ + ../Container/libSalomeContainer.la \ + ../MPIContainer/libSalomeMPIContainer.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CORBA_LIBS@ + +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libSalomeTestMPIComponentEngine.la +libSalomeTestMPIComponentEngine_la_SOURCES = TestMPIComponentEngine.cxx +libSalomeTestMPIComponentEngine_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libSalomeTestMPIComponentEngine_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libSalomeTestMPIComponentEngine_la_LIBADD = $(COMMON_LIBS) + + + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestMPIContainer +TestMPIContainer_SOURCES = TestMPIContainer.cxx +TestMPIContainer_LDADD = libSalomeTestMPIComponentEngine.la $(COMMON_LIBS) @MPI_LIBS@ +TestMPIContainer_CPPFLAGS = $(COMMON_CPPFLAGS) diff --git a/src/UnitTests/Makefile.am b/src/UnitTests/Makefile.am new file mode 100644 index 000000000..b55f3b89d --- /dev/null +++ b/src/UnitTests/Makefile.am @@ -0,0 +1,89 @@ +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# + +# Executable scripts to be installed +dist_salomescript_SCRIPTS = UnitTests.py + +# +# =============================================================== +# Executables targets +# =============================================================== +# + +bin_PROGRAMS = UnitTests +UnitTests_SOURCES = UnitTests.cxx +UnitTests_CPPFLAGS =\ + @CPPUNIT_INCLUDES@ \ + -I$(srcdir)/../Basics -I$(srcdir)/../Basics/Test \ + -I$(srcdir)/../SALOMELocalTrace -I$(srcdir)/../SALOMELocalTrace/Test \ + -I$(top_builddir)/salome_adm/unix + +if CORBA_GEN + UnitTests_CPPFLAGS +=\ + -DWITH_CORBA \ + -I$(srcdir)/../SALOMETraceCollector -I$(srcdir)/../SALOMETraceCollector/Test \ + -I$(srcdir)/../NamingService -I$(srcdir)/../NamingService/Test \ + -I$(srcdir)/../Utils -I$(srcdir)/../Utils/Test \ + -I$(srcdir)/../LifeCycleCORBA -I$(srcdir)/../LifeCycleCORBA/Test \ + -I$(srcdir)/../SALOMDESImpl -I$(srcdir)/../SALOMEDSImpl/Test \ + -I$(srcdir)/../SALOMDES -I$(srcdir)/../SALOMEDS/Test \ + -I$(top_builddir)/idl \ + -I$(srcdir)/../Registry \ + -I$(srcdir)/../Notification \ + -I$(srcdir)/../ResourcesManager \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ +endif + +UnitTests_LDADD =\ + @CPPUNIT_LIBS@ \ + ../Basics/libSALOMEBasics.la \ + ../SALOMELocalTrace/libSALOMELocalTrace.la ../SALOMELocalTrace/Test/libSALOMELocalTraceTest.la + +if CORBA_GEN + UnitTests_LDADD +=\ + ../Registry/libRegistry.la \ + ../Notification/libSalomeNotification.la \ + ../ResourcesManager/libSalomeResourcesManager.la \ + ../NamingService/libSalomeNS.la ../NamingService/Test/libNamingServiceTest.la \ + ../Container/libSalomeContainer.la \ + ../SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \ + ../Utils/libOpUtil.la ../Utils/Test/libUtilsTest.la \ + ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la ../LifeCycleCORBA/Test/libLifeCycleCORBATest.la \ + ../SALOMEDSImpl/libSalomeDSImpl.la ../SALOMEDSImpl/Test/libSALOMEDSImplTest.la \ + ../SALOMEDS/libSalomeDS.la ../SALOMEDS/Test/libSALOMEDSTest.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CORBA_LIBS@ +endif diff --git a/src/Utils/Makefile.am b/src/Utils/Makefile.am new file mode 100644 index 000000000..aac6dea13 --- /dev/null +++ b/src/Utils/Makefile.am @@ -0,0 +1,77 @@ +# SALOME Utils : general SALOME's definitions and tools +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : SALOME +# $Header$ + + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# header files +salomeinclude_HEADERS =\ + OpUtil.hxx \ + Utils_Timer.hxx \ + Utils_CorbaException.hxx \ + Utils_CommException.hxx \ + Utils_SALOME_Exception.hxx \ + Utils_ORB_INIT.hxx \ + Utils_Identity.hxx \ + Utils_SINGLETON.hxx \ + Utils_DESTRUCTEUR_GENERIQUE.hxx \ + Utils_ExceptHandlers.hxx \ + Utils_Mutex.hxx + +# Scripts to be exported +dist_salomescript_DATA =\ + Utils_Identity.py \ + SALOME_utilities.py + +# Libraries targets +lib_LTLIBRARIES = libOpUtil.la +libOpUtil_la_SOURCES =\ + OpUtil.cxx Utils_Timer.cxx duplicate.cxx \ + Utils_CommException.cxx \ + Utils_SALOME_Exception.cxx \ + Utils_Identity.cxx Utils_ORB_INIT.cxx \ + Utils_DESTRUCTEUR_GENERIQUE.cxx \ + Utils_ExceptHandlers.cxx \ + Utils_Mutex.cxx + +libOpUtil_la_LDFLAGS = -no-undefined -version-info=0:0:0 + +libOpUtil_la_CPPFLAGS = \ + -I$(srcdir)/../Basics \ + -I$(srcdir)/../SALOMELocalTrace \ + -I$(top_builddir)/salome_adm/unix \ + -I$(top_builddir)/idl \ + @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ + +libOpUtil_la_LIBADD = \ + ../SALOMELocalTrace/libSALOMELocalTrace.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la\ + @CORBA_LIBS@ + + + diff --git a/src/Utils/Test/Makefile.am b/src/Utils/Test/Makefile.am new file mode 100644 index 000000000..682b4b417 --- /dev/null +++ b/src/Utils/Test/Makefile.am @@ -0,0 +1,88 @@ +####################################### library +# SALOMELocalTrace : log on local machine +# +# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# +# +# File : Makefile.am +# Author : Guillaume Boulant (CSSI) +# Module : KERNEL +# $Header$ + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +# +# =============================================================== +# Files to be installed +# =============================================================== +# +# header files +salomeinclude_HEADERS= UtilsTest.hxx + +# Scripts to be installed +dist_salomescript_SCRIPTS = TestUtils.py + + +# +# =============================================================== +# Local definitions +# =============================================================== +# +# This directory defines the subdirectory src in the top source directory. +RPATH=../.. + +# This local variable defines the list of CPPFLAGS common to all target in this package. +COMMON_CPPFLAGS=\ + @CPPUNIT_INCLUDES@ \ + -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \ + -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \ + -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \ + -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \ + -I$(top_builddir)/salome_adm/unix + +# This local variable defines the list of dependant libraries common to all target in this package. +COMMON_LIBS =\ + @CPPUNIT_LIBS@ \ + $(RPATH)/Utils/libOpUtil.la \ + $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \ + $(RPATH)/Basics/libSALOMEBasics.la +# +# =============================================================== +# Libraries targets +# =============================================================== +# +lib_LTLIBRARIES = libUtilsTest.la +libUtilsTest_la_SOURCES = UtilsTest.cxx +libUtilsTest_la_CPPFLAGS = $(COMMON_CPPFLAGS) +libUtilsTest_la_LDFLAGS = -no-undefined -version-info=0:0:0 +libUtilsTest_la_LIBADD = $(COMMON_LIBS) + +# +# =============================================================== +# Executables targets +# =============================================================== +# +bin_PROGRAMS = TestUtils +TestUtils_SOURCES = TestUtils.cxx +TestUtils_CPPFLAGS = $(COMMON_CPPFLAGS) +TestUtils_LDADD = libUtilsTest.la $(COMMON_LIBS) +