cmake_minimum_required(VERSION 3.16)
project(nesting_native LANGUAGES CXX)

enable_testing()

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(nesting_native
  nesting_native.cpp
)

add_test(NAME nesting_native_self_test
  COMMAND nesting_native --self-test
)

find_package(Threads REQUIRED)
target_link_libraries(nesting_native PRIVATE Threads::Threads)

if (MSVC)
  # /utf-8: 源码是 UTF-8（含中文注释）。在简体中文 locale(cp936) 下 MSVC 默认按 GBK
  # 解析字节，会把中文注释行尾的换行当作双字节尾字节吞掉，并入下一行声明，导致
  # kStrategies 等标识符“未声明”。/utf-8 明确按 UTF-8 读源码，修复此分词错误。
  target_compile_options(nesting_native PRIVATE /O2 /EHsc /utf-8)
else()
  target_compile_options(nesting_native PRIVATE -O3 -flto)
  target_link_options(nesting_native PRIVATE -flto)
endif()
