IAP GITLAB

Commit 59ccd241 authored by Ralf Ulrich's avatar Ralf Ulrich

Merge branch '392-build-system-not-working-correctly' into 'master'

Resolve "Build system not working correctly"

Closes #392

See merge request !324
parents 5e3a9b43 24ea64bd
Pipeline #3585 passed with stages
in 17 minutes and 55 seconds
...@@ -343,7 +343,7 @@ install (DIRECTORY examples DESTINATION share/corsika) ...@@ -343,7 +343,7 @@ install (DIRECTORY examples DESTINATION share/corsika)
# #
# tools # tools
# #
install (DIRECTORY tools DESTINATION share/corsika) add_subdirectory (tools)
......
...@@ -18,9 +18,6 @@ The MCnet guidelines developed by [www.montecarlonet.org](www.montecarlonet.org) ...@@ -18,9 +18,6 @@ The MCnet guidelines developed by [www.montecarlonet.org](www.montecarlonet.org)
are copied in [MCNET_GUIDELINES](MCNET_GUIDELINES) -- they provide a very good are copied in [MCNET_GUIDELINES](MCNET_GUIDELINES) -- they provide a very good
additional scope that contributors should read and consider. additional scope that contributors should read and consider.
All possible
liability and licensing question are only handled by the adopted
software license.
## The software license of the CORSIKA project ## The software license of the CORSIKA project
...@@ -29,10 +26,18 @@ license GPLv3, as copied in full in the file ...@@ -29,10 +26,18 @@ license GPLv3, as copied in full in the file
[LICENSE](LICENSE). Each source file of the CORSIKA project contains a [LICENSE](LICENSE). Each source file of the CORSIKA project contains a
short statement of the copyright and this license. Each binary or short statement of the copyright and this license. Each binary or
source code release of CORSIKA contains the file LICENSE. The source code release of CORSIKA contains the file LICENSE. The
code, documentation and content in the folder [externals](externals) code, documentation and content in the folder [./externals](./externals)
is not integral part of the CORSIKA project and can be based on, or is not integral part of the CORSIKA project and can be based on, or
include, other licenses, which must be compatible with GPLv3. Check the include, other licenses, which must be compatible with GPLv3.
content of this folder for details and additional license information. It depends on the configuration of
The folder [./modules](./modules) contains the code of several
external physics models for your convenience. Please consult the
original model authors and honor their policies and licenses.
Of course, we have their consent to
distribute their code together with CORSIKA 8.
Check the content of these folders carefully for details and additional
license information. It depends on the configuration of
the build system to what extend this code is used to build CORSIKA. the build system to what extend this code is used to build CORSIKA.
...@@ -42,22 +47,3 @@ If you want to contribute, you need to read ...@@ -42,22 +47,3 @@ If you want to contribute, you need to read
[the GUIDELINES](CONTRIBUTING.md) and comply with these rules, or help to [the GUIDELINES](CONTRIBUTING.md) and comply with these rules, or help to
improve them. improve them.
## The CORSIKA Projects Maintainers
The CORSIKA Project mainters make all decisions for the CORSIKA
Project. They can also change the
[COLLABORATION\_AGREEMENT](COLLABORATION\_AGREEMENT.md), the
[GUIDELINES](CONTRIBUTING.md) or any other structure or document relevant for the CORSIKA Project.
The current CORSIKA Project maintainers are listed in the file [MAINTAINERS](MAINTAINERS.md).
and can be contacted via corsika-project@lists.kit.edu. The chair
person of the CORSIKA Project is Ralf Ulrich (KIT). Maintainers have special
responsibilities for specific parts of the project.
### Planning and performing releases
The CORSIKA maintainers decide on releases of the software, and about the content of it.
...@@ -11,7 +11,7 @@ particle cascades with stochastic and continuous processes. ...@@ -11,7 +11,7 @@ particle cascades with stochastic and continuous processes.
The software makes extensive use of static design patterns and The software makes extensive use of static design patterns and
compiler optimization. Thus, the most fundamental configuration compiler optimization. Thus, the most fundamental configuration
decision of the user must be performed at compile time. At run time decision of the user must be performed at compile time. At run time
only specific model parameters can still be changed. model parameters can still be changed.
CORSIKA 8 is by default released under the GPLv3 license. See [license CORSIKA 8 is by default released under the GPLv3 license. See [license
file](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/LICENSE) file](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/LICENSE)
...@@ -30,58 +30,72 @@ When you plan to contribute to CORSIKA 8 check the guidelines outlined here: ...@@ -30,58 +30,72 @@ When you plan to contribute to CORSIKA 8 check the guidelines outlined here:
guidelines](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/CONTRIBUTING.md). Code guidelines](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/CONTRIBUTING.md). Code
that fails the review by the CORSIKA author group must be improved that fails the review by the CORSIKA author group must be improved
before it can be merged in the official code base. After your code has before it can be merged in the official code base. After your code has
been accepted and merged you become a contributor of the CORSIKA 8 been accepted and merged, you become a contributor of the CORSIKA 8
project (code author). project (code author).
IMPORTANT: Before you contribute, you need to read and agree to the IMPORTANT: Before you contribute, you need to read and agree to the
[collaboration [collaboration
agreement](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/COLLABORATION_AGREEMENT.md). The agreement](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/COLLABORATION_AGREEMENT.md). The agreement can be discussed, and eventually improved.
agreement can be discussed, and eventually improved.
We also want to point you to the [MCnet We also want to point you to the [MCnet
guidelines](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/MCNET_GUIDELINES), guidelines](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika/blob/master/MCNET_GUIDELINES), which are very useful also for us.
which are very useful also for us.
## Get in contact ## Get in contact
* Connect to https://gitlab.ikp.kit.edu register yourself and join the "Air Shower Physics" group * Connect to https://gitlab.ikp.kit.edu register yourself and join the "Air Shower Physics" group. Write to me (ralf.ulrich@kit.edu) only in case there are problems with that.
* Connect to corsika-devel@lists.kit.edu (self-register at * Connect to corsika-devel@lists.kit.edu (self-register at
https://www.lists.kit.edu/sympa/subscribe/corsika-devel) to get in https://www.lists.kit.edu/sympa/subscribe/corsika-devel) to get in
touch with the project touch with the project.
* Register on the corsika slack channel.
## Installation
CORSIKA 8 is tested regularly at least on gcc7.3.0 and clang-8.0.0. You will CORSIKA 8 is tested regularly at least on gcc7.3.0 and clang-8.0.0.
also need:
- Python 3 (supported versions are Python >= 3.6) ### Prerequisites
You will also need:
- Python 3 (supported versions are Python >= 3.6), with pip
- conan (via pip)
- cmake - cmake
- git - git
- g++, gfortran, binutils, make
On a bare Ubuntu 20.04, just add:
``` shell
sudo apt-get install python3 python3-pip cmake g++ gfortran git doxygen graphviz
```
On a bare Ubuntu 18.04, just add: On a bare CentOS 7 install python3, pip3 (pip from python3) and cmake3. Any of the devtools 7, 8, 9 should work (at least).
Also initialize devtools, before building CORSIKA 8:
``` shell ``` shell
sudo apt-get install cmake g++ git source /opt/rh/devtoolset-9/enable
``` ```
CORSIKA 8 uses the [conan](https://conan.io/) package manager to manage our CORSIKA 8 uses the [conan](https://conan.io/) package manager to
dependencies. If you do not have Conan installed, it can be installed with: manage our dependencies. If you do not have Conan installed, it can be
installed with:
``` shell ``` shell
pip install --user conan pip install --user conan
``` ```
### Compiling
Once Conan is installed, follow these steps to download and install CORSIKA 8: Once Conan is installed, follow these steps to download and install CORSIKA 8:
``` shell ``` shell
git clone --recursive git@gitlab.ikp.kit.edu:AirShowerPhysics/corsika.git git clone --recursive git@gitlab.ikp.kit.edu:AirShowerPhysics/corsika.git
cd corsika mkdir corsika-build
mkdir ../corsika-build cd corsika-build
cd ../corsika-build
cmake ../corsika -DCMAKE_INSTALL_PREFIX=../corsika-install cmake ../corsika -DCMAKE_INSTALL_PREFIX=../corsika-install
make -j8 make -j8
make install make install
``` ```
Type `make test` to run the unit test suite.
## Installation (using docker containers) ## Installation (using docker containers)
...@@ -94,53 +108,81 @@ You only need docker, e.g. on Ubunut: `sudo apt-get install docker` and of cours ...@@ -94,53 +108,81 @@ You only need docker, e.g. on Ubunut: `sudo apt-get install docker` and of cours
## Compiling ## Compiling
Follow these steps to download and install CORSIKA 8, master development version Follow these steps to download and install CORSIKA 8, master development version
``` ```shell
git clone --recursive https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika.git git clone --recursive https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika.git
cd corsika
sudo docker run -v $PWD:/corsika -it corsika/devel:clang-8 /bin/bash sudo docker run -v $PWD:/corsika -it corsika/devel:clang-8 /bin/bash
mkdir build mkdir build
cd build cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../install cmake ../corsika -DCMAKE_INSTALL_PREFIX=../corsika-install
make -j8 make -j8
make install make install
``` ```
Type `make test` to run the unit test suite. ## Runing Unit Tests
### Running examples Note, before you run *any* executbale you must also define the
`CORSIKA_DATA` environment variable to point to the location where you
cloned corsika `modules/data`, thus typically
```shell
export CORSIKA_DATA=$PWD/../corsika/modules/data
```
To run the Unit Tests, just type `ctest` in your build area.
## Running examples
To see how a relatively simple hadron cascade develops,
see `examples/cascade_example.cpp` for a starting point.
and if you want to see how the first simple hadron cascade develops, see `Documentation/Examples/cascade_example.cc` for a starting point. To run the cascade_example, or any other CORSIKA 8 application, you
must first compile it wrt. to the CORSIKA 8 header-only framework. This
can be done best by copying
e.g. `corsika-install/share/corsika/examples/` to your working place
(e.g. `corsika-work`).
Run the cascade_example with: Next, you need to define the environment variable `corsika_DIR` to point to, either,
your build, or your install area. Thus, e.g.
```shell
export corsika_DIR=<dir where you installed CORSIKA 8 to, or where you buld it">
``` ```
cd ../corsika-install
share/examples/cascade_example Then compile your example/application with
```shell
cd corsika-work
cmake .
make
bin/cascade_example
``` ```
Visualize output (needs gnuplot installed): Visualize output (needs gnuplot installed):
``` ```shell
bash share/tools/plot_tracks.sh tracks.dat bash $corsika_DIR/share/corsika/tools/plot_tracks.sh tracks.dat
firefox tracks.dat.gif firefox tracks.dat.gif
``` ```
(note, if you use the corsika_DIR to point to the build area: the script `plot_tracks.sh` is
not copied to the build area, it is only part of the source tree at `tools/plot_tracks.sh`)
Or also consider the `vertical_EAS` example in the same directory, which can Or also consider the `vertical_EAS` example in the same directory,
be configured with command line options. which can be configured with command line options.
Run `bin/vertical_EAS` to get basic help.
### Generating doxygen documentation ### Generating doxygen documentation
To generate the documentation, you need doxygen and graphviz. If you work with the docker corsika/devel containers this is already included. To generate the documentation, you need doxygen and graphviz. If you work with
the docker corsika/devel containers this is already included.
Otherwise, e.g. on Ubuntu 18.04, do: Otherwise, e.g. on Ubuntu 18.04, do:
``` ```shell
sudo apt-get install doxygen graphviz sudo apt-get install doxygen graphviz
``` ```
Switch to the corsika build directory and do Switch to the corsika build directory and do
``` ```shell
make doxygen make doxygen
make install make install
``` ```
browse with firefox: open with firefox:
``` ```shell
firefox ../corsika-install/share/doc/html/index.html firefox ../corsika-install/share/corsika/doc/html/index.html
``` ```
add_library(CORSIKA INTERFACE)
target_compile_coptions(CORSIKA
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR})
add_library (CORSIKA8 INTERFACE)
target_include_directories (CORSIKA8
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries (CORSIKA8 INTERFACE PhysUnits)
set (CORSIKA8_FOUND TRUE)
#
# FindCorsika8
#
# This module tries to find the Corsika8 header files and extrats their version. It
# sets the following variables.
#
# CORSIKA8_FOUND - Set ON if Corsika8 headers are found, otherwise OFF.
#
# CORSIKA8_INCLUDE_DIR - Include directory for hydra header files. (All header
# files will actually be in the Corsika8 subdirectory.)
# CORSIKA8_VERSION - Version of hydra in the form "major.minor.patch".
#
find_path( CORSIKA8_INCLUDE_DIR
PATHS
${CMAKE_SOURCE_DIR}
/usr/include
/usr/local/include
${CORSIKA8_DIR}
NAMES corsika/corsika.h
DOC "Corsika8 headers"
)
if( CORSIKA8_INCLUDE_DIR )
list( REMOVE_DUPLICATES CORSIKA8_INCLUDE_DIR )
endif( CORSIKA8_INCLUDE_DIR )
# Find hydra version
if (CORSIKA8_INCLUDE_DIR)
file( STRINGS ${CORSIKA_INCLUDE_DIR}/corsika/corsika.h
version
REGEX "#define CORSIKA_VERSION[ \t]+([0-9x]+)"
)
string( REGEX REPLACE
"#define CORSIKA_VERSION[ \t]+"
""
version
"${version}"
)
string( REGEX MATCH "^[0-9]" major ${version} )
string( REGEX REPLACE "^${major}00" "" version "${version}" )
string( REGEX MATCH "^[0-9]" minor ${version} )
string( REGEX REPLACE "^${minor}0" "" version "${version}" )
set( CORSIKA_VERSION "${major}.${minor}.${version}")
set( CORSIKA_MAJOR_VERSION "${major}")
set( CORSIKA_MINOR_VERSION "${minor}")
endif()
# Check for required components
include( FindPackageHandleStandardArgs )
find_package_handle_standard_args( Corsika8
FOUND_VAR CORSIKA8_FOUND
REQUIRED_VARS CORSIKA8_INCLUDE_DIR
VERSION_VAR CORSIKA8_VERSION
)
if(CORSIKA8_FOUND)
set(CORSIKA8_INCLUDE_DIRS ${CORSIKA8_INCLUDE_DIR})
endif()
mark_as_advanced(CORSIKA8_INCLUDE_DIR)
...@@ -54,7 +54,6 @@ using namespace std; ...@@ -54,7 +54,6 @@ using namespace std;
// //
int main() { int main() {
// logging::set_level(logging::level::info);
corsika_logger->set_pattern("[%n:%^%-8l%$] custom pattern: %v"); corsika_logger->set_pattern("[%n:%^%-8l%$] custom pattern: %v");
logging::set_level(logging::level::trace); logging::set_level(logging::level::trace);
......
set (scripts
plot_crossings.sh
plot_tracks.sh
read_hist.py
)
install (PROGRAMS ${scripts} DESTINATION share/corsika/tools)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment