Make qe_install_targets variadic

This commit is contained in:
Federico Ficarelli 2020-01-09 14:46:51 +01:00
parent 135a0832de
commit ce7c15c3b0
11 changed files with 44 additions and 33 deletions

View File

@ -131,8 +131,9 @@ function(qe_add_library LIB)
endif()
endfunction(qe_add_library)
function(qe_install_target TGT)
install(TARGETS ${TGT}
function(qe_install_targets TGT)
set(targets ${TGT} ${ARGN})
install(TARGETS ${targets}
EXPORT qeTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@ -142,17 +143,19 @@ function(qe_install_target TGT)
# error, let's skip the following section for interface
# targets. See here for details:
# https://gitlab.kitware.com/cmake/cmake/issues/17640
get_target_property(tgt_type ${TGT} TYPE)
if(NOT ${tgt_type} STREQUAL "INTERFACE_LIBRARY")
# If the target generates Fortran modules, make sure
# to install them as well to a proper location
get_target_property(tgt_module_dir ${TGT} Fortran_MODULE_DIRECTORY)
if(tgt_module_dir)
install(DIRECTORY ${tgt_module_dir}/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qe)
endif()
endif()
endfunction(qe_install_target)
foreach(tgt IN LISTS targets)
get_target_property(tgt_type ${tgt} TYPE)
if(NOT ${tgt_type} STREQUAL "INTERFACE_LIBRARY")
# If the target generates Fortran modules, make sure
# to install them as well to a proper location
get_target_property(tgt_module_dir ${tgt} Fortran_MODULE_DIRECTORY)
if(tgt_module_dir)
install(DIRECTORY ${tgt_module_dir}/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qe)
endif()
endif()
endforeach()
endfunction(qe_install_targets)
###########################################################
# External dependencies
@ -219,11 +222,13 @@ add_subdirectory(CPV)
# Install all internal interface targets to allow
# proper targets export
qe_install_target(qe_definitions)
qe_install_target(qe_mpi_fortran)
qe_install_target(qe_mpi_c)
# TODO check that everything is in good shape
qe_install_target(qe_fox)
qe_install_targets(
qe_definitions
qe_mpi_fortran
qe_mpi_c
# TODO check that everything is in good shape
qe_fox
)
install(EXPORT qeTargets
FILE qeTargets.cmake

View File

@ -116,7 +116,6 @@ target_link_libraries(qe_cpv
QE::Modules
QE::FFTX
QE::MPI_Fortran)
qe_install_target(qe_cpv)
###########################################################
# cp.x
@ -129,7 +128,6 @@ set_target_properties(qe_cpv_exe PROPERTIES OUTPUT_NAME cp.x)
target_link_libraries(qe_cpv_exe
PRIVATE
QE::CPV)
qe_install_target(qe_cpv_exe)
###########################################################
# manycp.x
@ -142,4 +140,10 @@ set_target_properties(qe_cpv_manycp_exe PROPERTIES OUTPUT_NAME manycp.x)
target_link_libraries(qe_cpv_manycp_exe
PRIVATE
QE::CPV)
qe_install_target(qe_cpv_manycp_exe)
###########################################################
qe_install_targets(
qe_cpv
qe_cpv_exe
qe_cpv_manycp_exe)

View File

@ -41,7 +41,7 @@ add_library(QE::FFTX ALIAS qe_fftx)
target_link_libraries(qe_fftx
PUBLIC
QE::LAPACK)
qe_install_target(qe_fftx)
qe_install_targets(qe_fftx)
###########################################################
# Tests

View File

@ -23,4 +23,4 @@ target_link_libraries(qe_solvers
QE::LAX
QE::UTILX
QE::MPI_Fortran)
qe_install_target(qe_solvers)
qe_install_targets(qe_solvers)

View File

@ -24,7 +24,7 @@ target_link_libraries(qe_lax
QE::MPI_Fortran
QE::LAPACK
QE::UTILX)
qe_install_target(qe_lax)
qe_install_targets(qe_lax)
###########################################################
# Tests

View File

@ -174,4 +174,4 @@ target_link_libraries(qe_modules
QE::FOX
QE::CLIB # this is needed only by wrappers.f90
QE::MPI_Fortran)
qe_install_target(qe_modules)
qe_install_targets(qe_modules)

View File

@ -247,7 +247,6 @@ target_link_libraries(qe_pw
QE::FFTX
QE::DFTD3
QE::MPI_Fortran)
qe_install_target(qe_pw)
###########################################################
# pw.x
@ -261,4 +260,9 @@ add_executable(QE::PW_EXE ALIAS qe_pw_exe)
target_link_libraries(qe_pw_exe
PRIVATE
QE::PW)
qe_install_target(qe_pw_exe)
###########################################################
qe_install_targets(
qe_pw
qe_pw_exe)

View File

@ -26,4 +26,4 @@ add_library(QE::UTILX ALIAS qe_utilx)
target_link_libraries(qe_utilx
PUBLIC
QE::MPI_Fortran)
qe_install_target(qe_utilx)
qe_install_targets(qe_utilx)

View File

@ -16,4 +16,4 @@ set(sources
qe_add_library(qe_clib ${sources})
add_library(QE::CLIB ALIAS qe_clib)
qe_install_target(qe_clib)
qe_install_targets(qe_clib)

View File

@ -15,5 +15,5 @@ target_link_libraries(qe_dftd3
PUBLIC
QE::UTILX
QE::Modules)
qe_install_target(qe_dftd3)
qe_install_targets(qe_dftd3)

View File

@ -61,9 +61,7 @@ else(FoX_FOUND)
# TODO fix FoX module dir
# INTERFACE
# $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/qe>)
foreach(tgt IN LISTS fox_targets)
qe_install_target(${tgt})
endforeach()
qe_install_targets(${fox_targets})
else(QE_ENABLE_VENDOR_DEPS)
# No dep has been found via find_package,
# call it again with REQUIRED to make it fail