From c7ee0907868be277a4e172444221ba0fa311fec6 Mon Sep 17 00:00:00 2001 From: Florent Lamiraux Date: Tue, 12 May 2026 15:26:22 +0200 Subject: [PATCH] [tutorial_1] Homogeneize Makefile with hpp-doc. And install hpp-constraints from source. --- tutorial_1/Dockerfile | 4 +- tutorial_1/Makefile | 179 +++++++++++++++++++++++++++++------------- 2 files changed, 126 insertions(+), 57 deletions(-) diff --git a/tutorial_1/Dockerfile b/tutorial_1/Dockerfile index 565cce5..c61460f 100644 --- a/tutorial_1/Dockerfile +++ b/tutorial_1/Dockerfile @@ -8,10 +8,10 @@ RUN echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/robotpkg.asc] http://robot RUN echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/robotpkg.asc] http://robotpkg.openrobots.org/wip/packages/debian/pub noble robotpkg" >> /etc/apt/sources.list.d/robotpkg.list RUN apt-get update -y && DEBIAN_FRONTEND=noninteractive apt-get install -qqy \ - libgraphviz-dev libqt5svg5-dev pyqt5-dev qtbase5-private-dev qttools5-dev \ + libgraphviz-dev libqt5svg5-dev pyqt5-dev qtbase5-private-dev qttools5-dev npm \ robotpkg-py312-pinocchio robotpkg-qt5-qgv \ robotpkg-hpp-util+doc robotpkg-hpp-statistics+doc \ - robotpkg-hpp-pinocchio+doc robotpkg-hpp-constraints+doc \ + robotpkg-hpp-pinocchio+doc \ libboost-filesystem1.83-dev libboost-python1.83-dev \ libboost-thread1.83-dev python3-numpy liburdfdom-dev wget python3.12-venv \ python-is-python3 doxygen \ diff --git a/tutorial_1/Makefile b/tutorial_1/Makefile index 4bb0891..92e7e54 100644 --- a/tutorial_1/Makefile +++ b/tutorial_1/Makefile @@ -28,48 +28,59 @@ GIT_QUIET=--quiet # Qt version should be either 4 or 5 QT_VERSION=5 INSTALL_DOCUMENTATION=ON -PYTHON_FLAGS=-DPYTHON_STANDARD_LAYOUT=ON +BUILD_JOBS=4 ################################## # {{{ Dependencies -HPP_EXTRA_FLAGS= -DBUILD_TESTING=${BUILD_TESTING} +# }}} +################################## +# {{{ Packages supporting HPP_VERSION + +# Either a version tag (e.g. v4.3.0), stable or devel +HPP_VERSION=devel +HPP_EXTRA_FLAGS= -DBUILD_TESTING=${BUILD_TESTING} -DAUTO_UNINSTALL=OFF -DDOXYGEN_GENERATE_XML=YES jrl-cmakemodules_branch=master jrl-cmakemodules_repository=${JRL_REPO} -hpp-core_branch=devel +hpp-constraints_branch=${HPP_VERSION} +hpp-constraints_repository=${HPP_REPO} +hpp-constraints_extra_flags=${HPP_EXTRA_FLAGS} + +hpp-core_branch=${HPP_VERSION} hpp-core_repository=${HPP_REPO} hpp-core_extra_flags=${HPP_EXTRA_FLAGS} -hpp-manipulation_branch=devel +hpp-python_branch=${HPP_VERSION} +hpp-python_repository=${HPP_REPO} +hpp-python_extra_flags=${HPP_EXTRA_FLAGS} -DPYTHON_STANDARD_LAYOUT=ON + +hpp-doc_branch=${HPP_VERSION} +hpp-doc_repository=${HPP_REPO} + +hpp-manipulation_branch=${HPP_VERSION} hpp-manipulation_repository=${HPP_REPO} -hpp-manipulation_extra_flags=${HPP_EXTRA_FLAGS} +hpp-manipulation_extra_flags= ${HPP_EXTRA_FLAGS} -hpp-manipulation-urdf_branch=devel +hpp-manipulation-urdf_branch=${HPP_VERSION} hpp-manipulation-urdf_repository=${HPP_REPO} hpp-manipulation-urdf_extra_flags=${HPP_EXTRA_FLAGS} -hpp-python_branch=devel -hpp-python_repository=${HPP_REPO} -hpp-python_extra_flags=${HPP_EXTRA_FLAGS} ${PYTHON_FLAGS} - -hpp-doc_branch=devel -hpp-doc_repository=${HPP_REPO} - -hpp_tutorial_branch=devel +hpp_tutorial_branch=${HPP_VERSION} hpp_tutorial_repository=${HPP_REPO} -hpp_tutorial_extra_flags=${HPP_EXTRA_FLAGS} ${PYTHON_FLAGS} +hpp_tutorial_extra_flags=${HPP_EXTRA_FLAGS} -DPYTHON_STANDARD_LAYOUT=ON -hpp-gepetto-viewer_branch=devel +hpp-gepetto-viewer_branch=${HPP_VERSION} hpp-gepetto-viewer_repository=${HPP_REPO} -hpp-gepetto-viewer_extra_flags= ${PYTHON_FLAGS} -DUSE_HPP_PYTHON=ON -DINSTALL_DOCUMENTATION=OFF +hpp-gepetto-viewer_extra_flags= -DINSTALL_DOCUMENTATION=OFF -DUSE_HPP_PYTHON=ON \ + -DPYTHON_STANDARD_LAYOUT=ON -hpp-plot_branch=devel +hpp-plot_branch=${HPP_VERSION} hpp-plot_repository=${HPP_REPO} -hpp-plot_extra_flags= -DINSTALL_DOCUMENTATION=OFF +hpp-plot_extra_flags= -DINSTALL_DOCUMENTATION=OFF -hpp-exec_branch=devel +hpp-exec_branch=${HPP_VERSION} hpp-exec_repository=${HPP_REPO} hpp-exec_extra_flags=${PYTHON_FLAGS} @@ -81,9 +92,9 @@ toppra_repository=${TOPPRA_REPO} toppra_branch=0.6.7 toppra_extra_flags= -DBUILD_TESTS=OFF -DPYTHON_BINDINGS=OFF +hpp-toppra_branch=${HPP_VERSION} hpp-toppra_repository=${HPP_REPO} -hpp-toppra_branch=devel -hpp-toppra_extra_flags= +hpp-toppra_extra_flags= -DPYTHON_STANDARD_LAYOUT=ON # }}} ################################## @@ -108,19 +119,20 @@ python-venv: ################################## # {{{ Dependencies declaration -jrl-cmakemodules.configure.dep: jrl-cmakemodules.checkout hpp-doc.configure.dep: hpp-doc.checkout -hpp-core.configure.dep: hpp-core.checkout jrl-cmakemodules.install +jrl-cmakemodules.configure.dep: jrl-cmakemodules.checkout +hpp-constraints.configure.dep: hpp-constraints.checkout jrl-cmakemodules.install +hpp-core.configure.dep: hpp-core.checkout hpp-constraints.install hpp-manipulation.configure.dep: hpp-manipulation.checkout hpp-core.install hpp-manipulation-urdf.configure.dep: hpp-manipulation-urdf.checkout hpp-manipulation.install -hpp-python.configure.dep: hpp-python.checkout jrl-cmakemodules.install hpp-manipulation-urdf.install -hpp-plot.configure.dep: hpp-plot.checkout jrl-cmakemodules.install hpp-manipulation.install +hpp-python.configure.dep: hpp-python.checkout hpp-manipulation-urdf.install +hpp-plot.configure.dep: hpp-plot.checkout hpp-manipulation.install hpp_tutorial.configure.dep: hpp_tutorial.checkout hpp-gepetto-viewer.install \ hpp-python.install hpp-gepetto-viewer.configure.dep: hpp-gepetto-viewer.checkout python-venv hpp-python.install toppra.configure.dep: toppra.checkout -hpp-toppra.configure.dep: hpp-toppra.checkout jrl-cmakemodules.install toppra.install -hpp-exec.configure.dep: hpp-exec.checkout jrl-cmakemodules.install +hpp-toppra.configure.dep: hpp-toppra.checkout toppra.install +hpp-exec.configure.dep: hpp-exec.checkout # }}} ################################## @@ -154,11 +166,18 @@ update: ${MAKE} "$$child_dir".update; \ done +test: + @for child_dir in $$(ls ${SRC_DIR}); do \ + test -d "$$child_dir" || continue; \ + test -d "$$child_dir/.git" || continue; \ + ${MAKE} "$$child_dir".test; \ + done + %.checkout: - if [ -d $(@:.checkout=) ]; then \ + if [ -d $(@:.checkout=)/.git ]; then \ echo "$(@:.checkout=) already checkout out."; \ else \ - git clone ${GIT_QUIET} --recursive -b ${$(@:.checkout=)_branch} ${$(@:.checkout=)_repository}/$(@:.checkout=); \ + git clone ${GIT_QUIET} -b ${$(@:.checkout=)_branch} ${$(@:.checkout=)_repository}/$(@:.checkout=); \ fi \ %.fetch: @@ -181,41 +200,88 @@ update: git fetch origin --tags;\ git checkout -q --detach;\ git branch -f ${$(@:.update=)_branch} origin/${$(@:.update=)_branch};\ - git checkout -q ${$(@:.update=)_branch};\ - git submodule update; \ + git checkout -q ${$(@:.update=)_branch}; \ fi -%.configure.dep: %.checkout - %.configure: %.configure.dep ${MAKE} $(@:.configure=).configure_nodep -%.configure_nodep:%.checkout - mkdir -p ${SRC_DIR}/$(@:.configure_nodep=)/${BUILD_FOLDER}; \ - cd ${SRC_DIR}/$(@:.configure_nodep=)/${BUILD_FOLDER}; \ - cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_HPP_DIR} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ - -DENFORCE_MINIMAL_CXX_STANDARD=ON \ - -DINSTALL_DOCUMENTATION=${INSTALL_DOCUMENTATION} \ - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-g -O3 -DNDEBUG" \ - ${CLANG_FLAGS} \ - ${$(@:.configure_nodep=)_extra_flags} .. +%.configure-py: %.configure-py.dep + ${MAKE} $(@:.configure-py=).configure_nodep-py -%.install:%.configure - ${MAKE} -C ${SRC_DIR}/$(@:.install=)/${BUILD_FOLDER} install +%.configure_nodep:%.checkout + cmake \ + -DAUTO_UNINSTALL=OFF \ + -DBUILD_PYTHON_INTERFACE=OFF \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_HPP_DIR} \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ + -DENFORCE_MINIMAL_CXX_STANDARD=ON \ + -DINSTALL_DOCUMENTATION=${INSTALL_DOCUMENTATION} \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-g -O3 -DNDEBUG" \ + ${$(@:.configure_nodep=)_extra_flags} \ + -B ${SRC_DIR}/$(@:.configure_nodep=)/${BUILD_FOLDER} \ + -S ${SRC_DIR}/$(@:.configure_nodep=) + +%.configure_nodep-py:%.checkout + cmake \ + -DAUTO_UNINSTALL=OFF \ + -DBUILD_PYTHON_INTERFACE=ON \ + -DBUILD_STANDALONE_PYTHON_INTERFACE=ON \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_HPP_DIR} \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ + -DENFORCE_MINIMAL_CXX_STANDARD=ON \ + -DINSTALL_DOCUMENTATION=${INSTALL_DOCUMENTATION} \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-g -O3 -DNDEBUG" \ + ${$(@:.configure_nodep-py=)_extra_flags} \ + -B ${SRC_DIR}/$(@:.configure_nodep-py=)/${BUILD_FOLDER}-py \ + -S ${SRC_DIR}/$(@:.configure_nodep-py=) + + +%.build:%.configure + cmake --build ${SRC_DIR}/$(@:.build=)/${BUILD_FOLDER} -j $(or $($(@:.build=)_jobs),${BUILD_JOBS}) + +%.build-py:%.configure-py + cmake --build ${SRC_DIR}/$(@:.build-py=)/${BUILD_FOLDER}-py -j $(or $($(@:.build-py=)_jobs),${BUILD_JOBS}) + +%.test:%.build + cmake --build ${SRC_DIR}/$(@:.test=)/${BUILD_FOLDER} -t test + +%.test-py:%.build-py + cmake --build ${SRC_DIR}/$(@:.test-py=)/${BUILD_FOLDER}-py -t test + +%.install:%.build + cmake --build ${SRC_DIR}/$(@:.install=)/${BUILD_FOLDER} -t install + +%.install-py:%.build-py + cmake --build ${SRC_DIR}/$(@:.install-py=)/${BUILD_FOLDER}-py -t install %.install_nodep:%.configure_nodep - ${MAKE} -C ${SRC_DIR}/$(@:.install_nodep=)/${BUILD_FOLDER} install + cmake --build ${SRC_DIR}/$(@:.install_nodep=)/${BUILD_FOLDER} -t install + +%.install_nodep-py:%.configure_nodep-py + cmake --build ${SRC_DIR}/$(@:.install_nodep-py=)/${BUILD_FOLDER}-py -t install %.uninstall: - ${MAKE} -C ${SRC_DIR}/$(@:.uninstall=)/${BUILD_FOLDER} uninstall + cmake --build ${SRC_DIR}/$(@:.uninstall=)/${BUILD_FOLDER} -t uninstall + +%.uninstall-py: + cmake --build ${SRC_DIR}/$(@:.uninstall-py=)/${BUILD_FOLDER}-py -t uninstall %.clean: - ${MAKE} -C ${SRC_DIR}/$(@:.clean=)/${BUILD_FOLDER} clean + cmake --build ${SRC_DIR}/$(@:.clean=)/${BUILD_FOLDER} -t clean + +%.clean-py: + cmake --build ${SRC_DIR}/$(@:.clean-py=)/${BUILD_FOLDER}-py -t clean %.very-clean: rm -rf ${SRC_DIR}/$(@:.very-clean=)/${BUILD_FOLDER}/* +%.very-clean-py: + rm -rf ${SRC_DIR}/$(@:.very-clean-py=)/${BUILD_FOLDER}-py/* + %.status: @cd ${SRC_DIR}/$(@:.status=); \ echo \ @@ -232,16 +298,19 @@ update: toppra.configure_nodep:toppra.checkout mkdir -p ${SRC_DIR}/$(@:.configure_nodep=)/cpp/${BUILD_FOLDER}; \ cd ${SRC_DIR}/$(@:.configure_nodep=)/cpp/${BUILD_FOLDER}; \ - cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_HPP_DIR} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BU\ -ILD_TYPE=${BUILD_TYPE} \ - -DENFORCE_MINIMAL_CXX_STANDARD=ON \ - -DINSTALL_DOCUMENTATION=${INSTALL_DOCUMENTATION} \ - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-g -O3 -DNDEBUG" \ - ${CLANG_FLAGS} \ - ${$(@:.configure_nodep=)_extra_flags} .. + cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_HPP_DIR} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ + -DENFORCE_MINIMAL_CXX_STANDARD=ON \ + -DINSTALL_DOCUMENTATION=${INSTALL_DOCUMENTATION} \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-g -O3 -DNDEBUG" \ + ${CLANG_FLAGS} \ + ${$(@:.configure_nodep=)_extra_flags} .. toppra.install:toppra.configure ${MAKE} -C ${SRC_DIR}/$(@:.install=)/cpp/${BUILD_FOLDER} install toppra.install_nodep:toppra.configure_nodep ${MAKE} -C ${SRC_DIR}/$(@:.install_nodep=)/cpp/${BUILD_FOLDER} install + +# }}} + +# vim: foldmethod=marker foldlevel=0