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

View File

@ -116,7 +116,6 @@ target_link_libraries(qe_cpv
QE::Modules QE::Modules
QE::FFTX QE::FFTX
QE::MPI_Fortran) QE::MPI_Fortran)
qe_install_target(qe_cpv)
########################################################### ###########################################################
# cp.x # cp.x
@ -129,7 +128,6 @@ set_target_properties(qe_cpv_exe PROPERTIES OUTPUT_NAME cp.x)
target_link_libraries(qe_cpv_exe target_link_libraries(qe_cpv_exe
PRIVATE PRIVATE
QE::CPV) QE::CPV)
qe_install_target(qe_cpv_exe)
########################################################### ###########################################################
# manycp.x # 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 target_link_libraries(qe_cpv_manycp_exe
PRIVATE PRIVATE
QE::CPV) 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 target_link_libraries(qe_fftx
PUBLIC PUBLIC
QE::LAPACK) QE::LAPACK)
qe_install_target(qe_fftx) qe_install_targets(qe_fftx)
########################################################### ###########################################################
# Tests # Tests

View File

@ -23,4 +23,4 @@ target_link_libraries(qe_solvers
QE::LAX QE::LAX
QE::UTILX QE::UTILX
QE::MPI_Fortran) 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::MPI_Fortran
QE::LAPACK QE::LAPACK
QE::UTILX) QE::UTILX)
qe_install_target(qe_lax) qe_install_targets(qe_lax)
########################################################### ###########################################################
# Tests # Tests

View File

@ -174,4 +174,4 @@ target_link_libraries(qe_modules
QE::FOX QE::FOX
QE::CLIB # this is needed only by wrappers.f90 QE::CLIB # this is needed only by wrappers.f90
QE::MPI_Fortran) 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::FFTX
QE::DFTD3 QE::DFTD3
QE::MPI_Fortran) QE::MPI_Fortran)
qe_install_target(qe_pw)
########################################################### ###########################################################
# pw.x # pw.x
@ -261,4 +260,9 @@ add_executable(QE::PW_EXE ALIAS qe_pw_exe)
target_link_libraries(qe_pw_exe target_link_libraries(qe_pw_exe
PRIVATE PRIVATE
QE::PW) 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 target_link_libraries(qe_utilx
PUBLIC PUBLIC
QE::MPI_Fortran) 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}) qe_add_library(qe_clib ${sources})
add_library(QE::CLIB ALIAS qe_clib) 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 PUBLIC
QE::UTILX QE::UTILX
QE::Modules) 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 # TODO fix FoX module dir
# INTERFACE # INTERFACE
# $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/qe>) # $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/qe>)
foreach(tgt IN LISTS fox_targets) qe_install_targets(${fox_targets})
qe_install_target(${tgt})
endforeach()
else(QE_ENABLE_VENDOR_DEPS) else(QE_ENABLE_VENDOR_DEPS)
# No dep has been found via find_package, # No dep has been found via find_package,
# call it again with REQUIRED to make it fail # call it again with REQUIRED to make it fail