status-react/modules/react-native-status/desktop/FindGo.cmake

35 lines
1.6 KiB
CMake

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# The module defines the following variables:
# GO_FOUND - true if the Go was found
# GO_EXECUTABLE - path to the executable
# GO_VERSION - Go version number
# GO_PLATFORM - i.e. linux
# GO_ARCH - i.e. amd64
# Example usage:
# find_package(Go 1.2 REQUIRED)
find_program(GO_EXECUTABLE go PATHS ENV GOROOT GOPATH GOBIN PATH_SUFFIXES bin)
if (GO_EXECUTABLE)
get_filename_component(GO_ROOT_PATH ${GO_EXECUTABLE} REALPATH)
get_filename_component(GO_ROOT_PATH ${GO_ROOT_PATH}/../.. REALPATH)
message(STATUS "GO_ROOT_PATH is set to: ${GO_ROOT_PATH}")
execute_process(COMMAND ${GO_EXECUTABLE} version OUTPUT_VARIABLE GO_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(GO_VERSION_OUTPUT MATCHES "go([0-9]+\\.[0-9]+\\.?[0-9]*)[a-zA-Z0-9]* ([^/]+)/(.*)")
set(GO_VERSION ${CMAKE_MATCH_1})
set(GO_PLATFORM ${CMAKE_MATCH_2})
set(GO_ARCH ${CMAKE_MATCH_3})
elseif(GO_VERSION_OUTPUT MATCHES "go version devel .* ([^/]+)/(.*)$")
set(GO_VERSION "99-devel")
set(GO_PLATFORM ${CMAKE_MATCH_1})
set(GO_ARCH ${CMAKE_MATCH_2})
message("WARNING: Development version of Go being used, can't determine compatibility.")
endif()
endif()
mark_as_advanced(GO_EXECUTABLE)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Go REQUIRED_VARS GO_EXECUTABLE GO_VERSION GO_PLATFORM GO_ARCH VERSION_VAR GO_VERSION)