cmake: update re2 and highs

This commit is contained in:
Corentin Le Molgat
2025-11-05 11:27:08 +01:00
parent 97c9c2c9bc
commit 931536da04
4 changed files with 8 additions and 286 deletions

View File

@@ -2,14 +2,14 @@ ZLIB=1.3.1
abseil-cpp=20250814.1
Protobuf=v32.0
Eigen=3.4.0
Re2=2024-07-02
Re2=2025-08-12
CoinUtils=2.11.12
Osi=0.108.11
Clp=1.17.10
Cgl=0.60.9
Cbc=2.10.12
GLPK=5.0
HiGHS=v1.11.0
HiGHS=v1.12.0
Scip=v923
# Python
pybind11=v2.13.6

View File

@@ -168,11 +168,11 @@ if(BUILD_re2)
FetchContent_Declare(
re2
GIT_REPOSITORY "https://github.com/google/re2.git"
GIT_TAG "2024-07-02"
GIT_TAG "2025-08-12"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/re2-2024-07-02.patch"
"${CMAKE_CURRENT_LIST_DIR}/../../patches/re2-2025-08-12.patch"
)
set(RE2_BUILD_TESTING OFF)
FetchContent_MakeAvailable(re2)
@@ -303,11 +303,9 @@ if(BUILD_HIGHS)
FetchContent_Declare(
highs
GIT_REPOSITORY "https://github.com/ERGO-Code/HiGHS.git"
GIT_TAG "v1.11.0"
GIT_TAG "v1.12.0"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/highs-v1.11.0.patch"
)
set(CI OFF) # disable CI tests
set(BUILD_EXAMPLES OFF)

View File

