diff --git a/cmake/external/abseil.CMakeLists.txt b/cmake/external/abseil.CMakeLists.txt index 9426f69f29..a23eade833 100644 --- a/cmake/external/abseil.CMakeLists.txt +++ b/cmake/external/abseil.CMakeLists.txt @@ -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 "" diff --git a/makefiles/Makefile.third_party.unix.mk b/makefiles/Makefile.third_party.unix.mk index 18e1b198bd..3e5093aa01 100644 --- a/makefiles/Makefile.third_party.unix.mk +++ b/makefiles/Makefile.third_party.unix.mk @@ -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) diff --git a/makefiles/Makefile.third_party.win.mk b/makefiles/Makefile.third_party.win.mk index a9a36b3b9f..82dc61bd59 100644 --- a/makefiles/Makefile.third_party.win.mk +++ b/makefiles/Makefile.third_party.win.mk @@ -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" diff --git a/patches/abseil-cpp-7c7754f.patch b/patches/abseil-cpp-7c7754f.patch deleted file mode 100644 index 88e304d4ac..0000000000 --- a/patches/abseil-cpp-7c7754f.patch +++ /dev/null @@ -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 -+ $ -+ $ # /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 -+ $ -+ $ # /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 $ - 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() diff --git a/patches/abseil-cpp-bf29470.patch b/patches/abseil-cpp-bf29470.patch new file mode 100644 index 0000000000..922fdd0665 --- /dev/null +++ b/patches/abseil-cpp-bf29470.patch @@ -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() diff --git a/patches/abslConfig.cmake.in b/patches/abslConfig.cmake.in deleted file mode 100644 index 9b83fda237..0000000000 --- a/patches/abslConfig.cmake.in +++ /dev/null @@ -1,7 +0,0 @@ -## 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