cmake_minimum_required(VERSION 3.30)

project(cpputils LANGUAGES CXX)

option(BUILD_SHARED_LIBS "Build cpputils as a shared library" OFF)
option(BUILD_TESTS "Build cpputils tests" OFF)

if(BUILD_SHARED_LIBS)
  add_library(cpputils SHARED)
else()
  add_library(cpputils STATIC)
endif()

set_target_properties(cpputils PROPERTIES
    POSITION_INDEPENDENT_CODE ON)

target_sources(cpputils
    PRIVATE
        src/hex.cpp
        src/uuid.cpp
)

target_include_directories(cpputils
    PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)

target_compile_features(cpputils PUBLIC cxx_std_17)

if(BUILD_TESTS)
  add_executable(cpputils_tests
        tests/test_main.cpp
        tests/test_hex.cpp
        tests/test_uuid.cpp)

  target_include_directories(cpputils_tests PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/tests)

  target_link_libraries(cpputils_tests PRIVATE cpputils)

  target_compile_features(cpputils_tests PRIVATE cxx_std_17)
endif()
