diff --git a/README.md b/README.md index 7baf4ef60422f5f191e233c4201f14225f9ccbf3..d341e99b0e92bbc139e5ab86d7c850af17fc8b23 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ SPDX-License-Identifier: CC-BY-4.0 This repository is an external library of ICON collecting low-level supporting modules of ICON. [](https://gitlab.dkrz.de/icon-libraries/libfortran-support/-/releases) -[](https://gitlab.dkrz.de/icon-libraries/libfortran-support/pipelines/latest?ref=master) -[](https://gitlab.dkrz.de/icon-libraries/libfortran-support/pipelines/latest?ref=master) +[](https://gitlab.dkrz.de/icon-libraries/libfortran-support/pipelines/latest?ref=master) +[](https://gitlab.dkrz.de/icon-libraries/libfortran-support/pipelines/latest?ref=master) [](https://gitlab.dkrz.de/icon-libraries/libfortran-support/-/blob/master/LICENSES/BSD-3-Clause.txt) [](https://gitlab.dkrz.de/icon-libraries/libfortran-support/-/blob/master/LICENSES/CC-BY-4.0.txt) [](https://gitlab.dkrz.de/icon-libraries/libfortran-support/-/blob/master/LICENSES/CC0-1.0.txt) @@ -26,14 +26,15 @@ This repository is an external library of ICON collecting low-level supporting m The following packages/libraries are required for `libfortran-support`. - Fortran compiler - C compiler -- C++ compiler - CMake 3.18+ The following requirements are optional +- C++ compiler (testing with [GoogleTest](https://github.com/google/googletest)) - OpenACC(nvhpc) for GPU support -- `fprettify` for Fortran code formatting +- [`fprettify`](https://github.com/pseewald/fprettify) for Fortran code formatting - `clang-format` for C/C++ code formatting -- Ragel State Machine Compiler 7.0+ for C code generation from `.rl` files, used for +- [REUSE](https://reuse.software) v3.0.0+ for licensing +- [Ragel State Machine Compiler](http://www.colm.net/open-source/ragel/) 7.0+ for C code generation from `.rl` files, used for - `nml_annotate.c` - `util_arithmetic_expr.c` - `util_string_parse.c` @@ -75,9 +76,11 @@ The `libfortran-support` library includes some general Fortran supporting module ## Some notes for developers - The `fortran-support` library is only configured by CMake. - - Tips and standards on CMake https://gitlab.dkrz.de/icon/wiki/-/wikis/CMake-recommendations-and-requirements + - Tips and standards on CMake [ICON developer wiki/CMake recommendations and requirements](https://gitlab.dkrz.de/icon/wiki/-/wikis/CMake-recommendations-and-requirements) - The `fortran-support` library uses `fprettify` for formatting Fortran codes. Run `make format` before you commit. -- The `fortran-support` library is unit tested. (work in progress) All merge request changes are preferable to have a unit test. +- The `fortran-support` library is unit tested. All merge request changes are required to have a unit test. See [icon-c/Wiki/Testing and building of ICON C/Unit test frameworks](https://gitlab.dkrz.de/icon/icon-c/-/wikis/ICON-C-Phase-0/Testing-and-building-of-ICON-C#unit-test-frameworks) for more information on unit testing. + - __Fortran__ unit tests are written in [FortUTF](https://github.com/artemis-beta/FortUTF). [Assertions Documentation](https://github.com/artemis-beta/FortUTF/blob/main/docs/assertions.md) + - __C__ unit tests are written in [GoogleTest](https://github.com/google/googletest). [User's Guide](https://google.github.io/googletest/) - Fortran preprocessing is automatically applied for files with `.F90` extensions. See [\#4](https://gitlab.dkrz.de/icon-libraries/libfortran-support/-/issues/4) for more details. ## How to add modules in `fortran-support`? @@ -105,10 +108,14 @@ cmake -DFS_ENABLE_OPENACC=ON .. make ``` 4. Format the code by `make format`. -5. Make sure your code is tested. For more information on unit tests, check out this [GitLab WIKI page](https://gitlab.dkrz.de/icon/icon-c/-/wikis/ICON-C-Phase-0/Testing-and-building-of-ICON-C#unit-test-frameworks) +5. Make sure your code is tested. Check [developer note](#some-notes-for-developers). +6. Check license by `reuse lint`. Check [requirements](#requirements). + - Code snippets should have license BSD-3-Clause + - Documentations should have license CC-BY-4.0 + - Files unrelated to the library itself should have license CC0-1.0 ## How to contribute -Please open a merge request and select one of our templates for new features or bugfixes. Detailed instructions on how to proceed are provided there. +Please open a merge request and select one of our templates: __[feature/bugfix]__. Detailed instructions on how to proceed are provided there. ## Contact This repository is mainly maintained by the following maintainers: