Merge pull request #98 from cblichmann:main

PiperOrigin-RevId: 424060053
Change-Id: I5f0f10410265c1756599c27d8afb9decc809a914
This commit is contained in:
Copybara-Service 2022-01-25 05:53:58 -08:00
commit 5c9245d50d
13 changed files with 347 additions and 689 deletions

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
cmake_minimum_required(VERSION 3.12) cmake_minimum_required(VERSION 3.13..3.22)
# Fix Ninja generator output to not rebuild entire sub-trees needlessly. # Fix Ninja generator output to not rebuild entire sub-trees needlessly.
if(CMAKE_GENERATOR MATCHES "Ninja") if(CMAKE_GENERATOR MATCHES "Ninja")

View File

@ -12,13 +12,15 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
function(check_target target) function(sapi_check_target target)
if(NOT TARGET ${target}) if(NOT TARGET ${target})
message(FATAL_ERROR " SAPI: compiling Sandboxed API requires a ${target} message(FATAL_ERROR " SAPI: compiling Sandboxed API requires a ${target}
CMake target in your project") CMake target in your project")
endif() endif()
endfunction() endfunction()
include(SapiFetchContent)
# Use static libraries # Use static libraries
set(_sapi_saved_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) set(_sapi_saved_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
if (SAPI_ENABLE_SHARED_LIBS) if (SAPI_ENABLE_SHARED_LIBS)
@ -36,35 +38,38 @@ else()
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX}) set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
endif() endif()
set(_sapi_saved_BUILD_TESTING ${BUILD_TESTING})
set(BUILD_TESTING OFF) # No need to build test code of our deps
if(SAPI_ENABLE_TESTS) if(SAPI_ENABLE_TESTS)
if(SAPI_DOWNLOAD_GOOGLETEST) if(SAPI_DOWNLOAD_GOOGLETEST)
include(cmake/googletest.cmake) include(cmake/googletest.cmake)
endif() endif()
check_target(gtest) sapi_check_target(gtest)
check_target(gtest_main) sapi_check_target(gtest_main)
check_target(gmock) sapi_check_target(gmock)
if(SAPI_DOWNLOAD_BENCHMARK) if(SAPI_DOWNLOAD_BENCHMARK)
include(cmake/benchmark.cmake) include(cmake/benchmark.cmake)
endif() endif()
check_target(benchmark) sapi_check_target(benchmark)
endif() endif()
if(SAPI_DOWNLOAD_ABSL) if(SAPI_DOWNLOAD_ABSL)
include(cmake/abseil-cpp.cmake) include(cmake/abseil-cpp.cmake)
endif() endif()
check_target(absl::core_headers) sapi_check_target(absl::core_headers)
if(SAPI_DOWNLOAD_LIBCAP) if(SAPI_DOWNLOAD_LIBCAP)
include(cmake/libcap.cmake) include(cmake/libcap.cmake)
check_target(libcap::libcap) sapi_check_target(libcap::libcap)
else() else()
find_package(Libcap REQUIRED) find_package(Libcap REQUIRED)
endif() endif()
if(SAPI_DOWNLOAD_LIBFFI) if(SAPI_DOWNLOAD_LIBFFI)
include(cmake/libffi.cmake) include(cmake/libffi.cmake)
check_target(libffi::libffi) sapi_check_target(libffi::libffi)
else() else()
find_package(Libffi REQUIRED) find_package(Libffi REQUIRED)
endif() endif()
@ -72,32 +77,32 @@ endif()
if(SAPI_DOWNLOAD_LIBUNWIND) if(SAPI_DOWNLOAD_LIBUNWIND)
include(cmake/libunwind.cmake) include(cmake/libunwind.cmake)
endif() endif()
check_target(unwind_ptrace_wrapped) sapi_check_target(unwind_ptrace_wrapped)
if(SAPI_DOWNLOAD_GFLAGS) if(SAPI_DOWNLOAD_GFLAGS)
include(cmake/gflags.cmake) include(cmake/gflags.cmake)
sapi_check_target(gflags)
else()
find_package(gflags REQUIRED)
endif() endif()
check_target(gflags)
if(SAPI_DOWNLOAD_GLOG) if(SAPI_DOWNLOAD_GLOG)
include(cmake/glog.cmake) include(cmake/glog.cmake)
endif() endif()
check_target(glog::glog) sapi_check_target(glog::glog)
# TODO(cblichmann): Check if this is needed/works with system lib
add_dependencies(glog gflags::gflags) add_dependencies(glog gflags::gflags)
if(SAPI_DOWNLOAD_PROTOBUF) if(SAPI_DOWNLOAD_PROTOBUF)
include(cmake/protobuf.cmake) include(cmake/protobuf.cmake)
check_target(protobuf::libprotobuf)
check_target(protobuf::protoc)
else()
find_package(Protobuf REQUIRED)
endif() endif()
find_package(Protobuf REQUIRED)
if(SAPI_ENABLE_EXAMPLES) if(SAPI_ENABLE_EXAMPLES)
if(SAPI_DOWNLOAD_ZLIB) if(SAPI_DOWNLOAD_ZLIB)
include(cmake/zlib.cmake) include(cmake/zlib.cmake)
check_target(ZLIB::ZLIB) sapi_check_target(ZLIB::ZLIB)
else() else()
find_package(ZLIB REQUIRED) find_package(ZLIB REQUIRED)
endif() endif()
@ -112,5 +117,8 @@ if(NOT SAPI_ENABLE_GENERATOR)
set(SAPI_PYTHON3_EXECUTABLE "${Python3_EXECUTABLE}" CACHE INTERNAL "" FORCE) set(SAPI_PYTHON3_EXECUTABLE "${Python3_EXECUTABLE}" CACHE INTERNAL "" FORCE)
endif() endif()
# Undo global change # Undo global changes
if(_sapi_saved_BUILD_TESTING)
set(BUILD_TESTING "${_sapi_saved_BUILD_TESTING}")
endif()
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_sapi_saved_CMAKE_FIND_LIBRARY_SUFFIXES}) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_sapi_saved_CMAKE_FIND_LIBRARY_SUFFIXES})

View File

@ -0,0 +1,32 @@
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include(FetchContent)
if(CMAKE_VERSION VERSION_LESS 3.14)
# Simple implementation for CMake 3.13, which is missing this.
macro(FetchContent_MakeAvailable)
foreach(content_name IN ITEMS ${ARGV})
string(TOLOWER ${content_name} content_name_lower)
FetchContent_GetProperties(${content_name})
if(NOT ${content_name_lower}_POPULATED)
FetchContent_Populate(${content_name})
if(EXISTS ${${content_name_lower}_SOURCE_DIR}/CMakeLists.txt)
add_subdirectory(${${content_name_lower}_SOURCE_DIR}
${${content_name_lower}_BINARY_DIR})
endif()
endif()
endforeach()
endmacro()
endif()

View File

