Bump Abseil-cpp to SHA1 93d155b (Fix #1074)
This commit is contained in:
@@ -78,14 +78,14 @@ target_include_directories(${PROJECT_NAME} INTERFACE
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||
ZLIB::ZLIB
|
||||
absl::base
|
||||
absl::container
|
||||
absl::raw_hash_set
|
||||
absl::hash
|
||||
absl::memory
|
||||
absl::meta
|
||||
absl::str_format
|
||||
absl::strings
|
||||
absl::synchronization
|
||||
absl::types
|
||||
absl::any
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::CbcSolver Cbc::OsiCbc Cbc::ClpSolver Cbc::OsiClp
|
||||
|
||||
4
cmake/external/abseil.CMakeLists.txt
vendored
4
cmake/external/abseil.CMakeLists.txt
vendored
@@ -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 "45221cc"
|
||||
GIT_TAG "93d155b"
|
||||
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-master.patch"
|
||||
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/abseil-cpp-93d155b.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
|
||||
@@ -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 = master
|
||||
ABSL_TAG = 93d155b
|
||||
CBC_TAG = 2.9.9
|
||||
CGL_TAG = 0.59.10
|
||||
CLP_TAG = 1.16.11
|
||||
@@ -355,25 +355,63 @@ dependencies/install/lib/libabsl.$L: dependencies/sources/abseil-cpp-$(ABSL_TAG)
|
||||
|
||||
dependencies/sources/abseil-cpp-$(ABSL_TAG): | dependencies/sources
|
||||
-$(DELREC) dependencies/sources/abseil-cpp-$(ABSL_TAG)
|
||||
git clone --quiet -b $(ABSL_TAG) https://github.com/abseil/abseil-cpp.git dependencies/sources/abseil-cpp-$(ABSL_TAG)
|
||||
cd dependencies/sources/abseil-cpp-$(ABSL_TAG) && \
|
||||
git reset --hard 45221cc
|
||||
cd dependencies/sources/abseil-cpp-$(ABSL_TAG) && \
|
||||
git apply "$(OR_TOOLS_TOP)/patches/abseil-cpp-$(ABSL_TAG).patch"
|
||||
$(COPY) patches/absl-config.cmake dependencies/sources/abseil-cpp-$(ABSL_TAG)/CMake
|
||||
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)
|
||||
STATIC_ABSL_LNK = $(UNIX_ABSL_DIR)/lib/libabsl.a
|
||||
_ABSL_STATIC_LIB_DIR = $(dir $(wildcard \
|
||||
$(UNIX_ABSL_DIR)/lib*/libabsl_base.a \
|
||||
$(UNIX_ABSL_DIR)/lib/*/libabsl_base.a))
|
||||
STATIC_ABSL_LNK = \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_base.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_synchronization.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_bad_any_cast_impl.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_bad_optional_access.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_bad_variant_access.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_city.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_civil_time.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_debugging_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_examine_stack.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_failure_signal_handler.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_graphcycles_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_hash.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_hashtablez_sampler.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_hashtablez_force_sampling.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_int128.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_leak_check.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_malloc_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_optional.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_raw_hash_set.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_spinlock_wait.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_stacktrace.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_str_format_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_strings.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_strings_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_symbolize.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_throw_delegate.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_time.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_time_zone.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_base.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_int128.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_synchronization.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_debugging_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_demangle_internal.a \
|
||||
$(_ABSL_STATIC_LIB_DIR)libabsl_dynamic_annotations.a \
|
||||
|
||||
_ABSL_LIB_DIR = $(dir $(wildcard \
|
||||
$(UNIX_ABSL_DIR)/lib*/libabsl_base.$L \
|
||||
$(UNIX_ABSL_DIR)/lib*/libabsl_base.$L@ \
|
||||
$(UNIX_ABSL_DIR)/lib/*/libabsl_base.$L))
|
||||
DYNAMIC_ABSL_LNK = -L$(_ABSL_LIB_DIR) \
|
||||
-labsl_bad_any_cast \
|
||||
-labsl_bad_any_cast_impl \
|
||||
-labsl_bad_optional_access \
|
||||
-labsl_bad_variant_access \
|
||||
-labsl_base \
|
||||
-labsl_container \
|
||||
-labsl_city \
|
||||
-labsl_civil_time \
|
||||
-labsl_dynamic_annotations \
|
||||
-labsl_examine_stack \
|
||||
-labsl_failure_signal_handler \
|
||||
@@ -382,19 +420,19 @@ DYNAMIC_ABSL_LNK = -L$(_ABSL_LIB_DIR) \
|
||||
-labsl_leak_check \
|
||||
-labsl_malloc_internal \
|
||||
-labsl_optional \
|
||||
-labsl_raw_hash_set \
|
||||
-labsl_spinlock_wait \
|
||||
-labsl_stack_consumption \
|
||||
-labsl_stacktrace \
|
||||
-labsl_strings \
|
||||
-labsl_str_format_extension_internal \
|
||||
-labsl_str_format_internal \
|
||||
-labsl_strings \
|
||||
-labsl_strings_internal \
|
||||
-labsl_symbolize \
|
||||
-labsl_synchronization \
|
||||
-labsl_throw_delegate \
|
||||
-labsl_time \
|
||||
-labsl_variant
|
||||
-labsl_time_zone
|
||||
|
||||
ABSL_LNK = $(DYNAMIC_ABSL_LNK)
|
||||
ABSL_LNK = $(STATIC_ABSL_LNK)
|
||||
DEPENDENCIES_LNK += $(ABSL_LNK)
|
||||
OR_TOOLS_LNK += $(ABSL_LNK)
|
||||
|
||||
|
||||
@@ -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 = master
|
||||
ABSL_TAG = 93d155b
|
||||
CBC_TAG = 2.9.9
|
||||
CGL_TAG = 0.59.10
|
||||
CLP_TAG = 1.16.11
|
||||
@@ -368,39 +368,44 @@ dependencies/install/lib/absl.lib: dependencies/sources/abseil-cpp-$(ABSL_TAG) |
|
||||
|
||||
dependencies/sources/abseil-cpp-$(ABSL_TAG): | dependencies/sources
|
||||
-$(DELREC) dependencies/sources/abseil-cpp-$(ABSL_TAG)
|
||||
git clone --quiet -b $(ABSL_TAG) https://github.com/abseil/abseil-cpp.git dependencies\sources\abseil-cpp-$(ABSL_TAG)
|
||||
cd dependencies\sources\abseil-cpp-$(ABSL_TAG) \
|
||||
&& git reset --hard 45221cc
|
||||
cd dependencies\sources\abseil-cpp-$(ABSL_TAG) \
|
||||
&& git apply "$(OR_TOOLS_TOP)\patches\abseil-cpp-$(ABSL_TAG).patch"
|
||||
$(COPY) patches\absl-config.cmake dependencies\sources\abseil-cpp-$(ABSL_TAG)\CMake
|
||||
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 dependencies\sources\abseil-cpp-$(ABSL_TAG)\CMake
|
||||
|
||||
ABSL_INC = /I"$(WINDOWS_ABSL_PATH)\\include"
|
||||
ABSL_SWIG = -I"$(WINDOWS_ABSL_PATH)/include"
|
||||
STATIC_ABSL_LNK = \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_bad_any_cast.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_bad_any_cast_impl.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_bad_optional_access.lib"\
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_bad_variant_access.lib"\
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_base.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_container.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_city.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_civil_time.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_debugging_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_demangle_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_dynamic_annotations.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_examine_stack.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_failure_signal_handler.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_graphcycles_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_hash.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_hashtablez_sampler.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_hashtablez_force_sampling.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_int128.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_leak_check.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_malloc_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_optional.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_raw_hash_set.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_spinlock_wait.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_stack_consumption.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_stacktrace.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_strings.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_str_format_extension_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_str_format_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_strings.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_strings_internal.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_symbolize.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_synchronization.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_throw_delegate.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_time.lib" \
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_variant.lib"
|
||||
"$(WINDOWS_ABSL_PATH)\\lib\\absl_time_zone.lib"
|
||||
DYNAMIC_ABSL_LNK = $(STATIC_ABSL_LNK)
|
||||
|
||||
ABSL_LNK = $(STATIC_ABSL_LNK)
|
||||
|
||||
@@ -12,7 +12,7 @@ set_target_properties(${NAME} PROPERTIES
|
||||
)
|
||||
# CMake < 3.12: CMakeError: Object library may not link to anything.
|
||||
#target_link_libraries(${NAME} PRIVATE
|
||||
# absl::types absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
# absl::any absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
@@ -20,7 +20,7 @@ set_target_properties(${NAME} PROPERTIES
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}
|
||||
$<TARGET_PROPERTY:absl::types,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:absl::any,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:absl::synchronization,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:absl::container,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
@@ -32,7 +32,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::types,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:absl::any,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:absl::synchronization,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:absl::container,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -45,7 +45,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::types,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:absl::any,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:absl::synchronization,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:absl::container,INTERFACE_COMPILE_DEFINITIONS>
|
||||
@@ -58,7 +58,7 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::types absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
absl::any absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
|
||||
248
patches/abseil-cpp-93d155b.patch
Normal file
248
patches/abseil-cpp-93d155b.patch
Normal file
@@ -0,0 +1,248 @@
|
||||
diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
|
||||
index 350282f..65e6c7a 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)
|
||||
@@ -40,9 +44,12 @@ set(ABSL_IDE_FOLDER Abseil)
|
||||
# TESTONLY: When added, this target will only be built if user passes -DABSL_RUN_TESTS=ON to CMake.
|
||||
#
|
||||
# Note:
|
||||
-# By default, absl_cc_library will always create a library named absl_internal_${NAME},
|
||||
-# and alias target absl::${NAME}.
|
||||
+# By default, absl_cc_library will always create an alias target absl::${NAME}.
|
||||
+# When ABSL_ENABLE_INSTALL is OFF, target name is absl_${NAME} for PUBLIC libraries
|
||||
+# and absl_internal_${NAME} for private ones.
|
||||
+# When ABSL_ENABLE_INSTALL is ON, target name is ${NAME}.
|
||||
# This is to reduce namespace pollution.
|
||||
+# Alias target name must be always used instead of target name.
|
||||
#
|
||||
# absl_cc_library(
|
||||
# NAME
|
||||
@@ -58,11 +65,11 @@ set(ABSL_IDE_FOLDER Abseil)
|
||||
# SRCS
|
||||
# "b.cc"
|
||||
# DEPS
|
||||
-# absl_internal_awesome # not "awesome"!
|
||||
+# absl::awesome
|
||||
# )
|
||||
#
|
||||
-# If PUBLIC is set, absl_cc_library will instead create a target named
|
||||
-# absl_${NAME} and still an alias absl::${NAME}.
|
||||
+# Warning: Only libraries with the PUBLIC flag set can be used by user.
|
||||
+# Otherwise they are internal absl targets that shouldn't be used externally.
|
||||
#
|
||||
# absl_cc_library(
|
||||
# NAME
|
||||
@@ -71,22 +78,26 @@ set(ABSL_IDE_FOLDER Abseil)
|
||||
# PUBLIC
|
||||
# )
|
||||
#
|
||||
-# User can then use the library as absl::main_lib (although absl_main_lib is defined too).
|
||||
+# User can then use the library as absl::main_lib.
|
||||
#
|
||||
# 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)
|
||||
- if (ABSL_CC_LIB_PUBLIC)
|
||||
- set(_NAME "absl_${ABSL_CC_LIB_NAME}")
|
||||
+ if(NOT ABSL_ENABLE_INSTALL)
|
||||
+ if (ABSL_CC_LIB_PUBLIC)
|
||||
+ set(_NAME "absl_${ABSL_CC_LIB_NAME}")
|
||||
+ else()
|
||||
+ set(_NAME "absl_internal_${ABSL_CC_LIB_NAME}")
|
||||
+ endif()
|
||||
else()
|
||||
- set(_NAME "absl_internal_${ABSL_CC_LIB_NAME}")
|
||||
+ set(_NAME "${ABSL_CC_LIB_NAME}")
|
||||
endif()
|
||||
|
||||
# Check if this is a header-only library
|
||||
@@ -100,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}
|
||||
@@ -126,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}
|
||||
)
|
||||
@@ -135,6 +153,16 @@ 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()
|
||||
|
||||
@@ -191,7 +219,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/CMake/abslConfig.cmake.in b/CMake/abslConfig.cmake.in
|
||||
new file mode 100644
|
||||
index 0000000..9b83fda
|
||||
--- /dev/null
|
||||
+++ b/CMake/abslConfig.cmake.in
|
||||
@@ -0,0 +1,7 @@
|
||||
+## absl CMake configuration file
|
||||
+
|
||||
+set(ABSL_VERSION @PROJECT_VERSION@)
|
||||
+
|
||||
+@PACKAGE_INIT@
|
||||
+
|
||||
+include ("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
\ No newline at end of file
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 380ed74..4977086 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -19,21 +19,31 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
# Compiler id for Apple Clang is now AppleClang.
|
||||
-if (POLICY CMP0025)
|
||||
+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
|
||||
${CMAKE_CURRENT_LIST_DIR}/absl/copts
|
||||
)
|
||||
|
||||
-include(GNUInstallDirs)
|
||||
include(AbseilHelpers)
|
||||
|
||||
-
|
||||
##
|
||||
## Using absl targets
|
||||
##
|
||||
@@ -44,7 +54,6 @@ include(AbseilHelpers)
|
||||
##
|
||||
## DO NOT rely on the internal targets outside of the prefix
|
||||
|
||||
-
|
||||
# include current path
|
||||
list(APPEND ABSL_COMMON_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
@@ -72,7 +81,6 @@ endif()
|
||||
|
||||
## check targets
|
||||
if(BUILD_TESTING)
|
||||
-
|
||||
if(${ABSL_USE_GOOGLETEST_HEAD})
|
||||
include(CMake/DownloadGTest.cmake)
|
||||
endif()
|
||||
@@ -90,3 +98,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()
|
||||
@@ -1 +0,0 @@
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/absl-targets.cmake"
|
||||
Reference in New Issue
Block a user