diff --git a/cmake_modules/GenPkgConfig.cmake b/cmake_modules/GenPkgConfig.cmake new file mode 100644 index 0000000000000000000000000000000000000000..a8044b2ff699f8daab3a84af5c529e10d5915930 --- /dev/null +++ b/cmake_modules/GenPkgConfig.cmake @@ -0,0 +1,135 @@ +### +# +# @copyright (c) 2009-2014 The University of Tennessee and The University +# of Tennessee Research Foundation. +# All rights reserved. +# @copyright (c) 2012-2014 Inria. All rights reserved. +# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. +# +### +# +# @file GenPkgConfig.cmake +# +# @project MORSE +# MORSE is a software package provided by: +# Inria Bordeaux - Sud-Ouest, +# Univ. of Tennessee, +# King Abdullah Univesity of Science and Technology +# Univ. of California Berkeley, +# Univ. of Colorado Denver. +# +# @version 0.9.0 +# @author Cedric Castagnede +# @author Emmanuel Agullo +# @author Mathieu Faverge +# @author Florent Pruvost +# @date 10-11-2014 +# +### + +### +# +# GENERATE_PKGCONFIG_FILE: generate a file .pc according to the options +# +### +MACRO(GENERATE_PKGCONFIG_FILE _file) + + # The link flags specific to this package and any required libraries + # that don't support PkgConfig + set(CHAMELEON_PKGCONFIG_LIBS "") + # The link flags for private libraries required by this package but not + # exposed to applications + set(CHAMELEON_PKGCONFIG_LIBS_PRIVATE "") + # A list of packages required by this package + set(CHAMELEON_PKGCONFIG_REQUIRED "") + # A list of private packages required by this package but not exposed to + # applications + set(CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE "") + + list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon) + if(CHAMELEON_SCHED_STARPU) + list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_starpu) + if ( CHAMELEON_USE_MPI ) + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED + starpumpi-${STARPU_VERSION_STRING}) + else() + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED + starpu-${STARPU_VERSION_STRING}) + endif() + elseif(CHAMELEON_SCHED_QUARK) + list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_quark) + list(APPEND CHAMELEON_PKGCONFIG_LIBS "-l${QUARK_quark_LIBRARY}") + endif() + + + if(NOT CHAMELEON_SIMULATION) + + if(CHAMELEON_USE_CUDA) + list(APPEND CHAMELEON_PKGCONFIG_LIBS ${CUDA_LIBRARIES}) + endif() + + if(CHAMELEON_USE_MAGMA) + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED magma) + endif() + + list(APPEND CHAMELEON_PKGCONFIG_LIBS + -lcoreblas + ${LAPACKE_LIBRARIES} + ${CBLAS_LIBRARIES} + ${EXTRA_LIBRARIES} + ) + + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED hwloc) + + else(NOT CHAMELEON_SIMULATION) + + list(APPEND CHAMELEON_PKGCONFIG_LIBS + -lcoreblas + -lsimulapacke + -lsimucblas + ${EXTRA_LIBRARIES} + ) + + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED hwloc) + + endif(NOT CHAMELEON_SIMULATION) + + # Define required package + # ----------------------- + set(CHAMELEON_PKGCONFIG_LIBS_CPY "${CHAMELEON_PKGCONFIG_LIBS}") + set(CHAMELEON_PKGCONFIG_LIBS "") + foreach(_dep ${CHAMELEON_PKGCONFIG_LIBS_CPY}) + get_filename_component(dep_we ${_dep} NAME) + STRING(REPLACE "lib" "-l" dep_we "${dep_we}") + STRING(REPLACE ".so" "" dep_we "${dep_we}") + STRING(REPLACE ".a" "" dep_we "${dep_we}") + STRING(REPLACE ".dylib" "" dep_we "${dep_we}") + STRING(REPLACE ".dll" "" dep_we "${dep_we}") + list(APPEND CHAMELEON_PKGCONFIG_LIBS ${dep_we}) + endforeach() + + list(REMOVE_DUPLICATES CHAMELEON_PKGCONFIG_LIBS) + list(REMOVE_DUPLICATES CHAMELEON_PKGCONFIG_LIBS_PRIVATE) + list(REMOVE_DUPLICATES CHAMELEON_PKGCONFIG_REQUIRED) + list(REMOVE_DUPLICATES CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE) + + STRING(REPLACE ";" " " CHAMELEON_PKGCONFIG_LIBS "${CHAMELEON_PKGCONFIG_LIBS}") + STRING(REPLACE ";" " " CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${CHAMELEON_PKGCONFIG_LIBS_PRIVATE}") + STRING(REPLACE ";" " " CHAMELEON_PKGCONFIG_REQUIRED "${CHAMELEON_PKGCONFIG_REQUIRED}") + STRING(REPLACE ";" " " CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE "${CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE}") + + # Create .pc file + # --------------- + SET(_output_file "${CMAKE_BINARY_DIR}/chameleon.pc") + # TODO: add url of MORSE releases in .pc file + CONFIGURE_FILE("${_file}" "${_output_file}" @ONLY) + + # installation + # ------------ + INSTALL(FILES ${_output_file} DESTINATION lib/pkgconfig) + +ENDMACRO(GENERATE_PKGCONFIG_FILE) + +## +## @end file GenPkgConfig.cmake +## diff --git a/cmake_modules/PrintOpts.cmake b/cmake_modules/PrintOpts.cmake new file mode 100644 index 0000000000000000000000000000000000000000..4a096ec338b80d772b822854e7753dcae8684647 --- /dev/null +++ b/cmake_modules/PrintOpts.cmake @@ -0,0 +1,85 @@ +### +# +# @copyright (c) 2009-2014 The University of Tennessee and The University +# of Tennessee Research Foundation. +# All rights reserved. +# @copyright (c) 2012-2014 Inria. All rights reserved. +# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. +# +### +# +# @file PrintOpts.cmake +# +# @project MORSE +# MORSE is a software package provided by: +# Inria Bordeaux - Sud-Ouest, +# Univ. of Tennessee, +# King Abdullah Univesity of Science and Technology +# Univ. of California Berkeley, +# Univ. of Colorado Denver. +# +# @version 0.9.0 +# @author Florent Pruvost +# @date 10-11-2014 +# +### +set(dep_message "\nConfiguration of Chameleon:\n" + " BUILDNAME ...........: ${BUILDNAME}\n" + " SITE ................: ${SITE}\n" + "\n" + " Compiler: C .........: ${CMAKE_C_COMPILER} (${CMAKE_C_COMPILER_ID})\n" + " Compiler: Fortran ...: ${CMAKE_Fortran_COMPILER} (${CMAKE_Fortran_COMPILER_ID})\n") +if(CHAMELEON_USE_MPI) + set(dep_message "${dep_message}" + " Compiler: MPI .......: ${MPI_C_COMPILER}\n" + " compiler flags ......: ${MPI_C_COMPILE_FLAGS}\n") +endif() +set(dep_message "${dep_message}" +" Linker: .............: ${CMAKE_LINKER}\n" +"\n" +" Build type ..........: ${CMAKE_BUILD_TYPE}\n" +" Build shared ........: ${BUILD_SHARED_LIBS}\n" +" CFlags ..............: ${CMAKE_C_FLAGS}\n" +" LDFlags .............: ${CMAKE_C_LINK_FLAGS}\n" +"\n" +" Implementation paradigm\n" +" CUDA ................: ${CHAMELEON_USE_CUDA}\n" +" MPI .................: ${CHAMELEON_USE_MPI}\n" +"\n" +" Runtime specific\n" +" QUARK ...............: ${CHAMELEON_SCHED_QUARK}\n" +" StarPU ..............: ${CHAMELEON_SCHED_STARPU}\n" +" FxT .................: ${CHAMELEON_USE_FXT}\n" +"\n" +" Kernels specific\n" +" BLAS ................: ${BLA_VENDOR}\n" +" MAGMA ...............: ${CHAMELEON_USE_MAGMA}\n" +"\n" +" Simulation mode .....: ${CHAMELEON_SIMULATION}\n" +"\n" +" Binaries to build\n" +" documentation ........: ${CHAMELEON_ENABLE_DOCS}\n" +" example ..............: ${CHAMELEON_ENABLE_EXAMPLE}\n" +" testing ..............: ${CHAMELEON_ENABLE_TESTING}\n" +" timing ...............: ${CHAMELEON_ENABLE_TIMING}\n" +"\n" +" CHAMELEON dependencies :\n") +foreach (_dep ${CHAMELEON_DEP}) + set(dep_message "${dep_message}" + " ${_dep}\n") +endforeach () +set(dep_message "${dep_message}" +"\n" +" Definitions: ${CHAMELEON_DEFINITIONS_LIST}\n") +set(dep_message "${dep_message}" +"\n" +" INSTALL_PREFIX ......: ${CMAKE_INSTALL_PREFIX}\n\n") + +string(REPLACE ";" " " dep_message_wsc "${dep_message}") +#message(${dep_message}) +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.log "${dep_message_wsc}") +message(STATUS "Configuration is done - A summary of the current configuration" +"has been written in ${CMAKE_CURRENT_BINARY_DIR}/config.log") +# installation +# ------------ +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.log DESTINATION share/chameleon)