cmake_minimum_required(VERSION 3.22) project(HDR_PLUS LANGUAGES CXX) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Define dependencies if(DEFINED HALIDE_DISTRIB_DIR) list(APPEND CMAKE_PREFIX_PATH ${HALIDE_DISTRIB_DIR}) endif() find_package(Halide REQUIRED) find_package(TIFF REQUIRED) find_package(ZLIB REQUIRED) find_package(PNG REQUIRED) find_package(JPEG REQUIRED) find_library(LIBRAW_LIBRARY NAMES raw raw_r) find_library(TIFFXX_LIBRARY NAMES tiffxx) if (MSVC) add_compile_definitions("NOMINMAX") endif() set(src_files src/InputSource.cpp src/Burst.cpp src/LibRaw2DngConverter.cpp) set(header_files src/InputSource.h src/Burst.h src/LibRaw2DngConverter.h) add_executable(hdrplus_pipeline_generator src/hdrplus_pipeline_generator.cpp src/align.cpp src/merge.cpp src/finish.cpp src/util.cpp) target_include_directories(hdrplus_pipeline_generator PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(hdrplus_pipeline_generator PRIVATE Halide::Generator) add_halide_library(hdrplus_pipeline # GENERATOR_DEPS # We don't have any yet FROM hdrplus_pipeline_generator # GENERATOR_ARGS # We don't have any yet FUNCTION_NAME hdrplus_pipeline # HALIDE_TARGET ${HALIDE_TARGET} # TODO: add option with custom HALIDE_TARGET # HALIDE_TARGET_FEATURES ${HALIDE_TARGET_FEATURES} # TODO: add option with custom HALIDE_TARGET # EXTRA_OUTPUTS "stmt;html;schedule") # uncomment for extra output ) add_executable(align_and_merge_generator src/align_and_merge_generator.cpp src/align.cpp src/merge.cpp src/util.cpp) target_include_directories(align_and_merge_generator PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(align_and_merge_generator PRIVATE Halide::Generator) add_halide_library(align_and_merge FROM align_and_merge_generator FUNCTION_NAME align_and_merge # HALIDE_TARGET ${HALIDE_TARGET} # TODO: add option with custom HALIDE_TARGET # HALIDE_TARGET_FEATURES ${HALIDE_TARGET_FEATURES} # TODO: add option with custom HALIDE_TARGET # EXTRA_OUTPUTS "stmt;html;schedule") # uncomment for extra output ) add_executable(hdrplus bin/HDRPlus.cpp ${src_files}) target_include_directories(hdrplus PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/genfiles) add_dependencies(hdrplus hdrplus_pipeline) target_link_libraries(hdrplus PRIVATE hdrplus_pipeline Halide::Halide PNG::PNG ${LIBRAW_LIBRARY} TIFF::TIFF ${TIFFXX_LIBRARY}) add_executable(stack_frames bin/stack_frames.cpp ${src_files}) target_include_directories(stack_frames PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/genfiles) add_dependencies(stack_frames align_and_merge) target_link_libraries(stack_frames PRIVATE Halide::Halide align_and_merge ${LIBRAW_LIBRARY} PNG::PNG JPEG::JPEG TIFF::TIFF ${TIFFXX_LIBRARY})