1 \documentclass[11pt,a4paper]{article}
5 \usepackage{fancyheadings}
13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
14 % mise en page du document %
15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
29 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30 % test si on passe par pdflatex %
31 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33 \ifx\pdfoutput\undefined
34 \pdffalse % we are not running pdflatex
36 \pdfoutput=1 % we are running pdflatex
37 \pdfcompresslevel=9 % compression level for text and image;
45 urlcolor=rltblue, % \href{...}{...} external (URL)
46 filecolor=rltgreen, % \href{...} local file
47 linkcolor=rltred, % \ref{...} and \pageref{...}
48 pdftitle={Adding a new module or unit development},
49 pdfauthor={Patrick Goldbronn, Marc Tajchman},
54 bookmarksopen=true]{hyperref}
56 \definecolor{rltred}{rgb}{0.75,0,0}
57 \definecolor{rltgreen}{rgb}{0,0.5,0}
58 \definecolor{rltblue}{rgb}{0,0,0.75}
64 %%%%%%%%%%%%%%%%%%%%%%%%%
65 %% epaisseur des traits %
66 %%%%%%%%%%%%%%%%%%%%%%%%%
69 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
70 %% mise en page des environnement array %
71 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
73 \renewcommand{\arraystretch}{1.6}
75 %%%%%%%%%%%%%%%%%%%%%%%%%%%
76 %% interligne du document %
77 %%%%%%%%%%%%%%%%%%%%%%%%%%%
78 \renewcommand{\baselinestretch}{1.2}
80 %%%%%%%%%%%%%%%%%%%%%%%%
81 %% haut et bas de page %
82 %%%%%%%%%%%%%%%%%%%%%%%%
83 \newcommand{\version}{0.3}
95 Using the SALOME configuration and building system V. \version
98 \thepage/\pageref{LastPage}
101 \setlength{\headrulewidth}{0pt}
102 \setlength{\footrulewidth}{1pt}
104 %-----------------------------------------------------------
106 \newcommand{\fsc}{\sc}
109 %%-----------------------------------------------------------
110 %%-----------------------------------------------------------
111 %%-----------------------------------------------------------
114 %% Bring items closer together in list environments
115 % Prevent infinite loops
116 \let\Itemize =\itemize
117 \let\Enumerate =\enumerate
118 \let\Description =\description
119 % Zero the vertical spacing parameters
120 \def\Nospacing{\itemsep=4pt\topsep=-5pt\partopsep=-5pt%
121 \parskip=0pt\parsep=0pt}
122 % Redefinition de art12.sty pour commencer a la marge de gauche
123 %\leftmargini 1.2em % 2.5em
126 % Redefine the environments in terms of the original values
127 \renewenvironment{itemize}{\Itemize\Nospacing}{\endlist}
128 \renewenvironment{enumerate}{\Enumerate\Nospacing}{\endlist}
129 \renewenvironment{description}{\Description\Nospacing}%
134 % Redefine the environments to the original values
135 \renewenvironment{itemize}{\Itemize}{\endlist}
136 \renewenvironment{enumerate}{\Enumerate}{\endlist}
137 \renewenvironment{description}{\Description}{\endlist}
154 \includegraphics[width=11.88cm, height=5.11cm]{@srcdir@/SALOME.png}
156 \includegraphics[width=11.88cm, height=5.11cm]{@srcdir@/SALOME.ps}
165 {\usefont{T1}{phv}{bx}{n}
166 \huge Using the SALOME configuration and building system
172 {\LARGE Version \version}
179 \renewcommand{\arraystretch}{0.85}
181 Patrick & Goldbronn & C.E.A. \\
182 Marc & Tajchman & C.E.A.
187 \def\Mkin{{\tt Makefile.in }}
189 \thispagestyle{empty}
192 %-----------------------------------------------------------
193 \section*{Successive versions}
196 \begin{tabular}{|p{2cm}|p{1.5cm}|p{8cm}|p{2cm}|}
198 \textbf{Date} & \textbf{Version} & \textbf{Description} & \textbf{Author(s)}\\
200 10/07/2001& 0.0 & Initial version & PG \\
202 25/07/2001 & 0.1 & English traduction, rewriting & MT \\
204 29/08/2001 & 0.2 & Add source creation, some precision & PG \\
206 24/05/2002 & 0.3 & Add instruction to do installation correctly & PG \\
212 %\thispagestyle{empty}
214 %-----------------------------------------------------------
216 This document contains rules and advices to configure,
217 build and extend the SALOME platform.
221 %-----------------------------------------------------------
225 %-----------------------------------------------------------
228 \section{SALOME Configuration}
230 \subsection{Directories organisation}
232 We suppose here that you unpack the SALOME distribution from scratch.
233 The path to the SALOME sources will be named ``top source directory''
234 or {\tt SALOME\_ROOT}.
236 It is possible, but not advised, to build the set of binaries and libraries
237 in the same subtree. Instead, we suppose you have choosen a different subtree
238 where to put builded files (you can so build to multiples architectures from the same source tree). The root of the build subtree will be named
239 ``top build directory''.
241 At the end of configuration and compilation processs, you may install
242 builded files in a separate subtree, name ``installation subtree''.
243 The root of the installation subtree will be named ``top installation directory''.
245 The figure \ref{FigDirs} shows subtrees organisation.
249 \includegraphics{@srcdir@/subtrees.pdf}
251 \includegraphics{@srcdir@/subtrees.eps}
253 \caption{\label{FigDirs} Subtrees organisation}
256 \subsection{PreConfiguration step}
258 SALOME needs some environment variables (to be defined for example in
259 a .cshrc or .bashrc file in your home directory)~:
261 \begin{tabular}{|p{3.5cm}|p{11cm}|}
263 \it variable & \it set value and check \\
265 {\tt QTDIR} & root directory of qt distribution ({\tt \$QTDIR/lib} must contain libqt.so) \\
267 {\tt HDF5HOME} & root directory of hdf5 distribution ({\tt \$HDF5HOME/lib} must contain libhdf5.so) \\
269 {\tt VTKHOME} & root directory of vtk distribution ({\tt \$VTKHOME/common} must contain libVTKCommon.so) \\
271 {\tt CASROOT} & root directory of OpenCascade distribution ({\tt \$CASROOT/Linux/lib} must contain libTKernel.so) \\
273 {\tt PYTHONHOME} & root directory of python distribution ({\tt \$PYTHONHOME/lib/pythonXXX/config} must contain libpythonXXX.a) \\
275 {\tt OMNIORB\_CONFIG } & path to the omniORB.cfg file (this file contains default
276 options to omniORB, see below) \\
281 Create a file named omniORB.cfg in your root tree, containing default
282 options to omniORB. Put in this file, the following line~:
284 ORBInitRef NameService=corbaname::localhost
287 (tells omniORB that the CORBA name service is local).
289 \subsection{Configuration step}
292 \item There are two cases~:
294 \item There is a {\tt configure} file in the top source directory,
295 and you didn't change the SALOME structure (adding a module or unit,
296 see sections \ref{sec_module} or \ref{sec_unit} below).
297 Go to point \ref{pConf}.
298 \item You don't have a {\tt configure} file or you add a module/unit
299 in the SALOME system.
300 Go to point \ref{pReConf}
303 \item \label{pReConf}
304 Go to the top source directory and type~:
308 This script find all file with suffix {\tt .in} (which will be generate by {\tt configure} script) and add them in {\tt configure.in} file, launch {\tt aclocal} and {\tt autoconf} to generete {\tt configure} script.
310 Continue with point \ref{pConf}
313 Go to the top build directory you choose.
315 If you plan to install SALOME files after building in a non-standard
316 location (i.e. different from /usr/local), type~:
319 <path to the top source directory>/configure \
320 --prefix=<installation directory>
325 <path to the top source directory>/configure
328 where ``path to the top source directory'' is to be replaced by the path
329 to the SALOME sources.
331 For other options to the configure command, type~:
333 <path to the top source directory>/configure --help
336 This will create a mirror subtree of the sources into the top build directory
337 where object files, binaries and libraries will be builded. Also a makefile
338 system will be created into the build tree.
342 \subsection{PostConfiguration step}
344 This phase is optional, to be used only if the compilation process
345 (see next section) fails to use {\tt libtool} script.
347 On some systems, the {\tt libtool} script generated by the configure
348 command will not operate correctly during compilation
349 (see next section). If you encounter this situation,
350 copy the local libtool script in your system (e.g. in the /usr/bin
351 directory) to the top build directory after configuration and before
354 Check the following line in libtool script :
356 deplibs_check_method=...
359 If needed, replace this line by
361 deplibs_check_method="pass_all"
364 \section{SALOME compilation}
366 From the top build directory, type
371 After some time (be patient ...), it will create various binaries.
372 Building SALOME is split in several phases~:
375 \item {\tt make inc} : copy/update header files exported by development units
376 in the directory {\tt inc} of the build tree ;
377 \item {\tt make depend\_idl} : determine dependencies between idl files (useful when recompiling SALOME after idl modification);
378 \item {\tt make depend (make dep)} : determine dependencies between source files and header files (useful when recompiling SALOME after source modification);
379 \item {\tt make lib} : generate libraries, put a copy/link into the {\tt lib} directory of the build tree;
380 \item {\tt make bin} : generate binaries;
381 \item {\tt make tests (make check)} : build and run tests (not yet implemented).
384 After building, testing, the user may install the system in a choosen directory
385 (different from and not included in the top source directory and the top build directory).
387 From the top build directory, type~:
388 \begin{quotation}\noindent%
389 {\tt make install} : install libraries, header and idl files, binaries,
390 resource files in the installation directory
393 \section{\label{sec_module}Module creation}
395 In this section, the new module will be named {\tt <Module>}. Replace
396 each occurence with the real name of your module.
399 \item In the source tree root {\tt SALOME\_ROOT}, create a new directory
407 \item Modify the \Mkin file in the {\tt SALOME\_ROOT} directory to add the new module~:
409 Append to the line beginning with
414 the name of the new module.
416 \item In the module root directory, create two subdirectories {\tt src} and {\tt resources} and create a file \Mkin
417 (e.g. copy the corresponding file in {\tt GEOM} module for example)~:
423 cp ../GEOM/Makefile.in .
426 \item In the {\tt src} subdirectory, copy a \Mkin file (e.g. from the corresponding file in {\tt GEOM/src} subdirectory for example)~:
430 cp ../../GEOM/src/Makefile.in .
433 \item Edit this file and replace the line
443 \item Edit this file and replace the line
445 SUBDIRS = GEOMDS GEOM GEOMGUI
453 (empty list of development units in this module).
455 \item Edit this file and replace the line
457 RESOURCES_FILES = arc.png \
466 (list of all ressources for this module).
468 \item Add the new \Mkin files in the global list of .in files.
470 In the root directory of the source tree, execute the {\tt reconfigure}
474 \item edit the configure.in file in the source tree root,
475 add \Mkin files into the {\tt AC\_OUTPUT} list,
476 \item from the source tree root directory, run the {\tt genconf} script which launch {\tt aclocal} and {\tt autoconf}.
481 Figure \ref{srctree_module} summarize these changes.
485 \includegraphics{@srcdir@/srctree_module.pdf}
487 \includegraphics{@srcdir@/srctree_module.eps}
489 \caption{\label{srctree_module} Source tree : modification when adding an new module}
493 \section{\label{sec_unit}Development unit creation}
495 Here we want to add a development unit named {\tt <Unit>}
496 in the existing module {\tt <Module>} (replace the names {\tt <Unit>}
497 and {\tt <Module>} with real ones).
501 \item In the {\tt src} subdirectory of {\tt <Module>}, create a
502 subdirectory named {\tt <Unit>}~:
505 cd <path to <Module> >/src
509 Modify then \Mkin file in the {\tt src} directory to add
511 to the compilation process~:
513 Complete the line beginning with
518 with the name of the new directory
524 \item Create a \Mkin file in the new {\tt <Unit>} directory (you can copy a \Mkin file from the corresponding subdirectory in {\tt GEOM} module : {\tt GEOM/src/GEOMGUI} subdirectory for example, and modify as you need)
529 ... create Makefile.in
532 The details of \Mkin creation is detailed in the next section.
536 The different files of your unit must be located in several directories
537 (see figure \ref{srctree_unit} and the list below).
541 \includegraphics{@srcdir@/srctree_unit.pdf}
543 \includegraphics{@srcdir@/srctree_unit.eps}
545 \caption{\label{srctree_unit}Source tree : modification when adding an new unit in an existing module}
549 \item Private source and header files of your unit
551 Place the only copy of these files in your unit. If you use
552 the proposed makefile system, dont put them in subdirectories
556 \begin{quotation}\noindent%
557 Using a non-flat directory structure for an unit, has not been
558 tested but it should work. You must write your makefile to take care
562 \item Exported idl files from a unit
564 These files are provided by the unit for CORBA communication
567 Place the only copy of these files into the idl subdirectory of the
570 \item Exported header files from a unit
572 These files are provided by the unit for direct communication
573 from other units (using the unit's library).
575 Place the master copy of these files in your unit subtree.
577 Assure that these files are automatically or manually copied in
578 the inc subdirectory of the root build tree.
582 \section{Creating a \Mkin file in a new unit}
584 \subsection{Using predefined make rules}
586 Copy the following \Mkin \ skeleton in the unit directory~:
588 \verbatiminput{@srcdir@/makefile.skel}
590 Adapt this \Mkin skeleton to your particular needs~:
592 \item if you have to compile a library
595 \item Complete the line
602 LIB = lib<MyLibrary>.la
607 LIB = libGeometryGui.la
612 \item the library name {\bf must} begin with {\tt lib} and end with
613 {\tt .la} (this allows automatic creation of shared libraries with libtool).
614 \item there must be only one library by development unit
617 \item Also add to the line~:
621 the list of sources files (in this unit) needed to build the library
623 \item If your library uses QT MOC file, add to the line~:
627 the list of headers files to transform with moc.
629 \item If your library uses CORBA functionnalities from other units (i.e.
630 uses idl files exported from other units), add to the line~:
634 the list of idl files.
636 \item If your unit provides CORBA functionnalities (i.e. exports idl
637 files to the other units), add to the line~:
641 the list of idl files.
644 \item if you want to build one or more executables~:
647 \item Complete the line
654 BIN = <MyBin1> <MyBin2> ..
659 \begin{quotation}\noindent%
660 For each executable in the {\tt BIN} list, say {\tt MyBin1}, the main
661 function {\bf must} be in a file named accordingly, in this example~:
662 {\tt MyBin1.cxx} and {\tt MyBin2.cxx}.
665 \item Also add to the line~:
669 the list of source files (in this unit) needed to build {\bf all} the executables,
670 {\bf excluding files containing main function(s)}.
674 \item The makefile system will automatically add to each executable, its
675 main function file. That's why these files must not be included in the
677 \item The object files (compiled from the source files in the {\tt BIN\_SRC}
678 list) will be properly dispatched between the executables by the linker.
681 \item If your binaries uses QT MOC file, add to the line~:
685 the list of headers files to transform with moc.
687 \item If your binaries uses CORBA functionnalities from other units (i.e.
688 uses idl files exported from other units), add to the line~:
692 the list of idl files.
694 \item If your unit provides CORBA functionnalities (i.e. exports idl
695 files to the other units), add to the line~:
699 the list of idl files.
703 \item List the exported header files that your unit provides
704 to other developments units~:
710 with the list header files.
713 \begin{quotation}\noindent%
714 The makefile system will automatically copy these files in a
715 subdirectory {\tt inc} in the top build directory, and maintain
716 coherence with your private copy inside your unit subtree.
717 This is to assure name uniqueness of differents exported header
718 files from different units and to write easier makefiles.
721 \item List the python scripts files that your unit export~:
728 \item To generate qm file from po file (use by QT), list po files in~:
734 \begin{quotation}\noindent%
735 The resulting qm files will ge generated directory which contain Makefile.
736 It will be copied in resources directory when do {\tt 'make install'}.
742 \subsection{Using your own makefiles in an unit}
744 If the proposed makefile system don't suit your needs (several libraries,
745 non flat unit subtree structure, ...). It's possible
746 to write your own makefiles.
749 \item Create a file \Mkin
751 This file must begin with the lines
753 \verbatiminput{@srcdir@/makefile_own.skel}
757 The rest of the file has the standard GNU make format.
759 You must define the following targets~:
762 \item {\tt inc} : copy/update the exported header files to the {\tt \$top\_builddir/inc} directory
763 \item {\tt dep} : update dependencies
764 \item {\tt lib} : build libraries and link them into the {\tt \$top\_builddir/lib} directory
765 \item {\tt bin} : build executables and link them into the {\tt \$top\_builddir/bin} directory
768 Some of these targets may be empty, if not applicable.
776 provides a number of predefined variables that you can use in your makefile
777 rules (defining standard libraries locations, compiler options, ..., see next section).
780 \section{Add or remove a script}
782 If you want to add a new shell script in {\tt SALOME\_ROOT/bin}, you must edit {\tt SALOME\_ROOT/Makefile.in} to add it in {\tt BIN\_SCRIPT}.
784 If this script have some package dependent variable, you must create a ".in" file and add this reference to {\tt configure.in} file.
786 To remove an existing script, you must of course remove it from CVS archive and also remove it from {\tt SALOME\_ROOT/Makefile.in} and if any, from {\tt configure.in}.
788 If you want to add a new python script, put it in {\tt EXPORT\_PYSCRIPTS} variable. It will be copied at same place than others executables.
791 \section{Add or remove an IDL file}
793 If you want to add a new IDL file in {\tt SALOME\_ROOT/idl}, you must edit {\tt SALOME\_ROOT/idl/Makefile.in} and add its in {\tt IDL\_FILES}.
795 To remove an existing IDL file, you must of course remove it from CVS archive and also remove it from {\tt SALOME\_ROOT/idl/Makefile.in}.
798 \section{Predefined symbols used in {\tt Makefile.in}}
800 You can use predefined symbols in you {\tt Makefile.in} files.
803 \item compilation flags for source compiling,
804 \item header files location in your local system,
805 \item libraries needed for binaries linking.
808 For example to use the OpenCascade libraries in your unit, you will add the
810 \item {\tt \$OCC\_INCLUDES} symbol to the included header file locations,
811 \item {\tt \$OCC\_CXXFLAGS} symbol to the compilation flags,
812 \item {\tt \$OCC\_LIBS} symbol to the linker's flags
815 If you use the predefined make rules, add the lines
817 CPPFLAGS+=$(OCC_INCLUDES)
818 CXXFLAGS+=$(OCC_CXXFLAGS)
821 in your {\tt Makefile.in} file after the @{\tt COMMENCE}@ line.
823 For each standard tool you need in SALOME (QT, python, OpenCascade, CORBA, VTK, \ldots), main symbols listed below.
831 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
833 \it variable & \it value \\
835 {\tt CORBA\_ROOT } & CORBA home base \\
837 {\tt CORBA\_INCLUDES} & compiler options to include CORBA headers \\
839 {\tt CORBA\_LIBS } & libraries needed to link with CORBA \\
841 {\tt CORBA\_CXXFLAGS } & C++ compiler options to use with CORBA \\
843 {\tt IDL} & idl compiler \\
845 {\tt IDLCXXFLAGS} & options to the idl compiler to generate C++
846 stub or skeleton code \\
848 {\tt IDLPYFLAGS} & options to the idl compiler to generate python
849 stub or skeleton code \\
851 {\tt IDL\_CLN\_H} & extension of generated CORBA header files (client side) \\
853 {\tt IDL\_CLN\_CXX} & extension of generated CORBA source files (client side) \\
855 {\tt IDL\_CLN\_OBJ} & extension of generated CORBA object files (client side) \\
857 {\tt IDL\_SRV\_H} & extension of generated CORBA header files (server side) \\
859 {\tt IDL\_SRV\_CXX} & extension of generated CORBA source files (server side) \\
861 {\tt IDL\_SRV\_OBJ} & extension of generated CORBA object files (server side) \\
868 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
870 \it variable & \it value \\
872 {\tt PYTHON} & python interpreter (absolute path to) \\
874 {\tt PYTHON\_VERSION} & python version \\
876 {\tt PYTHONHOME} & python home base (sometimes needed
879 {\tt PYTHON\_INCLUDES} & compiler options to include python header files \\
881 {\tt PYTHON\_LIBS} & libraries needed to link with python \\
889 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
891 \it variable & \it value \\
893 {\tt MOC} & moc compiler \\
895 {\tt UIC} & uic graphical compiler \\
897 {\tt QTDIR} & QT home base \\
899 {\tt QT\_ROOT} & QT home base \\
901 {\tt QT\_INCLUDES} & compiler options to include QT headers \\
903 {\tt QT\_MT\_INCLUDES} & same as above, for multithreaded applications \\
905 {\tt QT\_LIBS} & libraries needed to link with QT (single threaded) \\
907 {\tt QT\_MT\_LIBS} & same as above, for multithreaded applications \\
911 For SALOME developments, multithreaded versions of qt options and libraries
918 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
920 \it variable & \it value \\
922 {\tt OGL\_INCLUDES} & compiler options to include OpenGL headers \\
924 {\tt OGL\_LIBS} & libraries needed to link with OpenGL \\
932 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
934 \it variable & \it value \\
936 {\tt VTK\_INCLUDES} & compiler options to include VTK headers \\
938 {\tt VTK\_LIBS} & libraries needed to link with VTK \\
946 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
948 \it variable & \it value \\
950 {\tt HDF5\_INCLUDES} & compiler options to include HDF headers \\
952 {\tt HDF5\_LIBS} & libraries needed to link with HDF \\
954 {\tt HDF5\_MT\_LIBS} & libraries needed to link with HDF
955 (multithreaded version) \\
960 \item {\it OpenCascade}
963 \begin{longtable}{|p{3.2cm}|p{9.1cm}|}
965 \it variable & \it value \\
967 {\tt OCC\_INCLUDES} & compiler options to include OpenCascade headers \\
969 {\tt OCC\_LIBS} & libraries needed to link with OpenCascade \\
971 {\tt OCC\_CXXFLAGS} & C++ compiler options to use with OpenCascade \\
977 \section{Location of generated files in the build tree}
979 A partial view of the build tree shows the location of files generated
980 during the compilation process.
984 \includegraphics{@srcdir@/bldtree.pdf}
986 \includegraphics{@srcdir@/bldtree.eps}
988 \caption{Partial view of the build tree : generated files during compilation}
991 \section{What's matter when launch {\tt make install}}
993 When all libraries and binaries files are generated, make copies all identified files as {\tt configure} parameters {\tt --prefix}, {\tt bindir}, {\tt datadir}, ... (see {\tt configure --help} for details).
995 If you specify nothing, all are installed in {\tt <prefix>=/usr/local}.
997 All executables (binaries and scripts) are placed in {\tt <prefix>/bin} (see BIN and BIN\_SCRIPT variables in {\tt Makefile}).
999 All libraries are placed in {\tt <prefix>/lib} (see LIB variable in {\tt Makefile}).
1001 All includes are placed in {\tt <prefix>/include} (see EXPORT\_HEADERS variable in {\tt Makefile}).
1003 All idls are placed in {\tt <prefix>/idl} (see IDL\_FILES variable in {\tt Makefile}).
1005 All python srcipts are placed in {\tt <prefix>/lib/pythonX.X/...} (see {\tt EXPORT\_PYSCRIPTS} variable in {\tt Makefile}).
1007 All ressources files (icons, messages, configuration, ...) are placed in {\tt <prefix>/share/salome/ressources} (see RESOURCES\_FILES variable in {\tt Makefile}).
1010 \section{Creating source files according to SALOME building system}
1012 Building system use dependencies between files writing in Makefile rules. We use {\tt C} or {\tt C++} preprocessor to automatically generate this dependencies rules.
1014 There are some configuration and useful macro defined in header file {\tt SALOMEconfig.h}. \textbf{All files should be included this header !}
1015 You must include it ussing {\tt <>} delimiter because {\tt SALOMEconfig.h} must not appear in dependencies rules (see below \ref{include}).
1017 When a {\tt Makefile} is regenerate with {\tt config.status} script, all files are regenerates (in particular {\tt SALOMEconfig.h}).It is a restriction of {\tt autoconf 2.13} which could not regenerate only one particular file.
1018 So, all files which depend of {\tt SALOMEconfig.h} are rebuild even if it does not change. If you effectively change {\tt SALOMEconfig.h} file, you must clean all and rebuild.
1020 \subsection{{\tt C} or {\tt C++} source files}
1022 \textbf{You must name your {\tt C} file {\tt <myCFile>.c} and header file {\tt <myCHeaderFile>.h}}
1024 \textbf{You must name your {\tt C++} file {\tt <myC++File>.cxx} and header file {\tt <myC++HeaderFile>.hxx}}
1026 To have right dependencies rules, you must correctly write the include statement in your source files. We only take care about SALOME package header files to generate dependencies. We suppose that other header files (qt, vtk, OpenCascade, ...) are stables and are not modified when we build some SALOME modules.
1028 According to cpp documentation, local header files must be included with {\tt ""} statement and system or tools headers files must be included with {\tt <>} statement.
1031 If you do not respect this notation, dependencies would not be true and some rebuilding trouble can appear~ !
1033 \subsection{idl files}
1035 We use {\tt C} preprocessor to build dependencies between idl files. The same convention must be applied as {\tt C} or {\tt C++} source files.
1037 If included file is an external files, you must use statement {\tt <>} because this file will not be modified during SALOME devloppement and/or building.
1038 If included file is part of SALOME files, you must use statement {\tt ""}.
1040 If you do not respect this notation, dependencies would not be true and some building or rebuilding trouble can appear~ !
1042 \subsection{Included header file generated from idl file}
1044 To include header file generated from idl file, you must use macro {\tt CORBA\_CLIENT\_HEADER} or \\
1045 {\tt CORBA\_SERVER\_HEADER} defined in {\tt SALOMEconfig.h}.
1047 These two macros replace idl prefix into corresponding header name generated (take care if you use client part or server part)
1051 #include CORBA_CLIENT_HEADER(geom)
1052 #include CORBA_SERVER_HEADER(mesh)