find_package(pybind11 CONFIG QUIET)
if(NOT TARGET pybind11::module)
    include(FetchContent)
    FetchContent_Declare(
        pybind11
        GIT_REPOSITORY https://github.com/pybind/pybind11
        GIT_TAG v3.0.1
    )
    FetchContent_GetProperties(pybind11)
    if(NOT pybind11_POPULATED)
        FetchContent_Populate(pybind11)
        add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
    endif()
endif()

# pybind11_add_module(cpp2pybind11 cpp2pybind11.cpp)
#
# BUG: might not work out of the box on OSX with conda:
# https://github.com/pybind/pybind11/issues/3081
if(NOT BUILD_TESTING)
    add_library(cpp2pybind11 MODULE EXCLUDE_FROM_ALL cpp2pybind11.cpp)
else()
    add_library(cpp2pybind11 MODULE cpp2pybind11.cpp)
endif()
add_dependencies(build_tests cpp2pybind11)
target_link_libraries(
    cpp2pybind11
    PRIVATE pinocchio_pywrap_default pybind11::module Eigen3::Eigen
)
set_target_properties(
    cpp2pybind11
    PROPERTIES PREFIX "" SUFFIX ${PYTHON_EXT_SUFFIX}
)

if(CMAKE_CXX_STANDARD LESS 14)
    message(
        STATUS
        "CXX_STANDARD for cpp2pybind11 changed from ${CMAKE_CXX_STANDARD} to 14"
    )
    set_target_properties(cpp2pybind11 PROPERTIES CXX_STANDARD 14)
endif()

if(WIN32)
    target_compile_definitions(cpp2pybind11 PRIVATE -DNOMINMAX)
endif(WIN32)

add_python_unit_test("test-py-cpp2pybind11" "unittest/python/pybind11/test-cpp2pybind11.py"
                     "bindings/python" "unittest/python/pybind11"
)
