this repo has no description
at develop 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/globals/edit_distance.cpp 89 chuffed/globals/EdExplFinder.cpp 90 chuffed/globals/EdExplFinder.h 91 chuffed/mdd/MDD.cpp 92 chuffed/mdd/mdd_prop.cpp 93 chuffed/mdd/mdd_to_lgraph.cpp 94 chuffed/mdd/MurmurHash3.cpp 95 chuffed/mdd/opcache.cpp 96 chuffed/mdd/weighted_dfa.cpp 97 chuffed/mdd/wmdd_prop.cpp 98 chuffed/mip/mip.cpp 99 chuffed/mip/recalc.cpp 100 chuffed/mip/simplex.cpp 101 chuffed/primitives/element.cpp 102 chuffed/primitives/bool.cpp 103 chuffed/primitives/linear.cpp 104 chuffed/primitives/arithmetic.cpp 105 chuffed/primitives/domain.cpp 106 chuffed/primitives/binary.cpp 107 chuffed/branching/branching.cpp 108 chuffed/core/init.cpp 109 chuffed/core/stats.cpp 110 chuffed/core/engine.cpp 111 chuffed/core/options.cpp 112 chuffed/core/sat.cpp 113 chuffed/core/conflict.cpp 114 chuffed/vars/int-var.h 115 chuffed/vars/vars.h 116 chuffed/vars/int-var-sl.h 117 chuffed/vars/int-var-ll.h 118 chuffed/vars/int-view.h 119 chuffed/vars/int-var-el.h 120 chuffed/vars/modelling.h 121 chuffed/vars/bool-view.h 122 chuffed/parallel/parallel.h 123 chuffed/support/BVec.h 124 chuffed/support/ParseUtils.h 125 chuffed/support/vec.h 126 chuffed/support/misc.h 127 chuffed/support/heap.h 128 chuffed/support/sparse_set.h 129 chuffed/ldsb/ldsb.h 130 chuffed/globals/globals.h 131 chuffed/globals/mddglobals.h 132 chuffed/mdd/CFG.h 133 chuffed/mdd/circ_fns.h 134 chuffed/mdd/circutil.h 135 chuffed/mdd/CYK.h 136 chuffed/mdd/MDD.h 137 chuffed/mdd/mdd_prop.h 138 chuffed/mdd/mdd_to_lgraph.h 139 chuffed/mdd/MurmurHash3.h 140 chuffed/mdd/opcache.h 141 chuffed/mdd/opts.h 142 chuffed/mdd/sorters.h 143 chuffed/mdd/weighted_dfa.h 144 chuffed/mdd/wmdd_prop.h 145 chuffed/mip/mip.h 146 chuffed/mip/simplex.h 147 chuffed/primitives/primitives.h 148 chuffed/branching/branching.h 149 chuffed/core/sat.h 150 chuffed/core/engine.h 151 chuffed/core/sat-types.h 152 chuffed/core/options.h 153 chuffed/core/propagator.h 154 ${CHUFFED_PROFILER_SOURCES} 155) 156 157if(CHUFFED_PROFILER_SOURCES) 158 target_compile_definitions(chuffed PRIVATE HAS_PROFILER) 159endif() 160 161# ------------- FZN Chuffed ------------- 162 163find_package(BISON 3.4) 164if(BISON_FOUND) 165 file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/chuffed/flatzinc) 166 bison_target(FZNParser 167 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/parser.yxx 168 ${PROJECT_BINARY_DIR}/parser.tab.cpp 169 DEFINES_FILE ${PROJECT_BINARY_DIR}/chuffed/flatzinc/parser.tab.h 170 COMPILE_FLAGS "-l" 171 ) 172else() 173 message(WARNING "Bison cannot be run. Using cached file, which may be out of date.") 174 set(BISON_FZNParser_OUTPUTS 175 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/parser.tab.cpp 176 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/parser.tab.h 177 ) 178endif() 179 180find_package(FLEX) 181if(FLEX_FOUND AND BISON_FOUND) 182 flex_target(FZNLexer 183 ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/lexer.lxx 184 ${PROJECT_BINARY_DIR}/lexer.yy.cpp 185 COMPILE_FLAGS "-L" 186 ) 187 add_flex_bison_dependency(FZNLexer FZNParser) 188else() 189 message(WARNING "Flex cannot be run. Using cached file, which may be out of date.") 190 set(FLEX_FZNLexer_OUTPUTS ${PROJECT_SOURCE_DIR}/chuffed/flatzinc/lexer.yy.cpp) 191endif() 192 193add_library(chuffed_fzn 194 chuffed/flatzinc/registry.cpp 195 chuffed/flatzinc/flatzinc.cpp 196 ${FLEX_FZNLexer_OUTPUTS} 197 ${BISON_FZNParser_OUTPUTS} 198 chuffed/flatzinc/flatzinc.h 199 chuffed/flatzinc/ast.h 200) 201 202add_executable(fzn-chuffed chuffed/flatzinc/fzn-chuffed.cpp) 203target_link_libraries(fzn-chuffed chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 204 205# ------------- Chuffed Examples ------------- 206 207add_executable(bibd EXCLUDE_FROM_ALL chuffed/examples/bibd.cpp) 208target_link_libraries(bibd chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 209 210add_executable(blackhole EXCLUDE_FROM_ALL chuffed/examples/blackhole.cpp) 211target_link_libraries(blackhole chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 212 213add_executable(concert_hall EXCLUDE_FROM_ALL chuffed/examples/concert_hall.cpp) 214target_link_libraries(concert_hall chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 215 216add_executable(concert_hall_sym EXCLUDE_FROM_ALL chuffed/examples/concert_hall_sym.cpp) 217target_link_libraries(concert_hall_sym chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 218 219add_executable(golomb EXCLUDE_FROM_ALL chuffed/examples/golomb.cpp) 220target_link_libraries(golomb chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 221 222add_executable(graceful_graph EXCLUDE_FROM_ALL chuffed/examples/graceful_graph.cpp) 223target_link_libraries(graceful_graph chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 224 225add_executable(graph_colouring EXCLUDE_FROM_ALL chuffed/examples/graph_colouring.cpp) 226target_link_libraries(graph_colouring chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 227 228add_executable(graph_colouring_sym EXCLUDE_FROM_ALL chuffed/examples/graph_colouring_sym.cpp) 229target_link_libraries(graph_colouring_sym chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 230 231add_executable(graph_colouring_sym2 EXCLUDE_FROM_ALL chuffed/examples/graph_colouring_sym2.cpp) 232target_link_libraries(graph_colouring_sym2 chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 233 234add_executable(grid_colouring EXCLUDE_FROM_ALL chuffed/examples/grid_colouring.cpp) 235target_link_libraries(grid_colouring chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 236 237add_executable(latin_square EXCLUDE_FROM_ALL chuffed/examples/latin_square.cpp) 238target_link_libraries(latin_square chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 239 240add_executable(magic_square EXCLUDE_FROM_ALL chuffed/examples/magic_square.cpp) 241target_link_libraries(magic_square chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 242 243add_executable(mosp EXCLUDE_FROM_ALL chuffed/examples/mosp.cpp) 244target_link_libraries(mosp chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 245 246add_executable(nn_queens EXCLUDE_FROM_ALL chuffed/examples/nn_queens.cpp) 247target_link_libraries(nn_queens chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 248 249add_executable(non EXCLUDE_FROM_ALL chuffed/examples/non.cpp) 250target_link_libraries(non chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 251 252add_executable(photo EXCLUDE_FROM_ALL chuffed/examples/photo.cpp) 253target_link_libraries(photo chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 254 255add_executable(queens EXCLUDE_FROM_ALL chuffed/examples/queens.cpp) 256target_link_libraries(queens chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 257 258add_executable(rcpsp EXCLUDE_FROM_ALL chuffed/examples/rcpsp.cpp) 259target_link_libraries(rcpsp chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 260 261add_executable(shift EXCLUDE_FROM_ALL chuffed/examples/shift.cpp) 262target_link_libraries(shift chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 263 264add_executable(steel_mill EXCLUDE_FROM_ALL chuffed/examples/steel_mill.cpp) 265target_link_libraries(steel_mill chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 266 267add_executable(wreg_shift EXCLUDE_FROM_ALL chuffed/examples/wreg_shift.cpp) 268target_link_libraries(wreg_shift chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT}) 269 270find_package(ZLIB) 271if(ZLIB_FOUND) 272 include_directories(${ZLIB_INCLUDE_DIRS}) 273 274 add_executable(cross EXCLUDE_FROM_ALL chuffed/examples/cross.cpp) 275 target_link_libraries(cross chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES}) 276 277 add_executable(fdpent EXCLUDE_FROM_ALL chuffed/examples/fdpent.cpp) 278 target_link_libraries(fdpent chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES}) 279 280 add_executable(nurse EXCLUDE_FROM_ALL chuffed/examples/nurse.cpp) 281 target_link_libraries(nurse chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES}) 282 283 set(ZLIB_EXAMPLES 284 cross 285 fdpent 286 nurse 287 ) 288endif() 289 290add_custom_target(examples) 291add_dependencies(examples 292 bibd 293 blackhole 294 concert_hall 295 concert_hall_sym 296 golomb 297 graceful_graph 298 graph_colouring 299 graph_colouring_sym 300 graph_colouring_sym2 301 grid_colouring 302 latin_square 303 magic_square 304 mosp 305 nn_queens 306 non 307 photo 308 queens 309 rcpsp 310 shift 311 steel_mill 312 wreg_shift 313 ${ZLIB_EXAMPLES} 314) 315 316# ------------- TARGET install ------------- 317include(GNUInstallDirs) 318 319file(RELATIVE_PATH REL_INSTALL_BINARY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/minizinc/solvers ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/fzn-chuffed) 320configure_file(chuffed.msc.in chuffed.msc) 321 322install(TARGETS fzn-chuffed RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 323install(DIRECTORY chuffed/flatzinc/mznlib/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/minizinc/chuffed PATTERN "chuffed/flatzinc/mznlib/*") 324install(FILES ${CMAKE_BINARY_DIR}/chuffed.msc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/minizinc/solvers)