aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorDavid Benjamin <davidben@google.com>2023-01-29 16:34:48 -0500
committerBoringssl LUCI CQ <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-02-08 19:40:30 +0000
commit261ec612e21b81a4c16bbda615d0850556483b4f (patch)
tree404e0c2140d56376d399fa9e1929dd9099079a07 /CMakeLists.txt
parent6e20b77e6b79069e2468686bdc69169d3fa2252e (diff)
downloadboringssl-261ec612e21b81a4c16bbda615d0850556483b4f.zip
boringssl-261ec612e21b81a4c16bbda615d0850556483b4f.tar.gz
boringssl-261ec612e21b81a4c16bbda615d0850556483b4f.tar.bz2
Move Go CMake support into its own file.
Slowly reduce clutter in the top-level CMake file. Change-Id: Ib7ca2aee7337db82ed1989c56bbaaf6ee5da0768 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/56569 Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: David Benjamin <davidben@google.com>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt52
1 files changed, 3 insertions, 49 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a2d45ae..9fa818c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,7 @@ if(WIN32)
endif()
include(sources.cmake)
+include(cmake/go.cmake)
include(cmake/perlasm.cmake)
enable_language(C)
@@ -29,17 +30,13 @@ include(GNUInstallDirs)
add_custom_target(global_target)
if(ANDROID)
- # Android-NDK CMake files reconfigure the path and so Go and Perl won't be
- # found. However, ninja will still find them in $PATH if we just name them.
+ # Android-NDK CMake files reconfigure the path and so Perl won't be found.
+ # However, ninja will still find them in $PATH if we just name them.
if(NOT PERL_EXECUTABLE)
set(PERL_EXECUTABLE "perl")
endif()
- if(NOT GO_EXECUTABLE)
- set(GO_EXECUTABLE "go")
- endif()
else()
find_package(Perl REQUIRED)
- find_program(GO_EXECUTABLE go)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT CMAKE_CROSSCOMPILING)
@@ -56,10 +53,6 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT CMAKE_CROSSCOMPILING)
endif()
endif()
-if(NOT GO_EXECUTABLE)
- message(FATAL_ERROR "Could not find Go")
-endif()
-
if(USE_CUSTOM_LIBCXX)
set(BORINGSSL_ALLOW_CXX_RUNTIME 1)
endif()
@@ -365,45 +358,6 @@ if(MALLOC_FAILURE_TESTING)
add_definitions(-DBORINGSSL_MALLOC_FAILURE_TESTING)
endif()
-function(go_executable dest package)
- set(godeps "${CMAKE_SOURCE_DIR}/util/godeps.go")
- if(NOT CMAKE_GENERATOR STREQUAL "Ninja")
- # The DEPFILE parameter to add_custom_command only works with Ninja. Query
- # the sources at configure time. Additionally, everything depends on go.mod.
- # That affects what external packages to use.
- #
- # TODO(davidben): Starting CMake 3.20, it also works with Make. Starting
- # 3.21, it works with Visual Studio and Xcode too.
- execute_process(COMMAND ${GO_EXECUTABLE} run ${godeps} -format cmake
- -pkg ${package}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE sources
- RESULT_VARIABLE godeps_result)
- add_custom_command(OUTPUT ${dest}
- COMMAND ${GO_EXECUTABLE} build
- -o ${CMAKE_CURRENT_BINARY_DIR}/${dest} ${package}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${sources} ${CMAKE_SOURCE_DIR}/go.mod)
- else()
- # Ninja expects the target in the depfile to match the output. This is a
- # relative path from the build directory.
- string(LENGTH "${CMAKE_BINARY_DIR}" root_dir_length)
- math(EXPR root_dir_length "${root_dir_length} + 1")
- string(SUBSTRING "${CMAKE_CURRENT_BINARY_DIR}" ${root_dir_length} -1 target)
- set(target "${target}/${dest}")
-
- set(depfile "${CMAKE_CURRENT_BINARY_DIR}/${dest}.d")
- add_custom_command(OUTPUT ${dest}
- COMMAND ${GO_EXECUTABLE} build
- -o ${CMAKE_CURRENT_BINARY_DIR}/${dest} ${package}
- COMMAND ${GO_EXECUTABLE} run ${godeps} -format depfile
- -target ${target} -pkg ${package} -out ${depfile}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${godeps} ${CMAKE_SOURCE_DIR}/go.mod
- DEPFILE ${depfile})
- endif()
-endfunction()
-
if(OPENSSL_NO_ASM)
add_definitions(-DOPENSSL_NO_ASM)
endif()