From 10f1a77e9bdbbf06f388e09bf2885eb5a88bf20e Mon Sep 17 00:00:00 2001 From: e1528532 Date: Sat, 18 Aug 2018 18:33:41 +0200 Subject: [PATCH] haskell-xenial: fix potential issue in find script, fix minimum ghc version detection for haskell plugins --- cmake/Modules/FindHaskell.cmake | 10 +++++---- cmake/Modules/LibAddHaskellPlugin.cmake | 30 +++++++++++++++---------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/cmake/Modules/FindHaskell.cmake b/cmake/Modules/FindHaskell.cmake index 81e2f90aa42..de3844dd2d5 100644 --- a/cmake/Modules/FindHaskell.cmake +++ b/cmake/Modules/FindHaskell.cmake @@ -57,10 +57,12 @@ if (GHC-PKG_EXECUTABLE) OUTPUT_VARIABLE GHC_TARGET_PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE ) - # correct the mapping.. - string (REPLACE "apple-darwin" "osx" GHC_TARGET_PLATFORM ${GHC_TARGET_PLATFORM}) - string (REPLACE "unknown-linux" "linux" GHC_TARGET_PLATFORM ${GHC_TARGET_PLATFORM}) - + # correct the mapping, if there is any + if (GHC_TARGET_PLATFORM) + string (REPLACE "apple-darwin" "osx" GHC_TARGET_PLATFORM ${GHC_TARGET_PLATFORM}) + string (REPLACE "unknown-linux" "linux" GHC_TARGET_PLATFORM ${GHC_TARGET_PLATFORM}) + endif (GHC_TARGET_PLATFORM) + # normalize the result variables, 0 means success which corresponds to 1 in cmake booleans if (GHC_HSPEC_FOUND EQUAL 0) set (GHC_HSPEC_FOUND 1) diff --git a/cmake/Modules/LibAddHaskellPlugin.cmake b/cmake/Modules/LibAddHaskellPlugin.cmake index 72e0d3eed2c..c0dadfe412c 100644 --- a/cmake/Modules/LibAddHaskellPlugin.cmake +++ b/cmake/Modules/LibAddHaskellPlugin.cmake @@ -53,18 +53,24 @@ macro (add_haskell_plugin target) if (NOT ENABLE_ASAN) if (PLUGINPROCESS_FOUND) if (HASKELL_FOUND) - check_binding_included ("haskell" HAVE_HASKELL_BINDING) - if (HAVE_HASKELL_BINDING) - if (BUILD_SHARED) - prepare_and_compile_haskell_plugin (${target} - ${PLUGIN_NAME} - ${PLUGIN_NAME_CAPITALIZED} - ${ARG_SANDBOX_ADD_SOURCES} - ${ARG_ADDITIONAL_SOURCES}) - endif (BUILD_SHARED) - else (HAVE_HASKELL_BINDING) - remove_plugin (${target} "haskell bindings are not included in the cmake configuration") - endif (HAVE_HASKELL_BINDING) + set (GHC_MIN_VERSION "8.0.1") + if (NOT GHC_VERSION VERSION_LESS ${GHC_MIN_VERSION}) + check_binding_included ("haskell" HAVE_HASKELL_BINDING) + if (HAVE_HASKELL_BINDING) + if (BUILD_SHARED) + prepare_and_compile_haskell_plugin (${target} + ${PLUGIN_NAME} + ${PLUGIN_NAME_CAPITALIZED} + ${ARG_SANDBOX_ADD_SOURCES} + ${ARG_ADDITIONAL_SOURCES}) + endif (BUILD_SHARED) + else (HAVE_HASKELL_BINDING) + remove_plugin (${target} + "haskell bindings are not included in the cmake configuration") + endif (HAVE_HASKELL_BINDING) + else (NOT GHC_VERSION VERSION_LESS ${GHC_MIN_VERSION}) + remove_plugin (${target} "ghc: ${GHC_VERSION} found, but ${GHC_MIN_VERSION} required") + endif (NOT GHC_VERSION VERSION_LESS ${GHC_MIN_VERSION}) else (HASKELL_FOUND) remove_plugin (${target} ${HASKELL_NOTFOUND_INFO}) endif (HASKELL_FOUND)