cmake_minimum_required(VERSION 3.16)
project(ImageResample)

# cmake -S . -B build
# cmake --build build

# Set C++11 standard
# Note C++20 is required for floating point template params
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Find OpenCV package
# `sudo dnf in opencv-devel` on Fedora, roughly 1GB with depends
find_package(OpenCV REQUIRED)

# Include OpenCV headers
include_directories(${OpenCV_INCLUDE_DIRS})

# Add executable
add_executable(resample 
    main.cpp
    # Add your downsample implementation file here if it's separate
    # downsample.c
)

# Link OpenCV libraries
target_link_libraries(resample ${OpenCV_LIBS})

# Optional: Add math library (needed for ceil, floor, fabs, etc.)
if (UNIX)
target_link_libraries(resample m)
endif()

# Optional: Enable compiler warnings
target_compile_options(resample PRIVATE -Wall)

# Optional: Set optimization level
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

message(STATUS "OpenCV version: ${OpenCV_VERSION}")
message(STATUS "OpenCV include dirs: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV libs: ${OpenCV_LIBS}")

add_executable(create_test_images create_test_images.cpp)
target_link_libraries(create_test_images ${OpenCV_LIBS})
if (UNIX)
    target_link_libraries(create_test_images m)
endif()
target_compile_options(create_test_images PRIVATE -Wall)
