Open
Description
For NAG 6.2 and the latest master (f300f4a):
- Does not seem to support submodules.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 72b3d25..6a11a43 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -9,12 +9,6 @@ set(SRC
add_library(fortran_stdlib ${SRC})
-if(f18errorstop)
- target_sources(fortran_stdlib PRIVATE f18estop.f90)
-else()
- target_sources(fortran_stdlib PRIVATE f08estop.f90)
-endif()
-
add_subdirectory(tests)
install(TARGETS fortran_stdlib
diff --git a/src/stdlib_experimental_error.f90 b/src/stdlib_experimental_error.f90
index 3d932d6..b35083b 100644
--- a/src/stdlib_experimental_error.f90
+++ b/src/stdlib_experimental_error.f90
@@ -3,16 +3,46 @@ use, intrinsic :: iso_fortran_env, only: stderr=>error_unit
implicit none
private
-interface ! f{08,18}estop.f90
-module subroutine error_stop(msg, code)
+public :: assert, error_stop
+
+contains
+
+subroutine error_stop(msg, code)
character(*), intent(in) :: msg
integer, intent(in), optional :: code
-end subroutine error_stop
-end interface
-public :: assert, error_stop
+! Aborts the program with nonzero exit code
+! this is a fallback for Fortran 2008 error stop (e.g. Intel 19.1/2020 compiler)
+!
+! The "stop <character>" statement generally has return code 0.
+! To allow non-zero return code termination with character message,
+! error_stop() uses the statement "error stop", which by default
+! has exit code 1 and prints the message to stderr.
+! An optional integer return code "code" may be specified.
+!
+! Example
+! -------
+!
+! call error_stop("Invalid argument")
-contains
+write(stderr,*) msg
+
+if(present(code)) then
+ select case (code)
+ case (1)
+ error stop 1
+ case (2)
+ error stop 2
+ case (77)
+ error stop 77
+ case default
+ write(stderr,*) 'ERROR: code ',code,' was specified.'
+ error stop
+ end select
+else
+ error stop
+endif
+end subroutine
subroutine assert(condition, code)
! If condition == .false., it aborts the program.
- Can't find modules compiled before (fixed by Update CMakeLists handling of .mod files #109). Workaround is to specify
-I
manually:
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_Fortran_FLAGS_DEBUG="-I$HOME/repos/stdlib" .
Everything then builds and tests pass (including quadruple precision).