Skip to content

Commit 9daefda

Browse files
committed
Fix flags & logic pertaining to installed targets
- `find_package(opencoarrays)` works now - libs and flags are mostly correctly passed - Still need to eliminate `add_definitions()` in top level CMakeLists.txt - Need to abstract/modularize CMake & reduce complexity
1 parent db36c5d commit 9daefda

File tree

2 files changed

+14
-23
lines changed

2 files changed

+14
-23
lines changed

CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ endif()
222222

223223
if(gfortran_compiler)
224224
set(OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
225-
set(CMAKE_REQUIRED_FLAGS $<$<COMPILE_LANGUAGE:Fortran>:"-fcoarray=single -ffree-form">)
225+
set(CMAKE_REQUIRED_FLAGS $<$<COMPILE_LANGUAGE:Fortran>:-fcoarray=single -ffree-form>)
226226
endif()
227227
include(CheckFortranSourceCompiles)
228228
CHECK_Fortran_SOURCE_COMPILES("
@@ -629,10 +629,6 @@ install(
629629
"${CMAKE_INSTALL_LIBDIR}/cmake/opencoarrays"
630630
)
631631

632-
add_library(OpenCoarrays INTERFACE)
633-
target_compile_options(OpenCoarrays INTERFACE $<$<COMPILE_LANGUAGE:Fortran>:"-fcoarray=lib")
634-
target_link_libraries(OpenCoarrays INTERFACE caf_mpi)
635-
636632
#------------------------------------------
637633
# Add portable unistall command to makefile
638634
#------------------------------------------

src/mpi/CMakeLists.txt

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ target_compile_options(opencoarrays_mod
2626
target_link_libraries(opencoarrays_mod
2727
PUBLIC ${MPI_Fortran_LINK_FLAGS}
2828
PUBLIC ${MPI_Fortran_LIBRARIES})
29+
target_link_libraries(opencoarrays_mod
30+
PUBLIC caf_mpi_static)
2931
target_include_directories(opencoarrays_mod PUBLIC
3032
$<$<COMPILE_LANGUAGE:Fortran>:${MPI_Fortran_INCLUDE_PATH}>
3133
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${mod_dir_tail}>
@@ -35,12 +37,10 @@ add_library(caf_mpi SHARED mpi_caf.c ../common/caf_auxiliary.c)
3537
add_library(caf_mpi_static STATIC mpi_caf.c ../common/caf_auxiliary.c)
3638
target_link_libraries(caf_mpi
3739
PUBLIC ${MPI_C_LINK_FLAGS}
38-
PUBLIC ${MPI_C_LIBRARIES}
39-
PRIVATE opencoarrays_mod)
40+
PUBLIC ${MPI_C_LIBRARIES})
4041
target_link_libraries(caf_mpi_static
4142
PUBLIC ${MPI_C_LINK_FLAGS}
42-
PUBLIC ${MPI_C_LIBRARIES}
43-
PRIVATE opencoarrays_mod)
43+
PUBLIC ${MPI_C_LIBRARIES})
4444
set_target_properties(caf_mpi_static
4545
PROPERTIES
4646
POSITION_INDEPENDENT_CODE TRUE)
@@ -83,7 +83,7 @@ if(UNIX)
8383
endif()
8484

8585
install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
86-
FILES_MATCHING PATTERN "*.mod")
86+
FILES_MATCHING PATTERN "opencoarrays.mod")
8787

8888
set_target_properties( caf_mpi_static
8989
PROPERTIES
@@ -92,22 +92,15 @@ set_target_properties( caf_mpi_static
9292
)
9393

9494
if (gfortran_compiler)
95-
target_compile_options(caf_mpi INTERFACE $<$<COMPILE_LANGUAGE:Fortran>:"-fcoarray=lib">)
96-
target_compile_options(caf_mpi_static INTERFACE $<$<COMPILE_LANGUAGE:Fortran>:"-fcoarray=lib">)
95+
target_compile_options(caf_mpi INTERFACE $<$<COMPILE_LANGUAGE:Fortran>:-fcoarray=lib>)
96+
target_compile_options(caf_mpi_static INTERFACE $<$<COMPILE_LANGUAGE:Fortran>:-fcoarray=lib>)
9797
endif()
9898

99-
install(TARGETS opencoarrays_mod EXPORT OpenCoarraysTargets
100-
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
101-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
102-
)
103-
install(TARGETS caf_mpi EXPORT OpenCoarraysTargets
99+
install(TARGETS opencoarrays_mod caf_mpi caf_mpi_static EXPORT OpenCoarraysTargets
104100
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
105-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
106-
)
107-
install(TARGETS caf_mpi_static EXPORT OpenCoarraysTargets
108101
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
109102
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
110-
)
103+
)
111104

112105
#----------------------------------
113106
# Determine if we're using Open MPI
@@ -134,12 +127,14 @@ elseif("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "PGI")
134127
endif()
135128

136129
if(gfortran_compiler AND (NOT opencoarrays_aware_compiler))
137-
target_compile_definitions(opencoarrays_mod PUBLIC -DCOMPILER_SUPPORTS_CAF_INTRINSICS)
130+
target_compile_definitions(opencoarrays_mod
131+
PUBLIC -DCOMPILER_SUPPORTS_CAF_INTRINSICS)
138132
endif()
139133

140134
option(CAF_EXPOSE_INIT_FINALIZE "Expose caf_init and caf_finalize in opencoarrays module" FALSE)
141135
if(CAF_EXPOSE_INIT_FINALIZE)
142-
target_compile_definitions(opencoarrays_mod PRIVATE -DEXPOSE_INIT_FINALIZE)
136+
target_compile_definitions(opencoarrays_mod
137+
PRIVATE -DEXPOSE_INIT_FINALIZE)
143138
endif()
144139

145140
include(CheckIncludeFile)

0 commit comments

Comments
 (0)