22# Copyright (c) 2017-2021 CNRS
33#
44
5- cmake_minimum_required (VERSION 3.10 )
5+ cmake_minimum_required (VERSION 3.22 )
66
77# Project properties
88set (PROJECT_ORG stack-of-tasks)
@@ -14,8 +14,6 @@ set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
1414
1515# Project options
1616option (INSTALL_DOCUMENTATION "Build and install the documentation" OFF )
17- option (BUILD_PYTHON_INTERFACE "Build the python bindings" ON )
18- option (INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python bindings" OFF )
1917option (SUFFIX_SO_VERSION "Suffix library name with its version" ON )
2018option (INITIALIZE_WITH_NAN "Initialize Eigen entries with NaN" OFF )
2119option (EIGEN_RUNTIME_NO_MALLOC
@@ -38,9 +36,9 @@ add_definitions(-Wno-sign-conversion)
3836add_definitions (-Werror=suggest-override)
3937
4038# Project configuration
41- if (NOT INSTALL_PYTHON_INTERFACE_ONLY )
39+ if (NOT BUILD_STANDALONE_PYTHON_INTERFACE )
4240 set (PROJECT_USE_CMAKE_EXPORT TRUE )
43- endif (NOT INSTALL_PYTHON_INTERFACE_ONLY )
41+ endif ()
4442set (CXX_DISABLE_WERROR TRUE )
4543set (DOXYGEN_USE_MATHJAX YES )
4644set (CMAKE_VERBOSE_MAKEFILE TRUE )
@@ -57,14 +55,6 @@ else()
5755 TARGET jrl-cmakemodules::jrl-cmakemodules
5856 PROPERTY INTERFACE_INCLUDE_DIRECTORIES )
5957 message (STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES} " )
60- elseif (${CMAKE_VERSION} VERSION_LESS "3.14.0" )
61- message (
62- FATAL_ERROR
63- "\n Can't find jrl-cmakemodules. Please either:\n "
64- " - use git submodule: 'git submodule update --init'\n "
65- " - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n "
66- " - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n "
67- )
6858 else ()
6959 message (STATUS "JRL cmakemodules not found. Let's fetch it." )
7060 include (FetchContent)
@@ -80,8 +70,6 @@ include("${JRL_CMAKE_MODULES}/base.cmake")
8070include ("${JRL_CMAKE_MODULES} /ide.cmake" )
8171include ("${JRL_CMAKE_MODULES} /apple.cmake" )
8272
83- set_default_cmake_build_type("RelWithDebInfo" )
84-
8573# Handle APPLE Cmake policy
8674if (APPLE )
8775 apply_default_apple_configuration()
@@ -112,6 +100,9 @@ check_minimal_cxx_standard(17 ENFORCE)
112100if (BUILD_PYTHON_INTERFACE)
113101 set (PYWRAP ${PROJECT_NAME} _pywrap)
114102 add_project_dependency(eigenpy 2.7.12 REQUIRED)
103+ if (BUILD_STANDALONE_PYTHON_INTERFACE)
104+ add_project_dependency(${PROJECT_NAME} REQUIRED CONFIG)
105+ endif ()
115106endif (BUILD_PYTHON_INTERFACE)
116107
117108add_project_dependency(pinocchio 2.3.1 REQUIRED)
@@ -316,45 +307,44 @@ set(${PROJECT_NAME}_SOURCES
316307add_header_group(${PROJECT_NAME} _HEADERS)
317308add_source_group(${PROJECT_NAME} _SOURCES)
318309
319- add_library (${PROJECT_NAME} SHARED ${${PROJECT_NAME} _SOURCES}
320- ${${PROJECT_NAME} _HEADERS})
321- target_include_directories (
322- ${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
323- target_link_libraries (${PROJECT_NAME} PUBLIC pinocchio::pinocchio
324- eiquadprog::eiquadprog)
325-
326- if (BUILD_WITH_PROXQP)
327- target_compile_definitions (${PROJECT_NAME} PUBLIC -DTSID_WITH_PROXSUITE)
328- target_link_libraries (${PROJECT_NAME} PUBLIC proxsuite::proxsuite)
329- endif ()
310+ if (NOT BUILD_STANDALONE_PYTHON_INTERFACE)
311+ add_library (${PROJECT_NAME} SHARED ${${PROJECT_NAME} _SOURCES}
312+ ${${PROJECT_NAME} _HEADERS})
313+ add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
314+ target_include_directories (
315+ ${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
316+ target_link_libraries (${PROJECT_NAME} PUBLIC pinocchio::pinocchio
317+ eiquadprog::eiquadprog)
318+
319+ if (BUILD_WITH_PROXQP)
320+ target_compile_definitions (${PROJECT_NAME} PUBLIC -DTSID_WITH_PROXSUITE)
321+ target_link_libraries (${PROJECT_NAME} PUBLIC proxsuite::proxsuite)
322+ endif ()
330323
331- if (BUILD_WITH_OSQP)
332- target_link_libraries (${PROJECT_NAME} PUBLIC OsqpEigen::OsqpEigen)
333- target_compile_definitions (${PROJECT_NAME} PUBLIC -DTSID_WITH_OSQP)
334- endif ()
324+ if (BUILD_WITH_OSQP)
325+ target_link_libraries (${PROJECT_NAME} PUBLIC OsqpEigen::OsqpEigen)
326+ target_compile_definitions (${PROJECT_NAME} PUBLIC -DTSID_WITH_OSQP)
327+ endif ()
335328
336- if (qpmad_FOUND)
337- target_include_directories (${PROJECT_NAME} PUBLIC ${qpmad_INCLUDE_DIRS} )
338- target_compile_definitions (${PROJECT_NAME} PUBLIC -DTSID_QPMAD_FOUND)
339- endif ()
329+ if (qpmad_FOUND)
330+ target_include_directories (${PROJECT_NAME} PUBLIC ${qpmad_INCLUDE_DIRS} )
331+ target_compile_definitions (${PROJECT_NAME} PUBLIC -DTSID_QPMAD_FOUND)
332+ endif ()
340333
341- if (SUFFIX_SO_VERSION)
342- set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION} )
343- endif (SUFFIX_SO_VERSION)
334+ if (SUFFIX_SO_VERSION)
335+ set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION
336+ ${PROJECT_VERSION} )
337+ endif (SUFFIX_SO_VERSION)
344338
345- if (NOT INSTALL_PYTHON_INTERFACE_ONLY)
346339 install (
347340 TARGETS ${PROJECT_NAME}
348341 EXPORT ${TARGETS_EXPORT_NAME}
349342 DESTINATION lib)
350- endif (NOT INSTALL_PYTHON_INTERFACE_ONLY )
343+ endif ()
351344
352- add_subdirectory (bindings)
345+ if (BUILD_PYTHON_INTERFACE)
346+ add_subdirectory (bindings)
347+ endif ()
353348if (BUILD_TESTING)
354349 add_subdirectory (tests)
355350endif (BUILD_TESTING)
356-
357- # --- PACKAGING ----------------------------------------------------------------
358- if (NOT INSTALL_PYTHON_INTERFACE_ONLY)
359- install (FILES package.xml DESTINATION share/${PROJECT_NAME} )
360- endif (NOT INSTALL_PYTHON_INTERFACE_ONLY)
0 commit comments