cmake_minimum_required(VERSION 3.13)  # CMake version check
if(ESP_PLATFORM)
    idf_component_register(
        SRC_DIRS "."
        INCLUDE_DIRS "."
    )
else() 
    project(LinearAlgebra)

    set(CMAKE_CXX_STANDARD 11)            # Enable c++11 standard
    set(CMAKE_POSITION_INDEPENDENT_CODE ON)

    add_compile_definitions(GTEST)
    include(FetchContent)
    FetchContent_Declare(
        googletest
        DOWNLOAD_EXTRACT_TIMESTAMP 
        URL https://github.com/google/googletest/archive/refs/heads/main.zip
    )

    # For Windows: Prevent overriding the parent project's compiler/linker settings
    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
    FetchContent_MakeAvailable(googletest)

    include_directories(.)
    add_library(LinearAlgebra STATIC 
        "FloatSingle.cpp"
        "Angle.cpp"
        "Vector2.cpp" 
        "Vector3.cpp" 
        "Quaternion.cpp"
        "Polar.cpp" 
        "Spherical.cpp"
        "Matrix.cpp"
        # "Axis.cpp"
        # "AngleAxis.cpp"
        "SwingTwist.cpp"
        "Direction.cpp"
    )

    enable_testing()

    file(GLOB_RECURSE test_srcs test/*_test.cc)
    add_executable(
        LinearAlgebraTest
        ${test_srcs}
    )
    target_link_libraries(
        LinearAlgebraTest
        gtest_main
        LinearAlgebra
    )

    if(MSVC)
    target_compile_options(LinearAlgebraTest PRIVATE /W4 /WX)
  else()
    target_compile_options(LinearAlgebraTest PRIVATE -Wall -Wextra -Wpedantic -Werror)
  endif()
  

    include(GoogleTest)
    gtest_discover_tests(LinearAlgebraTest)
endif()