cmake_minimum_required(VERSION 3.22)

project(ExtraLib CXX)

message(STATUS "PINOCCHIO_GIT_REPOSITORY: $ENV{PINOCCHIO_GIT_REPOSITORY}")
message(STATUS "PINOCCHIO_GIT_TAG: $ENV{PINOCCHIO_GIT_TAG}")

include(FetchContent)
FetchContent_Declare(
    # FetchContent_Populate(
    Pinocchio
    GIT_REPOSITORY $ENV{PINOCCHIO_GIT_REPOSITORY}
    GIT_TAG $ENV{PINOCCHIO_GIT_TAG}
    GIT_SUBMODULES cmake
    GIT_SHALLOW ON
)

set(PINOCCHIO_MODEL_DIR "${PROJECT_SOURCE_DIR}/../../../models")
add_definitions('-DPINOCCHIO_MODEL_DIR=\"${PINOCCHIO_MODEL_DIR}\"')
set(EXAMPLE_ROBOT_DATA_MODEL_DIR
    "\"${PINOCCHIO_MODEL_DIR}/example-robot-data/robots\""
)
add_definitions(
    '-DEXAMPLE_ROBOT_DATA_MODEL_DIR=\"${EXAMPLE_ROBOT_DATA_MODEL_DIR}\"'
)

FetchContent_GetProperties(Pinocchio)
if(NOT pinocchio_POPULATED) # name is lowercased
    FetchContent_Populate(Pinocchio)
    message(STATUS "pinocchio source dir: ${pinocchio_SOURCE_DIR}")
    message(STATUS "pinocchio binary dir: ${pinocchio_BINARY_DIR}")
    set(BUILD_PYTHON_INTERFACE OFF CACHE INTERNAL "Build Python bindings")
    set(BUILD_TESTING OFF CACHE INTERNAL "Build unit tests")
    add_subdirectory(${pinocchio_SOURCE_DIR} ${pinocchio_BINARY_DIR}) # name is lowercased
endif()
# or simply FetchContent_MakeAvailable(Pinocchio)

add_executable(run_rnea ../run_rnea.cpp)
target_link_libraries(run_rnea PUBLIC pinocchio)

if(DEFINED PINOCCHIO_USE_URDFDOM)
    add_executable(load_urdf ../load_urdf.cpp)
    target_link_libraries(load_urdf PUBLIC pinocchio)
endif(DEFINED PINOCCHIO_USE_URDFDOM)
