1# Checks if a given Haskell package exists (using ghc-pkg) 2# and fails if it's missing. 3# Loosely based on CheckLibraryExists.cmake from CMake. 4#============================================================================= 5# Copyright 2002-2009 Kitware, Inc. 6# 7# Distributed under the OSI-approved BSD License 8# 9# This software is distributed WITHOUT ANY WARRANTY; without even the 10# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11# See the License for more information. 12#============================================================================= 13 14macro(CHECK_HASKELL_PACKAGE_EXISTS PACKAGE MODULE FUNCTION PARAMCOUNT) 15# NOTE: MODULE, FUNCTION and PARAMCOUNT are curretly ignored. 16# TODO: Either implement these or drop? 17 18 set(VARIABLE "HS_PACKAGE_${PACKAGE}") 19 if(NOT (${VARIABLE} EQUAL "1")) 20 message(STATUS "Looking for Haskell package ${PACKAGE} ...") 21 22 execute_process(COMMAND ${GHC_PKG_EXECUTABLE} 23 "latest" 24 ${PACKAGE} 25 "--simple-output" 26 RESULT_VARIABLE COMMAND_RESULT 27 ERROR_VARIABLE BUILD_ERROR 28 OUTPUT_STRIP_TRAILING_WHITESPACE 29 OUTPUT_QUIET 30 ) 31 32 if(${COMMAND_RESULT} EQUAL 0) 33 message(STATUS "Looking for Haskell package ${PACKAGE} - found") 34 set(${VARIABLE} "1" CACHE INTERNAL "Have package ${PACKAGE}") 35 file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 36 "Determining if the Haskell package ${PACKAGE} exists has passed\n\n") 37 else() 38 message(STATUS "Looking for Haskell package ${PACKAGE} - not found") 39 set(${VARIABLE} "0" CACHE INTERNAL "Have package ${PACKAGE}") 40 file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 41 "Determining if the Haskell package ${PACKAGE} " 42 "exists failed with the following output:\n" 43 "${BUILD_ERROR}\n\n") 44 message(FATAL_ERROR "Haskell package '${PACKAGE}' required") 45 endif() 46 endif() 47endmacro() 48