Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
2dc902b
Added a first version of .travis.yml
Gjacquenot Aug 2, 2019
b80176a
Updated main CMakeLists.txt
Gjacquenot Aug 2, 2019
424bb23
Typo update in example/C++/src/main.cpp
Gjacquenot Aug 2, 2019
3d86e8b
Typo update for example/fortran/main.f90
Gjacquenot Aug 2, 2019
66863b8
Removed trailing spaces in makefile
Gjacquenot Aug 2, 2019
6b07eae
Ignore IDE files
Gjacquenot Aug 2, 2019
41868ec
Added test programs in CMake compilation
Gjacquenot Aug 2, 2019
ecf156e
Enabled CXX language for example compilation
Gjacquenot Aug 3, 2019
4b60585
Fixed compilation legacy warning
Gjacquenot Aug 3, 2019
4d96c61
Fixed compilation error for integer serialization
Gjacquenot Aug 3, 2019
9d911ee
Fixed missing CMake link library for fortran demo
Gjacquenot Aug 3, 2019
38db38c
Created a first cmake test
Gjacquenot Aug 3, 2019
efd11da
Added cmake file
Gjacquenot Aug 3, 2019
f60f0ef
Added cmake file
Gjacquenot Aug 3, 2019
d9f4474
Added cmake file
Gjacquenot Aug 3, 2019
818a463
Added cmake file
Gjacquenot Aug 3, 2019
6a40c98
Added cmake file
Gjacquenot Aug 3, 2019
ac27e63
Added cmake file
Gjacquenot Aug 3, 2019
cf927a6
Updated cmake path
Gjacquenot Aug 3, 2019
4eee300
Added a first install target
Gjacquenot Aug 3, 2019
9fe6030
Added a second install target
Gjacquenot Aug 3, 2019
8b5acda
Added coverage package if needed
Gjacquenot Aug 3, 2019
63e2b17
Added cpack instructions
Gjacquenot Aug 3, 2019
5f11187
Created coverage targets for examples
Gjacquenot Aug 3, 2019
682748c
Disabled licence file in cpack instructions
Gjacquenot Aug 3, 2019
f4e6a20
Activated osx build
Gjacquenot Aug 3, 2019
e616151
Activated windows build
Gjacquenot Aug 3, 2019
1bd33b8
Activated osx build
Gjacquenot Aug 3, 2019
207d360
Disabled windows and macosx build
Gjacquenot Aug 3, 2019
46454a1
Removed trailing spaces in commCNS.h
Gjacquenot Aug 3, 2019
189c99e
Handled CMAKE_BUILD_TYPE that may be empty
Gjacquenot Aug 3, 2019
a659d2e
Set tab to be 4 spaces in main CMakeLists.txt
Gjacquenot Aug 3, 2019
cbae209
Updated C++ example
Gjacquenot Aug 3, 2019
86d2ec8
Fixed fortran example runtime
Gjacquenot Aug 3, 2019
6762ca7
Make tests verbose
Gjacquenot Aug 3, 2019
17775e1
Updated fortran example
Gjacquenot Aug 3, 2019
e30365b
Used LD_LIBRARY_PATH for fortran test
Gjacquenot Aug 3, 2019
dbc6659
Updated .gitignore file
Gjacquenot Aug 3, 2019
0156375
Added instructions to compile with docker
Gjacquenot Aug 3, 2019
02bbad2
Activated test for all directories
Gjacquenot Aug 4, 2019
eb2ed16
Updated main Makefile
Gjacquenot Aug 4, 2019
c632c5d
Updated src/libCNStream/CMakeLists.txt
Gjacquenot Aug 4, 2019
f8c2121
Typo update for input/CN_Stream_input.dict
Gjacquenot Aug 4, 2019
43f6a4b
Activated coverage for mainCNS
Gjacquenot Aug 4, 2019
86310e9
Updated Readme.md with badges
Gjacquenot Aug 4, 2019
2caa4af
Unused variable - src/libCNStream/modSetupNameList.f90
Gjacquenot Aug 4, 2019
ccb2ba0
Fixed bug dUdz -> dUdZ in src/libCNStream/lib_CN_Stream.f90
Gjacquenot Aug 4, 2019
e82737b
Fixed integer division truncated to constant 0 in src/libCNStream/mod…
Gjacquenot Aug 4, 2019
bef833a
Typo clean up in src/libCNStream/modOutputs.f90
Gjacquenot Aug 4, 2019
6c3fb2d
Removed unused variable in src/libFyMc/src/geometry/baseGeometry/pane…
Gjacquenot Aug 4, 2019
00a8d90
Removed unused variable outputFile in src/libCNStream/modSolve.f90
Gjacquenot Aug 4, 2019
10bbdab
Removed trailing ; in src/libCNStream/modSetupNameList.f90
Gjacquenot Aug 4, 2019
5287723
Fixed variables bugs in src/libCNStream/lib_CN_Stream.f90
Gjacquenot Aug 4, 2019
192a8d9
Removed unused variables in rc/libFyMc/src/geometry/surfMesh/circular…
Gjacquenot Aug 4, 2019
126f9a4
Removed unused variables in src/libFyMc/src/geometry/surfMesh/semiEll…
Gjacquenot Aug 4, 2019
be293b9
Fixed case for Option_type in main.f90
Gjacquenot Aug 4, 2019
5fb876a
Removed unused input argument option for subrotuine buildOutputFile
Gjacquenot Aug 4, 2019
7ee79a1
Removed unused input argument RF in DeallocateRF
Gjacquenot Aug 4, 2019
f218ef2
Removed trailing spaces in example/fortran/modVariablesRF.f90
Gjacquenot Aug 4, 2019
e1fc5e9
Removed unused input argument RF in RF_calc_a
Gjacquenot Aug 4, 2019
dc0288c
Removed unused input argument RF in RF_calc_eta
Gjacquenot Aug 4, 2019
756974d
Removed unused input argument option in WriteOutput
Gjacquenot Aug 4, 2019
63062d0
Removed unused variable in initializeEllipsoidSurfMeshDict
Gjacquenot Aug 4, 2019
b77e79f
Removed unused variable in initializeParaPipeMeshDict
Gjacquenot Aug 4, 2019
f463e50
Removed tabs in src/libCNStream/modMatrix.f90
Gjacquenot Aug 4, 2019
c8f9b4b
Fixed typo in main Readme.md
Gjacquenot Aug 5, 2019
2e3b716
Added URL links for files in main README.md
Gjacquenot Aug 5, 2019
0cf636e
Typo update in src/libCNStream/variables_CN_Stream.h
Gjacquenot Aug 5, 2019
7273008
Typo update in main README.md
Gjacquenot Aug 5, 2019
5047185
Removed unneeded files in example/C++
Gjacquenot Aug 5, 2019
195b9c9
Removed compiled files
Gjacquenot Aug 5, 2019
7d0edda
Removed ide conf ./example/C++/.vscode
Gjacquenot Aug 5, 2019
3b9eea0
Updated main README.md
Gjacquenot Aug 5, 2019
f7b9021
Typo update in input/CN_Stream_input.dict
Gjacquenot Aug 5, 2019
1bf0ede
Updated main Makefile with help and a docker_animate target
Gjacquenot Aug 5, 2019
58394e0
Added appveyor compilation
Gjacquenot Aug 5, 2019
b8d99c9
Updated CPack instructions for MinGW
Gjacquenot Aug 5, 2019
a36be71
Updated CPack instructions for MinGW
Gjacquenot Aug 5, 2019
8066ba5
Linked main againt dl only on UNIX os
Gjacquenot Aug 5, 2019
428669a
Activated examples only for UNIX, because of dynamic library loading
Gjacquenot Aug 5, 2019
8c58004
Added new versions of gcc for appveyor
Gjacquenot Aug 5, 2019
7063b46
Renamed appveyor compilers
Gjacquenot Aug 5, 2019
82d390e
Disabled parallel build for appveyor that create sometimes errors
Gjacquenot Aug 5, 2019
4a80200
Added appveyor badge
Gjacquenot Aug 5, 2019
a6ef580
Updated links in main README.md
Gjacquenot Aug 6, 2019
4a6079b
Added reference in main README.md
Gjacquenot Aug 6, 2019
bcf50e7
Added the possibility to define manually compilation option with USER…
Gjacquenot Aug 6, 2019
dd4d3fc
Removed useless variable BUILD_SHARED_LIBS
Gjacquenot Aug 6, 2019
af9295f
Put back -ffast-math compilation option to see if win32 c++ program s…
Gjacquenot Aug 6, 2019
8327308
Put back initial compilation option to see if win32 c++ program succe…
Gjacquenot Aug 6, 2019
e26ed3d
Updated C++ example file
Gjacquenot Aug 7, 2019
5a88274
Updated compilation options
Gjacquenot Aug 7, 2019
4448352
Added c++ Output_type serialization
Gjacquenot Aug 7, 2019
8d38277
Activated back macosx gfortran8 compilation
Gjacquenot Aug 7, 2019
1650c9c
Used OBJECT compilation to reduce compilation time. Require 2.8.8 cma…
Gjacquenot Aug 7, 2019
5e425b3
Added back fast math for mingw32 test success
Gjacquenot Aug 7, 2019
e046a1a
Switched to gcc7 for macosx, _stdio.h: No such file or directory for …
Gjacquenot Aug 7, 2019
d828a56
Moved extern declaration in cpp file: it does not need to be inside a…
Gjacquenot Aug 7, 2019
4550b4e
Identify osx software to update to solve header inclusion problem
Gjacquenot Aug 7, 2019
d2a22bb
Installed required software for macosx
Gjacquenot Aug 7, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@ example/fortran/Computation/libCNStream.so
src/libFyMc/example/testDict/*.o
# ignore output files
MATLAB/waverf.cof
# ide
.vscode
build*
140 changes: 140 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
language: cpp
sudo: false
dist: trusty

matrix:
include:
- os: linux
compiler: gcc
addons: &gcc5
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
- gcc-5
- gfortran-5
env:
- CXX_COMPILER='g++-5'
- C_COMPILER='gcc-5'
- Fortran_COMPILER='gfortran-5'
- BUILD_TYPE='Release'
- CMAKE_GENERATOR='Unix Makefiles'
- os: linux
compiler: gcc
addons: &gcc6
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-6
- gcc-6
- gfortran-6
env:
- CXX_COMPILER='g++-6'
- C_COMPILER='gcc-6'
- Fortran_COMPILER='gfortran-6'
- BUILD_TYPE='Release'
- CMAKE_GENERATOR='Unix Makefiles'
- os: linux
compiler: gcc
addons: &gcc7
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-7
- gcc-7
- gfortran-7
env:
- CXX_COMPILER='g++-7'
- C_COMPILER='gcc-7'
- Fortran_COMPILER='gfortran-7'
- BUILD_TYPE='Release'
- CMAKE_GENERATOR='Unix Makefiles'
- os: linux
compiler: gcc
addons: &gcc7
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-7
- gcc-7
- gfortran-7
env:
- CXX_COMPILER='g++-7'
- C_COMPILER='gcc-7'
- Fortran_COMPILER='gfortran-7'
- BUILD_TYPE='Coverage'
- CMAKE_GENERATOR='Unix Makefiles'
- os: osx
compiler: gcc
env:
- CXX_COMPILER='g++-7'
- C_COMPILER='gcc-7'
- Fortran_COMPILER='gfortran-7'
- BUILD_TYPE='Release'
- CMAKE_GENERATOR='Unix Makefiles'
# - os: windows
# compiler: mingw
# env:
# - CXX_COMPILER='g++'
# - C_COMPILER='gcc'
# - Fortran_COMPILER='gfortran'
# - BUILD_TYPE='Release'
# - CMAKE_GENERATOR='MinGW Makefiles'

before_install:
- test -n $CC && unset CC
- test -n $CXX && unset CXX
- test -n $FC && unset FC

install:
- |
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then sudo softwareupdate -l > soft.txt; fi
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then cat soft.txt; fi
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then cat soft.txt | grep "Command Line Tools" | cut -f2 -d"*" | while read -r line ; do sudo softwareupdate -i "$line"; done ; fi
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
brew update &> /dev/null
brew cask uninstall --force oclint
brew upgrade cmake
brew install gcc@7
brew info gcc
elif [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
echo "linux"
elif [[ "${TRAVIS_OS_NAME}" == "windows" ]]; then
echo "windows"
echo $PATH
fi

before_script:
- mkdir cnstream-build && cd cnstream-build
# Configure
- >
cmake $TRAVIS_BUILD_DIR
-G"${CMAKE_GENERATOR}"
-DCMAKE_CXX_COMPILER=${CXX_COMPILER}
-DCMAKE_C_COMPILER=${C_COMPILER}
-DCMAKE_Fortran_COMPILER=${Fortran_COMPILER}
-DCMAKE_BUILD_TYPE=${BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=~/cnstream
# Build
- make

script:
# Test the program
- make test ARGS="-V"
# Create package
- make package
# Make sure we can install with no issues.
- make install
# Create coverage report
- if [[ "$BUILD_TYPE" == "Coverage" ]];
then
echo "Coverage";
find $TRAVIS_BUILD_DIR -type f -name "*.gcno";
find $TRAVIS_BUILD_DIR -type f -name "*.gcna";
make coverage;
bash <(curl -s https://codecov.io/bash) -X gcov;
fi
104 changes: 65 additions & 39 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,39 +1,42 @@
###-------------------------------------------------------------------------###

cmake_minimum_required(VERSION 2.7) #... Specify the minimum version for CMake
cmake_minimum_required(VERSION 2.8.8) #... Specify the minimum version for CMake

###-------------------------------------------------------------------------###

if(NOT WIN32)
string(ASCII 27 Esc)
set(ColourReset "${Esc}[m")
set(ColourBold "${Esc}[1m")
set(Red "${Esc}[31m")
set(Green "${Esc}[32m")
set(Yellow "${Esc}[33m")
set(Blue "${Esc}[34m")
set(Magenta "${Esc}[35m")
set(Cyan "${Esc}[36m")
set(White "${Esc}[37m")
set(BoldRed "${Esc}[1;31m")
set(BoldGreen "${Esc}[1;32m")
set(BoldYellow "${Esc}[1;33m")
set(BoldBlue "${Esc}[1;34m")
set(BoldMagenta "${Esc}[1;35m")
set(BoldCyan "${Esc}[1;36m")
set(BoldWhite "${Esc}[1;37m")
string(ASCII 27 Esc)
set(ColourReset "${Esc}[m")
set(ColourBold "${Esc}[1m")
set(Red "${Esc}[31m")
set(Green "${Esc}[32m")
set(Yellow "${Esc}[33m")
set(Blue "${Esc}[34m")
set(Magenta "${Esc}[35m")
set(Cyan "${Esc}[36m")
set(White "${Esc}[37m")
set(BoldRed "${Esc}[1;31m")
set(BoldGreen "${Esc}[1;32m")
set(BoldYellow "${Esc}[1;33m")
set(BoldBlue "${Esc}[1;34m")
set(BoldMagenta "${Esc}[1;35m")
set(BoldCyan "${Esc}[1;36m")
set(BoldWhite "${Esc}[1;37m")
endif()

###-------------------------------------------------------------------------###

set(COMPILE_LANGUAGE Fortran) #
set(CMAKE_Fortran_COMPILER gfortran) #... Fortran Compiler Path
#set(CMAKE_Fortran_COMPILER ifort) #... Fortran Compiler Path
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(COMPILE_LANGUAGE Fortran CXX)
if(NOT DEFINED CMAKE_Fortran_COMPILER)
set(CMAKE_Fortran_COMPILER gfortran) #... Fortran Compiler Path
# set(CMAKE_Fortran_COMPILER ifort) #... Fortran Compiler Path
endif()

###-------------------------------------------------------------------------###

set(PROJECT_NAME CNStream) #... Project Name
set(PROJECT_COMPILE_PATH ${CMAKE_HOME_DIRECTORY}) #... COMPILE_PATH (RF Directory where CMakeLists.txt exists)
set(PROJECT_COMPILE_PATH ${CMAKE_HOME_DIRECTORY}) #... COMPILE_PATH (RF Directory where CMakeLists.txt exists)

project(${PROJECT_NAME} ${COMPILE_LANGUAGE}) # PROJECT NAME

Expand All @@ -48,28 +51,34 @@ set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_COMPILE_PATH}/lib)

set(CNSTREAM_LIB_OUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})

if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
set(CMAKE_Fortran_FLAGS "-fPIC -O3 -xHOST -ipo -ip -O0 -traceback -check all -CB -check uninit -g")
#set(CMAKE_Fortran_FLAGS "-O3 -xHOST -ipo -ip -O0 -traceback -check all -warn all")
elseif("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
set(CMAKE_Fortran_FLAGS "-fPIC -O3 -march=corei7 -msse2 -funroll-loops -fno-protect-parens -ffast-math -fcheck=bounds")
message(STATUS "CMAKE_Fortran_FLAGS ${CMAKE_Fortran_FLAGS}")
message(STATUS "CMAKE_Fortran_COMPILER_ID ${CMAKE_Fortran_COMPILER_ID}")

if (DEFINED USER_DEFINED_COMPILATION_OPTION)
set(CMAKE_Fortran_FLAGS ${USER_DEFINED_COMPILATION_OPTION})
else()
if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
set(CMAKE_Fortran_FLAGS "-fPIC -O3 -xHOST -ipo -ip -O0 -traceback -check all -CB -check uninit -g")
#set(CMAKE_Fortran_FLAGS "-O3 -xHOST -ipo -ip -O0 -traceback -check all -warn all")
elseif("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
set(CMAKE_Fortran_FLAGS "-fPIC -O3 -march=native -funroll-loops -fno-protect-parens -fcheck=bounds -ffast-math")
endif()
endif()

# In case you need to compile shared library in openFoam. Uncomment the belows.
# cmake -H. -Bbuild -DBUILD_OF_LIB=ON

if (BUILD_OF_LIB)

if (NOT "$ENV{FOAM_USER_LIBBIN}" STREQUAL "")
set(CNSTREAM_LIB_OUT $ENV{FOAM_USER_LIBBIN})
else()
message("${BoldRed} ")
message(" [ERROR] Not in OpenFOAM Environment... ")
message("${ColourReset} ${Green}")
message(" Wrong $FOAM_USER_LIBBIN path")
message("")
message(" $FOAM_USER_LIBBIN : " $ENV{FOAM_USER_LIBBIN})
message("${ColourReset} ")
if (BUILD_OF_LIB)
if (NOT "$ENV{FOAM_USER_LIBBIN}" STREQUAL "")
set(CNSTREAM_LIB_OUT $ENV{FOAM_USER_LIBBIN})
else()
message("${BoldRed} ")
message(" [ERROR] Not in OpenFOAM Environment... ")
message("${ColourReset} ${Green}")
message(" Wrong $FOAM_USER_LIBBIN path")
message("")
message(" $FOAM_USER_LIBBIN : " $ENV{FOAM_USER_LIBBIN})
message("${ColourReset} ")
message( FATAL_ERROR )
endif()
endif()
Expand All @@ -84,5 +93,22 @@ message("${ColourReset}")
#... -fPIC is needed to generate shared library
#set(CMAKE_Fortran_FLAGS "-O3 -march=corei7 -msse2 -funroll-loops -fno-protect-parens -ffast-math -fPIC")

IF((NOT DEFINED CMAKE_BUILD_TYPE) OR (CMAKE_BUILD_TYPE STREQUAL ""))
MESSAGE(STATUS "Setting CMAKE_BUILD_TYPE to Release")
SET(CMAKE_BUILD_TYPE Release)
ENDIF()

MESSAGE(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
STRING(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
MESSAGE(STATUS "CMAKE_BUILD_TYPE_UPPER = ${CMAKE_BUILD_TYPE_UPPER}")

IF(CMAKE_BUILD_TYPE_UPPER STREQUAL "COVERAGE")
MESSAGE(STATUS "Adding coverage")
FIND_PACKAGE(codecov)
ENDIF()

ENABLE_TESTING()
add_subdirectory(src/libFyMc)
add_subdirectory(src/libCNStream)
add_subdirectory(example)
INCLUDE(CMakePack)
11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM gcc:8.2.0
RUN apt-get update -yq && \
apt-get install \
--yes \
--no-install-recommends \
cmake && \
apt-get autoclean && \
apt-get autoremove && \
apt-get clean && \
rm -rf /tmp/* /var/tmp/* && \
rm -rf /var/lib/apt/lists
63 changes: 63 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# This Makefile allows to compile CN-stream with docker.
# A single 'make' command will
#
# - build the required docker image
# - configure project with CMake
# - compile project
# - run test
# - create an installation package

all: docker

docker_image: Dockerfile
@echo "Build docker image cnstream_build"
docker build . -t cnstream_build

docker: docker_image
@echo "Compile, test and package CN-stream with docker image cnstream_build"
docker run --rm -u $(shell id -u ):$(shell id -g ) \
-v $(shell pwd):/opt/share \
-w /opt/share \
cnstream_build /bin/bash -c \
"cd /opt/share && \
mkdir -p build_docker && \
cd build_docker && \
cmake .. && \
make && \
make test ARGS=\"-V\" && \
make package"

docker_make: docker_image
@echo "Compile CN-stream with docker image cnstream_build"
docker run --rm -u $(shell id -u ):$(shell id -g ) \
-v $(shell pwd):/opt/share \
-w /opt/share \
cnstream_build /bin/bash -c \
"cd /opt/share && \
mkdir -p build_docker && \
cd build_docker && \
cmake .. && \
make"

docker_animate: docker_image
@echo "Create an animation"
docker run --rm -u $(shell id -u ):$(shell id -g ) \
-v $(shell pwd):/opt/share \
-w /opt/share \
cnstream_build /bin/bash -c \
"cd /opt/share && \
for timestep in 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5; \
do \
echo \$${timestep}; \
cp input/CN_Stream_input.dict input/CN_Stream_input.dict.ORI; \
sed -i \"s/time 2.5/time \$${timestep}/g\" /opt/share/input/CN_Stream_input.dict; \
cat /opt/share/input/CN_Stream_input.dict; \
./mainCNS; \
mv input/CN_Stream_input.dict.ORI input/CN_Stream_input.dict; \
mv output/VP_card_fitted.dat output/VP_card_fitted_\$${timestep}.dat; \
done"

clean:
rm -rf build build_docker lib main mainCNS prog

.PHONY: docker docker_image clean
Loading