Skip to content

Commit 4fd5032

Browse files
committed
add ctest
1 parent 8361fcd commit 4fd5032

File tree

7 files changed

+94
-58
lines changed

7 files changed

+94
-58
lines changed

.github/workflows/ci_cmake.yml

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,24 @@ on:
99
- "**.txt"
1010
- ".github/workflows/ci_cmake.yml"
1111
pull_request:
12-
release:
1312

1413
jobs:
1514

1615
linux:
1716
runs-on: ubuntu-latest
1817
steps:
1918
- uses: actions/checkout@v2
20-
- uses: actions/setup-python@v1
21-
with:
22-
python-version: 3.7
23-
- run: |
24-
pip install cmake
25-
sudo apt -yq update
26-
sudo apt install -yq --no-install-recommends gfortran
27-
28-
- run: cmake -B build
29-
env:
30-
FC: gfortran
3119

32-
- run: cmake --build build --parallel
33-
- uses: actions/upload-artifact@v1
34-
if: failure()
35-
with:
36-
name: Linux_CMake_Testlog
37-
path: build/CMakeFiles/CMakeError.log
20+
- run: ctest -S setup.cmake -VV
21+
env:
22+
FC: gfortran-9
3823

39-
- run: ctest -V
40-
working-directory: build
4124

4225
windows:
4326
runs-on: windows-latest
4427
steps:
4528
- uses: actions/checkout@v2
4629

47-
- run: cmake -B build -G "MinGW Makefiles" -DCMAKE_SH="CMAKE_SH-NOTFOUND"
48-
env:
49-
FC: gfortran
50-
51-
- run: cmake --build build
52-
- uses: actions/upload-artifact@v1
53-
if: failure()
54-
with:
55-
name: Windows_CMake_Testlog
56-
path: build/CMakeFiles/CMakeError.log
30+
- run: cinst -y ninja
5731

58-
- run: ctest -V
59-
working-directory: build
32+
- run: ctest -S setup.cmake -VV

.github/workflows/ci_meson.yml

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ on:
88
- "**.build"
99
- ".github/workflows/ci_meson.yml"
1010
pull_request:
11-
release:
1211

1312
jobs:
1413

@@ -18,15 +17,13 @@ jobs:
1817
- uses: actions/checkout@v2
1918
- uses: actions/setup-python@v1
2019
with:
21-
python-version: 3.7
22-
- run: |
23-
pip install meson
24-
sudo apt -yq update
25-
sudo apt install -yq --no-install-recommends ninja-build gfortran
20+
python-version: '3.x'
21+
22+
- run: pip install meson ninja
2623

2724
- run: meson setup build
2825
env:
29-
FC: gfortran
26+
FC: gfortran-9
3027

3128
- run: meson test -C build -v
3229
- uses: actions/upload-artifact@v1
@@ -41,9 +38,9 @@ jobs:
4138
- uses: actions/checkout@v2
4239
- uses: actions/setup-python@v1
4340
with:
44-
python-version: 3.7
41+
python-version: '3.x'
4542
- run: |
46-
brew install gcc ninja
43+
brew install ninja
4744
pip install meson
4845
4946
- run: meson setup build
@@ -63,7 +60,7 @@ jobs:
6360
- uses: actions/checkout@v2
6461
- uses: actions/setup-python@v1
6562
with:
66-
python-version: 3.7
63+
python-version: '3.8'
6764

6865
- run: |
6966
cinst -y ninja

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ if(NOT CMAKE_BUILD_TYPE)
44
endif()
55
project(RPNcalc
66
LANGUAGES Fortran
7-
VERSION 1.2.0
7+
VERSION 1.2.1
88
HOMEPAGE_URL https://github.com/scivision/rpn-calc-fortran)
99
enable_testing()
1010

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,28 @@ Default size is 4.
2424

2525
## Build
2626

27-
Use Meson or CMake.
28-
Do NOT use sudo.
27+
### CMake
2928

30-
### Meson
29+
One-step CMake build and test:
3130

3231
```sh
33-
meson build
34-
35-
meson test -C build
32+
ctest -S setup.cmake -VV
3633
```
3734

38-
### CMake
35+
OR manually:
3936

4037
```sh
4138
cmake -B build
4239

4340
cmake --build build --parallel
41+
```
4442

45-
cd build
43+
### Meson
44+
45+
```sh
46+
meson build
4647

47-
ctest -V
48+
meson test -C build
4849
```
4950

5051
## Usage
@@ -161,15 +162,14 @@ Other display modes:
161162

162163
ALL ALL digits display mode
163164

164-
165165
### Common Functions
166166

167167
+ Addition
168168
- Subtraction
169169
* Multiplication
170170
/ Division
171171
^ Exponentiation
172-
\ Reciprocal
172+
RECIP Reciprocal
173173

174174

175175
2X 2^x

meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
project('RPNcalc', 'fortran',
22
default_options : ['default_library=static', 'warning_level=1', 'buildtype=release'],
33
meson_version: '>=0.51',
4-
version: '1.2.0')
4+
version: '1.2.1')
55

