| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # COMPILER_ID = GNU/Intel/etc.
- # LANGUAGE = C/CXX/Fortan/ASM
- # MODE = EXIST/COMPILE/LINK
- # NAME = name of the package
- # QUIET = if TRUE, don't print anything
- #=============================================================================
- # Copyright 2006-2011 Alexander Neundorf, <[email protected]>
- #
- # Distributed under the OSI-approved BSD License (the "License");
- # see accompanying file Copyright.txt for details.
- #
- # This software is distributed WITHOUT ANY WARRANTY; without even the
- # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- # See the License for more information.
- #=============================================================================
- # (To distribute this file outside of CMake, substitute the full
- # License text for the above reference.)
- if(NOT NAME)
- message(FATAL_ERROR "NAME argument not specified.")
- endif()
- if(NOT COMPILER_ID)
- message(FATAL_ERROR "COMPILER_ID argument not specified. In doubt, use GNU.")
- endif()
- if(NOT LANGUAGE)
- message(FATAL_ERROR "LANGUAGE argument not specified. Use C, CXX or Fortran.")
- endif()
- if(NOT MODE)
- message(FATAL_ERROR "MODE argument not specified. Use either EXIST, COMPILE or LINK.")
- endif()
- include(CMakeDetermineSystem)
- # Also load the system specific file, which sets up e.g. the search paths.
- # This makes the FIND_XXX() calls work much better
- include(CMakeSystemSpecificInformation)
- # this is ugly, and not enough for the multilib-stuff I guess
- if(UNIX AND EXISTS /usr/lib64)
- set(CMAKE_SIZEOF_VOID_P 8)
- endif()
- set(CMAKE_${LANGUAGE}_COMPILER "dummy")
- set(CMAKE_${LANGUAGE}_COMPILER_ID "${COMPILER_ID}")
- include(CMake${LANGUAGE}Information)
- function(print_compile_flags _packageName)
- string(TOUPPER "${_packageName}" PACKAGE_NAME)
- # Check the following variables:
- # FOO_INCLUDE_DIRS
- # Foo_INCLUDE_DIRS
- # FOO_INCLUDES
- # Foo_INCLUDES
- # FOO_INCLUDE_DIR
- # Foo_INCLUDE_DIR
- set(includes)
- if(DEFINED ${_packageName}_INCLUDE_DIRS)
- set(includes ${_packageName}_INCLUDE_DIRS)
- elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIRS)
- set(includes ${PACKAGE_NAME}_INCLUDE_DIRS)
- elseif(DEFINED ${_packageName}_INCLUDES)
- set(includes ${_packageName}_INCLUDES)
- elseif(DEFINED ${PACKAGE_NAME}_INCLUDES)
- set(includes ${PACKAGE_NAME}_INCLUDES)
- elseif(DEFINED ${_packageName}_INCLUDE_DIR)
- set(includes ${_packageName}_INCLUDE_DIR)
- elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIR)
- set(includes ${PACKAGE_NAME}_INCLUDE_DIR)
- endif()
- set(PACKAGE_INCLUDE_DIRS "${${includes}}" PARENT_SCOPE)
- # Check the following variables:
- # FOO_DEFINITIONS
- # Foo_DEFINITIONS
- set(definitions)
- if(DEFINED ${_packageName}_DEFINITIONS)
- set(definitions ${_packageName}_DEFINITIONS)
- elseif(DEFINED ${PACKAGE_NAME}_DEFINITIONS)
- set(definitions ${PACKAGE_NAME}_DEFINITIONS)
- endif()
- set(PACKAGE_DEFINITIONS "${${definitions}}" )
- endfunction()
- function(print_link_flags _packageName)
- string(TOUPPER "${_packageName}" PACKAGE_NAME)
- # Check the following variables:
- # FOO_LIBRARIES
- # Foo_LIBRARIES
- # FOO_LIBS
- # Foo_LIBS
- set(libs)
- if(DEFINED ${_packageName}_LIBRARIES)
- set(libs ${_packageName}_LIBRARIES)
- elseif(DEFINED ${PACKAGE_NAME}_LIBRARIES)
- set(libs ${PACKAGE_NAME}_LIBRARIES)
- elseif(DEFINED ${_packageName}_LIBS)
- set(libs ${_packageName}_LIBS)
- elseif(DEFINED ${PACKAGE_NAME}_LIBS)
- set(libs ${PACKAGE_NAME}_LIBS)
- endif()
- set(PACKAGE_LIBRARIES "${${libs}}" PARENT_SCOPE )
- endfunction()
- find_package("${NAME}" QUIET)
- set(PACKAGE_FOUND FALSE)
- string(TOUPPER "${NAME}" UPPERCASE_NAME)
- if(${NAME}_FOUND OR ${UPPERCASE_NAME}_FOUND)
- set(PACKAGE_FOUND TRUE)
- if("${MODE}" STREQUAL "EXIST")
- # do nothing
- elseif("${MODE}" STREQUAL "COMPILE")
- print_compile_flags(${NAME})
- elseif("${MODE}" STREQUAL "LINK")
- print_link_flags(${NAME})
- else("${MODE}" STREQUAL "LINK")
- message(FATAL_ERROR "Invalid mode argument ${MODE} given.")
- endif()
- endif()
- set(PACKAGE_QUIET ${SILENT} )
|