[Lemon-commits] Alpar Juttner: Merge
Lemon HG
hg at lemon.cs.elte.hu
Wed Oct 17 20:07:38 CEST 2018
details: http://lemon.cs.elte.hu/hg/lemon/rev/3c00344f49c9
changeset: 1402:3c00344f49c9
user: Alpar Juttner <alpar [at] cs.elte.hu>
date: Wed Oct 17 19:14:07 2018 +0200
description:
Merge
diffstat:
AUTHORS | 10 +-
CMakeLists.txt | 224 ++++-
INSTALL | 244 ++---
LICENSE | 2 +-
Makefile.am | 80 -
NEWS | 98 ++
cmake/FindCOIN.cmake | 20 +-
cmake/FindCPLEX.cmake | 40 -
cmake/FindGLPK.cmake | 6 -
cmake/FindILOG.cmake | 106 ++
cmake/FindSOPLEX.cmake | 23 +
cmake/version.cmake.in | 2 +-
configure.ac | 157 ---
contrib/CMakeLists.txt | 19 +
demo/Makefile.am | 17 -
doc/CMakeLists.txt | 54 +-
doc/Doxyfile.in | 11 +-
doc/DoxygenLayout.xml | 1 -
doc/Makefile.am | 125 --
doc/coding_style.dox | 6 +-
doc/dirs.dox | 15 +-
doc/groups.dox | 126 ++-
doc/images/adaptors1.eps | 303 ++++++
doc/images/adaptors2.eps | 349 ++++++++
doc/images/bipartite_partitions.eps | 108 +-
doc/images/connected_components.eps | 198 ++--
doc/images/edge_biconnected_components.eps | 198 ++--
doc/images/graph_to_eps.png | Bin
doc/images/node_biconnected_components.eps | 198 ++--
doc/images/strongly_connected_components.eps | 190 ++--
doc/images/tsp.eps | 229 +++++
doc/lgf.dox | 29 +-
doc/mainpage.dox.in | 6 +-
doc/min_cost_flow.dox | 6 +-
doc/references.bib | 61 +-
lemon/CMakeLists.txt | 18 +-
lemon/Makefile.am | 151 ---
lemon/adaptors.h | 2 +-
lemon/arg_parser.cc | 4 +-
lemon/arg_parser.h | 1 +
lemon/assert.h | 4 +-
lemon/base.cc | 5 +-
lemon/bellman_ford.h | 9 +-
lemon/bfs.h | 4 +-
lemon/bin_heap.h | 2 +-
lemon/bits/alteration_notifier.h | 9 +-
lemon/bits/array_map.h | 2 +-
lemon/bits/bezier.h | 2 +-
lemon/bits/default_map.h | 2 +-
lemon/bits/edge_set_extender.h | 2 +-
lemon/bits/graph_adaptor_extender.h | 2 +-
lemon/bits/graph_extender.h | 583 +++++++++++++-
lemon/bits/lock.h | 65 +
lemon/bits/map_extender.h | 2 +-
lemon/bits/path_dump.h | 2 +-
lemon/bits/solver_bits.h | 2 +-
lemon/bits/traits.h | 84 +-
lemon/bits/windows.cc | 50 +-
lemon/bits/windows.h | 13 +-
lemon/capacity_scaling.h | 65 +-
lemon/cbc.cc | 2 +-
lemon/cbc.h | 3 +-
lemon/christofides_tsp.h | 254 +++++
lemon/circulation.h | 5 +-
lemon/clp.cc | 2 +-
lemon/clp.h | 2 +-
lemon/concept_check.h | 6 +-
lemon/concepts/bpgraph.h | 1029 +++++++++++++++++++++++
lemon/concepts/digraph.h | 10 +-
lemon/concepts/graph.h | 22 +-
lemon/concepts/graph_components.h | 680 ++++++++++++++-
lemon/concepts/heap.h | 20 +-
lemon/concepts/maps.h | 18 +-
lemon/concepts/path.h | 32 +-
lemon/config.h.cmake | 8 -
lemon/config.h.in | 41 +-
lemon/connectivity.h | 29 +-
lemon/core.h | 658 ++++++++++++++-
lemon/cost_scaling.h | 587 ++++++++++---
lemon/counter.h | 2 +
lemon/cplex.cc | 57 +-
lemon/cplex.h | 22 +-
lemon/cycle_canceling.h | 154 ++-
lemon/dfs.h | 4 +-
lemon/dijkstra.h | 8 +-
lemon/dim2.h | 1 +
lemon/dimacs.h | 15 +-
lemon/edge_set.h | 2 +-
lemon/edmonds_karp.h | 556 ++++++++++++
lemon/elevator.h | 6 +-
lemon/euler.h | 4 +-
lemon/fractional_matching.h | 6 +-
lemon/full_graph.h | 456 ++++++++++-
lemon/glpk.cc | 13 +-
lemon/glpk.h | 17 +-
lemon/gomory_hu.h | 4 +-
lemon/graph_to_eps.h | 7 +-
lemon/greedy_tsp.h | 251 +++++
lemon/grosso_locatelli_pullan_mc.h | 840 +++++++++++++++++++
lemon/hao_orlin.h | 34 +-
lemon/hartmann_orlin_mmc.h | 22 +-
lemon/howard_mmc.h | 68 +-
lemon/insertion_tsp.h | 533 ++++++++++++
lemon/karp_mmc.h | 14 +-
lemon/kruskal.h | 5 +-
lemon/lemon.pc.cmake | 10 -
lemon/lemon.pc.in | 12 +-
lemon/lgf_reader.h | 1134 +++++++++++++++++++++++++-
lemon/lgf_writer.h | 896 ++++++++++++++++++++-
lemon/list_graph.h | 917 ++++++++++++++++++++-
lemon/lp.h | 50 +-
lemon/lp_base.cc | 2 +-
lemon/lp_base.h | 51 +-
lemon/lp_skeleton.cc | 4 +-
lemon/lp_skeleton.h | 7 +-
lemon/maps.h | 2 +-
lemon/matching.h | 2 +-
lemon/math.h | 9 +-
lemon/max_cardinality_search.h | 794 ++++++++++++++++++
lemon/min_cost_arborescence.h | 6 +-
lemon/nagamochi_ibaraki.h | 702 ++++++++++++++++
lemon/nearest_neighbor_tsp.h | 238 +++++
lemon/network_simplex.h | 376 ++++---
lemon/opt2_tsp.h | 367 ++++++++
lemon/path.h | 32 +-
lemon/planarity.h | 14 +-
lemon/preflow.h | 28 +-
lemon/radix_sort.h | 22 +-
lemon/random.h | 16 +-
lemon/smart_graph.h | 533 ++++++++++++-
lemon/soplex.cc | 2 +-
lemon/soplex.h | 2 +-
lemon/static_graph.h | 2 +-
lemon/suurballe.h | 6 +-
lemon/time_measure.h | 82 +-
lemon/unionfind.h | 2 +-
m4/lx_check_coin.m4 | 136 ---
m4/lx_check_cplex.m4 | 81 -
m4/lx_check_glpk.m4 | 84 -
m4/lx_check_soplex.m4 | 73 -
scripts/Makefile.am | 7 -
scripts/bib2dox.py | 816 ------------------
scripts/bootstrap.sh | 157 ---
scripts/chg-len.py | 46 -
scripts/mk-release.sh | 49 -
test/CMakeLists.txt | 19 +-
test/Makefile.am | 101 --
test/adaptors_test.cc | 8 +-
test/arc_look_up_test.cc | 13 +-
test/bellman_ford_test.cc | 8 +-
test/bfs_test.cc | 5 +-
test/bpgraph_test.cc | 456 ++++++++++
test/circulation_test.cc | 5 +-
test/connectivity_test.cc | 23 +-
test/dfs_test.cc | 8 +-
test/digraph_test.cc | 15 +-
test/dijkstra_test.cc | 6 +-
test/edge_set_test.cc | 26 +-
test/euler_test.cc | 8 +-
test/fractional_matching_test.cc | 4 +-
test/gomory_hu_test.cc | 3 +-
test/graph_copy_test.cc | 239 ++++-
test/graph_test.cc | 14 +-
test/graph_test.h | 130 ++-
test/hao_orlin_test.cc | 3 +-
test/heap_test.cc | 2 +-
test/lgf_reader_writer_test.cc | 578 +++++++++++++
test/lgf_test.cc | 14 +-
test/lp_test.cc | 22 +-
test/maps_test.cc | 31 +-
test/matching_test.cc | 3 +-
test/max_cardinality_search_test.cc | 162 +++
test/max_clique_test.cc | 188 ++++
test/max_flow_test.cc | 440 ++++++++++
test/min_cost_arborescence_test.cc | 7 +-
test/min_cost_flow_test.cc | 8 +-
test/min_mean_cycle_test.cc | 11 +-
test/mip_test.cc | 12 +
test/nagamochi_ibaraki_test.cc | 142 +++
test/path_test.cc | 332 ++++++-
test/planarity_test.cc | 67 +-
test/preflow_test.cc | 276 ------
test/radix_sort_test.cc | 143 +++-
test/suurballe_test.cc | 8 +-
test/time_measure_test.cc | 4 +-
test/tsp_test.cc | 287 ++++++
tools/Makefile.am | 17 -
tools/dimacs-solver.cc | 16 +-
tools/dimacs-to-lgf.cc | 2 +
tools/lgf-gen.cc | 41 +-
190 files changed, 18378 insertions(+), 4153 deletions(-)
diffs (truncated from 28624 to 300 lines):
diff --git a/AUTHORS b/AUTHORS
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,15 +1,15 @@
-The authors of the 1.x series are
+The main developers of release series 1.x are
* Balazs Dezso <deba at inf.elte.hu>
* Alpar Juttner <alpar at cs.elte.hu>
* Peter Kovacs <kpeter at inf.elte.hu>
* Akos Ladanyi <ladanyi at tmit.bme.hu>
-For more details on the actual contribution, please visit the history
-of the main LEMON source repository: http://lemon.cs.elte.hu/hg/lemon
+For more complete list of contributors, please visit the history of
+the LEMON source code repository: http://lemon.cs.elte.hu/hg/lemon
-Moreover, this version is heavily based on the 0.x series of
-LEMON. Here is the list of people who contributed to those versions.
+Moreover, this version is heavily based on version 0.x of LEMON. Here
+is the list of people who contributed to those versions.
* Mihaly Barasz <klao at cs.elte.hu>
* Johanna Becker <beckerjc at cs.elte.hu>
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,13 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+
+IF(POLICY CMP0048)
+ CMAKE_POLICY(SET CMP0048 OLD)
+ENDIF(POLICY CMP0048)
+
+IF(POLICY CMP0026)
+ #This is for copying the dll's needed by glpk (in lp_test and mip_test)
+ CMAKE_POLICY(SET CMP0026 OLD)
+ENDIF(POLICY CMP0026)
SET(PROJECT_NAME "LEMON")
PROJECT(${PROJECT_NAME})
@@ -12,29 +21,47 @@
SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.")
ELSE()
EXECUTE_PROCESS(
- COMMAND ${PYTHON_EXECUTABLE} ./scripts/chg-len.py
+ COMMAND
+ hg log -r. --template "{latesttag}"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- OUTPUT_VARIABLE HG_REVISION_PATH
+ OUTPUT_VARIABLE HG_REVISION_TAG
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
EXECUTE_PROCESS(
- COMMAND hg id -i
+ COMMAND
+ hg log -r. --template "{latesttagdistance}"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- OUTPUT_VARIABLE HG_REVISION
+ OUTPUT_VARIABLE HG_REVISION_DIST
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
- IF(HG_REVISION STREQUAL "")
+ EXECUTE_PROCESS(
+ COMMAND
+ hg log -r. --template "{node|short}"
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ OUTPUT_VARIABLE HG_REVISION_ID
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ IF(HG_REVISION_TAG STREQUAL "")
SET(HG_REVISION_ID "hg-tip")
ELSE()
- IF(HG_REVISION_PATH STREQUAL "")
- SET(HG_REVISION_ID ${HG_REVISION})
+ IF(HG_REVISION_TAG STREQUAL "null")
+ SET(HG_REVISION_TAG "trunk")
+ ELSEIF(HG_REVISION_TAG MATCHES "^r")
+ STRING(SUBSTRING ${HG_REVISION_TAG} 1 -1 HG_REVISION_TAG)
+ ENDIF()
+ IF(HG_REVISION_DIST STREQUAL "0")
+ SET(HG_REVISION ${HG_REVISION_TAG})
ELSE()
- SET(HG_REVISION_ID ${HG_REVISION_PATH}.${HG_REVISION})
+ SET(HG_REVISION
+ "${HG_REVISION_TAG}+${HG_REVISION_DIST}-${HG_REVISION_ID}")
ENDIF()
ENDIF()
- SET(LEMON_VERSION ${HG_REVISION_ID} CACHE STRING "LEMON version string.")
+
+ SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.")
ENDIF()
SET(PROJECT_VERSION ${LEMON_VERSION})
@@ -43,9 +70,84 @@
FIND_PACKAGE(Doxygen)
FIND_PACKAGE(Ghostscript)
-FIND_PACKAGE(GLPK 4.33)
-FIND_PACKAGE(CPLEX)
-FIND_PACKAGE(COIN)
+
+IF(WIN32)
+ SET(LEMON_WIN32 TRUE)
+ENDIF(WIN32)
+
+SET(LEMON_ENABLE_GLPK YES CACHE STRING "Enable GLPK solver backend.")
+SET(LEMON_ENABLE_ILOG YES CACHE STRING "Enable ILOG (CPLEX) solver backend.")
+SET(LEMON_ENABLE_COIN YES CACHE STRING "Enable COIN solver backend.")
+SET(LEMON_ENABLE_SOPLEX YES CACHE STRING "Enable SoPlex solver backend.")
+
+IF(LEMON_ENABLE_GLPK)
+ FIND_PACKAGE(GLPK 4.33)
+ IF(GLPK_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_GLPK TRUE)
+ ENDIF(GLPK_FOUND)
+ENDIF(LEMON_ENABLE_GLPK)
+IF(LEMON_ENABLE_ILOG)
+ FIND_PACKAGE(ILOG)
+ IF(ILOG_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_CPLEX TRUE)
+ ENDIF(ILOG_FOUND)
+ENDIF(LEMON_ENABLE_ILOG)
+IF(LEMON_ENABLE_COIN)
+ FIND_PACKAGE(COIN)
+ IF(COIN_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_CLP TRUE)
+ SET(LEMON_HAVE_CBC TRUE)
+ ENDIF(COIN_FOUND)
+ENDIF(LEMON_ENABLE_COIN)
+IF(LEMON_ENABLE_SOPLEX)
+ FIND_PACKAGE(SOPLEX)
+ IF(SOPLEX_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_SOPLEX TRUE)
+ ENDIF(SOPLEX_FOUND)
+ENDIF(LEMON_ENABLE_SOPLEX)
+
+IF(ILOG_FOUND)
+ SET(DEFAULT_LP "CPLEX")
+ SET(DEFAULT_MIP "CPLEX")
+ELSEIF(COIN_FOUND)
+ SET(DEFAULT_LP "CLP")
+ SET(DEFAULT_MIP "CBC")
+ELSEIF(GLPK_FOUND)
+ SET(DEFAULT_LP "GLPK")
+ SET(DEFAULT_MIP "GLPK")
+ELSEIF(SOPLEX_FOUND)
+ SET(DEFAULT_LP "SOPLEX")
+ENDIF()
+
+IF(NOT LEMON_DEFAULT_LP OR
+ (NOT ILOG_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CPLEX")) OR
+ (NOT COIN_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CLP")) OR
+ (NOT GLPK_FOUND AND (LEMON_DEFAULT_LP STREQUAL "GLPK")) OR
+ (NOT SOPLEX_FOUND AND (LEMON_DEFAULT_LP STREQUAL "SOPLEX")))
+ SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING
+ "Default LP solver backend (GLPK, CPLEX, CLP or SOPLEX)" FORCE)
+ELSE()
+ SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING
+ "Default LP solver backend (GLPK, CPLEX, CLP or SOPLEX)")
+ENDIF()
+IF(NOT LEMON_DEFAULT_MIP OR
+ (NOT ILOG_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CPLEX")) OR
+ (NOT COIN_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CBC")) OR
+ (NOT GLPK_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "GLPK")))
+ SET(LEMON_DEFAULT_MIP ${DEFAULT_MIP} CACHE STRING
+ "Default MIP solver backend (GLPK, CPLEX or CBC)" FORCE)
+ELSE()
+ SET(LEMON_DEFAULT_MIP ${DEFAULT_MIP} CACHE STRING
+ "Default MIP solver backend (GLPK, CPLEX or CBC)")
+ENDIF()
+
IF(DEFINED ENV{LEMON_CXX_WARNING})
SET(CXX_WARNING $ENV{LEMON_CXX_WARNING})
@@ -56,10 +158,13 @@
SET(CMAKE_C_FLAGS_DEBUG CACHE STRING "-ggdb")
ELSEIF(MSVC)
# This part is unnecessary 'casue the same is set by the lemon/core.h.
- # Still keep it as an example.
- SET(CXX_WARNING "/wd4250 /wd4355 /wd4503 /wd4800 /wd4996")
+ # Still kept as an example.
+
+ # SET(CXX_WARNING "/wd4250 /wd4267 /wd4355 /wd4503 /wd4800 /wd4996")
+
# Suppressed warnings:
# C4250: 'class1' : inherits 'class2::member' via dominance
+ # C4267: conversion from 'size_t' to 'type', possible loss of data
# C4355: 'this' : used in base member initializer list
# C4503: 'function' : decorated name length exceeded, name was truncated
# C4800: 'type' : forcing value to bool 'true' or 'false'
@@ -73,20 +178,39 @@
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LEMON_CXX_WARNING_FLAGS}")
-SET( CMAKE_CXX_FLAGS_MAINTAINER "-Werror -ggdb -O0" CACHE STRING
+IF(MSVC)
+ SET(CMAKE_CXX_FLAGS "/bigobj ${CMAKE_CXX_FLAGS}")
+ SET( CMAKE_CXX_FLAGS_MAINTAINER "/WX ${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING
"Flags used by the C++ compiler during maintainer builds."
- FORCE )
-SET( CMAKE_C_FLAGS_MAINTAINER "-Werror -O0" CACHE STRING
+ )
+ SET( CMAKE_C_FLAGS_MAINTAINER "/WX ${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING
"Flags used by the C compiler during maintainer builds."
- FORCE )
-SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
- "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING
+ )
+ SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
+ "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE STRING
"Flags used for linking binaries during maintainer builds."
- FORCE )
-SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
- "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING
+ )
+ SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
+ "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE STRING
"Flags used by the shared libraries linker during maintainer builds."
- FORCE )
+ )
+ELSE()
+ SET( CMAKE_CXX_FLAGS_MAINTAINER "-Werror -ggdb -O0" CACHE STRING
+ "Flags used by the C++ compiler during maintainer builds."
+ )
+ SET( CMAKE_C_FLAGS_MAINTAINER "-Werror -O0" CACHE STRING
+ "Flags used by the C compiler during maintainer builds."
+ )
+ SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
+ "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE STRING
+ "Flags used for linking binaries during maintainer builds."
+ )
+ SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
+ "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE STRING
+ "Flags used by the shared libraries linker during maintainer builds."
+ )
+ENDIF()
+
MARK_AS_ADVANCED(
CMAKE_CXX_FLAGS_MAINTAINER
CMAKE_C_FLAGS_MAINTAINER
@@ -114,7 +238,27 @@
CHECK_TYPE_SIZE("long long" LONG_LONG)
SET(LEMON_HAVE_LONG_LONG ${HAVE_LONG_LONG})
-INCLUDE(FindPythonInterp)
+INCLUDE(FindThreads)
+
+IF(NOT LEMON_THREADING)
+ IF(CMAKE_USE_PTHREADS_INIT)
+ SET(LEMON_THREADING "Pthread")
+ ELSEIF(CMAKE_USE_WIN32_THREADS_INIT)
+ SET(LEMON_THREADING "Win32")
+ ELSE()
+ SET(LEMON_THREADING "None")
+ ENDIF()
+ENDIF()
+
+SET( LEMON_THREADING "${LEMON_THREADING}" CACHE STRING
+ "Choose the threading library, options are: Pthread Win32 None."
+ FORCE )
+
+IF(LEMON_THREADING STREQUAL "Pthread")
+ SET(LEMON_USE_PTHREAD TRUE)
+ELSEIF(LEMON_THREADING STREQUAL "Win32")
+ SET(LEMON_USE_WIN32_THREADS TRUE)
+ENDIF()
ENABLE_TESTING()
@@ -126,6 +270,7 @@
ADD_SUBDIRECTORY(lemon)
IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
+ ADD_SUBDIRECTORY(contrib)
ADD_SUBDIRECTORY(demo)
ADD_SUBDIRECTORY(tools)
ADD_SUBDIRECTORY(doc)
@@ -149,6 +294,33 @@
)
ENDIF()
+CONFIGURE_FILE(
+ ${PROJECT_SOURCE_DIR}/cmake/version.cmake.in
+ ${PROJECT_BINARY_DIR}/cmake/version.cmake
+ @ONLY
+)
+
More information about the Lemon-commits
mailing list