cmake_minimum_required(VERSION 3.20)

project(TezzNative C)

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")

file(GLOB TEZZ_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c")

add_executable(tezzc ${TEZZ_SOURCES})
target_include_directories(tezzc PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")

if(MSVC)
  target_compile_definitions(tezzc PRIVATE _CRT_SECURE_NO_WARNINGS)
  target_compile_options(tezzc PRIVATE /W4 /WX)
else()
  target_compile_options(tezzc PRIVATE -O2 -Wall -Wextra -Werror)
endif()

if(WIN32)
  target_link_libraries(tezzc PRIVATE ws2_32 secur32 crypt32 winhttp)
  add_custom_command(TARGET tezzc POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:tezzc> "${CMAKE_CURRENT_SOURCE_DIR}/bin/tezzc-windows-x64.exe")
else()
  find_package(OpenSSL REQUIRED)
  find_package(Threads REQUIRED)
  target_link_libraries(tezzc PRIVATE OpenSSL::SSL OpenSSL::Crypto Threads::Threads)
  add_custom_command(TARGET tezzc POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:tezzc> "${CMAKE_CURRENT_SOURCE_DIR}/bin/tezzc-linux-x64")
endif()
