Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Convert some insider doc to sphinx, and remove obsolete bits from doxygen sources
[simgrid.git] / doc / doxygen / inside.doc
1 /*! @page uhood_tech Coding Standard and Technical Considerations
2
3 This page describes the software infrastructure behind the SimGrid
4 project. This is not the components' organisation (described in @ref
5 uhood_arch) but information on how to extend the framework, how the
6 automatic tests are run, and so on. These information are split on
7 several pages, as follows:
8
9  - @ref uhood_tech_inside
10  - @subpage inside_doxygen
11  - @subpage inside_extending
12  - @subpage inside_release
13
14 @section uhood_tech_inside Insiders Considerations
15
16
17 @subsection uhood_tech_tricks Random Tricks
18
19 Over the years, we accumulated a few tricks that make it easier to
20 work with SimGrid. Here is a somewhat unsorted list of such tricks.
21
22 ### Easy out of tree builds
23
24 It is easy to break one build configuration or another. That's
25 perfectly OK and we will not point fingers if it happens. But it is
26 somewhat forbidden to leave the tree broken for more than one working
27 day. Monitor the build daemons after you push something, and strive to
28 fix any breakage ASAP.
29
30 To easily switch between the configs without rebuilding everything,
31 create a set of out of tree builds (as explained in @ref
32 install_cmake_outsrc) in addition to your main build tree.
33 To not mess with git, you want to put your build tree under the build/
34 directory, which is ignored by git. For example, I have the following
35 directories: build/clang build/full build/mc (but YMMV).
36
37 Then, the problem is that when you traverse these directories, you
38 cannot edit the sources (that are in the srcdir, while you're in
39 bindir). This makes it difficult to launch the tests and everything.
40
41 To solve that issue, just call `make hardlinks` from your build dir.
42 This will create hard links allowing to share every source files into
43 the build dir. They are not copied, but hard linked. It means that
44 each file is accessible under several names, from the srcdir and from
45 the bindirs. If you edit a source file found under bindir, the srcdir
46 version (visible to git) will also be changed (that's the same file,
47 after all).
48
49 Note that the links sometimes broken by git or others. Relaunching
50 `make hardlinks` may help if you're getting incoherent build results.
51
52 */