cmake_minimum_required(VERSION 3.20)

project(ChangeBootloaderCpp LANGUAGES CXX)

enable_language(RC)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

add_executable(ChangeBootLoader WIN32
    src/main.cpp
    src/boot.cpp
    src/util.cpp
    src/app.rc
)

set_property(TARGET ChangeBootLoader PROPERTY MSVC_RUNTIME_LIBRARY
    "MultiThreaded$<$<CONFIG:Debug>:Debug>")

target_compile_definitions(ChangeBootLoader PRIVATE
    UNICODE
    _UNICODE
    WIN32_LEAN_AND_MEAN
    NOMINMAX
)

target_compile_options(ChangeBootLoader PRIVATE
    /utf-8
    /W4
    /permissive-
)

target_link_libraries(ChangeBootLoader PRIVATE
    user32
    gdi32
)

# The manifest is embedded through app.rc; do not let the linker add a second one.
target_link_options(ChangeBootLoader PRIVATE /MANIFEST:NO)

set_target_properties(ChangeBootLoader PROPERTIES
    OUTPUT_NAME "Change_BootLoader"
)
