cmake_modules/FindGHC.cmake
changeset 13291 31615a2e0db1
parent 10109 91d126fbd7bd
--- a/cmake_modules/FindGHC.cmake	Wed Mar 28 14:06:34 2018 +0200
+++ b/cmake_modules/FindGHC.cmake	Wed Mar 28 15:14:20 2018 +0200
@@ -1,9 +1,10 @@
 # - Try to find the Glasgow Haskell Compiler executable
 # Once done this will define
 #
-#  GHC_FOUND       - system has GHC
-#  GHC_VERSION     - GHC version
-#  GHC_EXECUTABLE  - GHC executable
+#  GHC_VERSION        - GHC version
+#  GHC_EXECUTABLE     - GHC executable
+#  GHC_PKG_VERSION    - ghc-pkg version
+#  GHC_PKG_EXECUTABLE - ghc-pkg executable
 #
 # Copyright (c) 2013, Vittorio Giovara <vittorio.giovara@gmail.com>
 #
@@ -16,6 +17,11 @@
     PATHS /opt/local/bin /usr/local/bin /usr/bin
     )
 
+find_program(GHC_PKG_EXECUTABLE
+    NAMES ghc-pkg
+    PATHS /opt/local/bin /usr/local/bin /usr/bin
+    )
+
 if (GHC_EXECUTABLE)
     # check ghc version
     execute_process(COMMAND ${GHC_EXECUTABLE} -V
@@ -32,6 +38,22 @@
     endif()
 endif()
 
+if (GHC_PKG_EXECUTABLE)
+    # check ghc-pkg version
+    execute_process(COMMAND ${GHC_PKG_EXECUTABLE} -V
+                    OUTPUT_VARIABLE GHC_PKG_VERSION_OUTPUT
+                    ERROR_VARIABLE GHC_PKG_VERSION_ERROR
+                    RESULT_VARIABLE GHC_PKG_VERSION_RESULT
+                    OUTPUT_STRIP_TRAILING_WHITESPACE
+                    )
+
+    if(${GHC_PKG_VERSION_RESULT} EQUAL 0)
+        string(REGEX MATCH "([0-9]+)" GHC_PKG_VERSION ${GHC_PKG_VERSION_OUTPUT})
+    else()
+        message(SEND_ERROR "Command \"${GHC_PKG_EXECUTABLE} -V\" failed with output: ${GHC_PKG_VERSION_ERROR}")
+    endif()
+endif()
+
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(GHC DEFAULT_MSG GHC_EXECUTABLE GHC_VERSION)
 mark_as_advanced(GHC_VERSION)