66
fc = meson.get_compiler('fortran')
77
if fc.get_id() == 'gcc'

setup.cmake

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# run by:
2+
# ctest -S setup.cmake
3+
4+
# --- Project-specific -Doptions
5+
# these will be used if the project isn't already configured.
6+
7+
# --- boilerplate follows
8+
# site is OS name
9+
if(NOT DEFINED CTEST_SITE)
10+
set(CTEST_SITE ${CMAKE_SYSTEM_NAME})
11+
endif()
12+
13+
# if compiler specified, deduce its ID
14+
if(DEFINED ENV{FC})
15+
set(FC $ENV{FC})
16+
endif()
17+
if(DEFINED CMAKE_Fortran_COMPILER)
18+
set(FC ${CMAKE_Fortran_COMPILER})
19+
endif()
20+
if(DEFINED FC)
21+
foreach(c gfortran ifort flang pgfortran nagfor xlf ftn)
22+
string(FIND ${FC} ${c} i)
23+
if(i GREATER_EQUAL 0)
24+
if(c STREQUAL gfortran)
25+
execute_process(COMMAND gfortran -dumpversion
26+
RESULT_VARIABLE _ret
27+
OUTPUT_VARIABLE _vers OUTPUT_STRIP_TRAILING_WHITESPACE)
28+
if(_ret EQUAL 0)
29+
string(APPEND c "-${_vers}")
30+
endif()
31+
endif()
32+
set(CTEST_BUILD_NAME ${c})
33+
break()
34+
endif()
35+
endforeach()
36+
endif()
37+
38+
if(NOT DEFINED CTEST_BUILD_CONFIGURATION)
39+
set(CTEST_BUILD_CONFIGURATION "Release")
40+
endif()
41+
42+
set(CTEST_SOURCE_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
43+
if(NOT DEFINED CTEST_BINARY_DIRECTORY)
44+
set(CTEST_BINARY_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build)
45+
endif()
46+
47+
if(NOT DEFINED CTEST_CMAKE_GENERATOR)
48+
find_program(_gen NAMES ninja ninja-build samu)
49+
if(_gen)
50+
set(CTEST_CMAKE_GENERATOR "Ninja")
51+
elseif(WIN32)
52+
set(CTEST_CMAKE_GENERATOR "MinGW Makefiles")
53+
set(CTEST_BUILD_FLAGS -j)
54+
else()
55+
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
56+
set(CTEST_BUILD_FLAGS -j)
57+
endif()
58+
endif()
59+
60+
ctest_start("Experimental" ${CTEST_SOURCE_DIRECTORY} ${CTEST_BINARY_DIRECTORY})
61+
if(NOT EXISTS ${CTEST_BINARY_DIRECTORY}/CMakeCache.txt)
62+
ctest_configure(BUILD ${CTEST_BINARY_DIRECTORY} SOURCE ${CTEST_SOURCE_DIRECTORY} OPTIONS "${_opts}")
63+
endif()
64+
ctest_build(BUILD ${CTEST_BINARY_DIRECTORY} CONFIGURATION ${CTEST_BUILD_CONFIGURATION})
65+
ctest_test(BUILD ${CTEST_BINARY_DIRECTORY})
66+
# ctest_submit()

src/eval.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ recursive SUBROUTINE EVAL (STR)
7070

7171
IF (LEN_TRIM(STR) == 0) return
7272

73-
select case(str)
73+
parse_cmd: select case(str)
7474

7575
case('HELP')
7676
call eval('VER')
@@ -88,7 +88,7 @@ recursive SUBROUTINE EVAL (STR)
8888
call divide(domain_mode)
8989
case('^') ! ^
9090
call power(domain_mode)
91-
case(achar(92)) ! for PGI/Flang !('\') ! \
91+
case('RECIP')
9292
SELECT CASE (DOMAIN_MODE)
9393
CASE (1)
9494
IF (isclose(stack(1), 0._wp)) THEN
@@ -3784,7 +3784,7 @@ recursive SUBROUTINE EVAL (STR)
37843784

37853785
case default
37863786
call regops(str)
3787-
END select
3787+
end select parse_cmd
37883788

37893789
END SUBROUTINE EVAL
37903790

0 commit comments

Comments
 (0)