cmake_minimum_required(VERSION 4.0)

find_package(cmake-bare REQUIRED PATHS node_modules/cmake-bare)
find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)

project(bare_tls C CXX)

bare_target(target)

if(target MATCHES "win32")
  add_definitions(-DWIN32_LEAN_AND_MEAN)
endif()

if(target MATCHES "win32-x64")
  enable_language(ASM_NASM)
else()
  enable_language(ASM)
endif()

fetch_package("github:google/boringssl#0.20260211.0")

set(certificates_bundle "${CMAKE_CURRENT_BINARY_DIR}/certificates.pem")

file(DOWNLOAD
  "https://curl.se/ca/cacert-2026-05-14.pem"
  "${certificates_bundle}"
  TLS_VERSION 1.2
  TLS_VERIFY ON
)

file(READ "${certificates_bundle}" certificates_data HEX)

string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," certificates_array "${certificates_data}")

set(certificates "${CMAKE_CURRENT_BINARY_DIR}/certificates.h")

configure_file(lib/certificates.h.in "${certificates}" @ONLY)

add_bare_module(bare_tls)

target_sources(
  ${bare_tls}
  PRIVATE
    binding.c
    "${certificates}"
)

target_link_libraries(
  ${bare_tls}
  PUBLIC
    ssl
)

target_include_directories(
  ${bare_tls}
  PRIVATE
    "${CMAKE_CURRENT_BINARY_DIR}"
)