@@ -1,276 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 661aa078..2606e08d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,7 +57,7 @@ endif()
# message("CMAKE_CXX_COMPILER_ID is ${CMAKE_CXX_COMPILER_ID}")
if (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
message(STATUS "Compiler is IntelLLVM")
- if (CMAKE_HOST_WIN32 AND CMAKE_VERSION VERSION_LESS "3.23.0")
+ if (CMAKE_HOST_WIN32 AND CMAKE_VERSION VERSION_LESS "3.23.0")
message(FATAL_ERROR "Need at least CMake 3.23 for IntelLLVM support of IntelDPCPP package on Windows")
elseif(CMAKE_VERSION VERSION_LESS "3.23.0")
message(FATAL_ERROR "CMake 3.20.5 is the minimum recommended for IntelLLVM on Linux")
@@ -121,9 +121,9 @@ endif()
option(HIGHS_COVERAGE "Activate the code coverage compilation" OFF)
-# Address | Thread | Leak
+# Address | Thread | Leak
# Linux atm
-# Only Debug is theted atm
+# Only Debug is theted atm
# See below for RelWithDeb info, todo test wip
set(DEBUG_MEMORY "Off" CACHE STRING "Sanitizers")
@@ -137,7 +137,7 @@ message(STATUS "Build pdlp with GPU: ${CUPDLP_GPU}")
option(CUPDLP_FIND_CUDA "Build pdlp with GPU" OFF)
message(STATUS "Use FindCUDAConf: ${CUPDLP_FIND_CUDA}")
-if(CUPDLP_GPU AND CMAKE_VERSION VERSION_LESS "3.25.0")
+if(CUPDLP_GPU AND CMAKE_VERSION VERSION_LESS "3.25.0")
message("CUPDLP FindCUDAConf requires CMake version minumum 3.24. Please use a higher version of CMake.")
endif()
@@ -158,11 +158,11 @@ if (CUPDLP_GPU)
# With FindCUDAConf.cmake
# Need to have the CUDA_HOME environment variable set.
include(FindCUDAConf)
- else()
+ else()
# Without FindCUDAConf.cmake
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
-
+
set(CUDA_LIBRARY-NOTFOUND, OFF)
set(CUDA_LIBRARY CUDA::cudart CUDA::cublas CUDA::cusparse)
endif()
@@ -205,7 +205,7 @@ if (BUILD_CXX)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
- # for multi-config build system (e.g. xcode)
+ # for multi-config build system (e.g. xcode)
foreach(OutputConfig IN LISTS CMAKE_CONFIGURATION_TYPES)
string(TOUPPER ${OutputConfig} OUTPUTCONFIG)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OutputConfig}/${CMAKE_INSTALL_LIBDIR})
@@ -244,14 +244,14 @@ if (BUILD_CXX)
option(STDCALL "Build highs with the __stdcall convention" OFF)
endif()
- if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
- CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
- CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
+ CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
+ CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
- # elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ # elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# not recognised by cl
- # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
- endif()
+ # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
+ endif()
# Basic type
include(CMakePushCheckState)
@@ -275,7 +275,7 @@ if (BUILD_CXX)
check_type_size("int *" SIZEOF_INT_P LANGUAGE CXX)
message(STATUS "Found int * size: ${SIZEOF_INT_P}")
cmake_pop_check_state()
-
+
# Use current CMAKE_C_FLAGS and CMAKE_CXX_FLAGS when checking for IPO support,
# instead of defaults: https://cmake.org/cmake/help/latest/policy/CMP0138.html
if(MSVC AND BUILD_SHARED_LIBS)
@@ -293,7 +293,7 @@ if (BUILD_CXX)
set(ipo_supported NO)
message(STATUS "IPO / LTO not currently supported building HiGHS on MinGW")
else()
- if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
+ if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0138 NEW)
endif()
@@ -371,19 +371,8 @@ else()
HIGHS_HAVE_BUILTIN_CLZ)
endif()
-set(CMAKE_MACOSX_RPATH ON)
-
-if (BUILD_DOTNET)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
-else()
- # use, i.e. don't skip the full RPATH for the build tree
- set(CMAKE_SKIP_BUILD_RPATH FALSE)
-
- # when building, don't use the install RPATH already
- # (but later on when installing)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-endif()
+# set the correct rpath for OS X
+set(CMAKE_MACOSX_RPATH TRUE)
if(NOT FAST_BUILD)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${HIGHS_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
@@ -428,7 +417,7 @@ endif()
# For debug of cuda locally
-# does not work with older CMake
+# does not work with older CMake
# add_compile_options("$<$<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:CUDA>>:-G>")
# add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:-G>")
@@ -453,7 +442,7 @@ if(MSVC)
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:-D_CRT_SECURE_NO_WARNINGS>")
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:/MP>")
- # Try to split large pdb files into objects.
+ # Try to split large pdb files into objects.
# https://github.com/tensorflow/tensorflow/issues/31610
# add_compile_options("/Z7")
# add_link_options("/DEBUG:FASTLINK")
@@ -611,11 +600,11 @@ if(FAST_BUILD AND HIGHS_COVERAGE)
message(STATUS "Building in coverage mode")
# Enable coverage flags
- add_compile_options(-O0)
- add_compile_options(--coverage)
- add_compile_options(-fprofile-update=atomic)
+ add_compile_options(-O0)
+ add_compile_options(--coverage)
+ add_compile_options(-fprofile-update=atomic)
- add_link_options(-O0)
+ add_link_options(-O0)
add_link_options(--coverage) # Ensure coverage data is linked correctly
find_program(GCOV_PATH gcov)
diff --git a/highs/CMakeLists.txt b/highs/CMakeLists.txt
index 50301433..f7b982fb 100644
--- a/highs/CMakeLists.txt
+++ b/highs/CMakeLists.txt
@@ -1,7 +1,7 @@
if (NOT BUILD_CXX)
return()
endif()
-
+
# Define library.
include(sources)
set(sources ${highs_sources} ${cupdlp_sources} ${ipx_sources} ${basiclu_sources})
@@ -43,7 +43,7 @@ if(NOT FAST_BUILD)
set_target_properties(libhighs PROPERTIES
OUTPUT_NAME "highs"
PDB_NAME "libhighs"
- MACOSX_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ )
if(ZLIB AND ZLIB_FOUND)
target_link_libraries(libhighs ZLIB::ZLIB)
@@ -51,8 +51,11 @@ if(NOT FAST_BUILD)
endif()
# set the install rpath to the installed destination
- set_target_properties(libhighs PROPERTIES INSTALL_RPATH
- "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ if(APPLE)
+ set_target_properties(libhighs PROPERTIES INSTALL_RPATH "@loader_path")
+ elseif (UNIX)
+ set_target_properties(libhighs PROPERTIES INSTALL_RPATH "$ORIGIN")
+ endif()
# install the header files of highs
foreach(file ${headers})
@@ -84,7 +87,7 @@ if(NOT FAST_BUILD)
# target_compile_options(libipx PRIVATE "-Wno-sign-compare")
# target_compile_options(libipx PRIVATE "-Wno-logical-op-parentheses")
endif()
-
+
install(TARGETS libhighs EXPORT highs-targets
LIBRARY
ARCHIVE
@@ -150,8 +153,8 @@ else()
target_sources(highs PRIVATE ${sources} ${headers} ${win_version_file})
-
- # Optional Cuda
+
+ # Optional Cuda
if (CUPDLP_GPU)
target_include_directories(highs PUBLIC "$<BUILD_INTERFACE:${CMAKE_CUDA_PATH}/include>")
@@ -164,7 +167,7 @@ else()
else()
target_link_libraries(highs cudalin ${CUDA_LIBRARY} m)
endif()
-
+
set_target_properties(highs PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
endif()
@@ -221,7 +224,7 @@ else()
)
target_link_libraries(highs ZLIB::ZLIB)
endif()
-
+
# install the header files of highs
foreach(file ${headers})
get_filename_component(dir ${file} DIRECTORY)
@@ -236,9 +239,9 @@ else()
# target_compile_options(highs PRIVATE "-Wall")
# target_compile_options(highs PRIVATE "-Wunused")
-
+
if (UNIX)
- if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(highs PRIVATE "-Wall")
target_compile_options(highs PRIVATE "-Wreturn-type")
target_compile_options(highs PRIVATE "-Wmissing-declarations")
@@ -248,7 +251,7 @@ else()
target_compile_options(highs PRIVATE "-Wno-comment")
target_compile_options(highs PRIVATE "-Wno-unused-label")
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(highs PRIVATE "-Wno-unused-lambda-capture")
endif()
@@ -267,7 +270,7 @@ else()
endif()
if (BUILD_DOTNET)
-
+
# see: https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)")
set(DOTNET_PLATFORM arm64)
@@ -298,8 +301,8 @@ else()
set(TARGET_FILE_NAME "highs.dll")
endif()
- add_custom_command(TARGET highs POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy
+ add_custom_command(TARGET highs POST_BUILD
+ COMMAND "${CMAKE_COMMAND}" -E copy
"$<TARGET_FILE:highs>"
${DOTNET_PROJECT_DIR}/runtimes/${DOTNET_RID}/native/${TARGET_FILE_NAME}
COMMENT "Copying to output directory")
@@ -318,7 +321,7 @@ if(FORTRAN_FOUND)
target_link_libraries(FortranHighs PUBLIC highs)
endif()
- install(TARGETS FortranHighs
+ install(TARGETS FortranHighs
LIBRARY
ARCHIVE
RUNTIME

View File

@@ -1,11 +1,11 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bdac5af..cedaf6e 100644
index 81b4af2..b1ffaac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -131,6 +131,13 @@ set(RE2_HEADERS
@@ -140,6 +140,13 @@ set(RE2_HEADERS
add_library(re2 ${RE2_SOURCES})
target_compile_features(re2 PUBLIC cxx_std_14)
target_compile_features(re2 PUBLIC ${RE2_CXX_VERSION})
+if(APPLE)
+ set_target_properties(re2 PROPERTIES
+ INSTALL_RPATH "@loader_path")