35 lines
1.6 KiB
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) |