cartographer/cmake/modules/FindAbseil.cmake

87 lines
4.0 KiB
CMake
Raw Normal View History

# Copyright 2018 The Cartographer Authors
#
# 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.
cmake_minimum_required(VERSION 3.2)
if(NOT TARGET standalone_absl)
include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
set(ABSEIL_PROJECT_NAME abseil)
set(ABSEIL_PROJECT_SRC_DIR
${CMAKE_CURRENT_BINARY_DIR}/${ABSEIL_PROJECT_NAME}/src/${ABSEIL_PROJECT_NAME})
set(ABSEIL_PROJECT_BUILD_DIR
${CMAKE_CURRENT_BINARY_DIR}/${ABSEIL_PROJECT_NAME}/src/${ABSEIL_PROJECT_NAME}-build)
set(ABSEIL_INCLUDE_DIRS ${ABSEIL_PROJECT_SRC_DIR})
set(ABSEIL_LIBRARY_PATH
"${ABSEIL_PROJECT_BUILD_DIR}/absl/synchronization/libabsl_synchronization.a")
set(ABSEIL_DEPENDENT_LIBRARIES
"${ABSEIL_PROJECT_BUILD_DIR}/absl/algorithm/libabsl_algorithm.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/base/libabsl_base.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/base/libabsl_dynamic_annotations.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/base/libabsl_malloc_internal.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/base/libabsl_spinlock_wait.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/base/libabsl_throw_delegate.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/container/libabsl_container.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/container/libtest_instance_tracker_lib.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_debugging.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_examine_stack.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_failure_signal_handler.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_leak_check.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_stack_consumption.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_stacktrace.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/debugging/libabsl_symbolize.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/memory/libabsl_memory.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/meta/libabsl_meta.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/numeric/libabsl_int128.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/numeric/libabsl_numeric.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/strings/libabsl_strings.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/time/libabsl_time.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/types/libabsl_any.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/types/libabsl_bad_any_cast.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/types/libabsl_bad_optional_access.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/types/libabsl_optional.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/types/libabsl_span.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/types/libabsl_variant.a"
"${ABSEIL_PROJECT_BUILD_DIR}/absl/utility/libabsl_utility.a"
)
2018-07-28 01:05:45 +08:00
if(CMAKE_GENERATOR MATCHES "Ninja")
set (ABSL_BUILD_COMMAND "ninja")
else()
set (ABSL_BUILD_COMMAND "make")
endif()
ExternalProject_Add(${ABSEIL_PROJECT_NAME}
PREFIX ${ABSEIL_PROJECT_NAME}
GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
GIT_TAG 44aa275286baf97fc13529aca547a88b180beb08
INSTALL_COMMAND ""
2018-07-28 01:05:45 +08:00
BUILD_ALWAYS TRUE
BUILD_COMMAND ${ABSEIL_BUILD_COMMAND}
CMAKE_CACHE_ARGS "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON;-DBUILD_TESTING:BOOL=OFF;-DCMAKE_BUILD_TYPE:STRING=Release"
BUILD_BYPRODUCTS "${ABSEIL_LIBRARY_PATH};${ABSEIL_DEPENDENT_LIBRARIES}"
)
add_library(standalone_absl STATIC IMPORTED)
set_target_properties(standalone_absl
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${ABSEIL_INCLUDE_DIRS}
)
set_target_properties(standalone_absl
PROPERTIES IMPORTED_LOCATION
${ABSEIL_LIBRARY_PATH}
INTERFACE_LINK_LIBRARIES
"${ABSEIL_DEPENDENT_LIBRARIES}"
)
add_dependencies(standalone_absl ${ABSEIL_PROJECT_NAME})
endif()