cmake_minimum_required(VERSION 3.21 FATAL_ERROR) project(minisat) set(CMAKE_CXX_STANDARD 17) #-------------------------------------------------------------------------------------------------- # Configurable options: option(STATIC_BINARIES "Link binaries statically." ON) option(USE_SORELEASE "Use SORELEASE in shared library filename." ON) option(PRINT_PROOFS "Enable the -c option in the minisat binary to print resolution proofs." ON) #-------------------------------------------------------------------------------------------------- # Library version: set(MINISAT_SOMAJOR 1) set(MINISAT_SOMINOR 14) set(MINISAT_SORELEASE "P") # Compute VERSION and SOVERSION: if (USE_SORELEASE) set(MINISAT_VERSION ${MINISAT_SOMAJOR}.${MINISAT_SOMINOR}.${MINISAT_SORELEASE}) else() set(MINISAT_VERSION ${MINISAT_SOMAJOR}.${MINISAT_SOMINOR}) endif() set(MINISAT_SOVERSION ${MINISAT_SOMAJOR}) #-------------------------------------------------------------------------------------------------- # Dependencies: find_package(ZLIB) include_directories(${ZLIB_INCLUDE_DIR}) include_directories(${minisat_SOURCE_DIR}) #-------------------------------------------------------------------------------------------------- # Compile flags: add_definitions(-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS) #-------------------------------------------------------------------------------------------------- # Macro switches: if(PRINT_PROOFS) add_compile_definitions(ENABLE_PROOF) endif() #-------------------------------------------------------------------------------------------------- # Build Targets: add_subdirectory(src) target_link_libraries(minisat-lib-shared ${ZLIB_LIBRARY}) target_link_libraries(minisat-lib-static ${ZLIB_LIBRARY}) add_executable(minisat_core src/Main.C) if(STATIC_BINARIES) target_link_libraries(minisat_core minisat-lib-static) else() target_link_libraries(minisat_core minisat-lib-shared) endif() set_target_properties(minisat-lib-static PROPERTIES OUTPUT_NAME "minisat") set_target_properties(minisat-lib-shared PROPERTIES OUTPUT_NAME "minisat" VERSION ${MINISAT_VERSION} SOVERSION ${MINISAT_SOVERSION}) #-------------------------------------------------------------------------------------------------- # Installation targets: install(TARGETS minisat-lib-static minisat-lib-shared minisat_core RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) install(DIRECTORY src DESTINATION include/minisat FILES_MATCHING PATTERN "*.h")