Skip to content

Commit c2981ce

Browse files
committed
cmake: exe in own dirs
1 parent f4e4b8e commit c2981ce

File tree

6 files changed

+157
-145
lines changed

6 files changed

+157
-145
lines changed

src/CMakeLists.txt

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -3,96 +3,3 @@ add_subdirectory(c)
33
add_subdirectory(cxx)
44

55
add_subdirectory(fortran)
6-
7-
# -- Fortran calling C++
8-
add_executable(fortran_cxx_vector fortran/vector_main.f90)
9-
target_link_libraries(fortran_cxx_vector PRIVATE vector_cxx)
10-
# LINKER_LANGUAGE option is necessary for ifort at least
11-
set_target_properties(fortran_cxx_vector PROPERTIES LINKER_LANGUAGE Fortran)
12-
add_test(NAME Fortran_C++_vector COMMAND fortran_cxx_vector)
13-
14-
add_executable(fortran_cxx_struct fortran/struct_main.f90)
15-
target_link_libraries(fortran_cxx_struct PRIVATE struct_cxx)
16-
set_target_properties(fortran_cxx_struct PROPERTIES LINKER_LANGUAGE Fortran)
17-
add_test(NAME Fortran_C++_struct COMMAND fortran_cxx_struct)
18-
19-
add_executable(fortran_cxx_error fortran/error_main.f90)
20-
target_link_libraries(fortran_cxx_error PRIVATE error_cxx)
21-
set_target_properties(fortran_cxx_error PROPERTIES LINKER_LANGUAGE Fortran)
22-
add_test(NAME Fortran_C++_error
23-
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:fortran_cxx_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
24-
)
25-
26-
# -- Fortran calling C
27-
add_executable(fortran_c_vector fortran/vector_main.f90)
28-
target_link_libraries(fortran_c_vector PRIVATE vector_c)
29-
add_test(NAME Fortran_C_vector COMMAND fortran_c_vector)
30-
31-
add_executable(fortran_c_struct fortran/struct_main.f90)
32-
target_link_libraries(fortran_c_struct PRIVATE struct_c)
33-
add_test(NAME Fortran_C_struct COMMAND fortran_c_struct)
34-
35-
add_executable(fortran_c_error fortran/error_main.f90)
36-
target_link_libraries(fortran_c_error PRIVATE error_c)
37-
add_test(NAME Fortran_C_error
38-
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:fortran_c_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
39-
)
40-
41-
# -- C calling Fortran
42-
add_executable(c_fortran_submodule c/submodule_main.c)
43-
target_link_libraries(c_fortran_submodule PRIVATE submodule_fortran)
44-
set_target_properties(c_fortran_submodule PROPERTIES LINKER_LANGUAGE C)
45-
add_test(NAME C_Fortran_submodule COMMAND c_fortran_submodule)
46-
47-
add_executable(c_fortran_error c/error_main.c)
48-
target_link_libraries(c_fortran_error PRIVATE error_fortran)
49-
# LINKER_LANGUAGE option is necessary for ifort at least
50-
set_target_properties(c_fortran_error PROPERTIES LINKER_LANGUAGE C)
51-
add_test(NAME C_Fortran_error
52-
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:c_fortran_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
53-
)
54-
55-
add_executable(c_fortran_struct c/struct_main.c)
56-
target_link_libraries(c_fortran_struct PRIVATE struct_fortran)
57-
set_target_properties(c_fortran_struct PROPERTIES LINKER_LANGUAGE C)
58-
target_compile_definitions(c_fortran_struct PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
59-
add_test(NAME C_Fortran_struct COMMAND c_fortran_struct)
60-
61-
# -- C++ calling Fortran
62-
add_executable(cxx_fortran_submodule cxx/submodule_main.cxx)
63-
target_link_libraries(cxx_fortran_submodule PRIVATE submodule_fortran)
64-
target_compile_definitions(cxx_fortran_submodule PRIVATE _USE_MATH_DEFINES)
65-
add_test(NAME C++_Fortran_submodule COMMAND cxx_fortran_submodule)
66-
67-
add_executable(cxx_fortran_array cxx/array_main.cxx)
68-
target_link_libraries(cxx_fortran_array PRIVATE vector_fortran)
69-
add_test(NAME C++_Fortran_array COMMAND cxx_fortran_array)
70-
71-
add_executable(cxx_fortran_vector cxx/vector_main.cxx)
72-
target_link_libraries(cxx_fortran_vector PRIVATE vector_fortran)
73-
add_test(NAME C++_Fortran_vector COMMAND cxx_fortran_vector)
74-
75-
add_executable(cxx_fortran_error cxx/error_main.cxx)
76-
target_link_libraries(cxx_fortran_error PRIVATE error_fortran)
77-
# LINKER_LANGUAGE option is necessary for ifort at least
78-
set_target_properties(cxx_fortran_error PROPERTIES LINKER_LANGUAGE CXX)
79-
add_test(NAME C++_Fortran_error
80-
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:cxx_fortran_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
81-
)
82-
83-
add_executable(cxx_fortran_struct cxx/struct_main.cxx)
84-
target_include_directories(cxx_fortran_struct PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/c)
85-
target_link_libraries(cxx_fortran_struct PRIVATE struct_fortran)
86-
set_target_properties(cxx_fortran_struct PROPERTIES LINKER_LANGUAGE CXX)
87-
target_compile_definitions(cxx_fortran_struct PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
88-
add_test(NAME C++_Fortran_struct COMMAND cxx_fortran_struct)
89-
90-
# -- test wrapup
91-
set_tests_properties(
92-
C_Fortran_error C_Fortran_struct
93-
C++_Fortran_vector C++_Fortran_error C++_Fortran_struct
94-
Fortran_C_vector Fortran_C_struct
95-
Fortran_C++_vector Fortran_C++_struct
96-
PROPERTIES
97-
TIMEOUT 5
98-
)

src/c/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,30 @@ add_library(vector_c OBJECT vector_lib.c)
33
add_library(struct_c OBJECT struct_lib.c)
44

55
add_library(error_c OBJECT error_lib.c)
6+
7+
8+
# -- C calling Fortran
9+
add_executable(c_fortran_submodule submodule_main.c)
10+
target_link_libraries(c_fortran_submodule PRIVATE submodule_fortran)
11+
set_target_properties(c_fortran_submodule PROPERTIES LINKER_LANGUAGE C)
12+
add_test(NAME C_Fortran_submodule COMMAND c_fortran_submodule)
13+
14+
add_executable(c_fortran_error error_main.c)
15+
target_link_libraries(c_fortran_error PRIVATE error_fortran)
16+
# LINKER_LANGUAGE option is necessary for ifort at least
17+
set_target_properties(c_fortran_error PROPERTIES LINKER_LANGUAGE C)
18+
add_test(NAME C_Fortran_error
19+
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:c_fortran_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
20+
)
21+
22+
add_executable(c_fortran_struct struct_main.c)
23+
target_link_libraries(c_fortran_struct PRIVATE struct_fortran)
24+
set_target_properties(c_fortran_struct PROPERTIES LINKER_LANGUAGE C)
25+
target_compile_definitions(c_fortran_struct PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
26+
add_test(NAME C_Fortran_struct COMMAND c_fortran_struct)
27+
28+
set_tests_properties(
29+
C_Fortran_error C_Fortran_struct C_Fortran_submodule
30+
PROPERTIES
31+
TIMEOUT 5
32+
)

src/cxx/CMakeLists.txt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,39 @@ add_library(struct_cxx OBJECT struct_lib.cxx)
44
target_include_directories(struct_cxx PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../c)
55

66
add_library(error_cxx OBJECT error_lib.cxx)
7+
8+
# -- C++ calling Fortran
9+
add_executable(cxx_fortran_submodule submodule_main.cxx)
10+
target_link_libraries(cxx_fortran_submodule PRIVATE submodule_fortran)
11+
target_compile_definitions(cxx_fortran_submodule PRIVATE _USE_MATH_DEFINES)
12+
add_test(NAME C++_Fortran_submodule COMMAND cxx_fortran_submodule)
13+
14+
add_executable(cxx_fortran_array array_main.cxx)
15+
target_link_libraries(cxx_fortran_array PRIVATE vector_fortran)
16+
add_test(NAME C++_Fortran_array COMMAND cxx_fortran_array)
17+
18+
add_executable(cxx_fortran_vector vector_main.cxx)
19+
target_link_libraries(cxx_fortran_vector PRIVATE vector_fortran)
20+
add_test(NAME C++_Fortran_vector COMMAND cxx_fortran_vector)
21+
22+
add_executable(cxx_fortran_error error_main.cxx)
23+
target_link_libraries(cxx_fortran_error PRIVATE error_fortran)
24+
# LINKER_LANGUAGE option is necessary for ifort at least
25+
set_target_properties(cxx_fortran_error PROPERTIES LINKER_LANGUAGE CXX)
26+
add_test(NAME C++_Fortran_error
27+
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:cxx_fortran_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
28+
)
29+
30+
add_executable(cxx_fortran_struct struct_main.cxx)
31+
target_include_directories(cxx_fortran_struct PRIVATE ${PROJECT_SOURCE_DIR}/src/c)
32+
target_link_libraries(cxx_fortran_struct PRIVATE struct_fortran)
33+
set_target_properties(cxx_fortran_struct PROPERTIES LINKER_LANGUAGE CXX)
34+
target_compile_definitions(cxx_fortran_struct PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
35+
add_test(NAME C++_Fortran_struct COMMAND cxx_fortran_struct)
36+
37+
38+
set_tests_properties(
39+
C++_Fortran_array C++_Fortran_vector C++_Fortran_error C++_Fortran_struct C++_Fortran_submodule
40+
PROPERTIES
41+
TIMEOUT 5
42+
)

src/fortran/CMakeLists.txt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,45 @@ add_library(error_fortran OBJECT error_lib.f90)
55
add_library(struct_fortran OBJECT struct_lib.f90)
66

77
add_library(submodule_fortran OBJECT module.f90 submodule.f90)
8+
9+
10+
# -- Fortran calling C++
11+
add_executable(fortran_cxx_vector vector_main.f90)
12+
target_link_libraries(fortran_cxx_vector PRIVATE vector_cxx)
13+
# LINKER_LANGUAGE option is necessary for ifort at least
14+
set_target_properties(fortran_cxx_vector PROPERTIES LINKER_LANGUAGE Fortran)
15+
add_test(NAME Fortran_C++_vector COMMAND fortran_cxx_vector)
16+
17+
add_executable(fortran_cxx_struct struct_main.f90)
18+
target_link_libraries(fortran_cxx_struct PRIVATE struct_cxx)
19+
set_target_properties(fortran_cxx_struct PROPERTIES LINKER_LANGUAGE Fortran)
20+
add_test(NAME Fortran_C++_struct COMMAND fortran_cxx_struct)
21+
22+
add_executable(fortran_cxx_error error_main.f90)
23+
target_link_libraries(fortran_cxx_error PRIVATE error_cxx)
24+
set_target_properties(fortran_cxx_error PROPERTIES LINKER_LANGUAGE Fortran)
25+
add_test(NAME Fortran_C++_error
26+
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:fortran_cxx_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
27+
)
28+
29+
# -- Fortran calling C
30+
add_executable(fortran_c_vector vector_main.f90)
31+
target_link_libraries(fortran_c_vector PRIVATE vector_c)
32+
add_test(NAME Fortran_C_vector COMMAND fortran_c_vector)
33+
34+
add_executable(fortran_c_struct struct_main.f90)
35+
target_link_libraries(fortran_c_struct PRIVATE struct_c)
36+
add_test(NAME Fortran_C_struct COMMAND fortran_c_struct)
37+
38+
add_executable(fortran_c_error error_main.f90)
39+
target_link_libraries(fortran_c_error PRIVATE error_c)
40+
add_test(NAME Fortran_C_error
41+
COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:fortran_c_error> -Dexp_code=42 -P ${PROJECT_SOURCE_DIR}/cmake/test_error.cmake
42+
)
43+
44+
set_tests_properties(
45+
Fortran_C_vector Fortran_C_struct Fortran_C_error
46+
Fortran_C++_vector Fortran_C++_struct Fortran_C++_error
47+
PROPERTIES
48+
TIMEOUT 5
49+
)

src/fortran/meson.build

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,55 @@ sources: 'struct_lib.f90'
99
submodule_fortran = library('submodule',
1010
sources: ['module.f90', 'submodule.f90']
1111
)
12+
13+
# -- Fortran calling C++
14+
fortran_cxx_vector = executable('fortran_cxx_vector',
15+
sources: 'vector_main.f90',
16+
link_with: vector_cxx,
17+
dependencies: cstdlib,
18+
link_language: 'fortran'
19+
)
20+
test('Fortran C++ vector', fortran_cxx_vector, timeout: 5)
21+
22+
fortran_cxx_struct = executable('fortran_cxx_struct',
23+
sources: 'struct_main.f90',
24+
include_directories: '../c',
25+
link_with: struct_cxx,
26+
dependencies: cstdlib,
27+
link_language: 'fortran'
28+
)
29+
test('Fortran C++ struct', fortran_cxx_struct, timeout: 5)
30+
31+
fortran_cxx_err = executable('fortran_cxx_err',
32+
sources: 'error_main.f90',
33+
link_with: error_cxx,
34+
dependencies: cstdlib,
35+
link_language: 'fortran'
36+
)
37+
test('Fortran C++ error', fortran_cxx_err,
38+
timeout: 5,
39+
should_fail: true)
40+
41+
# -- Fortran calling C
42+
fortran_c_vector = executable('fortran_c_vector',
43+
sources: 'vector_main.f90',
44+
link_with: vector_c,
45+
link_language: 'fortran'
46+
)
47+
test('Fortran C vector', fortran_c_vector, timeout: 5)
48+
49+
fortran_c_struct = executable('fortran_c_struct',
50+
sources: 'struct_main.f90',
51+
link_with: struct_c,
52+
link_language: 'fortran'
53+
)
54+
test('Fortran C struct', fortran_c_struct, timeout: 5)
55+
56+
fortran_c_err = executable('fortran_c_err',
57+
sources: 'error_main.f90',
58+
link_with: error_c,
59+
link_language: 'fortran'
60+
)
61+
test('Fortran C error', fortran_c_err,
62+
timeout: 5,
63+
should_fail: true)

src/meson.build

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,58 +4,6 @@ subdir('cxx')
44

55
subdir('fortran')
66

7-
# -- Fortran calling C++
8-
fortran_cxx_vector = executable('fortran_cxx_vector',
9-
sources: files('fortran/vector_main.f90'),
10-
link_with: vector_cxx,
11-
dependencies: cstdlib,
12-
link_language: 'fortran'
13-
)
14-
test('Fortran C++ vector', fortran_cxx_vector, timeout: 5)
15-
16-
fortran_cxx_struct = executable('fortran_cxx_struct',
17-
sources: files('fortran/struct_main.f90'),
18-
include_directories: 'c',
19-
link_with: struct_cxx,
20-
dependencies: cstdlib,
21-
link_language: 'fortran'
22-
)
23-
test('Fortran C++ struct', fortran_cxx_struct, timeout: 5)
24-
25-
fortran_cxx_err = executable('fortran_cxx_err',
26-
sources: files('fortran/error_main.f90'),
27-
link_with: error_cxx,
28-
dependencies: cstdlib,
29-
link_language: 'fortran'
30-
)
31-
test('Fortran C++ error', fortran_cxx_err,
32-
timeout: 5,
33-
should_fail: true)
34-
35-
# -- Fortran calling C
36-
fortran_c_vector = executable('fortran_c_vector',
37-
sources: files('fortran/vector_main.f90'),
38-
link_with: vector_c,
39-
link_language: 'fortran'
40-
)
41-
test('Fortran C vector', fortran_c_vector, timeout: 5)
42-
43-
fortran_c_struct = executable('fortran_c_struct',
44-
sources: files('fortran/struct_main.f90'),
45-
link_with: struct_c,
46-
link_language: 'fortran'
47-
)
48-
test('Fortran C struct', fortran_c_struct, timeout: 5)
49-
50-
fortran_c_err = executable('fortran_c_err',
51-
sources: files('fortran/error_main.f90'),
52-
link_with: error_c,
53-
link_language: 'fortran'
54-
)
55-
test('Fortran C error', fortran_c_err,
56-
timeout: 5,
57-
should_fail: true)
58-
597
# -- C calling Fortran
608
c_fortran_submod = executable('c_fortran_submodule',
619
sources: files('c/submodule_main.c'),

0 commit comments

Comments
 (0)