Open
Conversation
- autoconf-archive 2021.02.19 -> 2022.09.03 - automake 1.16.3 -> 1.16.5 - libtool 2.4.6 -> 2.4.7
- fixes -Wunused-private-field warnings
…oin-or#203) * Squash windows-ci for VS 2022 v17 CoinUtils v17 solution and windows-ci * Simplify VS2022 preprocessor defines
For Linux-ci move to ubuntu 22.04 from 18.04 and macos-12 from 10.15. For windows-ci add unit tests.
The netlib data files are not included in the coinbrew build and therefore must not be used in the automated CoinUtilsTest.cmd.
- from clang 14.0.3 warnings
add -Wl,-ld_classic
…sting feasible solution
…plied by constraint analysis
…es (gave up only with semi-continuous or semi-integer for now), allow to parametrize tolerances, more debugging code, remove redundant macros. Improve documentation.
* Add missing new cpp files to CoinUtilsUnitTest.vcxproj * Add missing new cpp files to libCoinUtils.vcxproj
* Update linux-ci to move from macos-13 to macos-15-intel
Related to Issuer coin-or#256 to resolve DLL-related compiler error.
…e pairwise clique deduplication Instead of iterating all clique elements and deduplicating via indicator vector (O(n * sum(clique_sizes))), approximate the degree by adding (cliqueSize - 1) per clique. This may overestimate when nodes share multiple cliques or overlap with direct conflicts, but degree is only used for prioritization (BronKerbosch, OddWheel, CliqueExtender). Capped at size_-1 to avoid exceeding node count.
The static int counter1 in CoinFactorization2.cpp is incremented and read by multiple threads concurrently when CBC runs with -threads N. Convert it to std::atomic<int> so that concurrent access is race-free. All existing printf sites cast to (int) for format compatibility. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
FLUSH_PRINT_BUFFER was never defined anywhere in the build, so fflush was never called and log messages could be delayed in file output due to C library full buffering. Define it to 1 unconditionally. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Check elapsed time every 128 iterations in searchOddWheels() outer loop. Initialize maxSeconds_=0.0 (disabled by default). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
prepareGraph() builds a bipartite conflict arc structure in O(icaCount_²), which could dominate the total separation time (e.g. 896s/call on chromaticindex512-7 with 0 cuts found). Previously the time limit was only checked AFTER prepareGraph() returned. Changes: - prepareGraph() now accepts startTime and returns bool (false = aborted) - Time checked every 64 outer iterations inside the O(n²) arc-build loop - searchOddWheels() computes startTime before prepareGraph() call and returns immediately if prepareGraph() aborts Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- lengthMessages_ cannot be negative at this point
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernize the CoinUtils CMake build system to align with current best
practices and with the lemon refactoring done in the same effort.
Changes
CMake
cmake_minimum_requiredto 3.31EXTENSIONS OFF)BUILD_SHARED_LIBSsupport — static remains the default(
-DBUILD_SHARED_LIBS=ONto produce a.so)lib/bindestinations withGNUInstallDirsvariables (
CMAKE_INSTALL_LIBDIR,CMAKE_INSTALL_BINDIR) — fixesincorrect install paths on Rocky Linux where libdir is
lib64POSITION_INDEPENDENT_CODE ON,VERSIONandSOVERSIONproperties on the library target
check_include_filewithcheck_include_file_cxxforconsistency with a C++ project
Packaging / find_package()
configure_package_config_filewithPATH_VARSto producea relocatable package (install prefix was previously baked in at
configure time)
CoinUtilsConfigVersion.cmakeviawrite_basic_package_version_file(SameMajorVersioncompatibility)CoinUtilsTargets.cmakeviainstall(EXPORT ...)— encodesthe actual library type (STATIC/SHARED) instead of reconstructing the
path manually in
Config.cmake.inConfig.cmake.into consumeCoinUtilsTargets.cmakeandexpose
set_and_check-validated pathsInteroperability
add_library(Coin::CoinUtils ALIAS CoinUtils)so consumers canuse
target_link_libraries(... Coin::CoinUtils)whether CoinUtils isfound via
find_package()or pulled in viaadd_subdirectory()inthe AliceVision superbuild
Testing
Verified against:
-DBUILD_SHARED_LIBS=ON)cmake -S . -B build) and as subdirectory in AliceVisionsuperbuild