cmake_minimum_required(VERSION 3.20)

project(ingenic_usbboot C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)

find_path(LIBUSB_INCLUDE_DIR
    NAMES libusb.h
    PATH_SUFFIXES libusb-1.0
)
find_library(LIBUSB_LIBRARY
    NAMES usb-1.0 libusb-1.0
)

if(NOT LIBUSB_INCLUDE_DIR OR NOT LIBUSB_LIBRARY)
    message(FATAL_ERROR
        "libusb-1.0 was not found. Install libusb-1.0-dev on Linux or "
        "libusb through vcpkg on Windows.")
endif()

set(USBBOOT_SOURCES usbboot.c)
if(WIN32)
    list(APPEND USBBOOT_SOURCES getopt_compat.c)
endif()

add_executable(usbboot ${USBBOOT_SOURCES})
target_include_directories(usbboot PRIVATE ${LIBUSB_INCLUDE_DIR})
target_link_libraries(usbboot PRIVATE ${LIBUSB_LIBRARY})

if(MSVC)
    target_compile_definitions(usbboot PRIVATE _CRT_SECURE_NO_WARNINGS)
endif()

install(TARGETS usbboot RUNTIME DESTINATION . LIBRARY DESTINATION . ARCHIVE DESTINATION .)
install(FILES spl.bin uboot.bin README.md DESTINATION .)
