Fixes for #77589, Setting optimisation with cmake (Natalia)
[u/mrichter/AliRoot.git] / README_CMake
1
2 Note: The CMake build of AliRoot builds out-of-source
3
4 Steps to Build AliRoot with CMake :
5
6 1. Check out Aliroot source into a folder (usually specified by the environment variable ALICE)
7         
8         cd $ALICE
9         svn co https://alisoft.cern.ch/AliRoot/trunk AliRoot
10
11 Note: Please use https:// if you want to be able to commit changes to the SVN repository.
12
13 2. Set the environment variable ALICE_ROOT to point to the source you have checked out
14
15        cd AliRoot
16        export ALICE_ROOT=`pwd`
17
18
19 3. Create a new folder where the build will take place. It must be different from the source directory!
20         
21         cd ..
22         mkdir objdir
23         cd objdir
24
25 4. Optionally specify the place for installation using the environment variable ALICE_INSTALL.
26 It you do not specify it, "make install" will put lib, bin and include in ALICE_ROOT
27
28 5. Optionally specify the location of Geant3 using the environment variable GEANT3DIR
29
30 6. Execute the following commands to configure the build
31
32         cmake $ALICE_ROOT
33
34
35 Note: Some files CMakeLists.txt will be created in the source tree, so you need write access there. This 
36 is a temporary situation that will change soon.
37         
38         6a.Run 
39                 cmake -DCMAKE_BUILD_TYPE=DEBUG  $ALICE_ROOT
40  
41         to compile AliRoot in Debug configuration (-g compiler flags).
42         To change the configuration later on you can either edit
43         cache variable CMAKE_BUILD_TYPE using 'ccmake' command ('None' value for default configuration), 
44         or setup default configuration by running 
45                 cmake $ALICE_ROOT
46
47         6b. By default -O -g options are setting up. 
48
49 7. Build and install AliRoot. Note that the parralel build is fully operational with CMake.
50
51          make -j4
52          make install
53
54 If you make changes in the source tree, it is enough to do
55
56          make
57          make install
58
59 to get them in use.
60
61 9. In order to build addtional targets like THydjet and SHUTTLE add the following options to the cmake command
62
63         cmake -DTHydjet=ON -DSHUTTLE=ON <path_to_source>
64
65 10. Static libraries can be built using
66
67         make alilibs-static
68
69 11. Individual Modules can be built using
70
71         make <Module>-all
72         make <Module>-all-static 
73
74 eg.     make STEER-all STEER-all-static
75
76 12. Individual Packages can be built using
77
78         make <Package>
79         make <Package>-static
80
81 eg.     make STEERbase STEERbase-static
82
83 13. The code can be checked for the ALICE coding conventions on a package, module or class level using the following targets. 
84
85   make check-all
86   make <Module>-check-all
87   make <Package>-check
88   make <Module>-<ClassName>-check  // To use this run cmake with -DCLASSCHECK="YES" option. It is turned off by default since it bloats the Makefile and slows down the internal makefile rule checking
89
90   The resulting violations will be written to the folder <Build_Directory>/<Module>/check/viols
91
92 14. To Build PARs the following targets can be used. The resulting packages will be created in the cmake build directory
93
94   make par-all 
95   make <Package>.par
96   make <Module>-par-all   //build all par packages in the module
97
98 15. To test PARs after building run
99
100   make test-par-all
101   make test-<Package>
102   make test-<Module>-par-all
103
104 !IMPORTANT! - Make sure your source folder is clean. If you used the old make system to build aliroot run make clean in the source directory before you run cmake
105  
106