[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