README.md
Rendering markdown...
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
"\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/source>"
)
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)