Bump abseil-cpp: 7c7754f -> bf29470

This commit is contained in:
Corentin Le Molgat
2019-03-20 11:44:37 +01:00
parent 11f213dd0a
commit 38d210f7f2
6 changed files with 94 additions and 174 deletions

View File

@@ -9,11 +9,11 @@ project(abseil-cpp-download NONE)
include(ExternalProject)
ExternalProject_Add(abseil-cpp_project
GIT_REPOSITORY https://github.com/abseil/abseil-cpp
GIT_TAG "7c7754f"
GIT_TAG "bf29470"
SOURCE_DIR "${CMAKE_BINARY_DIR}/abseil-cpp-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/abseil-cpp-build"
UPDATE_COMMAND ""
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/abseil-cpp-7c7754f.patch"
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/abseil-cpp-bf29470.patch"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""

View File

@@ -22,7 +22,7 @@ PROTOC_BINARY := $(shell $(WHICH) ${UNIX_PROTOC_BINARY})
GFLAGS_TAG = 2.2.2
GLOG_TAG = 0.3.5
PROTOBUF_TAG = 3.6.1
ABSL_TAG = 7c7754f
ABSL_TAG = bf29470
CBC_TAG = 2.9.9
CGL_TAG = 0.59.10
CLP_TAG = 1.16.11
@@ -358,7 +358,6 @@ dependencies/sources/abseil-cpp-$(ABSL_TAG): | dependencies/sources
git clone --quiet https://github.com/abseil/abseil-cpp.git dependencies/sources/abseil-cpp-$(ABSL_TAG)
cd dependencies/sources/abseil-cpp-$(ABSL_TAG) && git reset --hard $(ABSL_TAG)
cd dependencies/sources/abseil-cpp-$(ABSL_TAG) && git apply "$(OR_TOOLS_TOP)/patches/abseil-cpp-$(ABSL_TAG).patch"
$(COPY) patches/abslConfig.cmake.in dependencies/sources/abseil-cpp-$(ABSL_TAG)/CMake
ABSL_INC = -I$(UNIX_ABSL_DIR)/include
ABSL_SWIG = $(ABSL_INC)

View File

@@ -38,7 +38,7 @@ ZLIB_ARCHIVE_TAG = 1211
GFLAGS_TAG = 2.2.2
GLOG_TAG = 0.3.5
PROTOBUF_TAG = 3.6.1
ABSL_TAG = 7c7754f
ABSL_TAG = bf29470
CBC_TAG = 2.9.9
CGL_TAG = 0.59.10
CLP_TAG = 1.16.11
@@ -371,7 +371,6 @@ dependencies/sources/abseil-cpp-$(ABSL_TAG): | dependencies/sources
git clone --quiet https://github.com/abseil/abseil-cpp.git dependencies\sources\abseil-cpp-$(ABSL_TAG)
cd dependencies\sources\abseil-cpp-$(ABSL_TAG) && git reset --hard $(ABSL_TAG)
cd dependencies\sources\abseil-cpp-$(ABSL_TAG) && git apply "$(OR_TOOLS_TOP)\patches\abseil-cpp-$(ABSL_TAG).patch"
$(COPY) patches\abslConfig.cmake.in dependencies\sources\abseil-cpp-$(ABSL_TAG)\CMake
ABSL_INC = /I"$(WINDOWS_ABSL_PATH)\\include"
ABSL_SWIG = -I"$(WINDOWS_ABSL_PATH)/include"

View File

@@ -1,161 +0,0 @@
diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
index 8fdd510..f5eb10c 100644
--- a/CMake/AbseilHelpers.cmake
+++ b/CMake/AbseilHelpers.cmake
@@ -17,6 +17,10 @@
include(CMakeParseArguments)
include(AbseilConfigureCopts)
+if(ABSL_ENABLE_INSTALL)
+ include(GNUInstallDirs)
+endif()
+
# The IDE folder for Abseil that will be used if Abseil is included in a CMake
# project that sets
# set_property(GLOBAL PROPERTY USE_FOLDERS ON)
@@ -76,14 +80,18 @@ set(ABSL_IDE_FOLDER Abseil)
# TODO: Implement "ALWAYSLINK"
function(absl_cc_library)
cmake_parse_arguments(ABSL_CC_LIB
- "DISABLE_INSTALL;PUBLIC;TESTONLY"
+ "PUBLIC;TESTONLY"
"NAME"
"HDRS;SRCS;COPTS;DEFINES;LINKOPTS;DEPS"
${ARGN}
)
if (NOT ABSL_CC_LIB_TESTONLY OR ABSL_RUN_TESTS)
- set(_NAME "absl_${ABSL_CC_LIB_NAME}")
+ if (NOT ABSL_ENABLE_INSTALL)
+ set(_NAME "absl_${ABSL_CC_LIB_NAME}")
+ else()
+ set(_NAME "${ABSL_CC_LIB_NAME}")
+ endif()
# Check if this is a header-only library
# Note that as of February 2019, many popular OS's (for example, Ubuntu
@@ -103,9 +111,14 @@ function(absl_cc_library)
if(NOT ABSL_CC_LIB_IS_INTERFACE)
add_library(${_NAME} STATIC "")
+ set_target_properties(${_NAME} PROPERTIES
+ OUTPUT_NAME "absl_${_NAME}"
+ )
target_sources(${_NAME} PRIVATE ${ABSL_CC_LIB_SRCS} ${ABSL_CC_LIB_HDRS})
- target_include_directories(${_NAME}
- PUBLIC ${ABSL_COMMON_INCLUDE_DIRS})
+ target_include_directories(${_NAME} PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> # <prefix>/include
+ )
target_compile_options(${_NAME}
PRIVATE ${ABSL_CC_LIB_COPTS})
target_link_libraries(${_NAME}
@@ -129,8 +142,10 @@ function(absl_cc_library)
else()
# Generating header-only library
add_library(${_NAME} INTERFACE)
- target_include_directories(${_NAME}
- INTERFACE ${ABSL_COMMON_INCLUDE_DIRS})
+ target_include_directories(${_NAME} INTERFACE
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> # <prefix>/include
+ )
target_link_libraries(${_NAME}
INTERFACE ${ABSL_CC_LIB_DEPS} ${ABSL_CC_LIB_LINKOPTS}
)
@@ -138,6 +153,15 @@ function(absl_cc_library)
endif()
add_library(absl::${ABSL_CC_LIB_NAME} ALIAS ${_NAME})
+ # install rules
+ if(ABSL_ENABLE_INSTALL)
+ install(TARGETS ${_NAME}
+ EXPORT ${PROJECT_NAME}Targets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ )
+ endif()
endif()
endfunction()
@@ -194,7 +218,7 @@ function(absl_cc_test)
add_executable(${_NAME} "")
target_sources(${_NAME} PRIVATE ${ABSL_CC_TEST_SRCS})
target_include_directories(${_NAME}
- PUBLIC ${ABSL_COMMON_INCLUDE_DIRS}
+ PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
PRIVATE ${GMOCK_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
)
target_compile_definitions(${_NAME}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 571e48c..6c4854a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,19 @@ if (POLICY CMP0025)
cmake_policy(SET CMP0025 NEW)
endif()
-project(absl)
+# Enable MACOSX_RPATH by default.
+if(POLICY CMP0042)
+ cmake_policy (SET CMP0042 NEW)
+endif()
+
+project(absl VERSION 1.0.0 LANGUAGES CXX)
+
+option(ABSL_ENABLE_INSTALL "If ON, Abseil enable install rules." ON)
+# when absl is included as subproject (i.e. using add_subdirectory(abseil-cpp))
+# in the source tree of a project that uses it, install rules are disabled.
+if(NOT "^${CMAKE_SOURCE_DIR}$" STREQUAL "^${PROJECT_SOURCE_DIR}$")
+ set(ABSL_ENABLE_INSTALL OFF)
+endif()
list(APPEND CMAKE_MODULE_PATH
${CMAKE_CURRENT_LIST_DIR}/CMake
@@ -93,3 +105,44 @@ if(BUILD_TESTING)
endif()
add_subdirectory(absl)
+
+# install rules
+if(ABSL_ENABLE_INSTALL)
+ # See https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
+ include(GNUInstallDirs)
+ # See https://cmake.org/cmake/help/latest/command/find_package.html#search-procedure
+ set(CMAKE_INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+ install(
+ EXPORT ${PROJECT_NAME}Targets
+ NAMESPACE absl::
+ DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
+ )
+ install(
+ DIRECTORY absl
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ COMPONENT Devel
+ FILES_MATCHING
+ PATTERN "*.inc"
+ PATTERN "*.h"
+ )
+
+ # See https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
+ include(CMakePackageConfigHelpers)
+ configure_package_config_file(
+ CMake/abslConfig.cmake.in
+ "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ INSTALL_DESTINATION "${CMAKE_INSTALL_CONFIGDIR}"
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
+ )
+ write_basic_package_version_file(
+ "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ COMPATIBILITY ExactVersion
+ )
+ install(
+ FILES
+ "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ DESTINATION "${CMAKE_INSTALL_CONFIGDIR}"
+ COMPONENT Devel
+ )
+endif()

View File

@@ -0,0 +1,90 @@
diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
index 6d26169..5e839c5 100644
--- a/CMake/AbseilHelpers.cmake
+++ b/CMake/AbseilHelpers.cmake
@@ -81,7 +81,11 @@ function(absl_cc_library)
)
if (NOT ABSL_CC_LIB_TESTONLY OR ABSL_RUN_TESTS)
- set(_NAME "${ABSL_CC_LIB_NAME}")
+ if (NOT ABSL_ENABLE_INSTALL)
+ set(_NAME "absl_${ABSL_CC_LIB_NAME}")
+ else()
+ set(_NAME "${ABSL_CC_LIB_NAME}")
+ endif()
# Check if this is a header-only library
# Note that as of February 2019, many popular OS's (for example, Ubuntu
@@ -150,7 +154,7 @@ function(absl_cc_library)
# TODO currently we don't install googletest alongside abseil sources, so
# installed abseil can't be tested.
- if (NOT ABSL_CC_LIB_TESTONLY)
+ if (NOT ABSL_CC_LIB_TESTONLY AND ABSL_ENABLE_INSTALL)
install(TARGETS ${_NAME} EXPORT ${PROJECT_NAME}Targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e3bb8d0..7786ae7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,11 @@ endif()
# if command can use IN_LIST
cmake_policy(SET CMP0057 NEW)
+# Enable MACOSX_RPATH by default.
+if(POLICY CMP0042)
+ cmake_policy (SET CMP0042 NEW)
+endif()
+
project(absl)
# when absl is included as subproject (i.e. using add_subdirectory(abseil-cpp))
@@ -118,25 +123,28 @@ endif()
add_subdirectory(absl)
-# install as a subdirectory only
-install(EXPORT ${PROJECT_NAME}Targets
- NAMESPACE absl::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
-)
+# install rules
+if(ABSL_ENABLE_INSTALL)
+ # install as a subdirectory only
+ install(EXPORT ${PROJECT_NAME}Targets
+ NAMESPACE absl::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
+ )
-configure_package_config_file(
- CMake/abslConfig.cmake.in
- "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
- INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
-)
+ configure_package_config_file(
+ CMake/abslConfig.cmake.in
+ "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
+ )
-install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake
-)
+ install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake
+ )
-install(DIRECTORY absl
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- FILES_MATCHING
- PATTERN "*.inc"
- PATTERN "*.h"
-)
+ install(DIRECTORY absl
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING
+ PATTERN "*.inc"
+ PATTERN "*.h"
+ )
+endif()

View File

@@ -1,7 +0,0 @@
## absl CMake configuration file
set(ABSL_VERSION @PROJECT_VERSION@)
@PACKAGE_INIT@
include ("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")