cmake_minimum_required(VERSION 3.20)

project(WindowsSetupCpp LANGUAGES CXX)

enable_language(RC)

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

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

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

target_compile_definitions(WindowsSetup PRIVATE
    UNICODE
    _UNICODE
    WIN32_LEAN_AND_MEAN
    NOMINMAX
)

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

target_link_libraries(WindowsSetup PRIVATE
    user32
    gdi32
    gdiplus
    ole32
)

target_link_options(WindowsSetup PRIVATE /MANIFEST:NO)

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set_target_properties(WindowsSetup PROPERTIES OUTPUT_NAME "setup_x64")
else()
    set_target_properties(WindowsSetup PROPERTIES OUTPUT_NAME "setup_x86")
endif()
