cmake_minimum_required(VERSION 3.14) include(cmake/prelude.cmake) project( djvulibre_mmr_exploit VERSION 0.1.0 DESCRIPTION "Creates a simple djvu file, which triggers the OOB-write in MMRDecoder::scanruns (patched)" HOMEPAGE_URL "https://github.com/ThePhykon" LANGUAGES CXX ) # Permanently disable cppcheck set(CMAKE_CXX_CPPCHECK "" CACHE STRING "cppcheck command" FORCE) include(cmake/project-is-top-level.cmake) include(cmake/variables.cmake) # ---- Declare library ---- add_library( djvulibre_mmr_exploit_lib OBJECT source/lib.cpp source/bitpacker.cpp ) target_include_directories( djvulibre_mmr_exploit_lib ${warning_guard} PUBLIC "\$" ) target_compile_features(djvulibre_mmr_exploit_lib PUBLIC cxx_std_20) find_package(fmt REQUIRED) target_link_libraries(djvulibre_mmr_exploit_lib PRIVATE fmt::fmt) add_subdirectory(libs/iffwriter) target_link_libraries(djvulibre_mmr_exploit_lib PUBLIC iffwriter::iffwriter) # ---- Declare executable ---- add_executable(djvulibre_mmr_exploit_exe source/main.cpp) add_executable(djvulibre_mmr_exploit::exe ALIAS djvulibre_mmr_exploit_exe) set_property(TARGET djvulibre_mmr_exploit_exe PROPERTY OUTPUT_NAME djvulibre_mmr_exploit) target_compile_features(djvulibre_mmr_exploit_exe PRIVATE cxx_std_20) target_link_libraries(djvulibre_mmr_exploit_exe PRIVATE djvulibre_mmr_exploit_lib) # ---- Install rules ---- if(NOT CMAKE_SKIP_INSTALL_RULES) include(cmake/install-rules.cmake) endif() # ---- Developer mode ---- if(NOT djvulibre_mmr_exploit_DEVELOPER_MODE) return() elseif(NOT PROJECT_IS_TOP_LEVEL) message( AUTHOR_WARNING "Developer mode is intended for developers of djvulibre_mmr_exploit" ) endif() include(cmake/dev-mode.cmake)