The models, scripts, and results of the benchmarks performed for a Half Reification Journal paper
at develop 321 lines 11 kB view raw
1cmake_minimum_required(VERSION 3.1.0) 2 3project(chuffed CXX C) 4# The version number. 5set(chuffed_VERSION_MAJOR 0) 6set(chuffed_VERSION_MINOR 10) 7set(chuffed_VERSION_PATCH 4) 8 9### Additional Definitions: 10option(STATIC "compile with the -static linker flag" OFF) 11 12# ------------- Compiler Configuration ------------- 13 14if(STATIC) 15 set(CMAKE_EXE_LINKER_FLAGS "-static") 16endif() 17 18set(DEFAULT_BUILD_TYPE "Release") 19if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 20 message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.") 21 set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build." FORCE) 22 # Set the possible values of build type for cmake-gui 23 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS 24 "Debug" 25 "Release" 26 "MinSizeRel" 27 "RelWithDebInfo" 28 ) 29endif() 30 31if(APPLE) 32 execute_process(COMMAND xcrun --show-sdk-path OUTPUT_VARIABLE OSX_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE) 33 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT}) 34 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") 35endif(APPLE) 36 37set(CMAKE_CXX_STANDARD 11) 38 39find_package(Threads) 40 41include_directories(${CMAKE_BINARY_DIR}) 42include_directories(${CMAKE_SOURCE_DIR}) 43if(WIN32) 44 add_definitions(-DYY_NO_UNISTD_H) 45endif() 46 47# ------------- CP Profiler Integration ------------- 48 49if(EXISTS "${CMAKE_SOURCE_DIR}/submodules/cp-profiler-integration/connector.hpp") 50 set(CHUFFED_PROFILER_SOURCES 51 ${CMAKE_SOURCE_DIR}/submodules/cp-profiler-integration/connector.hpp 52 ${CMAKE_SOURCE_DIR}/submodules/cp-profiler-integration/message.hpp 53 ) 54else() 55 message("Configuring without CP Profiler support.") 56endif() 57 58# ------------- Main Chuffed Definition ------------- 59 60add_library(chuffed 61 chuffed/vars/int-var.cpp 62 chuffed/vars/int-var-el.cpp 63 chuffed/vars/modelling.cpp 64 chuffed/vars/int-var-sl.cpp 65 chuffed/vars/bool-view.cpp 66 chuffed/vars/int-var-ll.cpp 67 chuffed/parallel/master.cpp 68 chuffed/parallel/slave.cpp 69 chuffed/ldsb/ldsb.cpp 70 chuffed/globals/subcircuit.cpp 71 chuffed/globals/mddglobals.cpp 72 chuffed/globals/sym-break.cpp 73 chuffed/globals/linear-bool.cpp 74 chuffed/globals/linear-bool-decomp.cpp 75 chuffed/globals/well-founded.cpp 76 chuffed/globals/circuit.cpp 77 chuffed/globals/minimum.cpp 78 chuffed/globals/bool_arg_max.cpp 79 chuffed/globals/alldiff.cpp 80 chuffed/globals/template.cpp 81 chuffed/globals/directives.cpp 82 chuffed/globals/cumulative.cpp 83 chuffed/globals/cumulativeCalendar.cpp 84 chuffed/globals/disjunctive.cpp 85 chuffed/globals/regular.cpp 86 chuffed/globals/lex.cpp 87 chuffed/globals/table.cpp 88 chuffed/mdd/MDD.cpp 89 chuffed/mdd/mdd_prop.cpp 90 chuffed/mdd/mdd_to_lgraph.cpp 91 chuffed/mdd/MurmurHash3.cpp 92 chuffed/mdd/opcache.cpp 93 chuffed/mdd/weighted_dfa.cpp 94 chuffed/mdd/wmdd_prop.cpp 95 chuffed/mip/mip.cpp 96 chuffed/mip/recalc.cpp 97 chuffed/mip/simplex.cpp 98 chuffed/primitives/element.cpp 99 chuffed/primitives/bool.cpp 100 chuffed/primitives/linear.cpp 101 chuffed/primitives/arithmetic.cpp 102 chuffed/primitives/domain.cpp 103 chuffed/primitives/binary.cpp 104 chuffed/branching/branching.cpp 105 chuffed/core/init.cpp 106 chuffed/core/stats.cpp 107 chuffed/core/engine.cpp 108 chuffed/core/options.cpp 109 chuffed/core/sat.cpp 110 chuffed/core/conflict.cpp 111 chuffed/vars/int-var.h 112 chuffed/vars/vars.h 113 chuffed/vars/int-var-sl.h 114 chuffed/vars/int-var-ll.h 115 chuffed/vars/int-view.h 116 chuffed/vars/int-var-el.h 117 chuffed/vars/modelling.h 118 chuffed/vars/bool-view.h 119 chuffed/parallel/parallel.h 120 chuffed/support/BVec.h 121 chuffed/support/ParseUtils.h 122 chuffed/support/vec.h 123 chuffed/support/misc.h 124 chuffed/support/heap.h 125 chuffed/support/sparse_set.h 126 chuffed/ldsb/ldsb.h 127 chuffed/globals/globals.h 128 chuffed/globals/mddglobals.h 129 chuffed/mdd/CFG.h 130 chuffed/mdd/circ_fns.h 131 chuffed/mdd/circutil.h 132 chuffed/mdd/CYK.h 133 chuffed/mdd/MDD.h 134 chuffed/mdd/mdd_prop.h 135 chuffed/mdd/mdd_to_lgraph.h 136 chuffed/mdd/MurmurHash3.h 137 chuffed/mdd/opcache.h 138 chuffed/mdd/opts.h 139 chuffed/mdd/sorters.h 140 chuffed/mdd/weighted_dfa.h 141 chuffed/mdd/wmdd_prop.h 142 chuffed/mip/mip.h 143 chuffed/mip/simplex.h 144 chuffed/primitives/primitives.h 145 chuffed/branching/branching.h 146 chuffed/core/sat.h 147 chuffed/core/engine.h 148 chuffed/core/sat-types.h 149 chuffed/core/options.h 150 chuffed/core/propagator.h 151 ${CHUFFED_PROFILER_SOURCES} 152) 153 154if(CHUFFED_PROFILER_SOURCES) 155 target_compile_definitions(chuffed PRIVATE HAS_PROFILER) 156endif() 157 158# ------------- FZN Chuffed ------------- 159 160find_package(BISON 3.4) 161if(BISON_FOUND) 162 file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/chuffed/flatzinc) 163 bison_target(FZNParser 164 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/parser.yxx 165 ${PROJECT_BINARY_DIR}/parser.tab.cpp 166 DEFINES_FILE ${PROJECT_BINARY_DIR}/chuffed/flatzinc/parser.tab.h 167 COMPILE_FLAGS "-l" 168 ) 169else() 170 message(WARNING "Bison cannot be run. Using cached file, which may be out of date.") 171 set(BISON_FZNParser_OUTPUTS 172 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/parser.tab.cpp 173 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/parser.tab.h 174 ) 175endif() 176 177find_package(FLEX) 178if(FLEX_FOUND AND BISON_FOUND) 179 flex_target(FZNLexer 180 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/lexer.lxx 181 ${PROJECT_BINARY_DIR}/lexer.yy.cpp 182 COMPILE_FLAGS "-L" 183 ) 184 add_flex_bison_dependency(FZNLexer FZNParser) 185else() 186 message(WARNING "Flex cannot be run. Using cached file, which may be out of date.") 187 set(FLEX_FZNLexer_OUTPUTS ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/lexer.yy.cpp) 188endif() 189 190add_library(chuffed_fzn 191 chuffed/flatzinc/registry.cpp 192 chuffed/flatzinc/flatzinc.cpp 193 ${FLEX_FZNLexer_OUTPUTS} 194 ${BISON_FZNParser_OUTPUTS} 195 chuffed/flatzinc/flatzinc.h 196 chuffed/flatzinc/ast.h 197) 198 199add_executable(fzn-chuffed chuffed/flatzinc/fzn-chuffed.cpp) 200target_link_libraries(fzn-chuffed chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 201 202# ------------- Chuffed Examples ------------- 203 204add_executable(bibd EXCLUDE_FROM_ALL chuffed/examples/bibd.cpp) 205target_link_libraries(bibd chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 206 207add_executable(blackhole EXCLUDE_FROM_ALL chuffed/examples/blackhole.cpp) 208target_link_libraries(blackhole chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 209 210add_executable(concert_hall EXCLUDE_FROM_ALL chuffed/examples/concert_hall.cpp) 211target_link_libraries(concert_hall chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 212 213add_executable(concert_hall_sym EXCLUDE_FROM_ALL chuffed/examples/concert_hall_sym.cpp) 214target_link_libraries(concert_hall_sym chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 215 216add_executable(golomb EXCLUDE_FROM_ALL chuffed/examples/golomb.cpp) 217target_link_libraries(golomb chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 218 219add_executable(graceful_graph EXCLUDE_FROM_ALL chuffed/examples/graceful_graph.cpp) 220target_link_libraries(graceful_graph chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 221 222add_executable(graph_colouring EXCLUDE_FROM_ALL chuffed/examples/graph_colouring.cpp) 223target_link_libraries(graph_colouring chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 224 225add_executable(graph_colouring_sym EXCLUDE_FROM_ALL chuffed/examples/graph_colouring_sym.cpp) 226target_link_libraries(graph_colouring_sym chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 227 228add_executable(graph_colouring_sym2 EXCLUDE_FROM_ALL chuffed/examples/graph_colouring_sym2.cpp) 229target_link_libraries(graph_colouring_sym2 chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 230 231add_executable(grid_colouring EXCLUDE_FROM_ALL chuffed/examples/grid_colouring.cpp) 232target_link_libraries(grid_colouring chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 233 234add_executable(latin_square EXCLUDE_FROM_ALL chuffed/examples/latin_square.cpp) 235target_link_libraries(latin_square chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 236 237add_executable(magic_square EXCLUDE_FROM_ALL chuffed/examples/magic_square.cpp) 238target_link_libraries(magic_square chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 239 240add_executable(mosp EXCLUDE_FROM_ALL chuffed/examples/mosp.cpp) 241target_link_libraries(mosp chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 242 243add_executable(nn_queens EXCLUDE_FROM_ALL chuffed/examples/nn_queens.cpp) 244target_link_libraries(nn_queens chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 245 246add_executable(non EXCLUDE_FROM_ALL chuffed/examples/non.cpp) 247target_link_libraries(non chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 248 249add_executable(photo EXCLUDE_FROM_ALL chuffed/examples/photo.cpp) 250target_link_libraries(photo chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 251 252add_executable(queens EXCLUDE_FROM_ALL chuffed/examples/queens.cpp) 253target_link_libraries(queens chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 254 255add_executable(rcpsp EXCLUDE_FROM_ALL chuffed/examples/rcpsp.cpp) 256target_link_libraries(rcpsp chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 257 258add_executable(shift EXCLUDE_FROM_ALL chuffed/examples/shift.cpp) 259target_link_libraries(shift chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 260 261add_executable(steel_mill EXCLUDE_FROM_ALL chuffed/examples/steel_mill.cpp) 262target_link_libraries(steel_mill chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 263 264add_executable(wreg_shift EXCLUDE_FROM_ALL chuffed/examples/wreg_shift.cpp) 265target_link_libraries(wreg_shift chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 266 267find_package(ZLIB) 268if(ZLIB_FOUND) 269 include_directories(${ZLIB_INCLUDE_DIRS}) 270 271 add_executable(cross EXCLUDE_FROM_ALL chuffed/examples/cross.cpp) 272 target_link_libraries(cross chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES}) 273 274 add_executable(fdpent EXCLUDE_FROM_ALL chuffed/examples/fdpent.cpp) 275 target_link_libraries(fdpent chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES}) 276 277 add_executable(nurse EXCLUDE_FROM_ALL chuffed/examples/nurse.cpp) 278 target_link_libraries(nurse chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES}) 279 280 set(ZLIB_EXAMPLES 281 cross 282 fdpent 283 nurse 284 ) 285endif() 286 287add_custom_target(examples) 288add_dependencies(examples 289 bibd 290 blackhole 291 concert_hall 292 concert_hall_sym 293 golomb 294 graceful_graph 295 graph_colouring 296 graph_colouring_sym 297 graph_colouring_sym2 298 grid_colouring 299 latin_square 300 magic_square 301 mosp 302 nn_queens 303 non 304 photo 305 queens 306 rcpsp 307 shift 308 steel_mill 309 wreg_shift 310 ${ZLIB_EXAMPLES} 311) 312 313# ------------- TARGET install ------------- 314include(GNUInstallDirs) 315 316file(RELATIVE_PATH REL_INSTALL_BINARY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/minizinc/solvers ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/fzn-chuffed) 317configure_file(chuffed.msc.in chuffed.msc) 318 319install(TARGETS fzn-chuffed RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 320install(DIRECTORY chuffed/flatzinc/mznlib/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/minizinc/chuffed PATTERN "chuffed/flatzinc/mznlib/*") 321install(FILES ${CMAKE_BINARY_DIR}/chuffed.msc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/minizinc/solvers)