diff options
author | David Benjamin <davidben@google.com> | 2023-01-29 16:34:48 -0500 |
---|---|---|
committer | Boringssl LUCI CQ <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-02-08 19:40:30 +0000 |
commit | 261ec612e21b81a4c16bbda615d0850556483b4f (patch) | |
tree | 404e0c2140d56376d399fa9e1929dd9099079a07 /CMakeLists.txt | |
parent | 6e20b77e6b79069e2468686bdc69169d3fa2252e (diff) | |
download | boringssl-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.txt | 52 |
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() |