quantum-espresso/UtilXlib/CMakeLists.txt

124 lines
3.5 KiB
CMake

set(src_util
clocks_handler.f90
divide.f90
data_buffer.f90
error_handler.f90
find_free_unit.f90
fletcher32_mod.f90
mem_counter.f90
mp.f90
mp_base.f90
mp_bands_util.f90
nvtx_wrapper.f90
parallel_include.f90
print_mem.f90
util_param.f90
thread_util.f90
clib_wrappers.f90
export_gstart_2_solvers.f90
set_mpi_comm_4_solvers.f90
# GPU
mp_base_gpu.f90)
qe_enable_cuda_fortran("${src_util}")
qe_add_library(qe_utilx ${src_util})
target_link_libraries(qe_utilx
PUBLIC
qe_clib # cclock is exposed by the mytime module in clocks_handler
qe_ext_prof_tool # to pass link options, PUBLIC is needed.
PRIVATE
qe_openmp_fortran
qe_mpi_fortran)
qe_install_targets(qe_utilx)
set(src_device_lapack
device_helper.f90)
qe_enable_cuda_fortran("${src_device_lapack}")
qe_add_library(qe_device_lapack ${src_device_lapack})
target_link_libraries(qe_device_lapack
PRIVATE
qe_lapack
qe_openmp_fortran
qe_mpi_fortran)
qe_install_targets(qe_device_lapack)
###########################################################
# tests
###########################################################
if(QE_ENABLE_TEST)
set(src_util_tests
tests/tester.f90
tests/utils.f90
tests/mp_world.f90)
qe_enable_cuda_fortran("${src_util_tests}")
qe_add_library(qe_utilx_tests ${src_util_tests})
target_link_libraries(qe_utilx_tests
PRIVATE
qe_utilx
qe_mpi_fortran)
qe_install_targets(qe_utilx_tests)
set(source_names
test_mp_count_nodes
test_mp_bcast_i1
test_mp_bcast_iv
test_mp_bcast_im
test_mp_bcast_it
test_mp_bcast_iv_buffer
test_mp_bcast_lv_buffer
test_mp_bcast_rv_buffer
test_mp_max_iv_buffer
test_mp_max_rv_buffer
test_mp_min_iv_buffer
test_mp_min_rv_buffer
test_mp_sum_iv_buffer
test_mp_sum_rv_buffer)
if(QE_ENABLE_CUDA)
set(source_names ${source_names}
test_mp_bcast_i1_gpu
test_mp_bcast_iv_gpu
test_mp_bcast_im_gpu
test_mp_bcast_it_gpu
test_mp_bcast_i4d_gpu
test_mp_bcast_r4d_gpu
test_mp_bcast_c4d_gpu
test_mp_bcast_c5d_gpu
test_mp_bcast_r5d_gpu
test_mp_bcast_c6d_gpu
test_mp_bcast_iv_buffer_gpu
test_mp_bcast_lv_buffer_gpu
test_mp_bcast_rv_buffer_gpu
test_mp_max_iv_buffer_gpu
test_mp_max_rv_buffer_gpu
test_mp_min_iv_buffer_gpu
test_mp_min_rv_buffer_gpu
test_mp_sum_iv_buffer_gpu
test_mp_sum_rv_buffer_gpu)
endif()
# TODO rename all sources *.f90 -> *.F90
set(src_tests)
FOREACH(NAME ${source_names})
set(src_test tests/${NAME}.f90)
qe_enable_cuda_fortran("${src_test}")
set(src_tests ${src_tests} "${src_test}")
string(REPLACE "test_" "test_qe_utilx_" TGT_NAME ${NAME})
qe_add_executable(${TGT_NAME} ${src_test})
set_target_properties(${TGT_NAME}
PROPERTIES
OUTPUT_NAME ${TGT_NAME}.x
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
target_link_libraries(${TGT_NAME}
PRIVATE
qe_utilx
qe_utilx_tests
qe_mpi_fortran)
add_unit_test(${TGT_NAME} 1 1 $<TARGET_FILE:${TGT_NAME}>)
ENDFOREACH(NAME)
endif()