diff -r a3b07219a091 -r 31615a2e0db1 cmake_modules/CheckHaskellPackageExists.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake_modules/CheckHaskellPackageExists.cmake Wed Mar 28 15:14:20 2018 +0200 @@ -0,0 +1,47 @@ +# Checks if a given Haskell package exists (using ghc-pkg) +# and fails if it's missing. +# Loosely based on CheckLibraryExists.cmake from CMake. +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License +# +# 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. +#============================================================================= + +macro(CHECK_HASKELL_PACKAGE_EXISTS PACKAGE MODULE FUNCTION PARAMCOUNT) +# NOTE: MODULE, FUNCTION and PARAMCOUNT are curretly ignored. +# TODO: Either implement these or drop? + + set(VARIABLE "HS_PACKAGE_${PACKAGE}") + if(NOT (${VARIABLE} EQUAL "1")) + message(STATUS "Looking for Haskell package ${PACKAGE} ...") + + execute_process(COMMAND ${GHC_PKG_EXECUTABLE} + "latest" + ${PACKAGE} + "--simple-output" + RESULT_VARIABLE COMMAND_RESULT + ERROR_VARIABLE BUILD_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_QUIET + ) + + if(${COMMAND_RESULT} EQUAL 0) + message(STATUS "Looking for Haskell package ${PACKAGE} - found") + set(${VARIABLE} "1" CACHE INTERNAL "Have package ${PACKAGE}") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the Haskell package ${PACKAGE} exists has passed\n\n") + else() + message(STATUS "Looking for Haskell package ${PACKAGE} - not found") + set(${VARIABLE} "0" CACHE INTERNAL "Have package ${PACKAGE}") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the Haskell package ${PACKAGE} " + "exists failed with the following output:\n" + "${BUILD_ERROR}\n\n") + message(FATAL_ERROR "Haskell package '${PACKAGE}' required") + endif() + endif() +endmacro()