Commit beb3c36e authored by Sebastian Kuckuk's avatar Sebastian Kuckuk
Browse files

update README - short description and logo, license info, better structure

parent b438dad5
......@@ -11,17 +11,23 @@ The source is available here:
# The ExaStencils Code Generator
# ![ExaStencils](Documentation/logos/ExaStencilsLogo.png)
The ExaStencils code generation framework processes input in its own multi-layered domain-specific language (DSL) to emit highly optimized and massively parallel geometric multigrid solvers for (block-)structured grids.
This repository holds the current release version of ExaStencils.
## Setup
For building the generator, a JDK is required. We recommend using version 11.
## IDE Support
### IDE Support
We recommend using IntelliJ IDEA (the community edition is fine). Downloads can be found [here](
*Using an IDE is not required.* Instructions on how to do things without it can be found [here](#sbt).
### Setting up the IDE for Coding
#### Setting up the IDE for Coding
If you plan to commit code please use our code style. It is located in /Documentation/IntelliJ/ExaStencils.xml and can be imported like this:
* File -> Settings -> Editor -> Code Style -> Scala -> Import Scheme (click small gear) -> IntelliJ IDEA code style XML
......@@ -31,7 +37,7 @@ If you plan to commit code please use our code style. It is located in /Document
If you are used to another IDE, e.g. Eclipse, setting the keymap to an according style may be helpful:
* File -> Settings -> Keymap -> Eclipse
### Compiling the Generator
#### Compiling the Generator
* If IntelliJ is opened the first time:
* Open
......@@ -46,7 +52,7 @@ If you are used to another IDE, e.g. Eclipse, setting the keymap to an according
* check that everything works: Build -> Build Project
* **note** in some configurations it might be necessary to add the Scala SDK under Project Structure -> Global Libraries. Otherwise no files will be compiled (build still succeeds).
### Creating a JAR
#### Creating a JAR
Inside the IDE do the following to create a task to assemble the jar:
* Run -> Edit configurations
......@@ -71,7 +77,7 @@ The jar can then be created using
Artifacts can be added for the other sub-projects in a similar fashion.
## sbt
### sbt
For users that don't want to use an IDE or want to compile on the command line, sbt is required.
*If you are using Windows we recommend using Ubuntu Shell which is part of the [Windows Subsystem for Linux (WSL)](*
......@@ -80,12 +86,14 @@ The first step is installing sbt -- a guide can be found [here](https://www.scal
Next, open a shell and locate the folder the git repository has been checked out to.
Compilation is done via typing
* sbt compile
sbt compile
To assemble a jar the following command is available
* sbt assembly
## CImg support
sbt assembly
### CImg support
For CImg support, the corresponding CImg.h header file needs to be downloaded such that it can be used as ressource by our generator. This can be done in three different ways:
* for users using sbt on the command line: ```sbt downloadCImg```
......@@ -106,10 +114,11 @@ To generate the examples, a valid Compiler.jar has to be located in /Compiler/Co
(optional) By default, all examples are generated. Unrequired configurations can be deactivated in /Examples/
If Linux is used (or the Ubuntu Shell for Windows), generating, compiling and executing the examples is scripted. The following commands can simply be executed in the folder the git repository has been checked out to:
* cd Examples
* ./
* ./
* ./
cd Examples
### Generating User Applications
......@@ -117,3 +126,23 @@ Generating single configurations is possible by executing the generator (Compile
* Settings
* Knowledge
* Platform
## Documentation
A detailed documentation is currently work in progress.
## Authors
The main authors are Sebastian Kuckuk, Christian Schmitt and Stefan Kronawitter. We are thankful for the work of all [contributors](
## License
The ExaStencils code generation framework is licensed under [GPLv3](
## Dependencies
This project depends on the [cloning]( and [objenesis]( libraries which are both licensed under the Apache license version 2.0. When the CImg visualization module is used, it depends on the [CImg]( header licensed under the CeCILL-C licence.
This project depends on and deploys the [isl]( library with added [scala bindings]( as well as the [Chernikova]( library. All of them are licensed under the MIT license.
All dependencies are managed automatically via sbt, with the exception of CImg which has to be taken care of [manually](#CImg-support).
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