@ -12,57 +12,13 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/absl-populate") FetchContent_Declare(absl
GIT_REPOSITORY https://github.com/abseil/abseil-cpp
set(SAPI_ABSL_GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git GIT_TAG d96e287417766deddbff2d01b96321288c59491e # 2021-04-23
CACHE STRING "")
set(SAPI_ABSL_GIT_TAG d96e287417766deddbff2d01b96321288c59491e
CACHE STRING "") # 2021-04-23
set(SAPI_ABSL_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/absl-src" CACHE STRING "")
set(SAPI_ABSL_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/absl-build" CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(absl-populate NONE)
include(ExternalProject)
ExternalProject_Add(absl
GIT_REPOSITORY \"${SAPI_ABSL_GIT_REPOSITORY}\"
GIT_TAG \"${SAPI_ABSL_GIT_TAG}\"
SOURCE_DIR \"${SAPI_ABSL_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_ABSL_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
")
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(_sapi_saved_BUILD_TESTING ${BUILD_TESTING})
set(ABSL_CXX_STANDARD ${SAPI_CXX_STANDARD} CACHE STRING "" FORCE) set(ABSL_CXX_STANDARD ${SAPI_CXX_STANDARD} CACHE STRING "" FORCE)
set(ABSL_ENABLE_INSTALL ON CACHE BOOL "" FORCE)
set(ABSL_PROPAGATE_CXX_STD ON CACHE BOOL "" FORCE) set(ABSL_PROPAGATE_CXX_STD ON CACHE BOOL "" FORCE)
set(ABSL_RUN_TESTS OFF CACHE BOOL "" FORCE) set(ABSL_RUN_TESTS OFF CACHE BOOL "" FORCE)
set(ABSL_USE_GOOGLETEST_HEAD OFF CACHE BOOL "" FORCE) set(ABSL_USE_GOOGLETEST_HEAD OFF CACHE BOOL "" FORCE)
set(BUILD_TESTING OFF) # Avoid errors when re-configuring SAPI
add_subdirectory("${SAPI_ABSL_SOURCE_DIR}" FetchContent_MakeAvailable(absl)
"${SAPI_ABSL_BINARY_DIR}" EXCLUDE_FROM_ALL)
if(_sapi_saved_BUILD_TESTING)
set(BUILD_TESTING "${_sapi_saved_BUILD_TESTING}")
endif()

View File

@ -12,50 +12,11 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/benchmark-populate") FetchContent_Declare(benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
set(SAPI_BENCHMARK_GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG 3b3de69400164013199ea448f051d94d7fc7d81f # 2021-12-14
CACHE STRING "")
set(SAPI_BENCHMARK_GIT_TAG 3b3de69400164013199ea448f051d94d7fc7d81f
CACHE STRING "") # 2021-12-14
set(SAPI_BENCHMARK_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/benchmark-src"
CACHE STRING "")
set(SAPI_BENCHMARK_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/benchmark-build"
CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(benchmark-populate NONE)
include(ExternalProject)
ExternalProject_Add(benchmark
GIT_REPOSITORY \"${SAPI_BENCHMARK_GIT_REPOSITORY}\"
GIT_TAG \"${SAPI_BENCHMARK_GIT_TAG}\"
SOURCE_DIR \"${SAPI_BENCHMARK_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_BENCHMARK_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
")
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(BENCHMARK_ENABLE_TESTING OFF) set(BENCHMARK_ENABLE_TESTING OFF)
set(BENCHMARK_ENABLE_EXCEPTIONS OFF) set(BENCHMARK_ENABLE_EXCEPTIONS OFF)
set(BENCHMARK_ENABLE_GTEST_TESTS OFF) set(BENCHMARK_ENABLE_GTEST_TESTS OFF)
FetchContent_MakeAvailable(benchmark)
add_subdirectory("${SAPI_BENCHMARK_SOURCE_DIR}"
"${SAPI_BENCHMARK_BINARY_DIR}" EXCLUDE_FROM_ALL)

View File

@ -12,52 +12,14 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/gflags-populate") FetchContent_Declare(gflags
GIT_REPOSITORY https://github.com/gflags/gflags.git
set(SAPI_GFLAGS_GIT_REPOSITORY https://github.com/gflags/gflags.git GIT_TAG addd749114fab4f24b7ea1e0f2f837584389e52c # 2020-03-18
CACHE STRING "")
set(SAPI_GFLAGS_GIT_TAG addd749114fab4f24b7ea1e0f2f837584389e52c
CACHE STRING "") # 2020-03-18
set(SAPI_GFLAGS_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/gflags-src"
CACHE STRING "")
set(SAPI_GFLAGS_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/gflags-build"
CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(gflags-populate NONE)
include(ExternalProject)
ExternalProject_Add(gflags
GIT_REPOSITORY \"${SAPI_GFLAGS_GIT_REPOSITORY}\"
GIT_TAG \"${SAPI_GFLAGS_GIT_TAG}\"
SOURCE_DIR \"${SAPI_GFLAGS_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_GFLAGS_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
")
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(GFLAGS_IS_SUBPROJECT TRUE) set(GFLAGS_IS_SUBPROJECT TRUE)
set(GFLAGS_BUILD_SHARED_LIBS ${SAPI_ENABLE_SHARED_LIBS}) set(GFLAGS_BUILD_SHARED_LIBS ${SAPI_ENABLE_SHARED_LIBS})
set(GFLAGS_INSTALL_SHARED_LIBS ${SAPI_ENABLE_SHARED_LIBS}) set(GFLAGS_INSTALL_SHARED_LIBS ${SAPI_ENABLE_SHARED_LIBS})
set(GFLAGS_INSTALL_HEADERS OFF) # TODO: Temporary off set(GFLAGS_INSTALL_HEADERS OFF)
set(GFLAGS_BUILD_TESTING FALSE) set(GFLAGS_BUILD_TESTING FALSE)
add_subdirectory("${SAPI_GFLAGS_SOURCE_DIR}" FetchContent_MakeAvailable(gflags)
"${SAPI_GFLAGS_BINARY_DIR}" EXCLUDE_FROM_ALL)

View File

@ -12,81 +12,31 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# Allows use target_link_libraries() with targets in other directories. FetchContent_Declare(glog
if(POLICY CMP0079) GIT_REPOSITORY https://github.com/google/glog.git
cmake_policy(SET CMP0079 NEW) GIT_TAG 3ba8976592274bc1f907c402ce22558011d6fc5e # 2020-02-16
endif()
set(workdir "${CMAKE_BINARY_DIR}/_deps/glog-populate")
set(SAPI_GLOG_GIT_REPOSITORY https://github.com/google/glog.git CACHE STRING "")
set(SAPI_GLOG_GIT_TAG 3ba8976592274bc1f907c402ce22558011d6fc5e
CACHE STRING "") # 2020-02-16
set(SAPI_GLOG_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/glog-src" CACHE STRING "")
set(SAPI_GLOG_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/glog-build" CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(glog-populate NONE)
include(ExternalProject)
ExternalProject_Add(glog
GIT_REPOSITORY \"${SAPI_GLOG_GIT_REPOSITORY}\"
GIT_TAG \"${SAPI_GLOG_GIT_TAG}\"
SOURCE_DIR \"${SAPI_GLOG_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_GLOG_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
")
execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND "${CMAKE_COMMAND}" --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(_sapi_saved_BUILD_TESTING ${BUILD_TESTING})
# Force gflags from subdirectory # Force gflags from subdirectory
set(WITH_GFLAGS FALSE CACHE BOOL "" FORCE) set(WITH_GFLAGS FALSE CACHE BOOL "" FORCE)
set(HAVE_LIB_GFLAGS TRUE CACHE STRING "" FORCE) set(HAVE_LIB_GFLAGS TRUE CACHE STRING "" FORCE)
set(WITH_UNWIND FALSE CACHE BOOL "" FORCE) set(WITH_UNWIND FALSE CACHE BOOL "" FORCE)
set(UNWIND_LIBRARY FALSE) set(UNWIND_LIBRARY FALSE)
set(HAVE_PWD_H FALSE)
set(HAVE_PWD_H FALSE)
set(WITH_PKGCONFIG TRUE CACHE BOOL "" FORCE) set(WITH_PKGCONFIG TRUE CACHE BOOL "" FORCE)
set(BUILD_TESTING FALSE)
set(BUILD_SHARED_LIBS ${SAPI_ENABLE_SHARED_LIBS}) set(BUILD_SHARED_LIBS ${SAPI_ENABLE_SHARED_LIBS})
add_subdirectory("${SAPI_GLOG_SOURCE_DIR}" FetchContent_MakeAvailable(glog)
"${SAPI_GLOG_BINARY_DIR}" EXCLUDE_FROM_ALL)
target_include_directories(glog PUBLIC target_include_directories(glog PUBLIC
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/_deps/gflags-build/include> $<BUILD_INTERFACE:${gflags_BINARY_DIR}/include>
$<BUILD_INTERFACE:${SAPI_GLOG_BINARY_DIR}> $<BUILD_INTERFACE:${gflags_BINARY_DIR}>
) )
add_library(gflags_nothreads STATIC IMPORTED) add_library(gflags_nothreads STATIC IMPORTED)
set_target_properties(gflags_nothreads PROPERTIES set_target_properties(gflags_nothreads PROPERTIES
IMPORTED_LOCATION IMPORTED_LOCATION "${gflags_BINARY_DIR}/libgflags_nothreads.a"
"${CMAKE_BINARY_DIR}/_deps/gflags-build/libgflags_nothreads.a") )
target_link_libraries(glog PRIVATE target_link_libraries(glog PRIVATE
-Wl,--whole-archive -Wl,--whole-archive gflags_nothreads -Wl,--no-whole-archive
gflags_nothreads
-Wl,--no-whole-archive
) )
if(_sapi_saved_BUILD_TESTING)
set(BUILD_TESTING "${_sapi_saved_BUILD_TESTING}")
endif()

View File

@ -12,48 +12,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/googletest-populate") FetchContent_Declare(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
set(SAPI_GOOGLETEST_GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG 9a32aee22d771387c494be2d8519fbdf46a713b2 # 2021-12-20
CACHE STRING "")
set(SAPI_GOOGLETEST_GIT_TAG 9a32aee22d771387c494be2d8519fbdf46a713b2
CACHE STRING "") # 2021-12-20
set(SAPI_GOOGLETEST_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/googletest-src"
CACHE STRING "")
set(SAPI_GOOGLETEST_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/googletest-build"
CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(googletest-populate NONE)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY \"${SAPI_GOOGLETEST_GIT_REPOSITORY}\"
GIT_TAG \"${SAPI_GOOGLETEST_GIT_TAG}\"
SOURCE_DIR \"${SAPI_GOOGLETEST_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_GOOGLETEST_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
") FetchContent_MakeAvailable(googletest)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
add_subdirectory("${SAPI_GOOGLETEST_SOURCE_DIR}"
"${SAPI_GOOGLETEST_BINARY_DIR}" EXCLUDE_FROM_ALL)

View File

@ -12,108 +12,71 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/libcap-populate") FetchContent_Declare(libcap
URL https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.27.tar.gz
set(SAPI_LIBCAP_URL URL_HASH SHA256=260b549c154b07c3cdc16b9ccc93c04633c39f4fb6a4a3b8d1fa5b8a9c3f5fe8
https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.27.tar.gz
CACHE STRING "")
set(SAPI_LIBCAP_URL_HASH
SHA256=260b549c154b07c3cdc16b9ccc93c04633c39f4fb6a4a3b8d1fa5b8a9c3f5fe8
CACHE STRING "") # 2019-04-16
set(SAPI_LIBCAP_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/libcap-src"
CACHE STRING "")
set(SAPI_LIBCAP_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/libcap-build"
CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(libcap-populate NONE)
include(ExternalProject)
ExternalProject_Add(libcap
URL \"${SAPI_LIBCAP_URL}\"
URL_HASH \"${SAPI_LIBCAP_URL_HASH}\"
SOURCE_DIR \"${SAPI_LIBCAP_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_LIBCAP_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
") FetchContent_MakeAvailable(libcap)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . set(libcap_INCLUDE_DIR "${libcap_SOURCE_DIR}/libcap/include")
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build . add_custom_command(OUTPUT ${libcap_SOURCE_DIR}/libcap/cap_names.list.h
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(libcap_INCLUDE_DIR "${SAPI_LIBCAP_SOURCE_DIR}/libcap/include")
add_custom_command(OUTPUT ${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.list.h
VERBATIM VERBATIM
COMMAND # Use the same logic as libcap/Makefile COMMAND # Use the same logic as libcap/Makefile
sed -ne [=[/^#define[ \\t]CAP[_A-Z]\+[ \\t]\+[0-9]\+/{s/^#define \([^ \\t]*\)[ \\t]*\([^ \\t]*\)/\{\"\1\",\2\},/p;}]=] sed -ne [=[/^#define[ \\t]CAP[_A-Z]\+[ \\t]\+[0-9]\+/{s/^#define \([^ \\t]*\)[ \\t]*\([^ \\t]*\)/\{\"\1\",\2\},/p;}]=]
${SAPI_LIBCAP_SOURCE_DIR}/libcap/include/uapi/linux/capability.h | ${libcap_SOURCE_DIR}/libcap/include/uapi/linux/capability.h |
tr [:upper:] [:lower:] > ${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.list.h tr [:upper:] [:lower:] > ${libcap_SOURCE_DIR}/libcap/cap_names.list.h
) )
if (CMAKE_CROSSCOMPILING AND BUILD_C_COMPILER) if (CMAKE_CROSSCOMPILING AND BUILD_C_COMPILER)
add_custom_command(OUTPUT ${SAPI_LIBCAP_SOURCE_DIR}/libcap/libcap_makenames add_custom_command(OUTPUT ${libcap_SOURCE_DIR}/libcap/libcap_makenames
VERBATIM VERBATIM
# Use the same logic as libcap/Makefile # Use the same logic as libcap/Makefile
COMMAND ${BUILD_C_COMPILER} ${BUILD_C_FLAGS} COMMAND ${BUILD_C_COMPILER} ${BUILD_C_FLAGS}
${SAPI_LIBCAP_SOURCE_DIR}/libcap/_makenames.c ${libcap_SOURCE_DIR}/libcap/_makenames.c
-o ${SAPI_LIBCAP_SOURCE_DIR}/libcap/libcap_makenames -o ${libcap_SOURCE_DIR}/libcap/libcap_makenames
DEPENDS ${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.list.h DEPENDS ${libcap_SOURCE_DIR}/libcap/cap_names.list.h
${SAPI_LIBCAP_SOURCE_DIR}/libcap/_makenames.c ${libcap_SOURCE_DIR}/libcap/_makenames.c
) )
add_custom_command(OUTPUT ${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.h add_custom_command(OUTPUT ${libcap_SOURCE_DIR}/libcap/cap_names.h
COMMAND ${SAPI_LIBCAP_SOURCE_DIR}/libcap/libcap_makenames > COMMAND ${libcap_SOURCE_DIR}/libcap/libcap_makenames >
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.h ${libcap_SOURCE_DIR}/libcap/cap_names.h
DEPENDS ${SAPI_LIBCAP_SOURCE_DIR}/libcap/libcap_makenames DEPENDS ${libcap_SOURCE_DIR}/libcap/libcap_makenames
) )
else() else()
add_executable(libcap_makenames add_executable(libcap_makenames
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.list.h ${libcap_SOURCE_DIR}/libcap/cap_names.list.h
${SAPI_LIBCAP_SOURCE_DIR}/libcap/_makenames.c ${libcap_SOURCE_DIR}/libcap/_makenames.c
) )
target_include_directories(libcap_makenames PUBLIC target_include_directories(libcap_makenames PUBLIC
${SAPI_LIBCAP_SOURCE_DIR}/libcap ${libcap_SOURCE_DIR}/libcap
${SAPI_LIBCAP_SOURCE_DIR}/libcap/include ${libcap_SOURCE_DIR}/libcap/include
${SAPI_LIBCAP_SOURCE_DIR}/libcap/include/uapi ${libcap_SOURCE_DIR}/libcap/include/uapi
) )
add_custom_command(OUTPUT ${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.h add_custom_command(OUTPUT ${libcap_SOURCE_DIR}/libcap/cap_names.h
COMMAND libcap_makenames > ${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.h COMMAND libcap_makenames > ${libcap_SOURCE_DIR}/libcap/cap_names.h
) )
endif() endif()
add_library(cap STATIC add_library(cap STATIC
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_alloc.c ${libcap_SOURCE_DIR}/libcap/cap_alloc.c
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_extint.c ${libcap_SOURCE_DIR}/libcap/cap_extint.c
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_file.c ${libcap_SOURCE_DIR}/libcap/cap_file.c
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_flag.c ${libcap_SOURCE_DIR}/libcap/cap_flag.c
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_names.h ${libcap_SOURCE_DIR}/libcap/cap_names.h
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_proc.c ${libcap_SOURCE_DIR}/libcap/cap_proc.c
${SAPI_LIBCAP_SOURCE_DIR}/libcap/cap_text.c ${libcap_SOURCE_DIR}/libcap/cap_text.c
${SAPI_LIBCAP_SOURCE_DIR}/libcap/include/uapi/linux/capability.h ${libcap_SOURCE_DIR}/libcap/include/uapi/linux/capability.h
${SAPI_LIBCAP_SOURCE_DIR}/libcap/libcap.h ${libcap_SOURCE_DIR}/libcap/libcap.h
) )
add_library(libcap::libcap ALIAS cap) add_library(libcap::libcap ALIAS cap)
target_include_directories(cap PUBLIC target_include_directories(cap PUBLIC
${SAPI_LIBCAP_SOURCE_DIR}/libcap ${libcap_SOURCE_DIR}/libcap
${SAPI_LIBCAP_SOURCE_DIR}/libcap/include ${libcap_SOURCE_DIR}/libcap/include
${SAPI_LIBCAP_SOURCE_DIR}/libcap/include/uapi ${libcap_SOURCE_DIR}/libcap/include/uapi
) )
target_compile_options(cap PRIVATE target_compile_options(cap PRIVATE
-Wno-tautological-compare -Wno-tautological-compare

View File

@ -12,105 +12,87 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/libffi-populate") FetchContent_Declare(libffi
URL https://github.com/libffi/libffi/releases/download/v3.3-rc2/libffi-3.3-rc2.tar.gz
set(SAPI_LIBFFI_URL URL_HASH SHA256=653ffdfc67fbb865f39c7e5df2a071c0beb17206ebfb0a9ecb18a18f63f6b263
https://github.com/libffi/libffi/releases/download/v3.3-rc2/libffi-3.3-rc2.tar.gz
CACHE STRING "")
set(SAPI_LIBFFI_URL_HASH
SHA256=653ffdfc67fbb865f39c7e5df2a071c0beb17206ebfb0a9ecb18a18f63f6b263
CACHE STRING "") # 2019-11-02
set(SAPI_LIBFFI_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/libffi-src"
CACHE STRING "")
set(SAPI_LIBFFI_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/libffi-build"
CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(libffi-populate NONE)
include(ExternalProject)
ExternalProject_Add(libffi
URL \"${SAPI_LIBFFI_URL}\"
URL_HASH \"${SAPI_LIBFFI_URL_HASH}\"
SOURCE_DIR \"${SAPI_LIBFFI_SOURCE_DIR}\"
CONFIGURE_COMMAND ./configure
--disable-dependency-tracking
--disable-builddir
${SAPI_THIRD_PARTY_CONFIGUREOPTS}
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
BUILD_IN_SOURCE TRUE
) )
") FetchContent_GetProperties(libffi)
if(NOT libffi_POPULATED)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . FetchContent_Populate(libffi)
RESULT_VARIABLE error set(libffi_STATUS_FILE "${libffi_SOURCE_DIR}/config.status")
WORKING_DIRECTORY "${workdir}") if(EXISTS "${libffi_STATUS_FILE}")
if(error) file(SHA256 "${libffi_STATUS_FILE}" _sapi_CONFIG_STATUS)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}") endif()
if(NOT _sapi_CONFIG_STATUS STREQUAL "${libffi_CONFIG_STATUS}")
message("-- Running ./configure for libffi...")
execute_process(
COMMAND ./configure --disable-dependency-tracking
--disable-builddir
--quiet
WORKING_DIRECTORY "${libffi_SOURCE_DIR}"
RESULT_VARIABLE _sapi_libffi_config_result
)
if(NOT _sapi_libffi_config_result EQUAL "0")
message(FATAL_ERROR "Configuration of libffi dependency failed")
endif()
file(SHA256 "${libffi_SOURCE_DIR}/config.status" _sapi_CONFIG_STATUS)
set(libffi_CONFIG_STATUS "${_sapi_CONFIG_STATUS}" CACHE INTERNAL "")
endif()
endif() endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build . set(libffi_INCLUDE_DIR ${libffi_SOURCE_DIR}/libffi/include)
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(libffi_INCLUDE_DIR ${SAPI_LIBFFI_SOURCE_DIR}/libffi/include)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
list(APPEND _ffi_platform_srcs list(APPEND _ffi_platform_srcs
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/asmnames.h ${libffi_SOURCE_DIR}/src/x86/asmnames.h
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/ffi.c ${libffi_SOURCE_DIR}/src/x86/ffi.c
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/ffi64.c ${libffi_SOURCE_DIR}/src/x86/ffi64.c
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/ffiw64.c ${libffi_SOURCE_DIR}/src/x86/ffiw64.c
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/internal.h ${libffi_SOURCE_DIR}/src/x86/internal.h
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/internal64.h ${libffi_SOURCE_DIR}/src/x86/internal64.h
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/sysv.S ${libffi_SOURCE_DIR}/src/x86/sysv.S
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/unix64.S ${libffi_SOURCE_DIR}/src/x86/unix64.S
${SAPI_LIBFFI_SOURCE_DIR}/src/x86/win64.S ${libffi_SOURCE_DIR}/src/x86/win64.S
) )
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64")
list(APPEND _ffi_platform_srcs list(APPEND _ffi_platform_srcs
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/ffi.c ${libffi_SOURCE_DIR}/src/powerpc/ffi.c
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/ffi_linux64.c ${libffi_SOURCE_DIR}/src/powerpc/ffi_linux64.c
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/ffi_sysv.c ${libffi_SOURCE_DIR}/src/powerpc/ffi_sysv.c
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/linux64.S ${libffi_SOURCE_DIR}/src/powerpc/linux64.S
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/linux64_closure.S ${libffi_SOURCE_DIR}/src/powerpc/linux64_closure.S
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/ppc_closure.S ${libffi_SOURCE_DIR}/src/powerpc/ppc_closure.S
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/sysv.S ${libffi_SOURCE_DIR}/src/powerpc/sysv.S
# Textual headers # Textual headers
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/ffi_powerpc.h ${libffi_SOURCE_DIR}/src/powerpc/ffi_powerpc.h
${SAPI_LIBFFI_SOURCE_DIR}/src/powerpc/asm.h ${libffi_SOURCE_DIR}/src/powerpc/asm.h
) )
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
list(APPEND _ffi_platform_srcs list(APPEND _ffi_platform_srcs
${SAPI_LIBFFI_SOURCE_DIR}/src/aarch64/ffi.c ${libffi_SOURCE_DIR}/src/aarch64/ffi.c
${SAPI_LIBFFI_SOURCE_DIR}/src/aarch64/internal.h ${libffi_SOURCE_DIR}/src/aarch64/internal.h
${SAPI_LIBFFI_SOURCE_DIR}/src/aarch64/sysv.S ${libffi_SOURCE_DIR}/src/aarch64/sysv.S
) )
endif() endif()
add_library(ffi STATIC add_library(ffi STATIC
${SAPI_LIBFFI_SOURCE_DIR}/fficonfig.h ${libffi_SOURCE_DIR}/fficonfig.h
${SAPI_LIBFFI_SOURCE_DIR}/include/ffi.h ${libffi_SOURCE_DIR}/include/ffi.h
${SAPI_LIBFFI_SOURCE_DIR}/include/ffi_cfi.h ${libffi_SOURCE_DIR}/include/ffi_cfi.h
${SAPI_LIBFFI_SOURCE_DIR}/include/ffi_common.h ${libffi_SOURCE_DIR}/include/ffi_common.h
${SAPI_LIBFFI_SOURCE_DIR}/include/ffitarget.h ${libffi_SOURCE_DIR}/include/ffitarget.h
${SAPI_LIBFFI_SOURCE_DIR}/src/closures.c ${libffi_SOURCE_DIR}/src/closures.c
${SAPI_LIBFFI_SOURCE_DIR}/src/debug.c ${libffi_SOURCE_DIR}/src/debug.c
${SAPI_LIBFFI_SOURCE_DIR}/src/java_raw_api.c ${libffi_SOURCE_DIR}/src/java_raw_api.c
${SAPI_LIBFFI_SOURCE_DIR}/src/prep_cif.c ${libffi_SOURCE_DIR}/src/prep_cif.c
${SAPI_LIBFFI_SOURCE_DIR}/src/raw_api.c ${libffi_SOURCE_DIR}/src/raw_api.c
${SAPI_LIBFFI_SOURCE_DIR}/src/types.c ${libffi_SOURCE_DIR}/src/types.c
${_ffi_platform_srcs} ${_ffi_platform_srcs}
) )
add_library(libffi::libffi ALIAS ffi) add_library(libffi::libffi ALIAS ffi)
target_include_directories(ffi PUBLIC target_include_directories(ffi PUBLIC
${SAPI_LIBFFI_SOURCE_DIR} ${libffi_SOURCE_DIR}
${SAPI_LIBFFI_SOURCE_DIR}/include ${libffi_SOURCE_DIR}/include
) )
target_compile_options(ffi PRIVATE target_compile_options(ffi PRIVATE
-Wno-vla -Wno-vla

View File

@ -12,204 +12,185 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/libunwind-populate") FetchContent_Declare(libunwind
URL https://github.com/libunwind/libunwind/releases/download/v1.6.2/libunwind-1.6.2.tar.gz
set(SAPI_LIBUNWIND_URL URL_HASH SHA256=4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976
https://github.com/libunwind/libunwind/releases/download/v1.6.2/libunwind-1.6.2.tar.gz )
CACHE STRING "") FetchContent_GetProperties(libunwind)
set(SAPI_LIBUNWIND_URL_HASH if(NOT libunwind_POPULATED)
SHA256=4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976 FetchContent_Populate(libunwind)
CACHE STRING "") set(libunwind_STATUS_FILE "${libunwind_SOURCE_DIR}/config.status")
set(SAPI_LIBUNWIND_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/libunwind-src" if(EXISTS "${libunwind_STATUS_FILE}")
CACHE STRING "") file(SHA256 "${libunwind_STATUS_FILE}" _sapi_CONFIG_STATUS)
set(SAPI_LIBUNWIND_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/libunwind-build" endif()
CACHE STRING "") if(NOT _sapi_CONFIG_STATUS STREQUAL "${libunwind_CONFIG_STATUS}")
message("-- Running ./configure for libunwind...")
file(WRITE "${workdir}/CMakeLists.txt" "\ execute_process(
cmake_minimum_required(VERSION ${CMAKE_VERSION}) COMMAND ./configure --disable-dependency-tracking
project(libunwind-populate NONE)
include(ExternalProject)
ExternalProject_Add(libunwind
URL \"${SAPI_LIBUNWIND_URL}\"
URL_HASH \"${SAPI_LIBUNWIND_URL_HASH}\"
SOURCE_DIR \"${SAPI_LIBUNWIND_SOURCE_DIR}\"
CONFIGURE_COMMAND ./configure
--disable-dependency-tracking
--disable-documentation
--disable-minidebuginfo --disable-minidebuginfo
--disable-shared --disable-shared
--enable-ptrace --enable-ptrace
${SAPI_THIRD_PARTY_CONFIGUREOPTS} --quiet
BUILD_COMMAND \"\" WORKING_DIRECTORY "${libunwind_SOURCE_DIR}"
INSTALL_COMMAND \"\" RESULT_VARIABLE _sapi_libunwind_config_result
TEST_COMMAND \"\"
BUILD_IN_SOURCE TRUE
) )
") if(NOT _sapi_libunwind_config_result EQUAL "0")
message(FATAL_ERROR "Configuration of libunwind dependency failed")
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . endif()
RESULT_VARIABLE error file(SHA256 "${libunwind_SOURCE_DIR}/config.status" _sapi_CONFIG_STATUS)
WORKING_DIRECTORY "${workdir}") set(libunwind_CONFIG_STATUS "${_sapi_CONFIG_STATUS}" CACHE INTERNAL "")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif() endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif() endif()
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(_unwind_cpu "x86_64") set(_unwind_cpu "x86_64")
list(APPEND _unwind_platform_srcs list(APPEND _unwind_platform_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gcreate_addr_space.c ${libunwind_SOURCE_DIR}/src/x86_64/Gcreate_addr_space.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gglobal.c ${libunwind_SOURCE_DIR}/src/x86_64/Gglobal.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Ginit.c ${libunwind_SOURCE_DIR}/src/x86_64/Ginit.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gos-linux.c ${libunwind_SOURCE_DIR}/src/x86_64/Gos-linux.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gregs.c ${libunwind_SOURCE_DIR}/src/x86_64/Gregs.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gresume.c ${libunwind_SOURCE_DIR}/src/x86_64/Gresume.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gstash_frame.c ${libunwind_SOURCE_DIR}/src/x86_64/Gstash_frame.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Gstep.c ${libunwind_SOURCE_DIR}/src/x86_64/Gstep.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/is_fpreg.c ${libunwind_SOURCE_DIR}/src/x86_64/is_fpreg.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/setcontext.S ${libunwind_SOURCE_DIR}/src/x86_64/setcontext.S
) )
list(APPEND _unwind_ptrace_srcs list(APPEND _unwind_ptrace_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/Ginit_remote.c ${libunwind_SOURCE_DIR}/src/x86_64/Ginit_remote.c
) )
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64")
set(_unwind_cpu "ppc64") set(_unwind_cpu "ppc64")
list(APPEND _unwind_platform_srcs list(APPEND _unwind_platform_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc/Gis_signal_frame.c ${libunwind_SOURCE_DIR}/src/ppc/Gis_signal_frame.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/Gcreate_addr_space.c ${libunwind_SOURCE_DIR}/src/ppc64/Gcreate_addr_space.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/Gglobal.c ${libunwind_SOURCE_DIR}/src/ppc64/Gglobal.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/Ginit.c ${libunwind_SOURCE_DIR}/src/ppc64/Ginit.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/Gregs.c ${libunwind_SOURCE_DIR}/src/ppc64/Gregs.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/Gresume.c ${libunwind_SOURCE_DIR}/src/ppc64/Gresume.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/Gstep.c ${libunwind_SOURCE_DIR}/src/ppc64/Gstep.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/get_func_addr.c ${libunwind_SOURCE_DIR}/src/ppc64/get_func_addr.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc64/is_fpreg.c ${libunwind_SOURCE_DIR}/src/ppc64/is_fpreg.c
) )
list(APPEND _unwind_ptrace_srcs list(APPEND _unwind_ptrace_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ppc/Ginit_remote.c ${libunwind_SOURCE_DIR}/src/ppc/Ginit_remote.c
) )
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
set(_unwind_cpu "aarch64") set(_unwind_cpu "aarch64")
list(APPEND _unwind_platform_srcs list(APPEND _unwind_platform_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gcreate_addr_space.c ${libunwind_SOURCE_DIR}/src/aarch64/Gcreate_addr_space.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gglobal.c ${libunwind_SOURCE_DIR}/src/aarch64/Gglobal.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Ginit.c ${libunwind_SOURCE_DIR}/src/aarch64/Ginit.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gis_signal_frame.c ${libunwind_SOURCE_DIR}/src/aarch64/Gis_signal_frame.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gregs.c ${libunwind_SOURCE_DIR}/src/aarch64/Gregs.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gresume.c ${libunwind_SOURCE_DIR}/src/aarch64/Gresume.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gstash_frame.c ${libunwind_SOURCE_DIR}/src/aarch64/Gstash_frame.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Gstep.c ${libunwind_SOURCE_DIR}/src/aarch64/Gstep.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/is_fpreg.c ${libunwind_SOURCE_DIR}/src/aarch64/is_fpreg.c
) )
list(APPEND _unwind_ptrace_srcs list(APPEND _unwind_ptrace_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/aarch64/Ginit_remote.c ${libunwind_SOURCE_DIR}/src/aarch64/Ginit_remote.c
) )
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm")
set(_unwind_cpu "arm") set(_unwind_cpu "arm")
list(APPEND _unwind_platform_srcs list(APPEND _unwind_platform_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gcreate_addr_space.c ${libunwind_SOURCE_DIR}/src/arm/Gcreate_addr_space.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gex_tables.c ${libunwind_SOURCE_DIR}/src/arm/Gex_tables.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gglobal.c ${libunwind_SOURCE_DIR}/src/arm/Gglobal.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Ginit.c ${libunwind_SOURCE_DIR}/src/arm/Ginit.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gis_signal_frame.c ${libunwind_SOURCE_DIR}/src/arm/Gis_signal_frame.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gregs.c ${libunwind_SOURCE_DIR}/src/arm/Gregs.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gresume.c ${libunwind_SOURCE_DIR}/src/arm/Gresume.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gstash_frame.c ${libunwind_SOURCE_DIR}/src/arm/Gstash_frame.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Gstep.c ${libunwind_SOURCE_DIR}/src/arm/Gstep.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/is_fpreg.c ${libunwind_SOURCE_DIR}/src/arm/is_fpreg.c
) )
list(APPEND _unwind_ptrace_srcs list(APPEND _unwind_ptrace_srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/arm/Ginit_remote.c ${libunwind_SOURCE_DIR}/src/arm/Ginit_remote.c
) )
endif() endif()
add_library(unwind_ptrace_wrapped STATIC add_library(unwind_ptrace_wrapped STATIC
# internal_headers # internal_headers
${SAPI_LIBUNWIND_SOURCE_DIR}/include/compiler.h ${libunwind_SOURCE_DIR}/include/compiler.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/config.h ${libunwind_SOURCE_DIR}/include/config.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/dwarf.h ${libunwind_SOURCE_DIR}/include/dwarf.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/dwarf-eh.h ${libunwind_SOURCE_DIR}/include/dwarf-eh.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/dwarf_i.h ${libunwind_SOURCE_DIR}/include/dwarf_i.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind.h ${libunwind_SOURCE_DIR}/include/libunwind.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind-common.h ${libunwind_SOURCE_DIR}/include/libunwind-common.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind-coredump.h ${libunwind_SOURCE_DIR}/include/libunwind-coredump.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind-dynamic.h ${libunwind_SOURCE_DIR}/include/libunwind-dynamic.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind-ptrace.h ${libunwind_SOURCE_DIR}/include/libunwind-ptrace.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind-x86_64.h ${libunwind_SOURCE_DIR}/include/libunwind-x86_64.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind_i.h ${libunwind_SOURCE_DIR}/include/libunwind_i.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/mempool.h ${libunwind_SOURCE_DIR}/include/mempool.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/remote.h ${libunwind_SOURCE_DIR}/include/remote.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/tdep-x86_64/dwarf-config.h ${libunwind_SOURCE_DIR}/include/tdep-x86_64/dwarf-config.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/tdep-x86_64/libunwind_i.h ${libunwind_SOURCE_DIR}/include/tdep-x86_64/libunwind_i.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/tdep/dwarf-config.h ${libunwind_SOURCE_DIR}/include/tdep/dwarf-config.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/tdep/libunwind_i.h ${libunwind_SOURCE_DIR}/include/tdep/libunwind_i.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/unwind.h ${libunwind_SOURCE_DIR}/include/unwind.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/elf32.h ${libunwind_SOURCE_DIR}/src/elf32.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/elf64.h ${libunwind_SOURCE_DIR}/src/elf64.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/elfxx.h ${libunwind_SOURCE_DIR}/src/elfxx.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/os-linux.h ${libunwind_SOURCE_DIR}/src/os-linux.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/init.h ${libunwind_SOURCE_DIR}/src/x86_64/init.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/offsets.h ${libunwind_SOURCE_DIR}/src/x86_64/offsets.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/ucontext_i.h ${libunwind_SOURCE_DIR}/src/x86_64/ucontext_i.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/x86_64/unwind_i.h ${libunwind_SOURCE_DIR}/src/x86_64/unwind_i.h
# included_sources # included_sources
${SAPI_LIBUNWIND_SOURCE_DIR}/src/elf64.h ${libunwind_SOURCE_DIR}/src/elf64.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/elfxx.h ${libunwind_SOURCE_DIR}/src/elfxx.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/elfxx.c ${libunwind_SOURCE_DIR}/src/elfxx.c
# sources_common # sources_common
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/Gexpr.c ${libunwind_SOURCE_DIR}/src/dwarf/Gexpr.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/Gfde.c ${libunwind_SOURCE_DIR}/src/dwarf/Gfde.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/Gfind_proc_info-lsb.c ${libunwind_SOURCE_DIR}/src/dwarf/Gfind_proc_info-lsb.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/Gfind_unwind_table.c ${libunwind_SOURCE_DIR}/src/dwarf/Gfind_unwind_table.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/Gparser.c ${libunwind_SOURCE_DIR}/src/dwarf/Gparser.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/Gpe.c ${libunwind_SOURCE_DIR}/src/dwarf/Gpe.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/dwarf/global.c ${libunwind_SOURCE_DIR}/src/dwarf/global.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gdestroy_addr_space.c ${libunwind_SOURCE_DIR}/src/mi/Gdestroy_addr_space.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gdyn-extract.c ${libunwind_SOURCE_DIR}/src/mi/Gdyn-extract.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gfind_dynamic_proc_info.c ${libunwind_SOURCE_DIR}/src/mi/Gfind_dynamic_proc_info.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gget_accessors.c ${libunwind_SOURCE_DIR}/src/mi/Gget_accessors.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gget_proc_name.c ${libunwind_SOURCE_DIR}/src/mi/Gget_proc_name.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gget_reg.c ${libunwind_SOURCE_DIR}/src/mi/Gget_reg.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gput_dynamic_unwind_info.c ${libunwind_SOURCE_DIR}/src/mi/Gput_dynamic_unwind_info.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/flush_cache.c ${libunwind_SOURCE_DIR}/src/mi/flush_cache.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/init.c ${libunwind_SOURCE_DIR}/src/mi/init.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/mempool.c ${libunwind_SOURCE_DIR}/src/mi/mempool.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/os-linux.c ${libunwind_SOURCE_DIR}/src/os-linux.c
${_unwind_platform_srcs} ${_unwind_platform_srcs}
# srcs # srcs
${SAPI_LIBUNWIND_SOURCE_DIR}/src/mi/Gdyn-remote.c ${libunwind_SOURCE_DIR}/src/mi/Gdyn-remote.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_access_fpreg.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_access_fpreg.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_access_mem.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_access_mem.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_access_reg.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_access_reg.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_accessors.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_accessors.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_create.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_create.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_destroy.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_destroy.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_elf.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_elf.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_find_proc_info.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_find_proc_info.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_get_dyn_info_list_addr.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_get_dyn_info_list_addr.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_get_proc_name.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_get_proc_name.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_internal.h ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_internal.h
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_put_unwind_info.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_put_unwind_info.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_reg_offset.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_reg_offset.c
${SAPI_LIBUNWIND_SOURCE_DIR}/src/ptrace/_UPT_resume.c ${libunwind_SOURCE_DIR}/src/ptrace/_UPT_resume.c
# hdrs # hdrs
${SAPI_LIBUNWIND_SOURCE_DIR}/include/config.h ${libunwind_SOURCE_DIR}/include/config.h
${SAPI_LIBUNWIND_SOURCE_DIR}/include/libunwind.h ${libunwind_SOURCE_DIR}/include/libunwind.h
# source_ptrace # source_ptrace
${_unwind_ptrace_srcs} ${_unwind_ptrace_srcs}
) )
add_library(unwind::unwind_ptrace_wrapped ALIAS unwind_ptrace_wrapped) add_library(unwind::unwind_ptrace_wrapped ALIAS unwind_ptrace_wrapped)
target_include_directories(unwind_ptrace_wrapped PUBLIC target_include_directories(unwind_ptrace_wrapped PUBLIC
${SAPI_LIBUNWIND_SOURCE_DIR}/include ${libunwind_SOURCE_DIR}/include
${SAPI_LIBUNWIND_SOURCE_DIR}/include/tdep ${libunwind_SOURCE_DIR}/include/tdep
${SAPI_LIBUNWIND_SOURCE_DIR}/include/tdep-${_unwind_cpu} ${libunwind_SOURCE_DIR}/include/tdep-${_unwind_cpu}
${SAPI_LIBUNWIND_SOURCE_DIR}/src ${libunwind_SOURCE_DIR}/src
) )
target_compile_options(unwind_ptrace_wrapped PRIVATE target_compile_options(unwind_ptrace_wrapped PRIVATE
-fno-common -fno-common

View File

@ -12,53 +12,25 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/protobuf-populate") FetchContent_Declare(protobuf
GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
set(SAPI_PROTOBUF_GIT_REPOSITORY GIT_TAG v3.15.8 # 2021-04-08
https://github.com/protocolbuffers/protobuf.git GIT_SUBMODULES "cmake" # Workaround for CMake #20579
CACHE STRING "") SOURCE_SUBDIR cmake
set(SAPI_PROTOBUF_GIT_TAG v3.15.8 CACHE STRING "") # 2021-04-08
set(SAPI_PROTOBUF_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/protobuf-src"
CACHE STRING "")
set(SAPI_PROTOBUF_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/protobuf-build"
CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(protobuf-populate NONE)
include(ExternalProject)
ExternalProject_Add(protobuf
GIT_REPOSITORY \"${SAPI_PROTOBUF_GIT_REPOSITORY}\"
GIT_TAG \"${SAPI_PROTOBUF_GIT_TAG}\"
GIT_SUBMODULES \"cmake\" # Workaround for CMake #20579
SOURCE_DIR \"${SAPI_PROTOBUF_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_PROTOBUF_BINARY_DIR}\"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
")
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . set(protobuf_BUILD_TESTS OFF CACHE BOOL "" FORCE)
RESULT_VARIABLE error set(protobuf_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
WORKING_DIRECTORY "${workdir}") set(protobuf_WITH_ZLIB OFF CACHE BOOL "" FORCE)
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}") FetchContent_GetProperties(protobuf)
if(NOT protobuf_POPULATED)
FetchContent_Populate(protobuf)
add_subdirectory("${protobuf_SOURCE_DIR}/cmake"
"${protobuf_BINARY_DIR}")
endif() endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build . sapi_check_target(protobuf::libprotobuf)
RESULT_VARIABLE error sapi_check_target(protobuf::protoc)
WORKING_DIRECTORY "${workdir}") set(Protobuf_INCLUDE_DIR "${protobuf_SOURCE_DIR}/src" CACHE INTERNAL "")
if(error) set(Protobuf_LIBRARIES protobuf::libprotobuf CACHE INTERNAL "")
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(protobuf_BUILD_TESTS FALSE CACHE BOOL "")
set(protobuf_BUILD_SHARED_LIBS FALSE CACHE BOOL "")
set(protobuf_WITH_ZLIB FALSE CACHE BOOL "")
add_subdirectory("${SAPI_PROTOBUF_SOURCE_DIR}/cmake"
"${SAPI_PROTOBUF_BINARY_DIR}" EXCLUDE_FROM_ALL)
get_property(Protobuf_INCLUDE_DIRS TARGET protobuf::libprotobuf
PROPERTY INCLUDE_DIRECTORIES)

View File

@ -12,87 +12,18 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
set(workdir "${CMAKE_BINARY_DIR}/_deps/zlib-populate") FetchContent_Declare(zlib
URL https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz
set(SAPI_ZLIB_URL https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz URL_HASH SHA256=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
CACHE STRING "")
set(SAPI_ZLIB_URL_HASH
SHA256=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
CACHE STRING "") # 2020-04-23
set(SAPI_ZLIB_SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/zlib-src" CACHE STRING "")
set(SAPI_ZLIB_BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/zlib-build" CACHE STRING "")
file(WRITE "${workdir}/CMakeLists.txt" "\
cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(zlib-populate NONE)
include(ExternalProject)
ExternalProject_Add(zlib
URL \"${SAPI_ZLIB_URL}\"
URL_HASH \"${SAPI_ZLIB_URL_HASH}\"
SOURCE_DIR \"${SAPI_ZLIB_SOURCE_DIR}\"
BINARY_DIR \"${SAPI_ZLIB_BINARY_DIR}\"
PATCH_COMMAND patch -p1 PATCH_COMMAND patch -p1
< \"${SAPI_SOURCE_DIR}/sandboxed_api/bazel/external/zlib.patch\" < "${SAPI_SOURCE_DIR}/sandboxed_api/bazel/external/zlib.patch"
CONFIGURE_COMMAND \"\"
BUILD_COMMAND \"\"
INSTALL_COMMAND \"\"
TEST_COMMAND \"\"
) )
") FetchContent_MakeAvailable(zlib)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "CMake step for ${PROJECT_NAME} failed: ${error}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE error
WORKING_DIRECTORY "${workdir}")
if(error)
message(FATAL_ERROR "Build step for ${PROJECT_NAME} failed: ${error}")
endif()
set(ZLIB_FOUND TRUE) set(ZLIB_FOUND TRUE)
set(ZLIB_INCLUDE_DIRS ${SAPI_ZLIB_SOURCE_DIR}) set(ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR})
add_library(z STATIC add_library(ZLIB::ZLIB ALIAS zlibstatic)
${SAPI_ZLIB_SOURCE_DIR}/adler32.c target_include_directories(zlibstatic PUBLIC
${SAPI_ZLIB_SOURCE_DIR}/compress.c ${ZLIB_INCLUDE_DIRS}
${SAPI_ZLIB_SOURCE_DIR}/crc32.c
${SAPI_ZLIB_SOURCE_DIR}/crc32.h
${SAPI_ZLIB_SOURCE_DIR}/deflate.c
${SAPI_ZLIB_SOURCE_DIR}/deflate.h
${SAPI_ZLIB_SOURCE_DIR}/gzclose.c
${SAPI_ZLIB_SOURCE_DIR}/gzguts.h
${SAPI_ZLIB_SOURCE_DIR}/gzlib.c
${SAPI_ZLIB_SOURCE_DIR}/gzread.c
${SAPI_ZLIB_SOURCE_DIR}/gzwrite.c
${SAPI_ZLIB_SOURCE_DIR}/infback.c
${SAPI_ZLIB_SOURCE_DIR}/inffast.c
${SAPI_ZLIB_SOURCE_DIR}/inffast.h
${SAPI_ZLIB_SOURCE_DIR}/inffixed.h
${SAPI_ZLIB_SOURCE_DIR}/inflate.c
${SAPI_ZLIB_SOURCE_DIR}/inflate.h
${SAPI_ZLIB_SOURCE_DIR}/inftrees.c
${SAPI_ZLIB_SOURCE_DIR}/inftrees.h
${SAPI_ZLIB_SOURCE_DIR}/trees.c
${SAPI_ZLIB_SOURCE_DIR}/trees.h
${SAPI_ZLIB_SOURCE_DIR}/uncompr.c
${SAPI_ZLIB_SOURCE_DIR}/zconf.h
${SAPI_ZLIB_SOURCE_DIR}/zlib.h
${SAPI_ZLIB_SOURCE_DIR}/zutil.c
${SAPI_ZLIB_SOURCE_DIR}/zutil.h
)
add_library(ZLIB::ZLIB ALIAS z)
target_include_directories(z PUBLIC
${SAPI_ZLIB_SOURCE_DIR}
)
target_compile_options(z PRIVATE
-w
-Dverbose=-1
)
target_link_libraries(z PRIVATE
sapi::base
) )